From 0c3f294d711c52f538dfc47a239368c136115ff5 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Tue, 19 Mar 2024 11:34:32 -0400 Subject: [PATCH 1/3] 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. --- importlib_resources/future/adapters.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/importlib_resources/future/adapters.py b/importlib_resources/future/adapters.py index 9d26bf4..d0e3924 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. + """ + 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): From cee77e81a775050695544d341477254ba52fb035 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Tue, 19 Mar 2024 11:39:21 -0400 Subject: [PATCH 2/3] Add news fragment. --- newsfragments/298.bugfix.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 newsfragments/298.bugfix.rst 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 From 0f8aa5fe2ebb9cd40cdf4c83f7855cdbe4f642da Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Tue, 19 Mar 2024 11:43:37 -0400 Subject: [PATCH 3/3] Add reference to the issue in the docstring. --- importlib_resources/future/adapters.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/importlib_resources/future/adapters.py b/importlib_resources/future/adapters.py index d0e3924..0e9764b 100644 --- a/importlib_resources/future/adapters.py +++ b/importlib_resources/future/adapters.py @@ -42,7 +42,7 @@ def wrapper(*args, **kwargs): def _skip_degenerate(reader): """ - Mask any degenerate reader. + Mask any degenerate reader. Ref #298. """ is_degenerate = ( isinstance(reader, _adapters.CompatibilityFiles) and not reader._reader