summaryrefslogtreecommitdiffstats
path: root/Lib/importlib/resources/simple.py
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2023-01-01 16:07:32 (GMT)
committerGitHub <noreply@github.com>2023-01-01 16:07:32 (GMT)
commit447d061bc7b978afedd3b0148715d2153ac726c5 (patch)
tree428d5a7728ab02bd84ffe8ddccce5f01b0265e8e /Lib/importlib/resources/simple.py
parentba1342ce998c6c0c36078411d169f29179fbc9f6 (diff)
downloadcpython-447d061bc7b978afedd3b0148715d2153ac726c5.zip
cpython-447d061bc7b978afedd3b0148715d2153ac726c5.tar.gz
cpython-447d061bc7b978afedd3b0148715d2153ac726c5.tar.bz2
gh-97930: Apply changes from importlib_resources 5.10. (GH-100598)
Diffstat (limited to 'Lib/importlib/resources/simple.py')
-rw-r--r--Lib/importlib/resources/simple.py65
1 files changed, 30 insertions, 35 deletions
diff --git a/Lib/importlib/resources/simple.py b/Lib/importlib/resources/simple.py
index b85e469..7770c92 100644
--- a/Lib/importlib/resources/simple.py
+++ b/Lib/importlib/resources/simple.py
@@ -16,31 +16,28 @@ class SimpleReader(abc.ABC):
provider.
"""
- @abc.abstractproperty
- def package(self):
- # type: () -> str
+ @property
+ @abc.abstractmethod
+ def package(self) -> str:
"""
The name of the package for which this reader loads resources.
"""
@abc.abstractmethod
- def children(self):
- # type: () -> List['SimpleReader']
+ def children(self) -> List['SimpleReader']:
"""
Obtain an iterable of SimpleReader for available
child containers (e.g. directories).
"""
@abc.abstractmethod
- def resources(self):
- # type: () -> List[str]
+ def resources(self) -> List[str]:
"""
Obtain available named resources for this virtual package.
"""
@abc.abstractmethod
- def open_binary(self, resource):
- # type: (str) -> BinaryIO
+ def open_binary(self, resource: str) -> BinaryIO:
"""
Obtain a File-like for a named resource.
"""
@@ -50,13 +47,35 @@ class SimpleReader(abc.ABC):
return self.package.split('.')[-1]
+class ResourceContainer(Traversable):
+ """
+ Traversable container for a package's resources via its reader.
+ """
+
+ def __init__(self, reader: SimpleReader):
+ self.reader = reader
+
+ def is_dir(self):
+ return True
+
+ def is_file(self):
+ return False
+
+ def iterdir(self):
+ files = (ResourceHandle(self, name) for name in self.reader.resources)
+ dirs = map(ResourceContainer, self.reader.children())
+ return itertools.chain(files, dirs)
+
+ def open(self, *args, **kwargs):
+ raise IsADirectoryError()
+
+
class ResourceHandle(Traversable):
"""
Handle to a named resource in a ResourceReader.
"""
- def __init__(self, parent, name):
- # type: (ResourceContainer, str) -> None
+ def __init__(self, parent: ResourceContainer, name: str):
self.parent = parent
self.name = name # type: ignore
@@ -76,30 +95,6 @@ class ResourceHandle(Traversable):
raise RuntimeError("Cannot traverse into a resource")
-class ResourceContainer(Traversable):
- """
- Traversable container for a package's resources via its reader.
- """
-
- def __init__(self, reader):
- # type: (SimpleReader) -> None
- self.reader = reader
-
- def is_dir(self):
- return True
-
- def is_file(self):
- return False
-
- def iterdir(self):
- files = (ResourceHandle(self, name) for name in self.reader.resources)
- dirs = map(ResourceContainer, self.reader.children())
- return itertools.chain(files, dirs)
-
- def open(self, *args, **kwargs):
- raise IsADirectoryError()
-
-
class TraversableReader(TraversableResources, SimpleReader):
"""
A TraversableResources based on SimpleReader. Resource providers