diff options
author | Doug Hellmann <doug@doughellmann.com> | 2020-07-05 14:17:47 -0400 |
---|---|---|
committer | Doug Hellmann <doug@doughellmann.com> | 2020-07-05 14:17:47 -0400 |
commit | c804ba7da61597ae3b5436ae607be24e91204639 (patch) | |
tree | a507b081c362afbe15d27b94eeee7a91c202cd4c | |
parent | 4fe75b7e1bd3144282f107ce7cb61880257c7c1e (diff) | |
download | oslo-utils-c804ba7da61597ae3b5436ae607be24e91204639.tar.gz |
versionutils: switch from pkg_resources to packaging4.3.0
Importing pkg_resources has a side-effect of scanning the metadata of
every installed python package. That is excessive overhead for a
function that needs to compare two version strings.
This change replaces pkg_resources with the packaging library, which
is also used as the implementation for version parsing within
setuptools and pkg_resources.
Change-Id: Ic9bda0783d3664e1f518d513d81b3271028335fd
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
-rw-r--r-- | lower-constraints.txt | 1 | ||||
-rw-r--r-- | oslo_utils/versionutils.py | 13 | ||||
-rw-r--r-- | requirements.txt | 1 |
3 files changed, 7 insertions, 8 deletions
diff --git a/lower-constraints.txt b/lower-constraints.txt index 3555586..b1f66ad 100644 --- a/lower-constraints.txt +++ b/lower-constraints.txt @@ -19,6 +19,7 @@ os-client-config==1.28.0 oslo.config==5.2.0 oslo.i18n==3.15.3 oslotest==3.2.0 +packaging==20.4 pbr==2.0.0 pyparsing==2.1.0 python-mimeparse==1.6.0 diff --git a/oslo_utils/versionutils.py b/oslo_utils/versionutils.py index 311965d..db8ed0c 100644 --- a/oslo_utils/versionutils.py +++ b/oslo_utils/versionutils.py @@ -19,7 +19,7 @@ Helpers for comparing version strings. .. versionadded:: 1.6 """ -import pkg_resources +import packaging.version import six from oslo_utils._i18n import _ @@ -39,17 +39,14 @@ def is_compatible(requested_version, current_version, same_major=True): True. :returns: True if compatible, False if not """ - requested_parts = pkg_resources.parse_version(requested_version) - current_parts = pkg_resources.parse_version(current_version) + requested = packaging.version.Version(requested_version) + current = packaging.version.Version(current_version) if same_major: - # NOTE(jlvillal) pkg_resources issues a warning if we try to access - # portions of the version, for example requested_parts[0] will issue a - # warning message. So get the major_version from the string instead. - if requested_version.split('.')[0] != current_version.split('.')[0]: + if requested.major != current.major: return False - return current_parts >= requested_parts + return current >= requested def convert_version_to_int(version): diff --git a/requirements.txt b/requirements.txt index 30aa6a8..22d2b78 100644 --- a/requirements.txt +++ b/requirements.txt @@ -16,3 +16,4 @@ netaddr>=0.7.18 # BSD netifaces>=0.10.4 # MIT debtcollector>=1.2.0 # Apache-2.0 pyparsing>=2.1.0 # MIT +packaging>=20.4 # BSD |