PathNotFoundErrornow has a custom
__str__mentioning “package metadata” being missing to help guide users to the cause when the package is installed but no metadata is present. Closes #124.
Distribution._local()as a provisional demonstration of how to load metadata for a local package. Implicitly requires that pep517 is installed. Ref #42.
Ensure inputs to FastPath are Unicode. Closes #121.
Tests now rely on
importlib.resources.files(and backport) instead of the older
Support any iterable from
find_distributions. Closes #122.
Fix redundant entries from
FastPath.zip_children. Closes #117.
Improve reliability and consistency of compatibility imports for contextlib and pathlib when running tests. Closes #116.
Additional performance optimizations in FastPath now saves an additional 20% on a typical call.
Correct for issue where PyOxidizer finder has no
__module__attribute. Closes #110.
Through careful optimization,
distribution()is 3-4x faster. Thanks to Antony Lee for the contribution. Closes #95.
When searching through
sys.path, if any error occurs attempting to list a path entry, that entry is skipped, making the system much more lenient to errors. Closes #94.
Improve custom finders documentation. Closes #105.
Once again, drop support for Python 3.4. Ref #104.
Restored support for Python 3.4 due to improper version compatibility declarations in the v1.1.0 and v1.1.1 releases. Closes #104.
Repaired project metadata to correctly declare the
python_requiresdirective. Closes #103.
repr(EntryPoint)on PyPy 3 also. Closes #102.
Dropped support for Python 3.4.
EntryPoints are now pickleable. Closes #96.
repr(EntryPoint)on PyPy 2. Closes #97.
Project adopts semver for versioning.
Removed compatibility shim introduced in 0.23.
For better compatibility with the stdlib implementation and to avoid the same distributions being discovered by the stdlib and backport implementations, the backport now disables the stdlib DistributionFinder during initialization (import time). Closes #91 and closes #100.
Added a compatibility shim to prevent failures on beta releases of Python before the signature changed to accept the “context” parameter on find_distributions. This workaround will have a limited lifespan, not to extend beyond release of Python 3.8 final.
distribution_nameas recommended in the following functions:
requires. This backward-incompatible change is expected to have little impact as these functions are assumed to be primarily used with positional parameters.
importlib.metadatanow exposes the
DistributionFindermetaclass and references it in the docs for extending the search algorithm.
Distribution.atfor constructing a Distribution object from a known metadata directory on the file system. Closes #80.
Distribution finders now receive a context object that supplies
.nameproperties. This change introduces a fundamental backward incompatibility for any projects implementing a
find_distributionsmethod on a
MetaPathFinder. This new layer of abstraction allows this context to be supplied directly or constructed on demand and opens the opportunity for a
find_distributionsmethod to solicit additional context from the caller. Closes #85.
Clarify in the docs that calls to
Nonewhen the metadata is not present. Closes #69.
Return all requirements and not just the first for dist-info packages. Closes #67.
Restrain over-eager egg metadata resolution.
Add support for entry points with colons in the name. Closes #75.
Parse entry points case sensitively. Closes #68
Add a version constraint on the backport configparser package. Closes #66
Fix a permission problem in the tests on Windows.
Don’t crash if there exists an EGG-INFO directory on sys.path.
local_distributionfunction from the API. This backward-incompatible change removes this behavior summarily. Projects should remove their reliance on this behavior. A replacement behavior is under review in the pep517 project. Closes #42.
Update docstrings to match PEP 8. Closes #63.
Merged modules into one module. Closes #62.
Add support for eggs. !65; Closes #19.
Support generic zip files (not just wheels). Closes #59
Support zip files with multiple distributions in them. Closes #60
Fully expose the public API in
DistributionABC is now officially part of the public API. Closes #37.
Fixed support for older single file egg-info formats. Closes #43.
Fixed a testing bug when
$CWDhas spaces in the path. Closes #50.
Add Python 3.8 to the
Fixed issue where entry points without an attribute would raise an Exception. Closes #40.
entry_points(). Closes #44.
DistributionFinderclasses must now be instantiated before being placed on
This library can now discover/enumerate all installed packages. This backward-incompatible change alters the protocol finders must implement to support distribution package discovery. Closes #24.
The signature of
find_distributions()on custom installer finders should now accept two parameters,
pathand these parameters must supply defaults.
entry_points()method no longer accepts a package name but instead returns all entry points in a dictionary keyed by the
resolvemethod has been removed. Instead, call
EntryPoint.load(), which has the same semantics as
entrypoints. This is a backward incompatible change.
Metadata is now always returned as Unicode text regardless of Python version. Closes #29.
This library can now discover metadata for a ‘local’ package (found in the current-working directory). Closes #27.
files()function for resolving files from a distribution.
Added a new
requires()function, which returns the requirements for a package suitable for parsing by
packaging.requirements.Requirement. Closes #18.
read_text()function has been removed. Use
PackagePath.read_text()on instances returned by the
files()function. This is a backward incompatible change.
Release dates are now automatically injected into the changelog based on SCM tags.
Fixed issue where packages with dashes in their names would not be discovered. Closes #21.
Distribution lookup is now case-insensitive. Closes #20.
Wheel distributions can no longer be discovered by their module name. Like Path distributions, they must be indicated by their distribution package name.
importlib_metadata.distributionfunction. Now the public interface is primarily the utility functions exposed in
importlib_metadata.__all__. Closes #14.
Added two new utility functions
Updated README and removed details about Distribution class, now considered private. Closes #15.
Added test suite support for Python 3.4+.
Fixed SyntaxErrors on Python 3.4 and 3.5. !12
Fixed errors on Windows joining Path elements. !15
Added usage documentation. Closes #8
Add support for getting metadata from wheels on
sys.path. Closes #9
importlib_metadata.entry_points(). Closes #1
importlib_metadata.resolve(). Closes #12
Add support for Python 2.7. Closes #4