From 7b823c16e22f115684ede6bdd6bac72e258ca410 Mon Sep 17 00:00:00 2001 From: Tim Burke Date: Mon, 29 Jan 2024 08:58:07 -0800 Subject: [PATCH] Use importlib.metadata instead of pkg_resources ...if available. It was added in Python 3.8, and marked no-longer- provisional in Python 3.10. Python 3.12 no longer pre-installs setuptools in virtual environments, which means we can no longer rely on distutils, setuptools, pkg_resources, and easy_install being available. Fortunately, importlib.metadata covers the one use we have of pkg_resources. Change-Id: Iaa68282960a1c73569f916c3b00acf7f839b9807 --- git_review/cmd.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/git_review/cmd.py b/git_review/cmd.py index 837bfa75..d3fce692 100644 --- a/git_review/cmd.py +++ b/git_review/cmd.py @@ -32,9 +32,16 @@ from urllib.parse import urlencode from urllib.parse import urljoin from urllib.parse import urlparse -import pkg_resources import requests +try: + import importlib.metadata as importlib_metadata + pkg_resources = None +except ImportError: + # Pre-py38 + importlib_metadata = None + import pkg_resources + VERBOSE = False UPDATE = False @@ -220,9 +227,12 @@ def run_http_exc(klazz, url, **env): def get_version(): - requirement = pkg_resources.Requirement.parse('git-review') - provider = pkg_resources.get_provider(requirement) - return provider.version + if importlib_metadata: + return importlib_metadata.version('git-review') + else: + requirement = pkg_resources.Requirement.parse('git-review') + provider = pkg_resources.get_provider(requirement) + return provider.version def get_git_version():