From a50185570543d6ead9220c9f8dfef64ae4794af5 Mon Sep 17 00:00:00 2001 From: Joost Ellerbroek Date: Wed, 7 Dec 2022 14:55:21 +0100 Subject: [PATCH] Removed importlib_resources dependency when using python < 3.9 --- bluesky/pathfinder.py | 22 +++++++++++++++++++--- setup.py | 4 ---- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/bluesky/pathfinder.py b/bluesky/pathfinder.py index 6cb7301033..d1ec3e9096 100644 --- a/bluesky/pathfinder.py +++ b/bluesky/pathfinder.py @@ -1,5 +1,4 @@ ''' BlueSky resource access ''' -import sys import shutil import itertools from pathlib import Path @@ -10,8 +9,25 @@ from importlib.readers import MultiplexedPath except ImportError: # Python < 3.9 only provides deprecated resources API - from importlib_resources import files - from importlib_resources.readers import MultiplexedPath + from importlib.resources import path + def files(package): + res = '.' + if '.' in package: + package, res = package.split('.', 1) + return path(package, res) + + class MultiplexedPath: + def __init__(self, *paths) -> None: + self._paths = list(map(Path, paths)) + def iterdir(self): + visited = [] + for path in self._paths: + for file in path.iterdir(): + if file.name in visited: + continue + visited.append(file.name) + yield file + class ResourcePath(MultiplexedPath): diff --git a/setup.py b/setup.py index fea13fac38..6e98762855 100644 --- a/setup.py +++ b/setup.py @@ -19,10 +19,6 @@ def get_numpy_include(): with open(os.path.join(here, 'requirements.txt'), encoding='utf-8') as f: install_requires = f.readlines() -# If Python version < 3.9, add importlib_resources requirement -if sys.version_info.major == 3 and sys.version_info.minor < 9: - install_requires.append('importlib_resources') - # get extra requirements from setup.cfg parser = configparser.ConfigParser() parser.read('%s/setup.cfg' % here)