python_requires is invalid, breaking distlib
The `python_requires` value in metadata contains trailing comma that makes it invalid. While setuptools doesn't seem to report the problem, it causes distlib to crash while iterating system packages: ```python $ pip install openpyxl distlib [...] $ python -c "import distlib.database; distlib.database.DistributionPath().get_distribution('openpyxl')" Traceback (most recent call last): File "/tmp/venv2/lib/python3.9/site-packages/distlib/metadata.py", line 677, in __init__ self._data = json.loads(data) File "/usr/lib/python3.9/json/__init__.py", line 346, in loads return _default_decoder.decode(s) File "/usr/lib/python3.9/json/decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/usr/lib/python3.9/json/decoder.py", line 355, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<string>", line 1, in <module> File "/tmp/venv2/lib/python3.9/site-packages/distlib/database.py", line 240, in get_distribution self._generate_cache() File "/tmp/venv2/lib/python3.9/site-packages/distlib/database.py", line 167, in _generate_cache for dist in self._yield_distributions(): File "/tmp/venv2/lib/python3.9/site-packages/distlib/database.py", line 148, in _yield_distributions metadata = Metadata(fileobj=stream, scheme='legacy') File "/tmp/venv2/lib/python3.9/site-packages/distlib/metadata.py", line 686, in __init__ self._legacy = LegacyMetadata(fileobj=StringIO(data), File "/tmp/venv2/lib/python3.9/site-packages/distlib/metadata.py", line 261, in __init__ self.read_file(fileobj) File "/tmp/venv2/lib/python3.9/site-packages/distlib/metadata.py", line 359, in read_file self.set(field, value) File "/tmp/venv2/lib/python3.9/site-packages/distlib/metadata.py", line 459, in set if not scheme.is_valid_constraint_list(value): File "/tmp/venv2/lib/python3.9/site-packages/distlib/version.py", line 716, in is_valid_constraint_list return self.is_valid_matcher('dummy_name (%s)' % s) File "/tmp/venv2/lib/python3.9/site-packages/distlib/version.py", line 703, in is_valid_matcher self.matcher(s) File "/tmp/venv2/lib/python3.9/site-packages/distlib/version.py", line 104, in __init__ r = self.parse_requirement(s) File "/tmp/venv2/lib/python3.9/site-packages/distlib/version.py", line 98, in parse_requirement return parse_requirement(s) File "/tmp/venv2/lib/python3.9/site-packages/distlib/util.py", line 237, in parse_requirement versions, _ = get_versions(s) File "/tmp/venv2/lib/python3.9/site-packages/distlib/util.py", line 220, in get_versions raise SyntaxError('invalid constraint: %s' % ver_remaining) SyntaxError: invalid constraint: ``` (yes, the error reporting is horrible) The fix is: ```diff diff -dupr a/setup.py b/setup.py --- a/setup.py 2021-05-29 19:21:13.876463476 +0200 +++ b/setup.py 2021-05-29 19:21:21.986626313 +0200 @@ -74,7 +74,7 @@ setup( author_email=__author_email__, url=__url__, license=__license__, - python_requires=">=3.6, ", + python_requires=">=3.6", install_requires=[ 'et_xmlfile', ], ```
issue