Replace pkg_resources
This will be removed after 2025-11-30. Get ahead of that breakage. Change-Id: Ib97eea1037fac541c8ebadc526ae9c3bb160f685 Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
This commit is contained in:
14
detail.py
14
detail.py
@@ -20,7 +20,7 @@ import traceback
|
||||
import urllib.parse as urlparse
|
||||
import urllib.request as urlreq
|
||||
|
||||
import pkg_resources
|
||||
import packaging.requirement
|
||||
|
||||
try:
|
||||
PYPI_LOCATION = os.environ['PYPI_LOCATION']
|
||||
@@ -40,11 +40,11 @@ KEEP_KEYS = frozenset([
|
||||
|
||||
|
||||
def iter_names(req):
|
||||
for k in (req.key, req.project_name):
|
||||
yield k
|
||||
yield k.title()
|
||||
yield k.replace("-", "_")
|
||||
yield k.replace("-", "_").title()
|
||||
yield req.name
|
||||
yield req.name.lower()
|
||||
yield req.name.title()
|
||||
yield req.name.replace("-", "_")
|
||||
yield req.name.replace("-", "_").title()
|
||||
|
||||
|
||||
def release_data(req):
|
||||
@@ -76,7 +76,7 @@ def main():
|
||||
line = line.strip()
|
||||
if line.startswith("#") or not line:
|
||||
continue
|
||||
req = pkg_resources.Requirement.parse(line)
|
||||
req = packaging.requirement.Requirement(line)
|
||||
print(" - processing: %s" % (req))
|
||||
try:
|
||||
raw_req_data = release_data(req)
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
|
||||
from packaging import specifiers
|
||||
|
||||
from openstack_requirements import requirement
|
||||
|
||||
|
||||
# FIXME(dhellmann): These items were not in the constraints list but
|
||||
# should not be denylisted. We don't know yet what versions they
|
||||
@@ -102,7 +104,7 @@ def check_compatible(global_reqs, constraints):
|
||||
failures = []
|
||||
for pkg_constraints in constraints.values():
|
||||
for constraint, _ in pkg_constraints:
|
||||
name = constraint.package
|
||||
name = requirement.canonical_name(constraint.package)
|
||||
version = constraint.specifiers[3:]
|
||||
satisfied(global_reqs, name, version, failures)
|
||||
return failures
|
||||
|
||||
@@ -15,9 +15,10 @@
|
||||
# This module has no IO at all, and none should be added.
|
||||
|
||||
import collections
|
||||
import packaging.requirements
|
||||
import packaging.specifiers
|
||||
import packaging.utils
|
||||
import packaging.version
|
||||
import pkg_resources
|
||||
import re
|
||||
|
||||
|
||||
@@ -70,7 +71,7 @@ url_re = re.compile(
|
||||
|
||||
def canonical_name(req_name):
|
||||
"""Return the canonical form of req_name."""
|
||||
return pkg_resources.safe_name(req_name).lower()
|
||||
return packaging.utils.canonicalize_name(req_name)
|
||||
|
||||
|
||||
def parse(content, permit_urls=False):
|
||||
@@ -116,7 +117,7 @@ def parse_line(req_line, permit_urls=False):
|
||||
hash_pos = hash_pos + parse_start
|
||||
else:
|
||||
# Trigger an early failure before we look for ':'
|
||||
pkg_resources.Requirement.parse(req_line)
|
||||
packaging.requirements.Requirement(req_line)
|
||||
else:
|
||||
parse_start = 0
|
||||
location = ''
|
||||
@@ -138,8 +139,8 @@ def parse_line(req_line, permit_urls=False):
|
||||
specifier = ''
|
||||
elif req_line:
|
||||
# Pulled out a requirement
|
||||
parsed = pkg_resources.Requirement.parse(req_line)
|
||||
name = parsed.project_name
|
||||
parsed = packaging.requirements.Requirement(req_line)
|
||||
name = parsed.name
|
||||
extras = parsed.extras
|
||||
specifier = str(parsed.specifier)
|
||||
else:
|
||||
|
||||
@@ -154,7 +154,7 @@ class TestToReqs(testtools.TestCase):
|
||||
""")
|
||||
reqs = requirement.parse(content)
|
||||
self.assertEqual(
|
||||
set(['oslo.config', 'oslo.concurrency', 'oslo.context']),
|
||||
{'oslo-config', 'oslo-concurrency', 'oslo-context'},
|
||||
set(reqs.keys()),
|
||||
)
|
||||
|
||||
@@ -166,16 +166,16 @@ class TestToReqs(testtools.TestCase):
|
||||
""")
|
||||
reqs = requirement.parse(content)
|
||||
self.assertEqual(
|
||||
set(['oslo.config', 'oslo.concurrency', 'oslo.db']),
|
||||
{'oslo-config', 'oslo-concurrency', 'oslo-db'},
|
||||
set(reqs.keys()),
|
||||
)
|
||||
self.assertEqual(reqs['oslo.config'][0][0].extras, frozenset(()))
|
||||
self.assertEqual(reqs['oslo.concurrency'][0][0].extras,
|
||||
self.assertEqual(reqs['oslo-config'][0][0].extras, frozenset(()))
|
||||
self.assertEqual(reqs['oslo-concurrency'][0][0].extras,
|
||||
frozenset(('fixtures',)))
|
||||
self.assertEqual(reqs['oslo.db'][0][0].extras,
|
||||
self.assertEqual(reqs['oslo-db'][0][0].extras,
|
||||
frozenset(('fixtures', 'mysql')))
|
||||
self.assertCountEqual(reqs,
|
||||
['oslo.config', 'oslo.concurrency', 'oslo.db'])
|
||||
['oslo-config', 'oslo-concurrency', 'oslo-db'])
|
||||
|
||||
|
||||
class TestCanonicalName(testtools.TestCase):
|
||||
|
||||
@@ -12,11 +12,10 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
|
||||
import argparse
|
||||
import re
|
||||
|
||||
import pkg_resources
|
||||
import packaging.requirements
|
||||
|
||||
overrides = dict()
|
||||
# List of overrides needed. Ignore version in pip-freeze and use the one here
|
||||
@@ -38,7 +37,7 @@ def cap(requirements, frozen):
|
||||
output = []
|
||||
for line in requirements:
|
||||
try:
|
||||
req = pkg_resources.Requirement.parse(line)
|
||||
req = packaging.requirements.Requirement(line)
|
||||
specifier = str(req.specifier)
|
||||
if any(op in specifier for op in ['==', '~=', '<']):
|
||||
# if already capped, continue
|
||||
@@ -67,7 +66,7 @@ def cap(requirements, frozen):
|
||||
def pin(line, new_cap):
|
||||
"""Add new cap into existing line
|
||||
|
||||
Don't use pkg_resources so we can preserve the comments.
|
||||
Don't use packaging.requirements so we can preserve the comments.
|
||||
"""
|
||||
end = None
|
||||
use_comma = False
|
||||
@@ -109,7 +108,7 @@ def freeze(lines):
|
||||
|
||||
for line in lines:
|
||||
try:
|
||||
req = pkg_resources.Requirement.parse(line)
|
||||
req = packaging.requirements.Requirement(line)
|
||||
freeze[req.project_name] = req.specifier
|
||||
except ValueError:
|
||||
# not a valid requirement, can be a comment, blank line etc
|
||||
|
||||
@@ -38,7 +38,7 @@ import json
|
||||
import sys
|
||||
import urllib.request as urlreq
|
||||
|
||||
import pkg_resources
|
||||
import packaging.requirements
|
||||
|
||||
|
||||
class Release(object):
|
||||
@@ -62,7 +62,7 @@ def _parse_pypi_released(datestr):
|
||||
|
||||
|
||||
def _package_name(line):
|
||||
return pkg_resources.Requirement.parse(line).project_name
|
||||
return packaging.requirements.Requirement(line).name
|
||||
|
||||
|
||||
def get_requirements():
|
||||
|
||||
Reference in New Issue
Block a user