diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/pyramid/path.py | 22 | ||||
| -rw-r--r-- | src/pyramid/scripts/pdistreport.py | 14 | ||||
| -rw-r--r-- | src/pyramid/scripts/pshell.py | 14 |
3 files changed, 31 insertions, 19 deletions
diff --git a/src/pyramid/path.py b/src/pyramid/path.py index a5b7ad212..160d97abe 100644 --- a/src/pyramid/path.py +++ b/src/pyramid/path.py @@ -1,3 +1,5 @@ +import functools +from importlib import import_module from importlib.machinery import SOURCE_SUFFIXES import os import pkg_resources @@ -344,14 +346,18 @@ class DottedNameResolver(Resolver): value = package.__name__ else: value = package.__name__ + value - # Calling EntryPoint.load with an argument is deprecated. - # See https://pythonhosted.org/setuptools/history.html#id8 - ep = pkg_resources.EntryPoint.parse('x=%s' % value) - if hasattr(ep, 'resolve'): - # setuptools>=10.2 - return ep.resolve() # pragma: NO COVER - else: - return ep.load(False) # pragma: NO COVER + # logic below is similar to importlib.metadata.EntryPoint.load() + module = value + attrs = [] + parts = value.split(':', 1) + if len(parts) == 2: + module, attrs = parts + attrs = attrs.split('.') + module = import_module(module) + try: + return functools.reduce(getattr, attrs, module) + except AttributeError as ex: + raise ImportError(str(ex)) def _zope_dottedname_style(self, value, package): """package.module.attr style""" diff --git a/src/pyramid/scripts/pdistreport.py b/src/pyramid/scripts/pdistreport.py index 99615c1d5..eb41c17e7 100644 --- a/src/pyramid/scripts/pdistreport.py +++ b/src/pyramid/scripts/pdistreport.py @@ -1,6 +1,6 @@ import argparse +import importlib.metadata from operator import itemgetter -import pkg_resources import platform import sys @@ -21,7 +21,7 @@ def get_parser(): def main( argv=sys.argv, - pkg_resources=pkg_resources, + importlib_metadata=importlib.metadata, platform=platform.platform, out=out, ): @@ -29,25 +29,25 @@ def main( parser = get_parser() parser.parse_args(argv[1:]) packages = [] - for distribution in pkg_resources.working_set: - name = distribution.project_name + for distribution in importlib_metadata.distributions(): + name = distribution.metadata['Name'] packages.append( { 'version': distribution.version, 'lowername': name.lower(), 'name': name, - 'location': distribution.location, + 'summary': distribution.metadata.get('Summary'), } ) packages = sorted(packages, key=itemgetter('lowername')) - pyramid_version = pkg_resources.get_distribution('pyramid').version + pyramid_version = importlib_metadata.distribution('pyramid').version plat = platform() out('Pyramid version:', pyramid_version) out('Platform:', plat) out('Packages:') for package in packages: out(' ', package['name'], package['version']) - out(' ', package['location']) + out(' ', package['summary']) if __name__ == '__main__': # pragma: no cover diff --git a/src/pyramid/scripts/pshell.py b/src/pyramid/scripts/pshell.py index 63600abaf..4d3817ffb 100644 --- a/src/pyramid/scripts/pshell.py +++ b/src/pyramid/scripts/pshell.py @@ -1,8 +1,8 @@ import argparse from code import interact from contextlib import contextmanager +import importlib.metadata import os -import pkg_resources import sys import textwrap @@ -41,7 +41,7 @@ class PShellCommand: script_name = 'pshell' bootstrap = staticmethod(bootstrap) # for testing get_config_loader = staticmethod(get_config_loader) # for testing - pkg_resources = pkg_resources # for testing + importlib_metadata = importlib.metadata # for testing parser = argparse.ArgumentParser( description=textwrap.dedent(description), @@ -228,10 +228,16 @@ class PShellCommand: return 0 def find_all_shells(self): - pkg_resources = self.pkg_resources + importlib_metadata = self.importlib_metadata shells = {} - for ep in pkg_resources.iter_entry_points('pyramid.pshell_runner'): + eps = importlib_metadata.entry_points() + if hasattr(eps, 'select'): + eps = eps.select(group='pyramid.pshell_runner') + else: # pragma: no cover + # fallback for py38 and py39 + eps = eps.get('pyramid.pshell_runner') + for ep in eps: name = ep.name shell_factory = ep.load() shells[name] = shell_factory |
