Skip to main content

Read metadata from Python packages

Project description

importlib_metadata is a library to access the metadata for a Python package. It is intended to be ported to Python 3.8.

Usage

importlib_metadata, unlike its sister packages importlib and importlib.resources, operates on Python Distribution packages (the package as installed by pip or similar).

This module exposes a few functions:

metadata takes a distribution package name and returns the metadata for that package (as email.Message).

version takes a distribution package name and returns the version for that package.

entry_points takes a distribution package name and returns a structure of entry points declared by that package.

resolve accepts an entry point as returned by entry_points and resolves it to the module or callable that it references.

read_text takes the distribution package name and a filename in that package’s info directory and return the text of that file.

Support for Custom Package Installers

importlib_metadata provides hooks for third-party package installers through their declared finders. A custom installer, if it provides its own finder for installed packages, should also provide on that finder a find_distribution callable that when called with the name of a package will return a Distribution instance capable of loading the metadata for that named package (or None if that finder has no knowledge of that package or its metadata).

Caveats

This project primarily supports third-party packages installed by PyPA tools (or other conforming packages). It does not support:

  • Packages in the stdlib.

  • Packages installed without metadata.

  • Packages installed as eggs.

Eggs

Not only does importlib_metadata not support loading metadata from eggs, it will crash when it attempts to load metadata for any package that’s an egg.

easy_install creates eggs when installing packages, which is why you should use pip to install packages. pip never installs eggs. There are some cases, however, where a project’s usage may not be able to avoid easy_install. In particular, if a project uses setup.py test, any install_requires of that project that aren’t already installed will be installed using easy_install. Additionally, any project defining setup_requires may get those dependencies installed as eggs if those dependencies aren’t met before setup.py is invoked (for any command).

Because importlib_metadata doesn’t support loading metadata from eggs and because importlib_metadata calls itself to get its own version, simply importing importlib_metadata will fail if it is installed as an egg. Any package that incorporates importlib_metadata (directly or indirectly) should be prepared to guide its users to tools that avoid installing eggs (such as pip and tox).

More detail and discussion can be found at issue 19.

Project details

Project details


Release history Release notifications | RSS feed

This version

0.7

Download files

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

Source Distribution

importlib_metadata-0.7.tar.gz (16.7 kB view details)

Uploaded Source

Built Distribution

importlib_metadata-0.7-py2.py3-none-any.whl (17.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file importlib_metadata-0.7.tar.gz.

File metadata

  • Download URL: importlib_metadata-0.7.tar.gz
  • Upload date:
  • Size: 16.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.5.2

File hashes

Hashes for importlib_metadata-0.7.tar.gz
Algorithm Hash digest
SHA256 28fba9f65e5415a691dd254cdb602bcc4d6f738e68407ad251651db358b63bcf
MD5 1ece074861bd7e440c8143a6e179f985
BLAKE2b-256 637824cf79040fdd5d9c9cfd060317846c6b71c2ba8c5f98ab17a306aa168f81

See more details on using hashes here.

Provenance

File details

Details for the file importlib_metadata-0.7-py2.py3-none-any.whl.

File metadata

  • Download URL: importlib_metadata-0.7-py2.py3-none-any.whl
  • Upload date:
  • Size: 17.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.5.2

File hashes

Hashes for importlib_metadata-0.7-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 4a545e6125dc72b4ad98201ea3f40f92e8126e3a19667352b3a134d22b8bc74f
MD5 511b45d60510589b801a752db0244fc2
BLAKE2b-256 d3509c436e4ac464f16e271e34e6c79b9c753e7e1a80b0ebd86da9b99de182ea

See more details on using hashes here.

Provenance

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