Skip to main content

Ensures your first-order deps are correct

Project description

checkdeps

It's really easy to accidentally use your transitive deps by accident. This project allows you to check (given a working venv) that everything you import actually comes from either relative imports, your explicit first-order deps, or stdlib.

Usage:

# Run within a working venv
# For CI
$ python -m checkdeps checkdeps

# If you use non-relative imports for your own project's code, also add
$ python -m checkdeps checkdeps --allow-names checkdeps

# For humans, pass -v
$ python -m checkdeps -v checkdeps/cli.py
checkdeps/cli.py:
  click available from ['click']
  pathlib.Path stdlib
  stdlibs.stdlib_module_names available from ['stdlibs']
  sys stdlib
  trailrunner available from ['trailrunner']
  typing.Dict stdlib
  typing.List stdlib
  typing.Optional stdlib
  typing.Set stdlib

Exits nonzero if there are any issues.

But what if I don't want to run it from the same venv

Make sure you specify --installed-path to the site-packages dir and run from the same python version. A parent of your target_dir should be obviously the root of your project (pyproject.toml, .git, etc), which is what the requirements are relative to.

But aren't there projects that do this already?

I've looked at them, and I don't like the assumptions they make about top-level names, stdlib, or namespace packages. I think this project is more correct and more self-contained.

Future work

  • Read project metadata instead of requirements
  • Ensure metadata and requirements match
  • Offer to add missing deps
  • Better handling of version-dependent deps in an if or try/except

License

checkdeps is copyright Tim Hatch, and licensed under the MIT license. I am providing code in this repository to you under an open source license. This is my personal repository; the license you receive to my code is from me and not from my employer. See the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

checkdeps-0.9.0.tar.gz (12.9 kB view details)

Uploaded Source

Built Distribution

checkdeps-0.9.0-py3-none-any.whl (13.7 kB view details)

Uploaded Python 3

File details

Details for the file checkdeps-0.9.0.tar.gz.

File metadata

  • Download URL: checkdeps-0.9.0.tar.gz
  • Upload date:
  • Size: 12.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.3

File hashes

Hashes for checkdeps-0.9.0.tar.gz
Algorithm Hash digest
SHA256 b4382c1dbada0f5b7aa458402af4fa0003d3cb54c7c83cd2661d441e0c416973
MD5 0f79c1694190e5f38c69e08a45e27857
BLAKE2b-256 04fe318ee5fb06a9cc5e5e0c6d7a30bd961efd23ea5ba7c1f2068c8911f6ced4

See more details on using hashes here.

File details

Details for the file checkdeps-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: checkdeps-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 13.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.3

File hashes

Hashes for checkdeps-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 15cec29977a08bcc57d029307b4250b3f97f99aa45d932c8322b3cd0a4059c2f
MD5 c0eb8eafdb6746530280417d754f0e87
BLAKE2b-256 6394d80517af39ea2e7b079187f280dae12dbc8a6252a0860f7d0adbfb49b127

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page