#45 Sync dependency conversion with upstream pyreq2rpm.
Merged 2 years ago by churchyard. Opened 2 years ago by gordonmessmer.
rpms/ gordonmessmer/python-rpm-generators bug2014616  into  rawhide

file modified
+5 -1
@@ -1,7 +1,7 @@ 

  Name:           python-rpm-generators

  Summary:        Dependency generators for Python RPMs

  Version:        12

- Release:        8%{?dist}

+ Release:        9%{?dist}

  

  # Originally all those files were part of RPM, so license is kept here

  License:        GPLv2+
@@ -47,6 +47,10 @@ 

  %{_rpmconfigdir}/pythonbundles.py

  

  %changelog

+ * Thu Oct 28 2021 Gordon Messmer <gordon.messmer@gmail.com> - 12-9

+ - Sync dependency conversion with upstream pyreq2rpm.

+ - Improve handling of > and < operators, and != operator with prefix matching

+ 

  * Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 12-8

  - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild

  

file modified
+22 -4
@@ -134,6 +134,9 @@ 

              self.pre = version._version.pre

              self.dev = version._version.dev

              self.post = version._version.post

+             # version.local is ignored as it is not expected to appear

+             # in public releases

+             # https://www.python.org/dev/peps/pep-0440/#local-version-identifiers

  

      def increment(self):

          self.version[-1] += 1
@@ -201,18 +204,27 @@ 

      if version_id.endswith('.*'):

          version_id = version_id[:-2]

          version = RpmVersion(version_id)

-         lower_version = RpmVersion(version_id).increment()

+         version_gt = RpmVersion(version_id).increment()

+         version_gt_operator = '>='

+         # Prevent pre-releases from satisfying a < requirement

+         version = '{}~'.format(version)

      else:

          version = RpmVersion(version_id)

-         lower_version = version

-     return '({} < {} or {} > {})'.format(

-         name, version, name, lower_version)

+         version_gt = version

+         version_gt_operator = '>'

+     return '({} < {} or {} {} {})'.format(

+         name, version, name, version_gt_operator, version_gt)

  

  

  def convert_ordered(name, operator, version_id):

      if version_id.endswith('.*'):

          # PEP 440 does not define semantics for prefix matching

          # with ordered comparisons

+         # see: https://github.com/pypa/packaging/issues/320

+         # and: https://github.com/pypa/packaging/issues/321

+         # This style of specifier is officially "unsupported",

+         # even though it is processed.  Support may be removed

+         # in version 21.0.

          version_id = version_id[:-2]

          version = RpmVersion(version_id)

          if operator == '>':
@@ -223,6 +235,12 @@ 

              operator = '<'

      else:

          version = RpmVersion(version_id)

+     # Prevent pre-releases from satisfying a < requirement

+     if operator == '<' and not version.pre and not version.dev and not version.post:

+         version = '{}~'.format(version)

+     # Prevent post-releases from satisfying a > requirement

+     if operator == '>' and not version.pre and not version.dev and not version.post:

+         version = '{}.0'.format(version)

      return '{} {} {}'.format(name, operator, version)

  

  

@@ -28,7 +28,7 @@ 

                  python2.7dist(setuptools) >= 21

                  python2.7dist(six) >= 1.9

                  python2.7dist(urllib3) >= 1.24.2

-                 ((python2.7dist(websocket-client) < 0.40 or python2.7dist(websocket-client) > 0.40) with (python2.7dist(websocket-client) < 0.41 or python2.7dist(websocket-client) > 0.42) with (python2.7dist(websocket-client) < 0.42 or python2.7dist(websocket-client) > 0.43) with python2.7dist(websocket-client) >= 0.32)

+                 ((python2.7dist(websocket-client) < 0.40 or python2.7dist(websocket-client) > 0.40) with (python2.7dist(websocket-client) < 0.41~ or python2.7dist(websocket-client) >= 0.42) with (python2.7dist(websocket-client) < 0.42~ or python2.7dist(websocket-client) >= 0.43) with python2.7dist(websocket-client) >= 0.32)

          usr/lib/python2.7/site-packages/mistune-0.8.4-py2.7.egg-info:

              provides: |-

                  python2.7dist(mistune) = 0.8.4
@@ -75,12 +75,12 @@ 

                  python2dist(tox) = 3.14

              requires: |-

                  python(abi) = 2.7

-                 (python2.7dist(filelock) < 4 with python2.7dist(filelock) >= 3)

-                 (python2.7dist(importlib-metadata) < 1 with python2.7dist(importlib-metadata) >= 0.12)

+                 (python2.7dist(filelock) < 4~ with python2.7dist(filelock) >= 3)

+                 (python2.7dist(importlib-metadata) < 1~ with python2.7dist(importlib-metadata) >= 0.12)

                  python2.7dist(packaging) >= 14

-                 (python2.7dist(pluggy) < 1 with python2.7dist(pluggy) >= 0.12)

-                 (python2.7dist(py) < 2 with python2.7dist(py) >= 1.4.17)

-                 (python2.7dist(six) < 2 with python2.7dist(six) >= 1)

+                 (python2.7dist(pluggy) < 1~ with python2.7dist(pluggy) >= 0.12)

+                 (python2.7dist(py) < 2~ with python2.7dist(py) >= 1.4.17)

+                 (python2.7dist(six) < 2~ with python2.7dist(six) >= 1)

                  python2.7dist(toml) >= 0.9.4

                  python2.7dist(virtualenv) >= 14

          usr/lib/python2.7/site-packages/urllib3-1.25.7-py2.7.egg-info:
@@ -105,7 +105,7 @@ 

                  python(abi) = 3.7

                  (python3.7dist(lazy-object-proxy) >= 1.4 with python3.7dist(lazy-object-proxy) < 1.5)

                  (python3.7dist(six) >= 1.12 with python3.7dist(six) < 2)

-                 (python3.7dist(typed-ast) < 1.5 with python3.7dist(typed-ast) >= 1.4)

+                 (python3.7dist(typed-ast) < 1.5~ with python3.7dist(typed-ast) >= 1.4)

                  (python3.7dist(wrapt) >= 1.11 with python3.7dist(wrapt) < 1.12)

          usr/lib/python3.7/site-packages/packaging-19.0.dist-info:

              provides: |-
@@ -148,12 +148,12 @@ 

                  python3dist(tox) = 3.14

              requires: |-

                  python(abi) = 3.7

-                 (python3.7dist(filelock) < 4 with python3.7dist(filelock) >= 3)

-                 (python3.7dist(importlib-metadata) < 1 with python3.7dist(importlib-metadata) >= 0.12)

+                 (python3.7dist(filelock) < 4~ with python3.7dist(filelock) >= 3)

+                 (python3.7dist(importlib-metadata) < 1~ with python3.7dist(importlib-metadata) >= 0.12)

                  python3.7dist(packaging) >= 14

-                 (python3.7dist(pluggy) < 1 with python3.7dist(pluggy) >= 0.12)

-                 (python3.7dist(py) < 2 with python3.7dist(py) >= 1.4.17)

-                 (python3.7dist(six) < 2 with python3.7dist(six) >= 1)

+                 (python3.7dist(pluggy) < 1~ with python3.7dist(pluggy) >= 0.12)

+                 (python3.7dist(py) < 2~ with python3.7dist(py) >= 1.4.17)

+                 (python3.7dist(six) < 2~ with python3.7dist(six) >= 1)

                  python3.7dist(toml) >= 0.9.4

                  python3.7dist(virtualenv) >= 14

          usr/lib/python3.9/site-packages/astroid-2.3.3.dist-info:
@@ -205,7 +205,7 @@ 

                  python3.9dist(setuptools) >= 21

                  python3.9dist(six) >= 1.9

                  python3.9dist(urllib3) >= 1.24.2

-                 ((python3.9dist(websocket-client) < 0.40 or python3.9dist(websocket-client) > 0.40) with (python3.9dist(websocket-client) < 0.41 or python3.9dist(websocket-client) > 0.42) with (python3.9dist(websocket-client) < 0.42 or python3.9dist(websocket-client) > 0.43) with python3.9dist(websocket-client) >= 0.32)

+                 ((python3.9dist(websocket-client) < 0.40 or python3.9dist(websocket-client) > 0.40) with (python3.9dist(websocket-client) < 0.41~ or python3.9dist(websocket-client) >= 0.42) with (python3.9dist(websocket-client) < 0.42~ or python3.9dist(websocket-client) >= 0.43) with python3.9dist(websocket-client) >= 0.32)

          usr/lib/python3.9/site-packages/mistune-0.8.4-py3.9.egg-info:

              provides: |-

                  python3.9dist(mistune) = 0.8.4
@@ -260,11 +260,11 @@ 

                  python3dist(tox) = 3.14

              requires: |-

                  python(abi) = 3.9

-                 (python3.9dist(filelock) < 4 with python3.9dist(filelock) >= 3)

+                 (python3.9dist(filelock) < 4~ with python3.9dist(filelock) >= 3)

                  python3.9dist(packaging) >= 14

-                 (python3.9dist(pluggy) < 1 with python3.9dist(pluggy) >= 0.12)

-                 (python3.9dist(py) < 2 with python3.9dist(py) >= 1.4.17)

-                 (python3.9dist(six) < 2 with python3.9dist(six) >= 1)

+                 (python3.9dist(pluggy) < 1~ with python3.9dist(pluggy) >= 0.12)

+                 (python3.9dist(py) < 2~ with python3.9dist(py) >= 1.4.17)

+                 (python3.9dist(six) < 2~ with python3.9dist(six) >= 1)

                  python3.9dist(toml) >= 0.9.4

                  python3.9dist(virtualenv) >= 14

          usr/lib/python3.9/site-packages/urllib3-1.25.7-py3.9.egg-info:
@@ -437,7 +437,7 @@ 

                  python2.7dist(setuptools) >= 21

                  python2.7dist(six) >= 1.9

                  python2.7dist(urllib3) >= 1.24.2

-                 ((python2.7dist(websocket-client) < 0.40 or python2.7dist(websocket-client) > 0.40) with (python2.7dist(websocket-client) < 0.41 or python2.7dist(websocket-client) > 0.42) with (python2.7dist(websocket-client) < 0.42 or python2.7dist(websocket-client) > 0.43) with python2.7dist(websocket-client) >= 0.32)

+                 ((python2.7dist(websocket-client) < 0.40 or python2.7dist(websocket-client) > 0.40) with (python2.7dist(websocket-client) < 0.41~ or python2.7dist(websocket-client) >= 0.42) with (python2.7dist(websocket-client) < 0.42~ or python2.7dist(websocket-client) >= 0.43) with python2.7dist(websocket-client) >= 0.32)

          usr/lib/python2.7/site-packages/mistune-0.8.4-py2.7.egg-info:

              provides: |-

                  python2.7dist(mistune) = 0.8.4
@@ -489,7 +489,7 @@ 

                  python(abi) = 3.7

                  (python3.7dist(lazy-object-proxy) >= 1.4 with python3.7dist(lazy-object-proxy) < 1.5)

                  (python3.7dist(six) >= 1.12 with python3.7dist(six) < 2)

-                 (python3.7dist(typed-ast) < 1.5 with python3.7dist(typed-ast) >= 1.4)

+                 (python3.7dist(typed-ast) < 1.5~ with python3.7dist(typed-ast) >= 1.4)

                  (python3.7dist(wrapt) >= 1.11 with python3.7dist(wrapt) < 1.12)

          usr/lib/python3.7/site-packages/packaging-19.0.dist-info:

              provides: python3.7dist(packaging) = 19
@@ -554,11 +554,11 @@ 

                  python3dist(tox) = 3.14

              requires: |-

                  python(abi) = 3.9

-                 (python3.9dist(filelock) < 4 with python3.9dist(filelock) >= 3)

+                 (python3.9dist(filelock) < 4~ with python3.9dist(filelock) >= 3)

                  python3.9dist(packaging) >= 14

-                 (python3.9dist(pluggy) < 1 with python3.9dist(pluggy) >= 0.12)

-                 (python3.9dist(py) < 2 with python3.9dist(py) >= 1.4.17)

-                 (python3.9dist(six) < 2 with python3.9dist(six) >= 1)

+                 (python3.9dist(pluggy) < 1~ with python3.9dist(pluggy) >= 0.12)

+                 (python3.9dist(py) < 2~ with python3.9dist(py) >= 1.4.17)

+                 (python3.9dist(six) < 2~ with python3.9dist(six) >= 1)

                  python3.9dist(toml) >= 0.9.4

                  python3.9dist(virtualenv) >= 14

          usr/lib/python3.9/site-packages/urllib3-1.25.7-py3.9.egg-info:
@@ -611,12 +611,12 @@ 

                  python2dist(tox) = 3.14

              requires: |-

                  python(abi) = 2.7

-                 (python2.7dist(filelock) < 4 with python2.7dist(filelock) >= 3)

-                 (python2.7dist(importlib-metadata) < 1 with python2.7dist(importlib-metadata) >= 0.12)

+                 (python2.7dist(filelock) < 4~ with python2.7dist(filelock) >= 3)

+                 (python2.7dist(importlib-metadata) < 1~ with python2.7dist(importlib-metadata) >= 0.12)

                  python2.7dist(packaging) >= 14

-                 (python2.7dist(pluggy) < 1 with python2.7dist(pluggy) >= 0.12)

-                 (python2.7dist(py) < 2 with python2.7dist(py) >= 1.4.17)

-                 (python2.7dist(six) < 2 with python2.7dist(six) >= 1)

+                 (python2.7dist(pluggy) < 1~ with python2.7dist(pluggy) >= 0.12)

+                 (python2.7dist(py) < 2~ with python2.7dist(py) >= 1.4.17)

+                 (python2.7dist(six) < 2~ with python2.7dist(six) >= 1)

                  python2.7dist(toml) >= 0.9.4

                  python2.7dist(virtualenv) >= 14

          usr/lib/python2.7/site-packages/urllib3-1.25.7-py2.7.egg-info:
@@ -653,12 +653,12 @@ 

              provides: python3.7dist(tox) = 3.14

              requires: |-

                  python(abi) = 3.7

-                 (python3.7dist(filelock) < 4 with python3.7dist(filelock) >= 3)

-                 (python3.7dist(importlib-metadata) < 1 with python3.7dist(importlib-metadata) >= 0.12)

+                 (python3.7dist(filelock) < 4~ with python3.7dist(filelock) >= 3)

+                 (python3.7dist(importlib-metadata) < 1~ with python3.7dist(importlib-metadata) >= 0.12)

                  python3.7dist(packaging) >= 14

-                 (python3.7dist(pluggy) < 1 with python3.7dist(pluggy) >= 0.12)

-                 (python3.7dist(py) < 2 with python3.7dist(py) >= 1.4.17)

-                 (python3.7dist(six) < 2 with python3.7dist(six) >= 1)

+                 (python3.7dist(pluggy) < 1~ with python3.7dist(pluggy) >= 0.12)

+                 (python3.7dist(py) < 2~ with python3.7dist(py) >= 1.4.17)

+                 (python3.7dist(six) < 2~ with python3.7dist(six) >= 1)

                  python3.7dist(toml) >= 0.9.4

                  python3.7dist(virtualenv) >= 14

          usr/lib64/python2.7/site-packages/scipy-1.2.1.dist-info:
@@ -1251,10 +1251,10 @@ 

                  (python3.9dist(foobar33) < 2.4.8 or python3.9dist(foobar33) > 2.4.8)

                  (python3.9dist(foobar34) < 2.4.8 or python3.9dist(foobar34) > 2.4.8)

                  (python3.9dist(foobar35) < 2.4.8.1 or python3.9dist(foobar35) > 2.4.8.1)

-                 (python3.9dist(foobar36) < 2.4.8 or python3.9dist(foobar36) > 2.4.9)

+                 (python3.9dist(foobar36) < 2.4.8~ or python3.9dist(foobar36) >= 2.4.9)

                  (python3.9dist(foobar37) < 2 or python3.9dist(foobar37) > 2)

                  (python3.9dist(foobar38) < 2 or python3.9dist(foobar38) > 2)

-                 (python3.9dist(foobar39) < 2 or python3.9dist(foobar39) > 3)

+                 (python3.9dist(foobar39) < 2~ or python3.9dist(foobar39) >= 3)

                  (python3.9dist(foobar4) >= 2 with python3.9dist(foobar4) < 3)

                  (python3.9dist(foobar40) < 2.4.8~b5 or python3.9dist(foobar40) > 2.4.8~b5)

                  (python3.9dist(foobar41) < 2~b5 or python3.9dist(foobar41) > 2~b5)
@@ -1263,21 +1263,21 @@ 

                  python3.9dist(foobar44) <= 2.4.8

                  python3.9dist(foobar45) <= 2.4.8

                  python3.9dist(foobar46) <= 2.4.8.1

-                 python3.9dist(foobar47) < 2.4.8

+                 python3.9dist(foobar47) < 2.4.8~

                  python3.9dist(foobar48) <= 2

                  python3.9dist(foobar49) <= 2

-                 python3.9dist(foobar50) < 2

+                 python3.9dist(foobar50) < 2~

                  python3.9dist(foobar51) <= 2.4.8~b5

                  python3.9dist(foobar52) <= 2~b5

                  python3.9dist(foobar53) <= 2.4.8^post1

                  python3.9dist(foobar54) <= 2^post1

-                 python3.9dist(foobar55) < 2.4.8

-                 python3.9dist(foobar56) < 2.4.8

-                 python3.9dist(foobar57) < 2.4.8.1

-                 python3.9dist(foobar58) < 2.4.8

-                 python3.9dist(foobar59) < 2

-                 python3.9dist(foobar60) < 2

-                 python3.9dist(foobar61) < 2

+                 python3.9dist(foobar55) < 2.4.8~

+                 python3.9dist(foobar56) < 2.4.8~

+                 python3.9dist(foobar57) < 2.4.8.1~

+                 python3.9dist(foobar58) < 2.4.8~

+                 python3.9dist(foobar59) < 2~

+                 python3.9dist(foobar60) < 2~

+                 python3.9dist(foobar61) < 2~

                  python3.9dist(foobar62) < 2.4.8~b5

                  python3.9dist(foobar63) < 2~b5

                  python3.9dist(foobar64) < 2.4.8^post1
@@ -1294,13 +1294,13 @@ 

                  python3.9dist(foobar74) >= 2~b5

                  python3.9dist(foobar75) >= 2.4.8^post1

                  python3.9dist(foobar76) >= 2^post1

-                 python3.9dist(foobar77) > 2.4.8

-                 python3.9dist(foobar78) > 2.4.8

-                 python3.9dist(foobar79) > 2.4.8.1

+                 python3.9dist(foobar77) > 2.4.8.0

+                 python3.9dist(foobar78) > 2.4.8.0

+                 python3.9dist(foobar79) > 2.4.8.1.0

                  (python3.9dist(foobar8) >= 2~b5 with python3.9dist(foobar8) < 2.1)

                  python3.9dist(foobar80) >= 2.4.8

-                 python3.9dist(foobar81) > 2

-                 python3.9dist(foobar82) > 2

+                 python3.9dist(foobar81) > 2.0

+                 python3.9dist(foobar82) > 2.0

                  python3.9dist(foobar83) >= 2

                  python3.9dist(foobar84) > 2.4.8~b5

                  python3.9dist(foobar85) > 2~b5

Improve handling of > operator, preventing post-release from satisfying most rpm requirements.
Improve handling of < operator, preventing pre-release from satisfying rpm requirement.
Improve handling of != operator with prefix matching, preventing pre-release from satisfying rpm requirements.

Build failed. More information on how to proceed and troubleshoot errors available at https://fedoraproject.org/wiki/Zuul-based-ci

rebased onto 7bea9e6fae905ba0a505910e32377033f1793292

2 years ago

Build failed. More information on how to proceed and troubleshoot errors available at https://fedoraproject.org/wiki/Zuul-based-ci

rebased onto 0dcd12ca3cb7dbc8f7dc440e7aa860501ff4e744

2 years ago

Build succeeded.

This looks reasonable.

I'll wait for https://github.com/gordonmessmer/pyreq2rpm/pull/11

This will also need a release bump.

Once ready, I'll announce on Python devel and merge together with https://src.fedoraproject.org/rpms/pyproject-rpm-macros/pull-request/209

rebased onto cad66d2a5d6fa530dfb40e0c3ad8514cbf0691a2

2 years ago

Build failed. More information on how to proceed and troubleshoot errors available at https://fedoraproject.org/wiki/Zuul-based-ci

rebased onto 34b589c89ddae17ee2e239ed6707bc5273f489c7

2 years ago

Build succeeded.

rebased onto 27f9733

2 years ago

Build succeeded.

Pull-Request has been merged by churchyard

2 years ago