diff --git a/importlib_resources/future/adapters.py b/importlib_resources/future/adapters.py index 9d26bf4..0e9764b 100644 --- a/importlib_resources/future/adapters.py +++ b/importlib_resources/future/adapters.py @@ -40,6 +40,16 @@ def wrapper(*args, **kwargs): return wrapper +def _skip_degenerate(reader): + """ + Mask any degenerate reader. Ref #298. + """ + is_degenerate = ( + isinstance(reader, _adapters.CompatibilityFiles) and not reader._reader + ) + return reader if not is_degenerate else None + + class TraversableResourcesLoader(_adapters.TraversableResourcesLoader): """ Adapt loaders to provide TraversableResources and other @@ -51,8 +61,9 @@ class TraversableResourcesLoader(_adapters.TraversableResourcesLoader): def get_resource_reader(self, name): return ( - _block_standard(super().get_resource_reader)(name) + _skip_degenerate(_block_standard(super().get_resource_reader)(name)) or self._standard_reader() + or super().get_resource_reader(name) ) def _standard_reader(self): diff --git a/newsfragments/298.bugfix.rst b/newsfragments/298.bugfix.rst new file mode 100644 index 0000000..db89319 --- /dev/null +++ b/newsfragments/298.bugfix.rst @@ -0,0 +1 @@ +Restored expectation that local standard readers are preferred over degenerate readers. \ No newline at end of file