diff --git a/src/packagedcode/pypi.py b/src/packagedcode/pypi.py index 3c83b656ba9..e88a17b9ee4 100644 --- a/src/packagedcode/pypi.py +++ b/src/packagedcode/pypi.py @@ -1149,7 +1149,7 @@ def get_requires_dependencies(requires, default_scope='install'): is_runtime=True, is_optional=False, is_resolved=is_resolved, - extracted_requirement=requirement, + extracted_requirement=str(req), )) return dependent_packages diff --git a/tests/packagedcode/data/pypi/archive/commoncode-21.5.12-py3.9.egg-expected.json b/tests/packagedcode/data/pypi/archive/commoncode-21.5.12-py3.9.egg-expected.json index 31e3decdf7b..0c1cb94bbfb 100644 --- a/tests/packagedcode/data/pypi/archive/commoncode-21.5.12-py3.9.egg-expected.json +++ b/tests/packagedcode/data/pypi/archive/commoncode-21.5.12-py3.9.egg-expected.json @@ -69,7 +69,7 @@ "dependencies": [ { "purl": "pkg:pypi/attrs", - "extracted_requirement": "!=20.1.0,>=18.1", + "extracted_requirement": "attrs!=20.1.0,>=18.1", "scope": "install", "is_runtime": true, "is_optional": false, @@ -78,7 +78,7 @@ }, { "purl": "pkg:pypi/click", - "extracted_requirement": ">=6.0.0", + "extracted_requirement": "click>=6.0.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -87,7 +87,7 @@ }, { "purl": "pkg:pypi/text-unidecode", - "extracted_requirement": ">=1.0", + "extracted_requirement": "text_unidecode>=1.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -96,7 +96,7 @@ }, { "purl": "pkg:pypi/beautifulsoup4", - "extracted_requirement": "<5.0.0,>=4.0.0", + "extracted_requirement": "Beautifulsoup4<5.0.0,>=4.0.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -105,7 +105,7 @@ }, { "purl": "pkg:pypi/requests", - "extracted_requirement": "<3.0.0,>=2.7.0", + "extracted_requirement": "requests<3.0.0,>=2.7.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -114,7 +114,7 @@ }, { "purl": "pkg:pypi/intbitset", - "extracted_requirement": "<3.0,>=2.3.0", + "extracted_requirement": "intbitset<3.0,>=2.3.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -123,7 +123,7 @@ }, { "purl": "pkg:pypi/saneyaml", - "extracted_requirement": null, + "extracted_requirement": "saneyaml", "scope": "install", "is_runtime": true, "is_optional": false, @@ -132,7 +132,7 @@ }, { "purl": "pkg:pypi/typing", - "extracted_requirement": "<3.7,>=3.6", + "extracted_requirement": "typing<3.7,>=3.6; python_version < \"3.7\"", "scope": "install", "is_runtime": true, "is_optional": false, @@ -141,7 +141,7 @@ }, { "purl": "pkg:pypi/sphinx", - "extracted_requirement": ">=3.3.1", + "extracted_requirement": "Sphinx>=3.3.1; extra == \"docs\"", "scope": "docs", "is_runtime": true, "is_optional": false, @@ -150,7 +150,7 @@ }, { "purl": "pkg:pypi/sphinx-rtd-theme", - "extracted_requirement": ">=0.5.0", + "extracted_requirement": "sphinx-rtd-theme>=0.5.0; extra == \"docs\"", "scope": "docs", "is_runtime": true, "is_optional": false, @@ -159,7 +159,7 @@ }, { "purl": "pkg:pypi/doc8", - "extracted_requirement": ">=0.8.1", + "extracted_requirement": "doc8>=0.8.1; extra == \"docs\"", "scope": "docs", "is_runtime": true, "is_optional": false, @@ -168,7 +168,7 @@ }, { "purl": "pkg:pypi/pytest", - "extracted_requirement": ">=6", + "extracted_requirement": "pytest>=6; extra == \"testing\"", "scope": "testing", "is_runtime": true, "is_optional": false, @@ -177,7 +177,7 @@ }, { "purl": "pkg:pypi/pytest-xdist", - "extracted_requirement": ">=2", + "extracted_requirement": "pytest-xdist>=2; extra == \"testing\"", "scope": "testing", "is_runtime": true, "is_optional": false, diff --git a/tests/packagedcode/data/pypi/develop/scancode_toolkit.egg-info-expected.json b/tests/packagedcode/data/pypi/develop/scancode_toolkit.egg-info-expected.json index f9ef9fd1336..a9216c05c4e 100644 --- a/tests/packagedcode/data/pypi/develop/scancode_toolkit.egg-info-expected.json +++ b/tests/packagedcode/data/pypi/develop/scancode_toolkit.egg-info-expected.json @@ -1079,7 +1079,7 @@ "dependencies": [ { "purl": "pkg:pypi/attrs", - "extracted_requirement": "!=20.1.0,>=18.1", + "extracted_requirement": "attrs!=20.1.0,>=18.1", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1088,7 +1088,7 @@ }, { "purl": "pkg:pypi/beautifulsoup4", - "extracted_requirement": "<5.0.0,>=4.0.0", + "extracted_requirement": "Beautifulsoup4<5.0.0,>=4.0.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1097,7 +1097,7 @@ }, { "purl": "pkg:pypi/bitarray", - "extracted_requirement": "<1.0.0,>=0.8.1", + "extracted_requirement": "bitarray<1.0.0,>=0.8.1", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1106,7 +1106,7 @@ }, { "purl": "pkg:pypi/boolean-py", - "extracted_requirement": "<4.0,>=3.5", + "extracted_requirement": "boolean.py<4.0,>=3.5", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1115,7 +1115,7 @@ }, { "purl": "pkg:pypi/chardet", - "extracted_requirement": ">=3.0.0", + "extracted_requirement": "chardet>=3.0.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1124,7 +1124,7 @@ }, { "purl": "pkg:pypi/click", - "extracted_requirement": "!=7.0,>=6.7", + "extracted_requirement": "click!=7.0,>=6.7", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1133,7 +1133,7 @@ }, { "purl": "pkg:pypi/colorama", - "extracted_requirement": ">=0.3.9", + "extracted_requirement": "colorama>=0.3.9", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1142,7 +1142,7 @@ }, { "purl": "pkg:pypi/commoncode", - "extracted_requirement": ">=21.1.21", + "extracted_requirement": "commoncode>=21.1.21", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1151,7 +1151,7 @@ }, { "purl": "pkg:pypi/debian-inspector", - "extracted_requirement": ">=0.9.10", + "extracted_requirement": "debian-inspector>=0.9.10", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1160,7 +1160,7 @@ }, { "purl": "pkg:pypi/dparse", - "extracted_requirement": ">=0.5.1", + "extracted_requirement": "dparse>=0.5.1", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1169,7 +1169,7 @@ }, { "purl": "pkg:pypi/fasteners", - "extracted_requirement": null, + "extracted_requirement": "fasteners", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1178,7 +1178,7 @@ }, { "purl": "pkg:pypi/fingerprints", - "extracted_requirement": ">=0.6.0", + "extracted_requirement": "fingerprints>=0.6.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1187,7 +1187,7 @@ }, { "purl": "pkg:pypi/ftfy", - "extracted_requirement": "<5.0.0", + "extracted_requirement": "ftfy<5.0.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1196,7 +1196,7 @@ }, { "purl": "pkg:pypi/gemfileparser", - "extracted_requirement": ">=0.7.0", + "extracted_requirement": "gemfileparser>=0.7.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1205,7 +1205,7 @@ }, { "purl": "pkg:pypi/html5lib", - "extracted_requirement": null, + "extracted_requirement": "html5lib", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1214,7 +1214,7 @@ }, { "purl": "pkg:pypi/intbitset", - "extracted_requirement": "<3.0,>=2.3.0", + "extracted_requirement": "intbitset<3.0,>=2.3.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1223,7 +1223,7 @@ }, { "purl": "pkg:pypi/jaraco-functools", - "extracted_requirement": null, + "extracted_requirement": "jaraco.functools", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1232,7 +1232,7 @@ }, { "purl": "pkg:pypi/javaproperties", - "extracted_requirement": ">=0.5", + "extracted_requirement": "javaproperties>=0.5", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1241,7 +1241,7 @@ }, { "purl": "pkg:pypi/jinja2", - "extracted_requirement": "<3.0.0,>=2.7.0", + "extracted_requirement": "jinja2<3.0.0,>=2.7.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1250,7 +1250,7 @@ }, { "purl": "pkg:pypi/jsonstreams", - "extracted_requirement": ">=0.5.0", + "extracted_requirement": "jsonstreams>=0.5.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1259,7 +1259,7 @@ }, { "purl": "pkg:pypi/license-expression", - "extracted_requirement": ">=0.99", + "extracted_requirement": "license_expression>=0.99", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1268,7 +1268,7 @@ }, { "purl": "pkg:pypi/lxml", - "extracted_requirement": "<5.0.0,>=4.0.0", + "extracted_requirement": "lxml<5.0.0,>=4.0.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1277,7 +1277,7 @@ }, { "purl": "pkg:pypi/markupsafe", - "extracted_requirement": ">=0.23", + "extracted_requirement": "MarkupSafe>=0.23", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1286,7 +1286,7 @@ }, { "purl": "pkg:pypi/nltk", - "extracted_requirement": "!=3.6,<4.0,>=3.2", + "extracted_requirement": "nltk!=3.6,<4.0,>=3.2", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1295,7 +1295,7 @@ }, { "purl": "pkg:pypi/packageurl-python", - "extracted_requirement": ">=0.7.0", + "extracted_requirement": "packageurl_python>=0.7.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1304,7 +1304,7 @@ }, { "purl": "pkg:pypi/pdfminer-six", - "extracted_requirement": ">=20170720", + "extracted_requirement": "pdfminer.six>=20170720", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1313,7 +1313,7 @@ }, { "purl": "pkg:pypi/pefile", - "extracted_requirement": ">=2018.8.8", + "extracted_requirement": "pefile>=2018.8.8", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1322,7 +1322,7 @@ }, { "purl": "pkg:pypi/pkginfo", - "extracted_requirement": ">=1.5.0.1", + "extracted_requirement": "pkginfo>=1.5.0.1", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1331,7 +1331,7 @@ }, { "purl": "pkg:pypi/pluggy", - "extracted_requirement": "<1.0,>=0.4.0", + "extracted_requirement": "pluggy<1.0,>=0.4.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1340,7 +1340,7 @@ }, { "purl": "pkg:pypi/plugincode", - "extracted_requirement": ">=21.1.21", + "extracted_requirement": "plugincode>=21.1.21", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1349,7 +1349,7 @@ }, { "purl": "pkg:pypi/publicsuffix2", - "extracted_requirement": null, + "extracted_requirement": "publicsuffix2", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1358,7 +1358,7 @@ }, { "purl": "pkg:pypi/pyahocorasick", - "extracted_requirement": "<1.5,>=1.4", + "extracted_requirement": "pyahocorasick<1.5,>=1.4", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1367,7 +1367,7 @@ }, { "purl": "pkg:pypi/pycryptodome", - "extracted_requirement": ">=3.4", + "extracted_requirement": "pycryptodome>=3.4", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1376,7 +1376,7 @@ }, { "purl": "pkg:pypi/pygments", - "extracted_requirement": null, + "extracted_requirement": "pygments", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1385,7 +1385,7 @@ }, { "purl": "pkg:pypi/pymaven-patch", - "extracted_requirement": ">=0.2.8", + "extracted_requirement": "pymaven_patch>=0.2.8", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1394,7 +1394,7 @@ }, { "purl": "pkg:pypi/requests", - "extracted_requirement": "<3.0.0,>=2.7.0", + "extracted_requirement": "requests<3.0.0,>=2.7.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1403,7 +1403,7 @@ }, { "purl": "pkg:pypi/saneyaml", - "extracted_requirement": ">=0.5.2", + "extracted_requirement": "saneyaml>=0.5.2", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1412,7 +1412,7 @@ }, { "purl": "pkg:pypi/spdx-tools", - "extracted_requirement": ">=0.6.0", + "extracted_requirement": "spdx_tools>=0.6.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1421,7 +1421,7 @@ }, { "purl": "pkg:pypi/text-unidecode", - "extracted_requirement": "<2.0,>=1.0", + "extracted_requirement": "text_unidecode<2.0,>=1.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1430,7 +1430,7 @@ }, { "purl": "pkg:pypi/toml", - "extracted_requirement": ">=0.10.0", + "extracted_requirement": "toml>=0.10.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1439,7 +1439,7 @@ }, { "purl": "pkg:pypi/urlpy", - "extracted_requirement": null, + "extracted_requirement": "urlpy", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1448,7 +1448,7 @@ }, { "purl": "pkg:pypi/xmltodict", - "extracted_requirement": ">=0.11.0", + "extracted_requirement": "xmltodict>=0.11.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1457,7 +1457,7 @@ }, { "purl": "pkg:pypi/extractcode", - "extracted_requirement": ">=21.2.24", + "extracted_requirement": "extractcode[full]>=21.2.24", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1466,7 +1466,7 @@ }, { "purl": "pkg:pypi/typecode", - "extracted_requirement": ">=21.2.24", + "extracted_requirement": "typecode[full]>=21.2.24", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1475,7 +1475,7 @@ }, { "purl": "pkg:pypi/typing", - "extracted_requirement": "<3.7,>=3.6", + "extracted_requirement": "typing<3.7,>=3.6; python_version < \"3.7\"", "scope": "install", "is_runtime": true, "is_optional": false, @@ -1484,7 +1484,7 @@ }, { "purl": "pkg:pypi/pytest", - "extracted_requirement": null, + "extracted_requirement": "pytest; extra == \"dev\"", "scope": "dev", "is_runtime": true, "is_optional": false, @@ -1493,7 +1493,7 @@ }, { "purl": "pkg:pypi/pytest-cov", - "extracted_requirement": null, + "extracted_requirement": "pytest-cov; extra == \"dev\"", "scope": "dev", "is_runtime": true, "is_optional": false, @@ -1502,7 +1502,7 @@ }, { "purl": "pkg:pypi/pytest-xdist", - "extracted_requirement": null, + "extracted_requirement": "pytest-xdist; extra == \"dev\"", "scope": "dev", "is_runtime": true, "is_optional": false, @@ -1511,7 +1511,7 @@ }, { "purl": "pkg:pypi/pytest-rerunfailures", - "extracted_requirement": null, + "extracted_requirement": "pytest-rerunfailures; extra == \"dev\"", "scope": "dev", "is_runtime": true, "is_optional": false, @@ -1520,7 +1520,7 @@ }, { "purl": "pkg:pypi/aboutcode-toolkit", - "extracted_requirement": ">=6.0.0", + "extracted_requirement": "aboutcode-toolkit>=6.0.0; extra == \"dev\"", "scope": "dev", "is_runtime": true, "is_optional": false, @@ -1529,7 +1529,7 @@ }, { "purl": "pkg:pypi/bump2version", - "extracted_requirement": null, + "extracted_requirement": "bump2version; extra == \"dev\"", "scope": "dev", "is_runtime": true, "is_optional": false, @@ -1538,7 +1538,7 @@ }, { "purl": "pkg:pypi/codecov", - "extracted_requirement": null, + "extracted_requirement": "codecov; extra == \"dev\"", "scope": "dev", "is_runtime": true, "is_optional": false, @@ -1547,7 +1547,7 @@ }, { "purl": "pkg:pypi/coverage", - "extracted_requirement": null, + "extracted_requirement": "coverage; extra == \"dev\"", "scope": "dev", "is_runtime": true, "is_optional": false, @@ -1556,7 +1556,7 @@ }, { "purl": "pkg:pypi/rpm-inspector-rpm", - "extracted_requirement": ">=4.16.1.3", + "extracted_requirement": "rpm_inspector_rpm>=4.16.1.3; platform_system == \"Linux\" and extra == \"packages\"", "scope": "packages", "is_runtime": true, "is_optional": false, diff --git a/tests/packagedcode/data/pypi/metadata/v20/PKG-INFO-expected.json b/tests/packagedcode/data/pypi/metadata/v20/PKG-INFO-expected.json index 45a423392be..dab1682c4b2 100644 --- a/tests/packagedcode/data/pypi/metadata/v20/PKG-INFO-expected.json +++ b/tests/packagedcode/data/pypi/metadata/v20/PKG-INFO-expected.json @@ -65,7 +65,7 @@ "dependencies": [ { "purl": "pkg:pypi/pykerberos", - "extracted_requirement": null, + "extracted_requirement": "pykerberos; extra == \"gssapi\"", "scope": "gssapi", "is_runtime": true, "is_optional": false, @@ -74,7 +74,7 @@ }, { "purl": "pkg:pypi/dnspython", - "extracted_requirement": "<2.0.0,>=1.8.0", + "extracted_requirement": "dnspython<2.0.0,>=1.8.0; extra == \"srv\"", "scope": "srv", "is_runtime": true, "is_optional": false, @@ -83,7 +83,7 @@ }, { "purl": "pkg:pypi/ipaddress", - "extracted_requirement": null, + "extracted_requirement": "ipaddress; extra == \"tls\"", "scope": "tls", "is_runtime": true, "is_optional": false, diff --git a/tests/packagedcode/data/pypi/setup.py/nvchecker_setup.py-expected.json b/tests/packagedcode/data/pypi/setup.py/nvchecker_setup.py-expected.json index 6a9a8ba3c4d..3c345b748e0 100644 --- a/tests/packagedcode/data/pypi/setup.py/nvchecker_setup.py-expected.json +++ b/tests/packagedcode/data/pypi/setup.py/nvchecker_setup.py-expected.json @@ -62,7 +62,7 @@ "dependencies": [ { "purl": "pkg:pypi/tornado", - "extracted_requirement": ">=4.1", + "extracted_requirement": "tornado>=4.1", "scope": "install", "is_runtime": true, "is_optional": false, @@ -71,7 +71,7 @@ }, { "purl": "pkg:pypi/setuptools", - "extracted_requirement": null, + "extracted_requirement": "setuptools", "scope": "install", "is_runtime": true, "is_optional": false, diff --git a/tests/packagedcode/data/pypi/setup.py/pydep_setup.py-expected.json b/tests/packagedcode/data/pypi/setup.py/pydep_setup.py-expected.json index 85fcddea437..1c218f60bde 100644 --- a/tests/packagedcode/data/pypi/setup.py/pydep_setup.py-expected.json +++ b/tests/packagedcode/data/pypi/setup.py/pydep_setup.py-expected.json @@ -39,7 +39,7 @@ "dependencies": [ { "purl": "pkg:pypi/pip@7.1.2", - "extracted_requirement": "==7.1.2", + "extracted_requirement": "pip==7.1.2", "scope": "install", "is_runtime": true, "is_optional": false, diff --git a/tests/packagedcode/data/pypi/setup.py/saneyaml_setup.py-expected.json b/tests/packagedcode/data/pypi/setup.py/saneyaml_setup.py-expected.json index 6050d2fbd6d..9cbf2a4855a 100644 --- a/tests/packagedcode/data/pypi/setup.py/saneyaml_setup.py-expected.json +++ b/tests/packagedcode/data/pypi/setup.py/saneyaml_setup.py-expected.json @@ -59,7 +59,7 @@ "dependencies": [ { "purl": "pkg:pypi/pyyaml", - "extracted_requirement": "<=3.13,>=3.11", + "extracted_requirement": "PyYAML<=3.13,>=3.11", "scope": "install", "is_runtime": true, "is_optional": false, diff --git a/tests/packagedcode/data/pypi/setup.py/setup.py-expected.json b/tests/packagedcode/data/pypi/setup.py/setup.py-expected.json index fb775c57f1f..cde8e8ca7c6 100644 --- a/tests/packagedcode/data/pypi/setup.py/setup.py-expected.json +++ b/tests/packagedcode/data/pypi/setup.py/setup.py-expected.json @@ -56,7 +56,7 @@ "dependencies": [ { "purl": "pkg:pypi/py2-ipaddress", - "extracted_requirement": "<3.0,>=2.0", + "extracted_requirement": "py2-ipaddress<3.0,>=2.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -65,7 +65,7 @@ }, { "purl": "pkg:pypi/url", - "extracted_requirement": ">=0.1.4", + "extracted_requirement": "url>=0.1.4", "scope": "install", "is_runtime": true, "is_optional": false, @@ -74,7 +74,7 @@ }, { "purl": "pkg:pypi/publicsuffix2", - "extracted_requirement": null, + "extracted_requirement": "publicsuffix2", "scope": "install", "is_runtime": true, "is_optional": false, @@ -83,7 +83,7 @@ }, { "purl": "pkg:pypi/nltk", - "extracted_requirement": "<3.0.0,>=2.0b4", + "extracted_requirement": "nltk<3.0.0,>=2.0b4", "scope": "install", "is_runtime": true, "is_optional": false, @@ -92,7 +92,7 @@ }, { "purl": "pkg:pypi/patch", - "extracted_requirement": "<1.15,>=1.14.2", + "extracted_requirement": "patch<1.15,>=1.14.2", "scope": "install", "is_runtime": true, "is_optional": false, @@ -101,7 +101,7 @@ }, { "purl": "pkg:pypi/bz2file", - "extracted_requirement": ">=0.98", + "extracted_requirement": "bz2file>=0.98", "scope": "install", "is_runtime": true, "is_optional": false, @@ -110,7 +110,7 @@ }, { "purl": "pkg:pypi/pyyaml", - "extracted_requirement": "<4.0,>=3.0", + "extracted_requirement": "PyYAML<4.0,>=3.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -119,7 +119,7 @@ }, { "purl": "pkg:pypi/beautifulsoup", - "extracted_requirement": "<4.0.0,>=3.2.0", + "extracted_requirement": "Beautifulsoup<4.0.0,>=3.2.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -128,7 +128,7 @@ }, { "purl": "pkg:pypi/beautifulsoup4", - "extracted_requirement": "<5.0.0,>=4.3.0", + "extracted_requirement": "Beautifulsoup4<5.0.0,>=4.3.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -137,7 +137,7 @@ }, { "purl": "pkg:pypi/html5lib", - "extracted_requirement": null, + "extracted_requirement": "html5lib", "scope": "install", "is_runtime": true, "is_optional": false, @@ -146,7 +146,7 @@ }, { "purl": "pkg:pypi/six", - "extracted_requirement": null, + "extracted_requirement": "six", "scope": "install", "is_runtime": true, "is_optional": false, @@ -155,7 +155,7 @@ }, { "purl": "pkg:pypi/pygments", - "extracted_requirement": "<3.0.0,>=2.0.0", + "extracted_requirement": "pygments<3.0.0,>=2.0.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -164,7 +164,7 @@ }, { "purl": "pkg:pypi/pdfminer", - "extracted_requirement": ">=20140328", + "extracted_requirement": "pdfminer>=20140328", "scope": "install", "is_runtime": true, "is_optional": false, @@ -173,7 +173,7 @@ }, { "purl": "pkg:pypi/chardet", - "extracted_requirement": "<3.0.0,>=2.1.1", + "extracted_requirement": "chardet<3.0.0,>=2.1.1", "scope": "install", "is_runtime": true, "is_optional": false, @@ -182,7 +182,7 @@ }, { "purl": "pkg:pypi/binaryornot", - "extracted_requirement": ">=0.4.0", + "extracted_requirement": "binaryornot>=0.4.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -191,7 +191,7 @@ }, { "purl": "pkg:pypi/click", - "extracted_requirement": "<5.0.0,>=4.0.0", + "extracted_requirement": "click<5.0.0,>=4.0.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -200,7 +200,7 @@ }, { "purl": "pkg:pypi/jinja2", - "extracted_requirement": "<3.0.0,>=2.7.0", + "extracted_requirement": "jinja2<3.0.0,>=2.7.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -209,7 +209,7 @@ }, { "purl": "pkg:pypi/markupsafe", - "extracted_requirement": ">=0.23", + "extracted_requirement": "MarkupSafe>=0.23", "scope": "install", "is_runtime": true, "is_optional": false, @@ -218,7 +218,7 @@ }, { "purl": "pkg:pypi/colorama", - "extracted_requirement": null, + "extracted_requirement": "colorama", "scope": "install", "is_runtime": true, "is_optional": false, @@ -227,7 +227,7 @@ }, { "purl": "pkg:pypi/about-code-tool", - "extracted_requirement": ">=0.9.0", + "extracted_requirement": "about-code-tool>=0.9.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -236,7 +236,7 @@ }, { "purl": "pkg:pypi/requests", - "extracted_requirement": "<3.0.0,>=2.7.0", + "extracted_requirement": "requests<3.0.0,>=2.7.0", "scope": "install", "is_runtime": true, "is_optional": false, diff --git a/tests/packagedcode/data/pypi/setup.py/setuppycheck_setup.py-expected.json b/tests/packagedcode/data/pypi/setup.py/setuppycheck_setup.py-expected.json index 8657861425e..c8650893662 100644 --- a/tests/packagedcode/data/pypi/setup.py/setuppycheck_setup.py-expected.json +++ b/tests/packagedcode/data/pypi/setup.py/setuppycheck_setup.py-expected.json @@ -43,7 +43,7 @@ "dependencies": [ { "purl": "pkg:pypi/mock", - "extracted_requirement": null, + "extracted_requirement": "mock", "scope": "install", "is_runtime": true, "is_optional": false, diff --git a/tests/packagedcode/data/pypi/setup.py/url_py_setup.py-expected.json b/tests/packagedcode/data/pypi/setup.py/url_py_setup.py-expected.json index 8160c7679a4..c766a7a4556 100644 --- a/tests/packagedcode/data/pypi/setup.py/url_py_setup.py-expected.json +++ b/tests/packagedcode/data/pypi/setup.py/url_py_setup.py-expected.json @@ -49,7 +49,7 @@ "dependencies": [ { "purl": "pkg:pypi/publicsuffix2", - "extracted_requirement": null, + "extracted_requirement": "publicsuffix2", "scope": "install", "is_runtime": true, "is_optional": false, diff --git a/tests/packagedcode/data/pypi/site-packages/site-packages-expected.json b/tests/packagedcode/data/pypi/site-packages/site-packages-expected.json index 71c6f21cce5..f2e599ac4a1 100644 --- a/tests/packagedcode/data/pypi/site-packages/site-packages-expected.json +++ b/tests/packagedcode/data/pypi/site-packages/site-packages-expected.json @@ -2,7 +2,7 @@ "dependencies": [ { "purl": "pkg:pypi/colorama", - "extracted_requirement": null, + "extracted_requirement": "colorama; platform_system == \"Windows\"", "scope": "install", "is_runtime": true, "is_optional": false, @@ -15,7 +15,7 @@ }, { "purl": "pkg:pypi/importlib-metadata", - "extracted_requirement": null, + "extracted_requirement": "importlib-metadata; python_version < \"3.8\"", "scope": "install", "is_runtime": true, "is_optional": false, @@ -699,7 +699,7 @@ "dependencies": [ { "purl": "pkg:pypi/colorama", - "extracted_requirement": null, + "extracted_requirement": "colorama; platform_system == \"Windows\"", "scope": "install", "is_runtime": true, "is_optional": false, @@ -708,7 +708,7 @@ }, { "purl": "pkg:pypi/importlib-metadata", - "extracted_requirement": null, + "extracted_requirement": "importlib-metadata; python_version < \"3.8\"", "scope": "install", "is_runtime": true, "is_optional": false, @@ -851,7 +851,7 @@ "dependencies": [ { "purl": "pkg:pypi/six", - "extracted_requirement": ">=1.10.0", + "extracted_requirement": "six>=1.10.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -860,7 +860,7 @@ }, { "purl": "pkg:pypi/zenhan", - "extracted_requirement": ">=0.5.2", + "extracted_requirement": "zenhan>=0.5.2", "scope": "install", "is_runtime": true, "is_optional": false, diff --git a/tests/packagedcode/data/pypi/unpacked_sdist/metadata-1.0/PyJPString-0.0.3-subdir-expected.json b/tests/packagedcode/data/pypi/unpacked_sdist/metadata-1.0/PyJPString-0.0.3-subdir-expected.json index a611a88d286..db6cf94609d 100644 --- a/tests/packagedcode/data/pypi/unpacked_sdist/metadata-1.0/PyJPString-0.0.3-subdir-expected.json +++ b/tests/packagedcode/data/pypi/unpacked_sdist/metadata-1.0/PyJPString-0.0.3-subdir-expected.json @@ -171,7 +171,7 @@ "dependencies": [ { "purl": "pkg:pypi/six", - "extracted_requirement": ">=1.10.0", + "extracted_requirement": "six>=1.10.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -180,7 +180,7 @@ }, { "purl": "pkg:pypi/zenhan", - "extracted_requirement": ">=0.5.2", + "extracted_requirement": "zenhan>=0.5.2", "scope": "install", "is_runtime": true, "is_optional": false, @@ -189,7 +189,7 @@ }, { "purl": "pkg:pypi/django", - "extracted_requirement": null, + "extracted_requirement": "django; extra == \"test\"", "scope": "test", "is_runtime": true, "is_optional": false, @@ -198,7 +198,7 @@ }, { "purl": "pkg:pypi/pytest@2.9.1", - "extracted_requirement": "==2.9.1", + "extracted_requirement": "pytest==2.9.1; extra == \"test\"", "scope": "test", "is_runtime": true, "is_optional": false, diff --git a/tests/packagedcode/data/pypi/unpacked_wheel/metadata-2.0/Jinja2-2.10.dist-info-expected.json b/tests/packagedcode/data/pypi/unpacked_wheel/metadata-2.0/Jinja2-2.10.dist-info-expected.json index d3194244f67..3261e563afe 100644 --- a/tests/packagedcode/data/pypi/unpacked_wheel/metadata-2.0/Jinja2-2.10.dist-info-expected.json +++ b/tests/packagedcode/data/pypi/unpacked_wheel/metadata-2.0/Jinja2-2.10.dist-info-expected.json @@ -629,7 +629,7 @@ "dependencies": [ { "purl": "pkg:pypi/markupsafe", - "extracted_requirement": ">=0.23", + "extracted_requirement": "MarkupSafe>=0.23", "scope": "install", "is_runtime": true, "is_optional": false, @@ -638,7 +638,7 @@ }, { "purl": "pkg:pypi/babel", - "extracted_requirement": ">=0.8", + "extracted_requirement": "Babel>=0.8; extra == \"i18n\"", "scope": "i18n", "is_runtime": true, "is_optional": false, diff --git a/tests/packagedcode/data/pypi/unpacked_wheel/metadata-2.0/urllib3-1.26.4.dist-info-expected.json b/tests/packagedcode/data/pypi/unpacked_wheel/metadata-2.0/urllib3-1.26.4.dist-info-expected.json index abf9a6e6a27..9d8f64cdd98 100644 --- a/tests/packagedcode/data/pypi/unpacked_wheel/metadata-2.0/urllib3-1.26.4.dist-info-expected.json +++ b/tests/packagedcode/data/pypi/unpacked_wheel/metadata-2.0/urllib3-1.26.4.dist-info-expected.json @@ -839,7 +839,7 @@ "dependencies": [ { "purl": "pkg:pypi/pyopenssl", - "extracted_requirement": ">=0.14", + "extracted_requirement": "pyOpenSSL>=0.14; extra == \"secure\"", "scope": "secure", "is_runtime": true, "is_optional": false, @@ -848,7 +848,7 @@ }, { "purl": "pkg:pypi/cryptography", - "extracted_requirement": ">=1.3.4", + "extracted_requirement": "cryptography>=1.3.4; extra == \"secure\"", "scope": "secure", "is_runtime": true, "is_optional": false, @@ -857,7 +857,7 @@ }, { "purl": "pkg:pypi/idna", - "extracted_requirement": ">=2.0.0", + "extracted_requirement": "idna>=2.0.0; extra == \"secure\"", "scope": "secure", "is_runtime": true, "is_optional": false, @@ -866,7 +866,7 @@ }, { "purl": "pkg:pypi/certifi", - "extracted_requirement": null, + "extracted_requirement": "certifi; extra == \"secure\"", "scope": "secure", "is_runtime": true, "is_optional": false, @@ -875,7 +875,7 @@ }, { "purl": "pkg:pypi/ipaddress", - "extracted_requirement": null, + "extracted_requirement": "ipaddress; python_version == \"2.7\" and extra == \"secure\"", "scope": "secure", "is_runtime": true, "is_optional": false, @@ -884,7 +884,7 @@ }, { "purl": "pkg:pypi/pysocks", - "extracted_requirement": "!=1.5.7,<2.0,>=1.5.6", + "extracted_requirement": "PySocks!=1.5.7,<2.0,>=1.5.6; extra == \"socks\"", "scope": "socks", "is_runtime": true, "is_optional": false, @@ -893,7 +893,7 @@ }, { "purl": "pkg:pypi/brotlipy", - "extracted_requirement": ">=0.6.0", + "extracted_requirement": "brotlipy>=0.6.0; extra == \"brotli\"", "scope": "brotli", "is_runtime": true, "is_optional": false, diff --git a/tests/packagedcode/data/pypi/unpacked_wheel/metadata-2.1/haruka_bot-1.2.3.dist-info-expected.json b/tests/packagedcode/data/pypi/unpacked_wheel/metadata-2.1/haruka_bot-1.2.3.dist-info-expected.json index 942e46a077b..ea129b26531 100644 --- a/tests/packagedcode/data/pypi/unpacked_wheel/metadata-2.1/haruka_bot-1.2.3.dist-info-expected.json +++ b/tests/packagedcode/data/pypi/unpacked_wheel/metadata-2.1/haruka_bot-1.2.3.dist-info-expected.json @@ -236,7 +236,7 @@ "dependencies": [ { "purl": "pkg:pypi/click", - "extracted_requirement": "<8.0.0,>=7.1.2", + "extracted_requirement": "click<8.0.0,>=7.1.2", "scope": "install", "is_runtime": true, "is_optional": false, @@ -245,7 +245,7 @@ }, { "purl": "pkg:pypi/httpx", - "extracted_requirement": "<0.18.0,>=0.17.0", + "extracted_requirement": "httpx<0.18.0,>=0.17.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -254,7 +254,7 @@ }, { "purl": "pkg:pypi/nonebot-adapter-cqhttp", - "extracted_requirement": "<3.0.0,>=2.0.0-alpha.11", + "extracted_requirement": "nonebot-adapter-cqhttp<3.0.0,>=2.0.0-alpha.11", "scope": "install", "is_runtime": true, "is_optional": false, @@ -263,7 +263,7 @@ }, { "purl": "pkg:pypi/nonebot-plugin-apscheduler", - "extracted_requirement": "<0.2.0,>=0.1.2", + "extracted_requirement": "nonebot-plugin-apscheduler<0.2.0,>=0.1.2", "scope": "install", "is_runtime": true, "is_optional": false, @@ -272,7 +272,7 @@ }, { "purl": "pkg:pypi/nonebot2", - "extracted_requirement": "<3.0.0,>=2.0.0-alpha.11", + "extracted_requirement": "nonebot2<3.0.0,>=2.0.0-alpha.11", "scope": "install", "is_runtime": true, "is_optional": false, @@ -281,7 +281,7 @@ }, { "purl": "pkg:pypi/packaging", - "extracted_requirement": "<21.0,>=20.9", + "extracted_requirement": "packaging<21.0,>=20.9", "scope": "install", "is_runtime": true, "is_optional": false, @@ -290,7 +290,7 @@ }, { "purl": "pkg:pypi/pydantic", - "extracted_requirement": "<2.0.0,>=1.8.1", + "extracted_requirement": "pydantic<2.0.0,>=1.8.1", "scope": "install", "is_runtime": true, "is_optional": false, @@ -299,7 +299,7 @@ }, { "purl": "pkg:pypi/pyppeteer", - "extracted_requirement": "<0.3.0,>=0.2.5", + "extracted_requirement": "pyppeteer<0.3.0,>=0.2.5", "scope": "install", "is_runtime": true, "is_optional": false, @@ -308,7 +308,7 @@ }, { "purl": "pkg:pypi/python-dotenv", - "extracted_requirement": "<0.16.0,>=0.15.0", + "extracted_requirement": "python-dotenv<0.16.0,>=0.15.0", "scope": "install", "is_runtime": true, "is_optional": false, @@ -317,7 +317,7 @@ }, { "purl": "pkg:pypi/qrcode", - "extracted_requirement": "<7.0,>=6.1", + "extracted_requirement": "qrcode[pil]<7.0,>=6.1", "scope": "install", "is_runtime": true, "is_optional": false, @@ -326,7 +326,7 @@ }, { "purl": "pkg:pypi/rsa", - "extracted_requirement": "<5.0,>=4.7", + "extracted_requirement": "rsa<5.0,>=4.7", "scope": "install", "is_runtime": true, "is_optional": false, @@ -335,7 +335,7 @@ }, { "purl": "pkg:pypi/tinydb", - "extracted_requirement": "<5.0.0,>=4.3.0", + "extracted_requirement": "tinydb<5.0.0,>=4.3.0", "scope": "install", "is_runtime": true, "is_optional": false, diff --git a/tests/packagedcode/data/pypi/unpacked_wheel/metadata-2.1/plugincode-21.1.21.dist-info-expected.json b/tests/packagedcode/data/pypi/unpacked_wheel/metadata-2.1/plugincode-21.1.21.dist-info-expected.json index 44aa7617d29..64e7bde3dd7 100644 --- a/tests/packagedcode/data/pypi/unpacked_wheel/metadata-2.1/plugincode-21.1.21.dist-info-expected.json +++ b/tests/packagedcode/data/pypi/unpacked_wheel/metadata-2.1/plugincode-21.1.21.dist-info-expected.json @@ -261,7 +261,7 @@ "dependencies": [ { "purl": "pkg:pypi/click", - "extracted_requirement": ">=6", + "extracted_requirement": "click>=6", "scope": "install", "is_runtime": true, "is_optional": false, @@ -270,7 +270,7 @@ }, { "purl": "pkg:pypi/commoncode", - "extracted_requirement": ">=21.1.21", + "extracted_requirement": "commoncode>=21.1.21", "scope": "install", "is_runtime": true, "is_optional": false, @@ -279,7 +279,7 @@ }, { "purl": "pkg:pypi/pluggy", - "extracted_requirement": null, + "extracted_requirement": "pluggy", "scope": "install", "is_runtime": true, "is_optional": false, @@ -288,7 +288,7 @@ }, { "purl": "pkg:pypi/sphinx", - "extracted_requirement": ">=3.3.1", + "extracted_requirement": "Sphinx>=3.3.1; extra == \"docs\"", "scope": "docs", "is_runtime": true, "is_optional": false, @@ -297,7 +297,7 @@ }, { "purl": "pkg:pypi/sphinx-rtd-theme", - "extracted_requirement": ">=0.5.0", + "extracted_requirement": "sphinx-rtd-theme>=0.5.0; extra == \"docs\"", "scope": "docs", "is_runtime": true, "is_optional": false, @@ -306,7 +306,7 @@ }, { "purl": "pkg:pypi/doc8", - "extracted_requirement": ">=0.8.1", + "extracted_requirement": "doc8>=0.8.1; extra == \"docs\"", "scope": "docs", "is_runtime": true, "is_optional": false, @@ -315,7 +315,7 @@ }, { "purl": "pkg:pypi/pytest", - "extracted_requirement": ">=6", + "extracted_requirement": "pytest>=6; extra == \"testing\"", "scope": "testing", "is_runtime": true, "is_optional": false, @@ -324,7 +324,7 @@ }, { "purl": "pkg:pypi/pytest-xdist", - "extracted_requirement": ">=2", + "extracted_requirement": "pytest-xdist>=2; extra == \"testing\"", "scope": "testing", "is_runtime": true, "is_optional": false, diff --git a/tests/packagedcode/data/pypi/unpacked_wheel/metadata-2.1/with_sources/anonapi-0.0.19.dist-info-expected.json b/tests/packagedcode/data/pypi/unpacked_wheel/metadata-2.1/with_sources/anonapi-0.0.19.dist-info-expected.json index 9da37212bd8..814c7ecb77e 100644 --- a/tests/packagedcode/data/pypi/unpacked_wheel/metadata-2.1/with_sources/anonapi-0.0.19.dist-info-expected.json +++ b/tests/packagedcode/data/pypi/unpacked_wheel/metadata-2.1/with_sources/anonapi-0.0.19.dist-info-expected.json @@ -160,7 +160,7 @@ "dependencies": [ { "purl": "pkg:pypi/pyyaml", - "extracted_requirement": null, + "extracted_requirement": "pyyaml", "scope": "install", "is_runtime": true, "is_optional": false,