Skip to content

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

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

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

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
…3965)

Fixes #93963

Automerge-Triggered-By: GH:jaraco
hugovk added a commit to hugovk/cpython that referenced this issue Jul 4, 2022
jaraco added a commit that referenced this issue Jul 9, 2022

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
@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.

ambv pushed a commit that referenced this issue Jul 25, 2022

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
ambv added a commit that referenced this issue Jul 26, 2022

Verified

This commit was signed with the committer’s verified signature.
ambv Łukasz Langa
…abcs-preferred
jaraco added a commit that referenced this issue Jul 27, 2022

Partially verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
We cannot verify signatures from co-authors, and some of the co-authors attributed to this commit require their commits to be signed.
…95217)

Co-authored-by: Łukasz Langa <[email protected]>
jaraco added a commit that referenced this issue Jul 29, 2022

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
@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.

miss-islington pushed a commit that referenced this issue Sep 5, 2022

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
Automerge-Triggered-By: GH:jaraco
jaraco added a commit to jaraco/cpython that referenced this issue Sep 5, 2022

Verified

This commit was signed with the committer’s verified signature.
jaraco Jason R. Coombs
…6598)

Automerge-Triggered-By: GH:jaraco.
(cherry picked from commit 52fe7e5)

Co-authored-by: Jason R. Coombs <[email protected]>
@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

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Co-authored-by: Jason R. Coombs <[email protected]>
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

Unverified

This commit is not signed, but one or more authors requires that any commit attributed to them is signed.
…9720)

Co-authored-by: Jason R. Coombs <[email protected]>
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