.. versionadded:: 3.9
- .. versionchanged:: 3.12
- *package* parameter was renamed to *anchor*. *anchor* can now
- be a non-package module and if omitted will default to the caller's
- module. *package* is still accepted for compatibility but will raise
- a :exc:`DeprecationWarning`. Consider passing the anchor positionally or
- using ``importlib_resources >= 5.10`` for a compatible interface
- on older Pythons.
+ .. deprecated-removed:: 3.12 3.15
+ *package* parameter was renamed to *anchor*. *anchor* can now be a
+ non-package module and if omitted will default to the caller's module.
+ *package* is no longer accepted since Python 3.15. Consider passing the
+ anchor positionally or using ``importlib_resources >= 5.10`` for a
+ compatible interface on older Pythons.
.. function:: as_file(traversable)
import types
import importlib
import inspect
-import warnings
import itertools
from typing import Union, Optional, cast
Anchor = Package
-def package_to_anchor(func):
- """
- Replace 'package' parameter as 'anchor' and warn about the change.
-
- Other errors should fall through.
-
- >>> files('a', 'b')
- Traceback (most recent call last):
- TypeError: files() takes from 0 to 1 positional arguments but 2 were given
-
- Remove this compatibility in Python 3.14.
- """
- undefined = object()
-
- @functools.wraps(func)
- def wrapper(anchor=undefined, package=undefined):
- if package is not undefined:
- if anchor is not undefined:
- return func(anchor, package)
- warnings.warn(
- "First parameter to files is renamed to 'anchor'",
- DeprecationWarning,
- stacklevel=2,
- )
- return func(package)
- elif anchor is undefined:
- return func()
- return func(anchor)
-
- return wrapper
-
-
-@package_to_anchor
def files(anchor: Optional[Anchor] = None) -> Traversable:
"""
Get a Traversable resource for an anchor.
binfile = files.joinpath('subdirectory', 'binary.file')
self.assertTrue(binfile.is_file())
- def test_old_parameter(self):
- """
- Files used to take a 'package' parameter. Make sure anyone
- passing by name is still supported.
- """
- with suppress_known_deprecation():
- resources.files(package=self.data)
-
class OpenDiskTests(FilesTests, util.DiskSetup, unittest.TestCase):
pass
--- /dev/null
+Remove compatibility shim for deprecated parameter *package* in
+:func:`importlib.resources.files`. Patch by Semyon Moroz.