From 83378f2f9c881505027220a98514bcb933d82682 Mon Sep 17 00:00:00 2001 From: Tim Orling Date: Wed, 17 Jan 2024 17:39:04 -0800 Subject: [PATCH] global: deprecated pkg_resources parse_version Since we are only using parse_version for comparison (typically checking that we are greater than some minimum version for tool or package), one would think we can use packaging.version.parse as if it was parse_version Unfortunately, this requires conforming to PEP-440 version definitions, which does not work for e.g. autotools (2.72d) nor older openssl (1.1.1p). We rely in these (and to be sure other) cases on the LegacyVersion behavior. https://packaging.python.org/en/latest/specifications/version-specifiers/#summary-of-differences-from-pkg-resources-parse-version "This specification purposely restricts the syntax which constitutes a valid version while pkg_resources.parse_version attempts to provide some meaning from any arbitrary string." In order to have the least impact to the overall code, we instead add packaging_legacy to requirements.txt and use packaging_legacy.version.parse as if it was parse_version. https://pypi.org/project/packaging-legacy/ https://github.com/pypa/packaging/pull/407 Since pypi.org itself is depending on packaging_legacy (in fact, a pypi dev developed the package), we can expect it to be supported for quite some time. https://github.com/pypi/warehouse/pull/13500 [YOCTO #15348] Signed-off-by: Tim Orling --- layerindex/update.py | 2 +- layerindex/update_layer.py | 2 +- layerindex/views.py | 2 +- requirements.txt | 1 + rrs/tools/upgrade_history_internal.py | 2 +- 5 files changed, 5 insertions(+), 4 deletions(-) diff --git a/layerindex/update.py b/layerindex/update.py index c1886bd..df3939f 100755 --- a/layerindex/update.py +++ b/layerindex/update.py @@ -17,7 +17,7 @@ import logging import subprocess from datetime import datetime, timedelta -from pkg_resources import parse_version +from packaging_legacy.version import parse as parse_version import utils import operator import re diff --git a/layerindex/update_layer.py b/layerindex/update_layer.py index 4a67a50..d9bec0c 100644 --- a/layerindex/update_layer.py +++ b/layerindex/update_layer.py @@ -19,7 +19,7 @@ import tempfile import shutil import errno -from pkg_resources import parse_version +from packaging_legacy.version import parse as parse_version import itertools import utils import recipeparse diff --git a/layerindex/views.py b/layerindex/views.py index 25c045e..04e39d7 100644 --- a/layerindex/views.py +++ b/layerindex/views.py @@ -11,7 +11,7 @@ import re from datetime import datetime from itertools import islice -from pkg_resources import parse_version +from packaging_legacy.version import parse as parse_version import reversion from django import forms diff --git a/requirements.txt b/requirements.txt index ac06cfb..256bc28 100644 --- a/requirements.txt +++ b/requirements.txt @@ -24,6 +24,7 @@ gitdb==4.0.11 GitPython==3.1.41 kombu==5.3.4 mysqlclient==2.2.1 +packaging_legacy==23.0.post0 Pillow==10.2.0 prompt-toolkit==3.0.43 python-dateutil==2.8.2 diff --git a/rrs/tools/upgrade_history_internal.py b/rrs/tools/upgrade_history_internal.py index 2ba96b1..842fe81 100644 --- a/rrs/tools/upgrade_history_internal.py +++ b/rrs/tools/upgrade_history_internal.py @@ -16,7 +16,7 @@ import optparse import logging import re -from pkg_resources import parse_version +from packaging_legacy.version import parse as parse_version import git from datetime import datetime import calendar