Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Officially deprecate and remove abcs in importlib.abc moved to importlib.resources. #93963

Closed
4 of 5 tasks
jaraco opened this issue Jun 17, 2022 · 8 comments · Fixed by #93965
Closed
4 of 5 tasks

Officially deprecate and remove abcs in importlib.abc moved to importlib.resources. #93963

jaraco opened this issue Jun 17, 2022 · 8 comments · Fixed by #93965

Comments

@jaraco
Copy link
Member

jaraco commented Jun 17, 2022

In #90276, I grouped the functionality related to importlib.resources into its own package (creating clearer separation of responsibility from importlib.*). That included moving some abstract base classes from importlib.abc to importlib.resources.abc. We need to officially deprecate the presence in importlib.abc and then remove them in a future release.

Originally posted by @jaraco in #93610 (comment)

Linked PRs

@jaraco
Copy link
Member Author

jaraco commented Jun 17, 2022

@encukou Here's the deprecation that officially announces the intention added in #90276. I know you were working on the doc updates. Let me know if I can help with that, especially with regard to this direction.

@jaraco jaraco 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. Jul 3, 2022
miss-islington pushed a commit that referenced this issue Jul 3, 2022
hugovk added a commit to hugovk/cpython that referenced this issue Jul 4, 2022
@jaraco
Copy link
Member Author

jaraco commented Jul 24, 2022

Today I observed that one of the tests is still accessing ResourceReader from importlib.abc.

@tirkarthi
Copy link
Member

It's ResourceReader being passed to make_abc_subclasses that tries to retrieve abc.ResourceReader triggering a DeprecationWarning. Below is an approach where default refers to abc module and ResourceReaderDefaultsTests overrides it with resources.

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):

@jaraco
Copy link
Member Author

jaraco commented Sep 5, 2022

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_resources also.

@jaraco
Copy link
Member Author

jaraco commented Sep 5, 2022

I see now in ccf94a6, Irit suppressed the DeprecationWarnings.

@serhiy-storchaka
Copy link
Member

I am confused.

The documentation for importlib.resources.abc.Traversable says: "Deprecated since version 3.12, will be removed in version 3.14: Use importlib.resources.abc.Traversable instead."

The documentation for importlib.resources.abc.TraversableResources says: "Deprecated since version 3.12, will be removed in version 3.14: Use importlib.resources.abc.TraversableResources instead."

Why does it recommend to use the same deprecated class?

@serhiy-storchaka
Copy link
Member

Opened new issue #107352 for this.

@hugovk
Copy link
Member

hugovk commented May 29, 2024

Removal PR: #119720

hugovk added a commit that referenced this issue May 29, 2024
noahbkim pushed a commit to hudson-trading/cpython that referenced this issue Jul 11, 2024
estyxx pushed a commit to estyxx/cpython that referenced this issue Jul 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants