Skip to content

Commit 8dceab3

Browse files
authored
Merge pull request #249 from python/bugfix/resource-container-pathsep
Honor '/'-separated names in ResourceContainer.joinpath.
2 parents 8a17e81 + 07213e3 commit 8dceab3

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

CHANGES.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
v5.7.1
2+
======
3+
4+
* #249: In ``simple.ResourceContainer.joinpath``, honor
5+
names split by ``posixpath.sep``.
6+
17
v5.7.0
28
======
39

importlib_resources/simple.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,13 +99,19 @@ def iterdir(self):
9999
def open(self, *args, **kwargs):
100100
raise IsADirectoryError()
101101

102-
def joinpath(self, *names):
103-
if not names:
102+
@staticmethod
103+
def _flatten(compound_names):
104+
for name in compound_names:
105+
yield from name.split('/')
106+
107+
def joinpath(self, *descendants):
108+
if not descendants:
104109
return self
105-
name, rest = names[0], names[1:]
110+
names = self._flatten(descendants)
111+
target = next(names)
106112
return next(
107-
traversable for traversable in self.iterdir() if traversable.name == name
108-
).joinpath(*rest)
113+
traversable for traversable in self.iterdir() if traversable.name == target
114+
).joinpath(*names)
109115

110116

111117
class TraversableReader(TraversableResources, SimpleReader):

0 commit comments

Comments
 (0)