GoogleCloudPlatform / GoogleCloudPlatform/gsutil

Depend on `fasteners >= 0.16` to remove obselete dependency on `monotonic`

Open
#1,686 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
918
Forks
335
PR merge metrics
No merged PRs in 30d

Description

[`gsutil` declares a dependency on the obsolete `monotonic` package](https://github.com/GoogleCloudPlatform/gsutil/blob/56975e92db3d47134fab5ba6eef1b3218b615025/gsutil.py#L102), which was a substitute for [the stdlib `time.monotonic()` function](https://docs.python.org/3/library/time.html#time.monotonic) before that was available on all platforms (from Python 3.5 onwards).

However, this is only necessary for the very old vendored copy of `fasteners` (at v0.14), which [at version 0.16 dropped this dependency](https://github.com/harlowja/fasteners/blob/efc35831d378a938ae852c94aaf233112e041669/CHANGELOG.md#016). In my environment, the `monotonic` package _is never used at all_: `gsutil` doesn't use it directly, and the version of `fasteners` I'm using doesn't use it either.

I'd therefore encourage you to drop this un-needed and obsolete dependency, either by updating the vendored copy of `fasteners`, or at least moving the dependency from `gsutil` into your vendored library so that it doesn't get pulled in from PyPI for other users. This may seem like a small thing but image size and auditing times add up surprisingly quickly!

Contributor guide

Open the contributing guide

Research direction

Start with gsutil.py and the vendored fasteners copy, then compare the declared monotonic dependency with fasteners version 0.16 and its changelog. Determine whether updating the vendored library or relocating the dependency is appropriate; done means gsutil and the vendored library no longer pull monotonic unnecessarily.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
cli, tooling
Issue type
Refactor
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.