Original report by Michał Górny (Bitbucket: mgorny, GitHub: mgorny).
distlib currently crashes upon meeting invalid package metadata, e.g.:grinning:
$ python3.8 -c "import distlib.database; list(distlib.database.DistributionPath(include_egg=True).get_distributions())"
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/distlib/distlib/database.py", line 213, in get_distributions
self._generate_cache()
File "/tmp/distlib/distlib/database.py", line 167, in _generate_cache
for dist in self._yield_distributions():
File "/tmp/distlib/distlib/database.py", line 157, in _yield_distributions
yield old_dist_class(r.path, self)
File "/tmp/distlib/distlib/database.py", line 878, in __init__
metadata = self._get_metadata(path)
File "/tmp/distlib/distlib/database.py", line 964, in _get_metadata
metadata.add_requirements(requires)
File "/tmp/distlib/distlib/metadata.py", line 1039, in add_requirements
self._legacy.add_requirements(requirements)
File "/tmp/distlib/distlib/metadata.py", line 575, in add_requirements
self['Requires-Dist'] += requirements
File "/tmp/distlib/distlib/metadata.py", line 276, in __setitem__
return self.set(name, value)
File "/tmp/distlib/distlib/metadata.py", line 453, in set
if not scheme.is_valid_matcher(v.split(';')[0]):
File "/tmp/distlib/distlib/version.py", line 703, in is_valid_matcher
self.matcher(s)
File "/tmp/distlib/distlib/version.py", line 115, in __init__
raise ValueError('\'.*\' not allowed for '
ValueError: '.*' not allowed for '>=' constraints
Unfortunately, bad metadata occurs occasionally in the wild, and crashing because one “broken” package exists is far from useful behavior. Could you please make distlib handle this gracefully and emit warnings instead?
Original report by Michał Górny (Bitbucket: mgorny, GitHub: mgorny).
distlib currently crashes upon meeting invalid package metadata, e.g.:grinning:
Unfortunately, bad metadata occurs occasionally in the wild, and crashing because one “broken” package exists is far from useful behavior. Could you please make distlib handle this gracefully and emit warnings instead?