{"id":22683749,"url":"https://github.com/wheelodex/wheel-inspect","last_synced_at":"2025-10-17T08:20:19.450Z","repository":{"id":60723494,"uuid":"152797011","full_name":"wheelodex/wheel-inspect","owner":"wheelodex","description":"Extract information from wheels","archived":false,"fork":false,"pushed_at":"2025-01-23T14:06:36.000Z","size":1605,"stargazers_count":23,"open_issues_count":27,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-09T22:18:57.252Z","etag":null,"topics":["available-on-pypi","dist-info","package-metadata","packages","pep427","python","wheel"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wheelodex.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-10-12T19:12:36.000Z","updated_at":"2025-02-01T18:55:53.000Z","dependencies_parsed_at":"2023-01-31T02:01:12.515Z","dependency_job_id":"61f11cb6-a1dc-466c-8ef6-b37de8811d4e","html_url":"https://github.com/wheelodex/wheel-inspect","commit_stats":{"total_commits":115,"total_committers":2,"mean_commits":57.5,"dds":"0.017391304347826098","last_synced_commit":"df8a998727e8a5e2ee6b7574f055242091f13b8a"},"previous_names":["wheelodex/wheel-inspect","jwodder/wheel-inspect"],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wheelodex%2Fwheel-inspect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wheelodex%2Fwheel-inspect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wheelodex%2Fwheel-inspect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wheelodex%2Fwheel-inspect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wheelodex","download_url":"https://codeload.github.com/wheelodex/wheel-inspect/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248119283,"owners_count":21050755,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["available-on-pypi","dist-info","package-metadata","packages","pep427","python","wheel"],"created_at":"2024-12-09T21:13:38.505Z","updated_at":"2025-10-17T08:20:14.400Z","avatar_url":"https://github.com/wheelodex.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"|repostatus| |ci-status| |coverage| |pyversions| |license|\n\n.. |repostatus| image:: https://www.repostatus.org/badges/latest/active.svg\n    :target: https://www.repostatus.org/#active\n    :alt: Project Status: Active — The project has reached a stable, usable\n          state and is being actively developed.\n\n.. |ci-status| image:: https://github.com/wheelodex/wheel-inspect/actions/workflows/test.yml/badge.svg\n    :target: https://github.com/wheelodex/wheel-inspect/actions/workflows/test.yml\n    :alt: CI Status\n\n.. |coverage| image:: https://codecov.io/gh/wheelodex/wheel-inspect/branch/master/graph/badge.svg\n    :target: https://codecov.io/gh/wheelodex/wheel-inspect\n\n.. |pyversions| image:: https://img.shields.io/pypi/pyversions/wheel-inspect.svg\n    :target: https://pypi.org/project/wheel-inspect/\n\n.. |license| image:: https://img.shields.io/github/license/wheelodex/wheel-inspect.svg\n    :target: https://opensource.org/licenses/MIT\n    :alt: MIT License\n\n`GitHub \u003chttps://github.com/wheelodex/wheel-inspect\u003e`_\n| `PyPI \u003chttps://pypi.org/project/wheel-inspect/\u003e`_\n| `Issues \u003chttps://github.com/wheelodex/wheel-inspect/issues\u003e`_\n| `Changelog \u003chttps://github.com/wheelodex/wheel-inspect/blob/master/CHANGELOG.md\u003e`_\n\n``wheel-inspect`` examines Python wheel files \u0026 ``*.dist-info`` directories and\noutputs various information about their contents as JSON-serializable objects.\nIt can be invoked in Python code as::\n\n    from wheel_inspect import inspect_wheel\n\n    output = inspect_wheel(path_to_wheel_file)\n\nor from the command line with the ``wheel2json`` command.\n\n\nInstallation\n============\n``wheel-inspect`` requires Python 3.8 or higher.  Just use `pip\n\u003chttps://pip.pypa.io\u003e`_ for Python 3 (You have pip, right?) to install\n``wheel-inspect`` and its dependencies::\n\n    python3 -m pip install wheel-inspect\n\n\nExample\n=======\n\n::\n\n    $ wheel2json wheel_inspect-1.0.0.dev1-py3-none-any.whl\n    {\n        \"abi\": [\n            \"none\"\n        ],\n        \"arch\": [\n            \"any\"\n        ],\n        \"buildver\": null,\n        \"derived\": {\n            \"dependencies\": [\n                \"distlib\",\n                \"headerparser\",\n                \"packaging\",\n                \"readme-renderer\",\n                \"setuptools\"\n            ],\n            \"description_in_body\": true,\n            \"description_in_headers\": false,\n            \"keyword_separator\": \",\",\n            \"keywords\": [\n                \"packages\",\n                \"pypi\",\n                \"wheel\"\n            ],\n            \"modules\": [\n                \"wheel_inspect\",\n                \"wheel_inspect.__main__\",\n                \"wheel_inspect.inspect\",\n                \"wheel_inspect.metadata\",\n                \"wheel_inspect.schema\",\n                \"wheel_inspect.util\",\n                \"wheel_inspect.wheel_info\"\n            ],\n            \"readme_renders\": true\n        },\n        \"dist_info\": {\n            \"entry_points\": {\n                \"console_scripts\": {\n                    \"wheel2json\": {\n                        \"attr\": \"main\",\n                        \"extras\": [],\n                        \"module\": \"wheel_inspect.__main__\"\n                    }\n                }\n            },\n            \"metadata\": {\n                \"author\": \"John Thorvald Wodder II\",\n                \"author_email\": \"wheel-inspect@varonathe.org\",\n                \"classifier\": [\n                    \"Development Status :: 3 - Alpha\",\n                    \"Programming Language :: Python :: 3 :: Only\",\n                    \"Programming Language :: Python :: 3\",\n                    \"Programming Language :: Python :: 3.5\",\n                    \"Programming Language :: Python :: 3.6\",\n                    \"Programming Language :: Python :: 3.7\",\n                    \"Programming Language :: Python :: Implementation :: CPython\",\n                    \"Programming Language :: Python :: Implementation :: PyPy\",\n                    \"License :: OSI Approved :: MIT License\",\n                    \"Intended Audience :: Developers\",\n                    \"Topic :: Software Development :: Libraries :: Python Modules\",\n                    \"Topic :: System :: Software Distribution\"\n                ],\n                \"description\": {\n                    \"length\": 1538\n                },\n                \"home_page\": \"https://github.com/jwodder/wheel-inspect\",\n                \"keywords\": \"packages,pypi,wheel\",\n                \"license\": \"MIT\",\n                \"metadata_version\": \"2.1\",\n                \"name\": \"wheel-inspect\",\n                \"platform\": [],\n                \"requires_dist\": [\n                    {\n                        \"extras\": [],\n                        \"marker\": null,\n                        \"name\": \"distlib\",\n                        \"specifier\": \"~=0.2.7\",\n                        \"url\": null\n                    },\n                    {\n                        \"extras\": [],\n                        \"marker\": null,\n                        \"name\": \"headerparser\",\n                        \"specifier\": \"~=0.2.0\",\n                        \"url\": null\n                    },\n                    {\n                        \"extras\": [],\n                        \"marker\": null,\n                        \"name\": \"packaging\",\n                        \"specifier\": \"\u003e=17.1\",\n                        \"url\": null\n                    },\n                    {\n                        \"extras\": [],\n                        \"marker\": null,\n                        \"name\": \"readme-renderer\",\n                        \"specifier\": \"~=21.0\",\n                        \"url\": null\n                    },\n                    {\n                        \"extras\": [],\n                        \"marker\": null,\n                        \"name\": \"setuptools\",\n                        \"specifier\": \"\u003e=36\",\n                        \"url\": null\n                    }\n                ],\n                \"requires_python\": \"~=3.5\",\n                \"summary\": \"Extract information from wheels\",\n                \"version\": \"1.0.0.dev1\"\n            },\n            \"record\": [\n                {\n                    \"digests\": {\n                        \"sha256\": \"EL9q_wQOJRlJL3LkKscASTrhXgXgVLfeugZz66MFeV8\"\n                    },\n                    \"path\": \"wheel_inspect/__init__.py\",\n                    \"size\": 440\n                },\n                {\n                    \"digests\": {\n                        \"sha256\": \"3_DrJ4Tr-ie5TCQtmmTnS82eHTMmVDY1mOeSP_hJ_Ho\"\n                    },\n                    \"path\": \"wheel_inspect/__main__.py\",\n                    \"size\": 247\n                },\n                {\n                    \"digests\": {\n                        \"sha256\": \"LCgjTkHaGxyzSKeY_pEDSWQFNQi7PRby6lh6H0OSVAQ\"\n                    },\n                    \"path\": \"wheel_inspect/inspect.py\",\n                    \"size\": 4816\n                },\n                {\n                    \"digests\": {\n                        \"sha256\": \"3u83eQ0RBdR-AEOxqsPyMkc663G2Un9Hd6tqhO2eu6k\"\n                    },\n                    \"path\": \"wheel_inspect/metadata.py\",\n                    \"size\": 1946\n                },\n                {\n                    \"digests\": {\n                        \"sha256\": \"8VOeroNaM34lIqdjnCiaCwtNEVwi_wFDTtYaL7dEXDQ\"\n                    },\n                    \"path\": \"wheel_inspect/schema.py\",\n                    \"size\": 12158\n                },\n                {\n                    \"digests\": {\n                        \"sha256\": \"iaxC3qenCrPMRjrqdTwj1Hfy-OPo-y-WVLaPWEDeSFs\"\n                    },\n                    \"path\": \"wheel_inspect/util.py\",\n                    \"size\": 1352\n                },\n                {\n                    \"digests\": {\n                        \"sha256\": \"wNTKsMw_TVe3RbIpj8tjwRE0Q_rUeoRUF66KKpqBp2c\"\n                    },\n                    \"path\": \"wheel_inspect/wheel_info.py\",\n                    \"size\": 1010\n                },\n                {\n                    \"digests\": {\n                        \"sha256\": \"-X7Ry_-tNPLAGkZasQc2KOBW_Ohnx52rgDZfo8cxw10\"\n                    },\n                    \"path\": \"wheel_inspect-1.0.0.dev1.dist-info/LICENSE\",\n                    \"size\": 1095\n                },\n                {\n                    \"digests\": {\n                        \"sha256\": \"SbhMBq15toKwrurqS0Xmt--MPsWRvKTjtx9ya4tTed8\"\n                    },\n                    \"path\": \"wheel_inspect-1.0.0.dev1.dist-info/METADATA\",\n                    \"size\": 2692\n                },\n                {\n                    \"digests\": {\n                        \"sha256\": \"-ZFxwj8mZJPIVcZGLrsQ8UGRcxVAOExzPLVBGR7u7bE\"\n                    },\n                    \"path\": \"wheel_inspect-1.0.0.dev1.dist-info/WHEEL\",\n                    \"size\": 92\n                },\n                {\n                    \"digests\": {\n                        \"sha256\": \"fqJPsljFaWRzPdYMreNAf0zg8GSQE0Tgh8_XOzL85lo\"\n                    },\n                    \"path\": \"wheel_inspect-1.0.0.dev1.dist-info/entry_points.txt\",\n                    \"size\": 60\n                },\n                {\n                    \"digests\": {\n                        \"sha256\": \"Cz2n0fdOaOfDcl0g6x4t_DEWzWZYYRcFASrgxW0v_WE\"\n                    },\n                    \"path\": \"wheel_inspect-1.0.0.dev1.dist-info/top_level.txt\",\n                    \"size\": 14\n                },\n                {\n                    \"digests\": {},\n                    \"path\": \"wheel_inspect-1.0.0.dev1.dist-info/RECORD\",\n                    \"size\": null\n                }\n            ],\n            \"top_level\": [\n                \"wheel_inspect\"\n            ],\n            \"wheel\": {\n                \"generator\": \"bdist_wheel (0.32.1)\",\n                \"root_is_purelib\": true,\n                \"tag\": [\n                    \"py3-none-any\"\n                ],\n                \"wheel_version\": \"1.0\"\n            }\n        },\n        \"file\": {\n            \"digests\": {\n                \"md5\": \"fc6dcdac9f850435e41167f48e3862f4\",\n                \"sha256\": \"69733fa29a205ecfee322961defd15dc42880873869db6a742edf26d6d6d4832\"\n            },\n            \"size\": 10208\n        },\n        \"filename\": \"wheel_inspect-1.0.0.dev1-py3-none-any.whl\",\n        \"project\": \"wheel_inspect\",\n        \"pyver\": [\n            \"py3\"\n        ],\n        \"valid\": true,\n        \"version\": \"1.0.0.dev1\"\n    }\n\n\nAPI\n===\n\n``wheel_inspect.DIST_INFO_SCHEMA``\n   A `JSON Schema \u003chttp://json-schema.org\u003e`_ for the structure returned by\n   ``inspect_dist_info_dir()``.  It is the same as ``WHEEL_SCHEMA``, but\n   without the ``\"filename\"``, ``\"project\"``, ``\"version\"``, ``\"buildver\"``,\n   ``\"pyver\"``, ``\"abi\"``, ``\"arch\"``, and ``\"file\"`` keys.\n\n``wheel_inspect.WHEEL_SCHEMA``\n   A `JSON Schema \u003chttp://json-schema.org\u003e`_ for the structure returned by\n   ``inspect_wheel()``.  This value was previously exported under the name\n   \"``SCHEMA``\"; the old name continues to be available for backwards\n   compatibility, but it will go away in the future and should not be used in\n   new code.\n\n``wheel_inspect.inspect_dist_info_dir(dirpath)``\n   Treat ``dirpath`` as a ``*.dist-info`` directory and inspect just it \u0026 its\n   contents.  The structure of the return value is described by\n   ``DIST_INFO_SCHEMA``.\n\n``wheel_inspect.inspect_wheel(path)``\n   Inspect the wheel file at the given ``path``.  The structure of the return\n   value is described by ``WHEEL_SCHEMA``.\n\nPrevious versions of ``wheel-inspect`` provided a ``parse_wheel_filename()``\nfunction.  As of version 1.5.0, that feature has been split off into its own\npackage, `wheel-filename \u003chttps://github.com/jwodder/wheel-filename\u003e`_.\n``wheel-inspect`` continues to re-export this function in order to maintain API\ncompatibility with earlier versions, but this will change in the future.  Code\nthat imports ``parse_wheel_filename()`` from ``wheel-inspect`` should be\nupdated to use ``wheel-filename`` instead.\n\n\nCommand\n=======\n\n::\n\n    wheel2json [\u003cpath\u003e ...]\n\n``wheel-inspect`` provides a ``wheel2json`` command (also accessible as\n``python -m wheel_inspect``) that can be used to inspect wheels and\n``*.dist-info`` directories from the command line.  Each path passed to the\ncommand is inspected separately (treated as a ``*.dist-info`` directory if it\nis a directory, treated as a wheel file otherwise), and the resulting data is\noutput as a pretty-printed JSON object.  (Note that this results in a stream of\nJSON objects with no separation when multiple paths are given.)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwheelodex%2Fwheel-inspect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwheelodex%2Fwheel-inspect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwheelodex%2Fwheel-inspect/lists"}