Skip to content

Commit 0c3f294

Browse files
committed
When blocking stdlib readers, avoid giving deference to degenerate readers and instead prefer the standard readers before once again falling back to any CompatibilityFiles reader. Closes #298.
1 parent 705a435 commit 0c3f294

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

importlib_resources/future/adapters.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,16 @@ def wrapper(*args, **kwargs):
4040
return wrapper
4141

4242

43+
def _skip_degenerate(reader):
44+
"""
45+
Mask any degenerate reader.
46+
"""
47+
is_degenerate = (
48+
isinstance(reader, _adapters.CompatibilityFiles) and not reader._reader
49+
)
50+
return reader if not is_degenerate else None
51+
52+
4353
class TraversableResourcesLoader(_adapters.TraversableResourcesLoader):
4454
"""
4555
Adapt loaders to provide TraversableResources and other
@@ -51,8 +61,9 @@ class TraversableResourcesLoader(_adapters.TraversableResourcesLoader):
5161

5262
def get_resource_reader(self, name):
5363
return (
54-
_block_standard(super().get_resource_reader)(name)
64+
_skip_degenerate(_block_standard(super().get_resource_reader)(name))
5565
or self._standard_reader()
66+
or super().get_resource_reader(name)
5667
)
5768

5869
def _standard_reader(self):

0 commit comments

Comments
 (0)