|repostatus| |ci-status| |coverage| |pyversions| |license|
.. |repostatus| image:: https://www.repostatus.org/badges/latest/active.svg
:target: https://www.repostatus.org/#active
:alt: Project Status: Active — The project has reached a stable, usable
state and is being actively developed.
.. |ci-status| image:: https://github.com/wheelodex/wheel-inspect/actions/workflows/test.yml/badge.svg
:target: https://github.com/wheelodex/wheel-inspect/actions/workflows/test.yml
:alt: CI Status
.. |coverage| image:: https://codecov.io/gh/wheelodex/wheel-inspect/branch/master/graph/badge.svg
:target: https://codecov.io/gh/wheelodex/wheel-inspect
.. |pyversions| image:: https://img.shields.io/pypi/pyversions/wheel-inspect.svg
:target: https://pypi.org/project/wheel-inspect/
.. |license| image:: https://img.shields.io/github/license/wheelodex/wheel-inspect.svg
:target: https://opensource.org/licenses/MIT
:alt: MIT License
GitHub <https://github.com/wheelodex/wheel-inspect>
_
| PyPI <https://pypi.org/project/wheel-inspect/>
_
| Issues <https://github.com/wheelodex/wheel-inspect/issues>
_
| Changelog <https://github.com/wheelodex/wheel-inspect/blob/master/CHANGELOG.md>
_
wheel-inspect
examines Python wheel files & *.dist-info
directories and
outputs various information about their contents as JSON-serializable objects.
It can be invoked in Python code as::
from wheel_inspect import inspect_wheel
output = inspect_wheel(path_to_wheel_file)
or from the command line with the wheel2json
command.
Installation
wheel-inspect
requires Python 3.8 or higher. Just use pip <https://pip.pypa.io>
_ for Python 3 (You have pip, right?) to install
wheel-inspect
and its dependencies::
python3 -m pip install wheel-inspect
Example
::
$ wheel2json wheel_inspect-1.0.0.dev1-py3-none-any.whl
{
"abi": [
"none"
],
"arch": [
"any"
],
"buildver": null,
"derived": {
"dependencies": [
"distlib",
"headerparser",
"packaging",
"readme-renderer",
"setuptools"
],
"description_in_body": true,
"description_in_headers": false,
"keyword_separator": ",",
"keywords": [
"packages",
"pypi",
"wheel"
],
"modules": [
"wheel_inspect",
"wheel_inspect.__main__",
"wheel_inspect.inspect",
"wheel_inspect.metadata",
"wheel_inspect.schema",
"wheel_inspect.util",
"wheel_inspect.wheel_info"
],
"readme_renders": true
},
"dist_info": {
"entry_points": {
"console_scripts": {
"wheel2json": {
"attr": "main",
"extras": [],
"module": "wheel_inspect.__main__"
}
}
},
"metadata": {
"author": "John Thorvald Wodder II",
"author_email": "wheel-inspect@varonathe.org",
"classifier": [
"Development Status :: 3 - Alpha",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"License :: OSI Approved :: MIT License",
"Intended Audience :: Developers",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: System :: Software Distribution"
],
"description": {
"length": 1538
},
"home_page": "https://github.com/jwodder/wheel-inspect",
"keywords": "packages,pypi,wheel",
"license": "MIT",
"metadata_version": "2.1",
"name": "wheel-inspect",
"platform": [],
"requires_dist": [
{
"extras": [],
"marker": null,
"name": "distlib",
"specifier": "~=0.2.7",
"url": null
},
{
"extras": [],
"marker": null,
"name": "headerparser",
"specifier": "~=0.2.0",
"url": null
},
{
"extras": [],
"marker": null,
"name": "packaging",
"specifier": ">=17.1",
"url": null
},
{
"extras": [],
"marker": null,
"name": "readme-renderer",
"specifier": "~=21.0",
"url": null
},
{
"extras": [],
"marker": null,
"name": "setuptools",
"specifier": ">=36",
"url": null
}
],
"requires_python": "~=3.5",
"summary": "Extract information from wheels",
"version": "1.0.0.dev1"
},
"record": [
{
"digests": {
"sha256": "EL9q_wQOJRlJL3LkKscASTrhXgXgVLfeugZz66MFeV8"
},
"path": "wheel_inspect/__init__.py",
"size": 440
},
{
"digests": {
"sha256": "3_DrJ4Tr-ie5TCQtmmTnS82eHTMmVDY1mOeSP_hJ_Ho"
},
"path": "wheel_inspect/__main__.py",
"size": 247
},
{
"digests": {
"sha256": "LCgjTkHaGxyzSKeY_pEDSWQFNQi7PRby6lh6H0OSVAQ"
},
"path": "wheel_inspect/inspect.py",
"size": 4816
},
{
"digests": {
"sha256": "3u83eQ0RBdR-AEOxqsPyMkc663G2Un9Hd6tqhO2eu6k"
},
"path": "wheel_inspect/metadata.py",
"size": 1946
},
{
"digests": {
"sha256": "8VOeroNaM34lIqdjnCiaCwtNEVwi_wFDTtYaL7dEXDQ"
},
"path": "wheel_inspect/schema.py",
"size": 12158
},
{
"digests": {
"sha256": "iaxC3qenCrPMRjrqdTwj1Hfy-OPo-y-WVLaPWEDeSFs"
},
"path": "wheel_inspect/util.py",
"size": 1352
},
{
"digests": {
"sha256": "wNTKsMw_TVe3RbIpj8tjwRE0Q_rUeoRUF66KKpqBp2c"
},
"path": "wheel_inspect/wheel_info.py",
"size": 1010
},
{
"digests": {
"sha256": "-X7Ry_-tNPLAGkZasQc2KOBW_Ohnx52rgDZfo8cxw10"
},
"path": "wheel_inspect-1.0.0.dev1.dist-info/LICENSE",
"size": 1095
},
{
"digests": {
"sha256": "SbhMBq15toKwrurqS0Xmt--MPsWRvKTjtx9ya4tTed8"
},
"path": "wheel_inspect-1.0.0.dev1.dist-info/METADATA",
"size": 2692
},
{
"digests": {
"sha256": "-ZFxwj8mZJPIVcZGLrsQ8UGRcxVAOExzPLVBGR7u7bE"
},
"path": "wheel_inspect-1.0.0.dev1.dist-info/WHEEL",
"size": 92
},
{
"digests": {
"sha256": "fqJPsljFaWRzPdYMreNAf0zg8GSQE0Tgh8_XOzL85lo"
},
"path": "wheel_inspect-1.0.0.dev1.dist-info/entry_points.txt",
"size": 60
},
{
"digests": {
"sha256": "Cz2n0fdOaOfDcl0g6x4t_DEWzWZYYRcFASrgxW0v_WE"
},
"path": "wheel_inspect-1.0.0.dev1.dist-info/top_level.txt",
"size": 14
},
{
"digests": {},
"path": "wheel_inspect-1.0.0.dev1.dist-info/RECORD",
"size": null
}
],
"top_level": [
"wheel_inspect"
],
"wheel": {
"generator": "bdist_wheel (0.32.1)",
"root_is_purelib": true,
"tag": [
"py3-none-any"
],
"wheel_version": "1.0"
}
},
"file": {
"digests": {
"md5": "fc6dcdac9f850435e41167f48e3862f4",
"sha256": "69733fa29a205ecfee322961defd15dc42880873869db6a742edf26d6d6d4832"
},
"size": 10208
},
"filename": "wheel_inspect-1.0.0.dev1-py3-none-any.whl",
"project": "wheel_inspect",
"pyver": [
"py3"
],
"valid": true,
"version": "1.0.0.dev1"
}
API
wheel_inspect.DIST_INFO_SCHEMA
A JSON Schema <http://json-schema.org>
_ for the structure returned by
inspect_dist_info_dir()
. It is the same as WHEEL_SCHEMA
, but
without the "filename"
, "project"
, "version"
, "buildver"
,
"pyver"
, "abi"
, "arch"
, and "file"
keys.
wheel_inspect.WHEEL_SCHEMA
A JSON Schema <http://json-schema.org>
_ for the structure returned by
inspect_wheel()
. This value was previously exported under the name
"SCHEMA
"; the old name continues to be available for backwards
compatibility, but it will go away in the future and should not be used in
new code.
wheel_inspect.inspect_dist_info_dir(dirpath)
Treat dirpath
as a *.dist-info
directory and inspect just it & its
contents. The structure of the return value is described by
DIST_INFO_SCHEMA
.
wheel_inspect.inspect_wheel(path)
Inspect the wheel file at the given path
. The structure of the return
value is described by WHEEL_SCHEMA
.
Previous versions of wheel-inspect
provided a parse_wheel_filename()
function. As of version 1.5.0, that feature has been split off into its own
package, wheel-filename <https://github.com/jwodder/wheel-filename>
_.
wheel-inspect
continues to re-export this function in order to maintain API
compatibility with earlier versions, but this will change in the future. Code
that imports parse_wheel_filename()
from wheel-inspect
should be
updated to use wheel-filename
instead.
Command
::
wheel2json [<path> ...]
wheel-inspect
provides a wheel2json
command (also accessible as
python -m wheel_inspect
) that can be used to inspect wheels and
*.dist-info
directories from the command line. Each path passed to the
command is inspected separately (treated as a *.dist-info
directory if it
is a directory, treated as a wheel file otherwise), and the resulting data is
output as a pretty-printed JSON object. (Note that this results in a stream of
JSON objects with no separation when multiple paths are given.)