NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #350 most downloaded on PyPI
Read resources from Python packages
Last release 5 months ago
12 Apr 2026
Release timing varies
gaps range from 9 days to 1.3 years
Nearly every release is documented
notes for 59 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
9 years old
83 releases · first in 2017
files() now provides a nicer error when __main__.__spec__ is None.
files() now provides a nicer error when __main__.__spec__ is None. (#331)
Remove compatibility shim for deprecated parameter *package* in importlib.resources.files. Patch by Semyon Moroz.
Remove compatibility shim for deprecated parameter package in importlib.resources.files. Patch by Semyon Moroz. (#332)
One column per quarter.
Replaced reference to typing_extensions with stdlib Literal.
Replaced reference to typing_extensions with stdlib Literal. (#323)
Updated Traversable.read_text() to reflect the errors parameter (python/cpython#127012).
Updated Traversable.read_text() to reflect the errors parameter (python/cpython#127012). (#321)
Add type annotations for Traversable.open.
Add type annotations for Traversable.open. (#317)
Require Python 3.9 or later.
Omit sentinel values from a namespace path.
Omit sentinel values from a namespace path. (#311)
No significant changes.
No significant changes.
When inferring the caller in files() correctly detect one's own module even when the resources package source is not present. (python/cpython#123085)
When inferring the caller in files() correctly detect one's own module even when the resources package source is not present. (python/cpython#123085)
Merged fix for UTF-16 BOM handling in functional tests.
Merged fix for UTF-16 BOM handling in functional tests. (#312)
When constructing ZipReader, only append the name if the indicated module is a package. (python/cpython#121735)
When constructing ZipReader, only append the name if the indicated module is a package. (python/cpython#121735)
The functions is_resource(), open_binary(), open_text(), path(), read_binary(), and read_text() are un-deprecated, and support subdirectories via mult…
The functions is_resource(), open_binary(), open_text(), path(), read_binary(), and read_text() are un-deprecated, and support subdirectories via multiple positional arguments. The contents() function also allows subdirectories, but remains deprecated. (#303)
Deferred select imports in for a speedup (python/cpython#109829).
Restored expectation that local standard readers are preferred over degenerate readers.
Restored expectation that local standard readers are preferred over degenerate readers. (#298)
Restored expectation that stdlib readers are suppressed on Python 3.10.
Restored expectation that stdlib readers are suppressed on Python 3.10. (#257)
Add Anchor to importlib.resources (in order for the code to comply with the documentation)
Add Anchor to importlib.resources (in order for the code to comply with the documentation)
Future compatibility adapters now ensure that standard library readers are replaced without overriding non-standard readers.
Future compatibility adapters now ensure that standard library readers are replaced without overriding non-standard readers. (#295)
No significant changes.
No significant changes.
Fixed NotADirectoryError when calling files on a subdirectory of a namespace package.
Fixed NotADirectoryError when calling files on a subdirectory of a namespace package. (#293)
Added missed stream argument in simple.ResourceHandle. Ref python/cpython#111775.
Added missed stream argument in simple.ResourceHandle. Ref python/cpython#111775.
MultiplexedPath now expects Traversable paths. String arguments to MultiplexedPath are now deprecated.
MultiplexedPath now expects Traversable paths. String arguments to MultiplexedPath are now deprecated.
Enabled support for resources in namespace packages in zip files. (#287)
Bugfixes -------- - Restored Apache license.
Restored Apache license. (#285)
Removed legacy functions deprecated in 5.3.
Removed legacy functions deprecated in 5.3. (#80)
Features -------- - Require Python 3.8 or later.
Require Python 3.8 or later.
* #257: importlib_resources (backport) now gives precedence to built-in readers (file system, zip, namespace packages), providing forward-compatibilit
#257: importlib_resources (backport) now gives precedence to built-in readers (file system, zip, namespace packages), providing forward-compatibility of behaviors like MultiplexedPath.
Nothing published for this version
* #265: MultiplexedPath now honors multiple subdirectories in iterdir and joinpath.
#265: MultiplexedPath now honors multiple subdirectories in iterdir and joinpath.
* #280: Fixed one more EncodingWarning in test suite.
#280: Fixed one more EncodingWarning in test suite.
Packaging refresh, including fixing EncodingWarnings and some tests cleanup.
Packaging refresh, including fixing EncodingWarnings and some tests cleanup.
* #274: Prefer write_bytes to context manager as proposed in gh-100586.
#274: Prefer write_bytes to context manager as proposed in gh-100586.
* #274: Fixed ResourceWarning in _common.
#274: Fixed ResourceWarning in _common.
* #203: Lifted restriction on modules passed to files. Now modules need not be a package and if a non-package module is passed, resources will be reso
#203: Lifted restriction on modules passed to files. Now modules need not be a package and if a non-package module is passed, resources will be resolved adjacent to those modules, even for modules not found in any package. For example, files(import_module('mod.py')) will resolve resources found at the root. The parameter to files was renamed from 'package' to 'anchor', with a compatibility shim for those passing by keyword.
#259: files no longer requires the anchor to be specified and can infer the anchor from the caller's scope (defaults to the caller's module).
* #228: as_file now also supports a Traversable representing a directory and (when needed) renders the full tree to a temporary directory.
#228: as_file now also supports a Traversable representing a directory and (when needed) renders the full tree to a temporary directory.
* #253: In MultiplexedPath, restore expectation that a compound path with a non-existent directory does not raise an exception.
#253: In MultiplexedPath, restore expectation that a compound path with a non-existent directory does not raise an exception.
* #250: Now Traversable.joinpath provides a concrete implementation, replacing the implementation in .simple and converging with the behavior in Multi
#250: Now Traversable.joinpath provides a concrete implementation, replacing the implementation in .simple and converging with the behavior in MultiplexedPath.
* #249: In simple.ResourceContainer.joinpath, honor names split by posixpath.sep.
#249: In simple.ResourceContainer.joinpath, honor names split by posixpath.sep.
simple.ResourceContainer now honors this behavior.
#248: abc.Traversable.joinpath now allows for multiple arguments and specifies that posixpath.sep is allowed in any argument to accept multiple arguments, matching the behavior found in zipfile.Path and pathlib.Path.
simple.ResourceContainer now honors this behavior.
* #244: Add type declarations in ABCs.
#244: Add type declarations in ABCs.
* #80: Test suite now relies entirely on the traversable API.
#80: Test suite now relies entirely on the traversable API.
* #80: Now raise a DeprecationWarning for all legacy functions. Instead, users should rely on the files() API introduced in importlib_resources 1.3. S
#80: Now raise a DeprecationWarning for all legacy functions. Instead, users should rely on the files() API introduced in importlib_resources 1.3. See Migrating from Legacy for guidance on avoiding the deprecated functions.
Updated readme to reflect current behavior and show which versions correspond to which behavior in CPython.
Updated readme to reflect current behavior and show which versions correspond to which behavior in CPython.
* #234: Fix refleak in as_file caught by CPython tests.
#234: Fix refleak in as_file caught by CPython tests.
bpo-38291: Avoid DeprecationWarning on typing.io.
bpo-38291: Avoid DeprecationWarning on typing.io.
* #80 via #221: Legacy API (path, contents, ...) is now supported entirely by the .files() API with a compatibility shim supplied for resource loaders
#80 via #221: Legacy API (path, contents, ...) is now supported entirely by the .files() API with a compatibility shim supplied for resource loaders without that functionality.
* #225: Require zipp 3.1.0 _ or later on Python prior to 3.10 to incorporate those fixes.
#225: Require zipp 3.1.0 or later on Python prior to 3.10 to incorporate those fixes.
Refresh packaging and improve tests.
Refresh packaging and improve tests.
#216: Make MultiplexedPath.name a property per the spec.
Re-release with changes from 5.0.4.
Re-release with changes from 5.0.4.
Re-release with changes from 5.0.3.
Re-release with changes from 5.0.3.
Added simple module implementing adapters from a low-level resource reader interface to a TraversableResources interface. Closes #90.
Added simple module implementing adapters from a low-level resource reader interface to a TraversableResources interface. Closes #90.
bpo-45419: Correct DegenerateFiles.Path .name and .open() interfaces to match Traversable.
bpo-45419: Correct DegenerateFiles.Path .name and .open() interfaces to match Traversable.
bpo-38693: Prefer f-strings to .format calls.
bpo-38693: Prefer f-strings to .format calls.
* #216: Make MultiplexedPath.name a property per the spec.
#216: Make MultiplexedPath.name a property per the spec.
Fixed non-hermetic test in test_reader, revealed by GH-24670.
Fixed non-hermetic test in test_reader, revealed by GH-24670.
Simplified DegenerateFiles.Path.
Simplified DegenerateFiles.Path.
* #214: Added _adapters module to ensure that degenerate files behavior can be made available for legacy loaders whose resource readers don't implemen
#214: Added _adapters module to ensure that degenerate files behavior can be made available for legacy loaders whose resource readers don't implement it. Fixes issue where backport compatibility module was masking this fallback behavior only to discover the defect when applying changes to CPython.
Removed importlib_resources.trees, deprecated since 1.3.0.
Removed importlib_resources.trees, deprecated since 1.3.0.
* Fixed badges in README.
Fixed badges in README.
Cleaned up some straggling Python 2 compatibility code.
#209: Adopt jaraco/skeleton.
Cleaned up some straggling Python 2 compatibility code.
Refreshed test zip files without .pyc and .pyo files.
* #108: Drop support for Python 2.7. Now requires Python 3.6+.
#108: Drop support for Python 2.7. Now requires Python 3.6+.
* Minor cleanup.
Minor cleanup.
* #107: Drop support for Python 3.5. Now requires Python 2.7 or 3.6+.
#107: Drop support for Python 3.5. Now requires Python 2.7 or 3.6+.
* #200: Minor fixes and improved tests for namespace package support.
#200: Minor fixes and improved tests for namespace package support.
Your coding agent can read these notes before it upgrades. Set up the MCP server →