Skip to content

Commit a4e5b12

Browse files
committed
Add docstrings and type annotations. Fix references to parent and reader between ResourceHandle and ResourceContainer.
1 parent b7e0288 commit a4e5b12

File tree

1 file changed

+23
-5
lines changed

1 file changed

+23
-5
lines changed

importlib_resources/abc.py

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,12 +87,14 @@ def read_text(self, encoding=None):
8787

8888
@abc.abstractmethod
8989
def is_dir(self):
90+
# type: () -> bool
9091
"""
9192
Return True if self is a dir
9293
"""
9394

9495
@abc.abstractmethod
9596
def is_file(self):
97+
# type: () -> bool
9698
"""
9799
Return True if self is a file
98100
"""
@@ -121,9 +123,14 @@ def open(self, mode='r', *args, **kwargs):
121123

122124

123125
class SimpleReader(ABC):
126+
"""
127+
The minimum, low-level interface required from a resource
128+
provider.
129+
"""
124130

125131
@abc.abstractproperty
126132
def package(self):
133+
# type: () -> str
127134
"""
128135
The name of the package for which this reader loads resources.
129136
"""
@@ -156,6 +163,11 @@ def name(self):
156163

157164

158165
class TraversableResources(ResourceReader):
166+
"""
167+
The required interface for providing traversable
168+
resources.
169+
"""
170+
159171
@abc.abstractmethod
160172
def files(self):
161173
"""Return a Traversable object for the loaded package."""
@@ -178,8 +190,9 @@ class ResourceHandle(Traversable):
178190
Handle to a named resource in a ResourceReader.
179191
"""
180192

181-
def __init__(self, reader, name):
182-
self.reader = reader
193+
def __init__(self, parent, name):
194+
# type: (ResourceContainer, str) -> None
195+
self.parent = parent
183196
self.name = name
184197

185198
def is_file(self):
@@ -189,7 +202,7 @@ def is_dir(self):
189202
return False
190203

191204
def open(self, mode='r', *args, **kwargs):
192-
stream = self.reader.open_binary(self.name)
205+
stream = self.parent.reader.open_binary(self.name)
193206
if 'b' not in mode:
194207
stream = io.TextIOWrapper(*args, **kwargs)
195208
return stream
@@ -216,9 +229,9 @@ def is_file(self):
216229
def iterdir(self):
217230
files = (
218231
ResourceHandle(self, name)
219-
for name in self.resources
232+
for name in self.reader.resources
220233
)
221-
dirs = map(ResourceContainer, self.children())
234+
dirs = map(ResourceContainer, self.reader.children())
222235
return itertools.chain(files, dirs)
223236

224237
def open(self, *args, **kwargs):
@@ -232,5 +245,10 @@ def joinpath(self, name):
232245

233246

234247
class TraversableReader(TraversableResources, SimpleReader):
248+
"""
249+
A TraversableResources based on SimpleReader. Resource providers
250+
may derive from this class to provide the TraversableResources
251+
interface by supplying the SimpleReader interface.
252+
"""
235253
def files(self):
236254
return ResourceContainer(self)

0 commit comments

Comments
 (0)