Repository navigation
Officially deprecate and remove abcs in importlib.abc moved to importlib.resources. #93963
Description
Activity
- added a commit that references this issue
on Jul 3, 2022 - changed the title
[-]Officially deprecate abcs in importlib.abc moved to importlib.resources.[/-][+]Officially deprecate and remove abcs in importlib.abc moved to importlib.resources.[/+]on Jul 3, 2022 - added a commit that references this issue
on Jul 4, 2022 - added a commit that references this issue
on Jul 9, 2022 Today I observed that one of the tests is still accessing
ResourceReaderfromimportlib.abc.1 remaining item
It's
ResourceReaderbeing passed tomake_abc_subclassesthat tries to retrieveabc.ResourceReadertriggering aDeprecationWarning. Below is an approach where default refers toabcmodule andResourceReaderDefaultsTestsoverrides it withresources.diff --git a/Lib/test/test_importlib/test_abc.py b/Lib/test/test_importlib/test_abc.py index d59b663a43..66c8bf09cf 100644 --- a/Lib/test/test_importlib/test_abc.py +++ b/Lib/test/test_importlib/test_abc.py @@ -13,6 +13,7 @@ init = test_util.import_importlib('importlib') abc = test_util.import_importlib('importlib.abc') machinery = test_util.import_importlib('importlib.machinery') +resources = test_util.import_importlib('importlib.resources') util = test_util.import_importlib('importlib.util') @@ -125,7 +126,7 @@ class SourceLoader(InheritanceTests): ##### Default return values #################################################### -def make_abc_subclasses(base_class, name=None, inst=False, **kwargs): +def make_abc_subclasses(base_class, name=None, inst=False, abc=abc, **kwargs): if name is None: name = base_class.__name__ base = {kind: getattr(splitabc, name) @@ -324,7 +325,7 @@ def contents(self, *args, **kwargs): class ResourceReaderDefaultsTests(ABCTestHarness): - SPLIT = make_abc_subclasses(ResourceReader) + SPLIT = make_abc_subclasses(ResourceReader, abc=resources) def test_open_resource(self): with self.assertRaises(FileNotFoundError):
Oh, I'd missed test_abc. I think I'd like to just remove that test... or if it needs to exist, it should exist in
importlib_resourcesalso.I see now in ccf94a6, Irit suppressed the DeprecationWarnings.
I am confused.
The documentation for
importlib.resources.abc.Traversablesays: "Deprecated since version 3.12, will be removed in version 3.14: Useimportlib.resources.abc.Traversableinstead."The documentation for
importlib.resources.abc.TraversableResourcessays: "Deprecated since version 3.12, will be removed in version 3.14: Useimportlib.resources.abc.TraversableResourcesinstead."Why does it recommend to use the same deprecated class?
Opened new issue #107352 for this.
Reacted by Hugo van KemenadeRemoval PR: #119720
- added a commit that references this issue
on May 29, 2024
In #90276, I grouped the functionality related to
importlib.resourcesinto its own package (creating clearer separation of responsibility fromimportlib.*). That included moving some abstract base classes fromimportlib.abctoimportlib.resources.abc. We need to officially deprecate the presence inimportlib.abcand then remove them in a future release.removal: gh-93963: Remove deprecated names from importlib.abc. #94528Originally posted by @jaraco in #93610 (comment)
Linked PRs