summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2022-07-18 18:49:03 +0000
committerGerrit Code Review <review@openstack.org>2022-07-18 18:49:03 +0000
commitf782f42b94446a3401b644c93a9f120e77d5fb9e (patch)
tree12b2d60b0d4388e0021a472e8812649bd307b9cd
parent468d80e3ac49aacd24c37d8be89621a333c901c8 (diff)
parent86061ad87d2b60a6cc330fae9fc22249ce5916aa (diff)
downloadcliff-f782f42b94446a3401b644c93a9f120e77d5fb9e.tar.gz
Merge "Remove final use of pkg_resources"
-rw-r--r--cliff/command.py24
-rw-r--r--requirements.txt2
2 files changed, 9 insertions, 17 deletions
diff --git a/cliff/command.py b/cliff/command.py
index 0a02525..f8e38ad 100644
--- a/cliff/command.py
+++ b/cliff/command.py
@@ -13,6 +13,7 @@
import abc
import inspect
+import importlib_metadata
from stevedore import extension
from cliff import _argparse
@@ -27,26 +28,15 @@ def _get_distributions_by_modules():
distribution name (the name used with pip and PyPI) do not
always match. We want to report which distribution caused the
command to be installed, so we need to look up the values.
-
"""
- import pkg_resources
global _dists_by_mods
if _dists_by_mods is None:
- results = {}
- for dist in pkg_resources.working_set:
- try:
- mod_names = dist.get_metadata('top_level.txt').strip()
- except Exception:
- # Could not retrieve metadata. Either the file is not
- # present or we cannot read it. Ignore the
- # distribution.
- pass
- else:
- # Distributions may include multiple top-level
- # packages (see setuptools for an example).
- for mod_name in mod_names.splitlines():
- results[mod_name] = dist.project_name
- _dists_by_mods = results
+ # There can be multiple distribution in the case of namespace packages
+ # so we'll just grab the first one
+ _dists_by_mods = {
+ k: v[0] for k, v in
+ importlib_metadata.packages_distributions().items()
+ }
return _dists_by_mods
diff --git a/requirements.txt b/requirements.txt
index 1399132..79ed14f 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,4 +1,6 @@
autopage>=0.4.0 # Apache 2.0
+# TODO: Drop this when Python 3.10 is our minimum supported version
+importlib_metadata>=4.4 # Apache-2.0
cmd2>=1.0.0 # MIT
PrettyTable>=0.7.2 # BSD
stevedore>=2.0.1 # Apache-2.0