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.
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.
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aaf0ecef4bbbaab63fa2e2a2f233110665029e841b41c4d2337e4f6a668ec360
|
|
| MD5 |
717b1e7c4816c19173ddf6a3e3df818c
|
|
| BLAKE2b-256 |
1677704cf762895bfbc2e7a39bdfe44b67db75eb64e7feab042f188ba3076ae3
|
Provenance
The following attestation bundles were made for python_inspector-0.15.0.tar.gz:
Publisher:
pypi-release.yml on aboutcode-org/python-inspector
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
python_inspector-0.15.0.tar.gz -
Subject digest:
aaf0ecef4bbbaab63fa2e2a2f233110665029e841b41c4d2337e4f6a668ec360 - Sigstore transparency entry: 669504319
- Sigstore integration time:
-
Permalink:
aboutcode-org/python-inspector@9db72eb1ef6314cb2efb2cca9562044e6ba06a5b -
Branch / Tag:
refs/tags/v0.15.0 - Owner: https://github.com/aboutcode-org
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-release.yml@9db72eb1ef6314cb2efb2cca9562044e6ba06a5b -
Trigger Event:
push
-
Statement type:
File details
Details for the file python_inspector-0.15.0-py3-none-any.whl.
File metadata
- Download URL: python_inspector-0.15.0-py3-none-any.whl
- Upload date:
- Size: 102.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4beb3ec0ed693b1edfe6ed6ceae703b3d9229b6bbbb06c0e66cc91b3708dc93b
|
|
| MD5 |
c2201d3179cbba003eae99ecfa91a408
|
|
| BLAKE2b-256 |
3c40e2fd773e96975fc1abd4757beb69cdc8df06c809a4b9a78a49763d783f97
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
python_inspector-0.15.0-py3-none-any.whl -
Subject digest:
4beb3ec0ed693b1edfe6ed6ceae703b3d9229b6bbbb06c0e66cc91b3708dc93b - Sigstore transparency entry: 669504322
- Sigstore integration time:
-
Permalink:
aboutcode-org/python-inspector@9db72eb1ef6314cb2efb2cca9562044e6ba06a5b -
Branch / Tag:
refs/tags/v0.15.0 - Owner: https://github.com/aboutcode-org
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-release.yml@9db72eb1ef6314cb2efb2cca9562044e6ba06a5b -
Trigger Event:
push
-
Statement type: