From 16f0034e67f16cb81912bcc6a0f7ac9823f32e1f Mon Sep 17 00:00:00 2001
From: Tim Burke <tim.burke@gmail.com>
Date: Fri, 10 Mar 2023 21:17:32 -0800
Subject: [PATCH] Switch from pkg_resources to importlib

Seen on Arch Linux:

    ModuleNotFoundError: No module named 'pkg_resources'

On new enough Python, we don't need it anyway.

Change-Id: I3d46319a36a1c2477e9f7dae0c7e40a362a17639
---
 swiftclient/version.py | 30 ++++++++++++++++++++++--------
 1 file changed, 22 insertions(+), 8 deletions(-)

diff --git a/swiftclient/version.py b/swiftclient/version.py
index 6f01f369..4a03ce98 100644
--- a/swiftclient/version.py
+++ b/swiftclient/version.py
@@ -12,16 +12,30 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-import pkg_resources
+version_string = None
 
+# First, try to get our version out of PKG-INFO. If we're installed,
+# this'll let us find our version without pulling in pbr. After all, if
+# we're installed on a system, we're not in a Git-managed source tree, so
+# pbr doesn't really buy us anything.
 try:
-    # First, try to get our version out of PKG-INFO. If we're installed,
-    # this will let us find our version without pulling in pbr. After all, if
-    # we're installed on a system, we're not in a Git-managed source tree, so
-    # pbr doesn't really buy us anything.
-    version_string = pkg_resources.get_provider(
-        pkg_resources.Requirement.parse('python-swiftclient')).version
-except pkg_resources.DistributionNotFound:
+    import importlib.metadata
+except ImportError:
+    # python < 3.8
+    import pkg_resources
+    try:
+        version_string = pkg_resources.get_provider(
+            pkg_resources.Requirement.parse('python-swiftclient')).version
+    except pkg_resources.DistributionNotFound:
+        pass
+else:
+    try:
+        version_string = importlib.metadata.distribution(
+            'python-swiftclient').version
+    except importlib.metadata.PackageNotFoundError:
+        pass
+
+if version_string is None:
     # No PKG-INFO? We're probably running from a checkout, then. Let pbr do
     # its thing to figure out a version number.
     import pbr.version