Skip to main content

python-inspector is is a collection of utilities to collect PyPI package metadata and resolve packages dependencies.

Project description

python-inspector is a collection of utilities to:

  • resolve PyPI packages dependencies

  • parse various requirements.txt files and setup.py files as input for resolving dependencies.

  • parse various manifests and packages files such as Pipfile, pyproject.toml, poetry.lock and setup.cfg and legacy and current metadata file formats for eggs, wheels and sdist. These have not been wired with the command line yet.

  • query PyPI JSON and simple APIs for package information

It grew out of ScanCode toolkit to find and analyze PyPI archives and installed Python packages and their files.

The goal of python-inspector is to be a comprehensive library that can handle every style of Python package layouts, manifests and lockfiles.

SPDX-License-Identifier: Apache-2.0

Copyright (c) AboutCode, nexB Inc. and others.

Homepage: https://github.com/aboutcode-org/python-inspector and https://www.aboutcode.org/

Usage

  • Install the stable release with pip from PyPI:

    pip install python-inspector
  • Or install the latest with pip:

    pip install git+https://github.com/aboutcode-org/python-inspector
  • Run the command line utility with:

    python-inspector --help

Development

Run:

git clone https://github.com/aboutcode-org/python-inspector

Create a virtual environment and install deps locally:

make dev
source venv/bin/activate

When in the virtual environment, run python-inspector from that clone:

python-inspector --help

Run tests:

make test

Run code checks:

make check

Run code formatting:

make valie

Check available make targets for further details

More testing

  • Run the tests with pytest:

    pytest -vvs
  • Or run them faster using 12 cores

    pytest -vvs --numprocesses=12

Regenerate test files

Some tests use live data from Pypi.org to run resolutions. When the package versions have changed, the resolution can change and some of the tests fail. We have an environment variable that regenerates the expected JSON result files when set.

To regenerate expected test result files for the failed tests, use this command:

PYINSP_REGEN_TEST_FIXTURES=yes pytest -vvs --lf

Then, carefully review the diff before committing the expected JSON test result files to validate that the changes are OK and mostly affect small changes in resolved package versions.

Credits and dependencies

For info, python-inspector embeds or depends on these libraries:

  • pip-requirements-parser, a mostly correct pip requirements parsing library extracted from pip.

  • pkginfo2, a safer fork of pkginfo to parse various installed and extracted package layouts and their metadata files.

  • dparse2, a safer fork of dparse to parse various package manifests

  • resolvelib, the library used by pip for dependency resolution

  • packaging, the official Python packaging utility library to process versions, specifiers, markers and other packaging data formats.

  • importlib_metadata, the official Python utility library to process installed site-packages and their metadata formats.

  • packageurl-python to use Package URL to reference Python packages

  • scancode-toolkit for Python package manifest parsing.

Acknowledgements, Funding, Support and Sponsoring

This project is funded, supported and sponsored by:

  • Generous support and contributions from users like you!

  • the European Commission NGI programme

  • the NLnet Foundation

  • the Swiss State Secretariat for Education, Research and Innovation (SERI)

  • Google, including the Google Summer of Code and the Google Seasons of Doc programmes

  • Mercedes-Benz Group

  • Microsoft and Microsoft Azure

  • AboutCode ASBL

  • nexB Inc.

Europa logo EC DG Connect logo

NGI logo NLnet foundation logo

AboutCode logo nexB logo

This project was funded through the NGI0 Discovery Fund, a fund established by NLnet with financial support from the European Commission’s Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 825322.

NGI Discovery logo https://nlnet.nl/project/vulnerabilitydatabase/

This project was funded through the NGI0 Core Fund, a fund established by NLnet with financial support from the European Commission’s Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 101092990.

NGI Zero Core Logo https://nlnet.nl/project/Back2source-next/

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

python_inspector-0.15.0.tar.gz (158.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

python_inspector-0.15.0-py3-none-any.whl (102.6 kB view details)

Uploaded Python 3

File details

Details for the file python_inspector-0.15.0.tar.gz.

File metadata

  • Download URL: python_inspector-0.15.0.tar.gz
  • Upload date:
  • Size: 158.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for python_inspector-0.15.0.tar.gz
Algorithm Hash digest
SHA256 aaf0ecef4bbbaab63fa2e2a2f233110665029e841b41c4d2337e4f6a668ec360
MD5 717b1e7c4816c19173ddf6a3e3df818c
BLAKE2b-256 1677704cf762895bfbc2e7a39bdfe44b67db75eb64e7feab042f188ba3076ae3

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_inspector-0.15.0.tar.gz:

Publisher: pypi-release.yml on aboutcode-org/python-inspector

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file python_inspector-0.15.0-py3-none-any.whl.

File metadata

File hashes

Hashes for python_inspector-0.15.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4beb3ec0ed693b1edfe6ed6ceae703b3d9229b6bbbb06c0e66cc91b3708dc93b
MD5 c2201d3179cbba003eae99ecfa91a408
BLAKE2b-256 3c40e2fd773e96975fc1abd4757beb69cdc8df06c809a4b9a78a49763d783f97

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_inspector-0.15.0-py3-none-any.whl:

Publisher: pypi-release.yml on aboutcode-org/python-inspector

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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