Skip to content

Commit 6579412

Browse files
TG1999swastkk
authored andcommitted
Replace packaging library with packvers aboutcode-org#108
* Work around changes in packaging by replacing it with packvers to avoid issues with missing packaging.version.LegacyVersion. * Also bump the versions of dparse2 and pip-requirements-parser with new versions that are not subject the LegcacyVersion issue. * Adjust the code and tests accordingly. Reference: aboutcode-org#108 Reference: pypa/packaging#530 Signed-off-by: swastik <[email protected]>
1 parent a5891f4 commit 6579412

10 files changed

+35
-36
lines changed

requirements.txt

+3-2
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@ charset-normalizer==2.1.0
55
click==8.1.3
66
colorama==0.4.5
77
commoncode==30.2.0
8-
dparse2==0.6.1
8+
dparse2==0.7.0
99
idna==3.3
1010
importlib-metadata==4.12.0
1111
intbitset==3.0.1
1212
packageurl-python==0.10.0
1313
packaging==21.3
14-
pip-requirements-parser==31.2.0
14+
packvers==21.5
15+
pip-requirements-parser==32.0.1
1516
pkginfo2==30.0.0
1617
pyparsing==3.0.9
1718
PyYAML==6.0

setup.cfg

+3-3
Original file line numberDiff line numberDiff line change
@@ -58,18 +58,18 @@ install_requires =
5858
click > 7.0
5959
colorama >= 0.3.9
6060
commoncode >= 30.0.0
61-
dparse2 >= 0.6.1
61+
dparse2 >= 0.7.0
6262
importlib_metadata >= 4.12.0
6363
packageurl_python >= 0.9.0
6464
pkginfo2 >= 30.0.0
65-
pip-requirements-parser >= 31.2.0
65+
pip-requirements-parser >= 32.0.1
6666
requests >= 2.18.0
6767
resolvelib >= 0.8.1
6868
saneyaml >= 0.5.2
6969
tinynetrc >= 1.3.1
7070
toml >= 0.10.0
7171
mock >= 3.0.5
72-
72+
packvers >= 21.5
7373
[options.packages.find]
7474
where = src
7575

src/_packagedcode/pypi.py

+5-7
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,16 @@
2020
from typing import NamedTuple
2121
import tempfile
2222
import zipfile
23-
2423
import dparse2
25-
import packaging
24+
import packvers as packaging
2625
import pip_requirements_parser
2726
import pkginfo2
2827
from commoncode import fileutils
29-
from packaging.specifiers import SpecifierSet
28+
from packvers.specifiers import SpecifierSet
3029
from packageurl import PackageURL
31-
from packaging import markers
32-
from packaging.requirements import Requirement
33-
from packaging.utils import canonicalize_name
34-
30+
from packvers import markers
31+
from packvers.requirements import Requirement
32+
from packvers.utils import canonicalize_name
3533
from _packagedcode import models
3634
from _packagedcode.utils import build_description
3735
from _packagedcode.utils import combine_expressions

src/python_inspector/api.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from typing import Sequence
1717

1818
from packageurl import PackageURL
19-
from packaging.requirements import Requirement
19+
from packvers.requirements import Requirement
2020
from resolvelib import BaseReporter
2121
from resolvelib import Resolver
2222
from tinynetrc import Netrc

src/python_inspector/dependencies.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
#
1111

1212
from packageurl import PackageURL
13-
from packaging.requirements import Requirement
13+
from packvers.requirements import Requirement
1414
from pip_requirements_parser import InstallRequirement
1515

1616
from _packagedcode import models

src/python_inspector/resolution.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@
1818
from typing import Union
1919
from zipfile import ZipFile
2020

21-
import packaging.utils
21+
import packvers.utils
2222
from packageurl import PackageURL
23-
from packaging.requirements import Requirement
24-
from packaging.version import LegacyVersion
25-
from packaging.version import Version
26-
from packaging.version import parse as parse_version
23+
from packvers.requirements import Requirement
24+
from packvers.version import LegacyVersion
25+
from packvers.version import Version
26+
from packvers.version import parse as parse_version
2727
from resolvelib import AbstractProvider
2828
from resolvelib.structs import DirectedGraph
2929

@@ -325,7 +325,7 @@ def __init__(
325325

326326
def identify(self, requirement_or_candidate: Union[Candidate, Requirement]) -> str:
327327
"""Given a requirement, return an identifier for it. Overridden."""
328-
name = packaging.utils.canonicalize_name(requirement_or_candidate.name)
328+
name = packvers.utils.canonicalize_name(requirement_or_candidate.name)
329329
if requirement_or_candidate.extras:
330330
extras_str = ",".join(sorted(requirement_or_candidate.extras))
331331
return "{}[{}]".format(name, extras_str)
@@ -576,7 +576,7 @@ def _iter_dependencies(self, candidate: Candidate) -> Generator[Requirement, Non
576576
"""
577577
Yield dependencies for the given candidate.
578578
"""
579-
name = packaging.utils.canonicalize_name(candidate.name)
579+
name = packvers.utils.canonicalize_name(candidate.name)
580580
# TODO: handle extras https://github.com/nexB/python-inspector/issues/10
581581
if candidate.extras:
582582
r = f"{name}=={candidate.version}"

src/python_inspector/setup_py_live_eval.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import mock
2222
import setuptools
2323
from commoncode.command import pushd
24-
from packaging.requirements import Requirement
24+
from packvers.requirements import Requirement
2525

2626

2727
def minver_error(pkg_name):

src/python_inspector/utils_pip_compatibility_tags.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,12 @@
2727

2828
import re
2929

30-
from packaging.tags import compatible_tags
31-
from packaging.tags import cpython_tags
32-
from packaging.tags import generic_tags
33-
from packaging.tags import interpreter_name
34-
from packaging.tags import interpreter_version
35-
from packaging.tags import mac_platforms
30+
from packvers.tags import compatible_tags
31+
from packvers.tags import cpython_tags
32+
from packvers.tags import generic_tags
33+
from packvers.tags import interpreter_name
34+
from packvers.tags import interpreter_version
35+
from packvers.tags import mac_platforms
3636

3737
_osx_arch_pat = re.compile(r"(.+)_(\d+)_(\d+)_(.+)")
3838

src/python_inspector/utils_pypi.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@
2626
from bs4 import BeautifulSoup
2727
from commoncode import fileutils
2828
from commoncode.hash import multi_checksums
29-
from packaging import tags as packaging_tags
30-
from packaging import version as packaging_version
31-
from packaging.specifiers import SpecifierSet
29+
from packvers import tags as packaging_tags
30+
from packvers import version as packaging_version
31+
from packvers.specifiers import SpecifierSet
3232

3333
from python_inspector import DEFAULT_PYTHON_VERSION
3434
from python_inspector import utils_pip_compatibility_tags

tests/test_resolution.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
import os
1212
from unittest.mock import patch
1313

14-
import packaging
14+
import packvers
1515
import pytest
1616
from commoncode.testcase import FileDrivenTesting
17-
from packaging.requirements import Requirement
17+
from packvers.requirements import Requirement
1818

1919
from _packagedcode import models
2020
from python_inspector.api import get_resolved_dependencies
@@ -156,23 +156,23 @@ def test_without_supported_wheels():
156156

157157

158158
def test_is_valid_version():
159-
parsed_version = packaging.version.parse("2.1.2")
159+
parsed_version = packvers.version.parse("2.1.2")
160160
requirements = {"flask": [Requirement("flask>2.0.0")]}
161161
bad_versions = []
162162
identifier = "flask"
163163
assert is_valid_version(parsed_version, requirements, identifier, bad_versions)
164164

165165

166166
def test_is_valid_version_with_no_specifier():
167-
parsed_version = packaging.version.parse("2.1.2")
167+
parsed_version = packvers.version.parse("2.1.2")
168168
requirements = {"flask": [Requirement("flask")]}
169169
bad_versions = []
170170
identifier = "flask"
171171
assert is_valid_version(parsed_version, requirements, identifier, bad_versions)
172172

173173

174174
def test_is_valid_version_with_no_specifier_and_pre_release():
175-
parsed_version = packaging.version.parse("1.0.0b4")
175+
parsed_version = packvers.version.parse("1.0.0b4")
176176
requirements = {"flask": [Requirement("flask")]}
177177
bad_versions = []
178178
identifier = "flask"

0 commit comments

Comments
 (0)