From f3aab23ff8c58526481c49eaf54ff512a8fe894c Mon Sep 17 00:00:00 2001 From: Thomas VINCENT Date: Wed, 19 Jul 2023 16:59:08 +0200 Subject: [PATCH] Add fallback on pkg_resources for python<3.9 --- setup.py | 2 ++ src/silx/resources/__init__.py | 15 +++++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/setup.py b/setup.py index 14e1c37443..12d62c4033 100644 --- a/setup.py +++ b/setup.py @@ -169,6 +169,8 @@ def get_project_configuration(): "h5py", "fabio>=0.9", ] + if sys.version_info < (3, 9): + install_requires.append("setuptools") # For pkg_resources # extras requirements: target 'full' to install all dependencies at once full_requires = [ diff --git a/src/silx/resources/__init__.py b/src/silx/resources/__init__.py index d3a1e57e29..abbade1ba2 100644 --- a/src/silx/resources/__init__.py +++ b/src/silx/resources/__init__.py @@ -68,6 +68,9 @@ import sys from typing import NamedTuple, Optional +if sys.version_info < (3, 9): + import pkg_resources + logger = logging.getLogger(__name__) @@ -152,9 +155,10 @@ def list_dir(resource: str) -> list[str]: path = resource_filename(resource) return os.listdir(path) - package_name = '.'.join([resource_directory.package_name] + resource_name.split('/')) if sys.version_info < (3, 9): - return [entry.name for entry in importlib.resources.contents(package_name)] + return pkg_resources.resource_listdir(resource_directory.package_name, resource_name) + + package_name = '.'.join([resource_directory.package_name] + resource_name.split('/')) return [entry.name for entry in importlib.resources.files(package_name).iterdir()] @@ -269,11 +273,10 @@ def _resource_filename( return cached_path if sys.version_info < (3, 9): - file_context = importlib.resources.path(package_name, resource_name) - else: - file_context = importlib.resources.as_file( - importlib.resources.files(package_name) / resource_name) + return pkg_resources.resource_filename(package_name, resource_name) + file_context = importlib.resources.as_file( + importlib.resources.files(package_name) / resource_name) path = _file_manager.enter_context(file_context) path_string = str(path.absolute()) _file_cache[cache_key] = path_string