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
This commit is contained in:
Tim Burke 2024-01-29 08:58:07 -08:00
parent 3fbead8637
commit 7b823c16e2
1 changed files with 14 additions and 4 deletions

View File

@ -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():