File use-parts-of-legacy-version.patch of Package python-python-jenkins

Index: python-jenkins-1.8.0/jenkins/plugins.py
===================================================================
--- python-jenkins-1.8.0.orig/jenkins/plugins.py
+++ python-jenkins-1.8.0/jenkins/plugins.py
@@ -41,8 +41,7 @@
 
 import operator
 import re
-
-import pkg_resources
+from typing import Iterator, Tuple
 
 
 class Plugin(dict):
@@ -67,6 +66,63 @@ class Plugin(dict):
         super(Plugin, self).__setitem__(key, value)
 
 
+# Portion of code from packaging module, dual licensed under the terms of
+# the Apache License, Version 2.0, and the BSD License.
+_legacy_version_component_re = re.compile(r"(\d+ | [a-z]+ | \.| -)", re.VERBOSE)
+
+_legacy_version_replacement_map = {
+    "pre": "c",
+    "preview": "c",
+    "-": "final-",
+    "rc": "c",
+    "dev": "@",
+}
+
+
+def _parse_version_parts(s: str) -> Iterator[str]:
+    for part in _legacy_version_component_re.split(s):
+        part = _legacy_version_replacement_map.get(part, part)
+
+        if not part or part == ".":
+            continue
+
+        if part[:1] in "0123456789":
+            # pad for numeric comparison
+            yield part.zfill(8)
+        else:
+            yield "*" + part
+
+    # ensure that alpha/beta/candidate are before final
+    yield "*final"
+
+
+def _legacy_cmpkey(version: str) -> Tuple[int, Tuple[str, ...]]:
+
+    # We hardcode an epoch of -1 here. A PEP 440 version can only have a epoch
+    # greater than or equal to 0. This will effectively put the LegacyVersion,
+    # which uses the defacto standard originally implemented by setuptools,
+    # as before all PEP 440 versions.
+    epoch = -1
+
+    # This scheme is taken from pkg_resources.parse_version setuptools prior to
+    # it's adoption of the packaging library.
+    parts: List[str] = []
+    for part in _parse_version_parts(version.lower()):
+        if part.startswith("*"):
+            # remove "-" before a prerelease tag
+            if part < "*final":
+                while parts and parts[-1] == "*final-":
+                    parts.pop()
+
+            # remove trailing zeros from each series of numeric parts
+            while parts and parts[-1] == "00000000":
+                parts.pop()
+
+        parts.append(part)
+
+    return epoch, tuple(parts)
+
+
 class PluginVersion(str):
     '''Class providing comparison capabilities for plugin versions.'''
 
@@ -76,15 +132,14 @@ class PluginVersion(str):
         '''Parse plugin version and store it for comparison.'''
 
         self._version = version
-        self.parsed_version = pkg_resources.parse_version(
-            self.__convert_version(version))
+        self.parsed_version = _legacy_cmpkey(self.__convert_version(version))
 
     def __convert_version(self, version):
         return self._VERSION_RE.sub(r'\g<1>.preview', str(version))
 
     def __compare(self, op, version):
-        return op(self.parsed_version, pkg_resources.parse_version(
-            self.__convert_version(version)))
+        return op(self.parsed_version,
+                  _legacy_cmpkey(self.__convert_version(version)))
 
     def __le__(self, version):
         return self.__compare(operator.le, version)
Index: python-jenkins-1.8.0/requirements.txt
===================================================================
--- python-jenkins-1.8.0.orig/requirements.txt
+++ python-jenkins-1.8.0/requirements.txt
@@ -1,5 +1,3 @@
-# Setuptools removed support for PEP 440 non-conforming versions
-setuptools<66
 six>=1.3.0
 pbr>=0.8.2
 multi_key_dict
openSUSE Build Service is sponsored by