Skip to content

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

Description

@jaraco

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

Activity

  1. jaraco commented on Jun 17, 2022

    @jaraco
    MemberAuthor

    @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.

  2. added a commit that references this issue on Jul 3, 2022
    8525926
  3. 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
  4. added 2 commits that reference this issue on Jul 3, 2022
  5. added a commit that references this issue on Jul 3, 2022
  6. added a commit that references this issue on Jul 4, 2022
  7. added a commit that references this issue on Jul 9, 2022
  8. jaraco commented on Jul 24, 2022

    @jaraco
    MemberAuthor

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

  9. 1 remaining item

  10. added 2 commits that reference this issue on Jul 25, 2022
  11. added 2 commits that reference this issue on Jul 27, 2022
  12. tirkarthi commented on Jul 31, 2022

    @tirkarthi
    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):
  13. jaraco commented on Sep 5, 2022

    @jaraco
    MemberAuthor

    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.

  14. jaraco commented on Sep 5, 2022

    @jaraco
    MemberAuthor

    I see now in ccf94a6, Irit suppressed the DeprecationWarnings.

  15. added a commit that references this issue on Sep 5, 2022
  16. added a commit that references this issue on Sep 5, 2022
  17. serhiy-storchaka commented on Jul 27, 2023

    @serhiy-storchaka
    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?

  18. serhiy-storchaka commented on Jul 27, 2023

    @serhiy-storchaka
    Member

    Opened new issue #107352 for this.

  19. hugovk commented on May 29, 2024

    @hugovk
    Member

    Removal PR: #119720

  20. added a commit that references this issue on May 29, 2024
  21. added a commit that references this issue on Jul 11, 2024
  22. added a commit that references this issue on Jul 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions