Blob Blame History Raw
From 6af10b8905061856d4654dbe380f1de6c5a0eb76 Mon Sep 17 00:00:00 2001
From: Benjamin A. Beasley <code@musicinmybrain.net>
Date: Wed, 28 Sep 2022 08:28:18 -0400
Subject: [PATCH] Use importlib.metadata on Python 3.10+

Favor importlib.metadata.packages_distributions() over
importlib_metadata.packages_distributions() where it is available, i.e.,
on Python 3.10 and later.

Depend on PyPI importlib_metadata only on Python 3.9 and older:
conditionalize the requirements.txt entry on Python version.

Change-Id: I624fc0059057de05bb2bacd9c1238cba71ebad2a
---

diff --git a/cliff/command.py b/cliff/command.py
index f8e38ad..57665ed 100644
--- a/cliff/command.py
+++ b/cliff/command.py
@@ -13,7 +13,12 @@
 import abc
 import inspect
 
-import importlib_metadata
+try:
+    # Python 3.10 and newer
+    from importlib.metadata import packages_distributions
+except ImportError:
+    # Python 3.9 and older
+    from importlib_metadata import packages_distributions
 from stevedore import extension
 
 from cliff import _argparse
@@ -34,8 +39,7 @@
         # 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()
+            k: v[0] for k, v in packages_distributions().items()
         }
     return _dists_by_mods
 
diff --git a/requirements.txt b/requirements.txt
index 79ed14f..4715045 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,6 +1,5 @@
 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
+importlib_metadata>=4.4; python_version < '3.10' # Apache-2.0
 cmd2>=1.0.0 # MIT
 PrettyTable>=0.7.2 # BSD
 stevedore>=2.0.1 # Apache-2.0