Fix get_python_constraint_from_marker #347
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes
get_python_constraint_from_marker()
for markers which are not in disjunctive normal form (DNF).E.g. without the fix:
(python_version < "2.7" or python_full_version >= "3.0.0") and python_full_version < "3.6.0"
results in python_constraint*
whereas
<2.7 || >=3.0,<3.6
would be correct.By the way, increased the test coverage for
convert_markers()
andget_python_constraint_from_marker()
.Considering the commits separately may facilitate the review.
Update:
There was another bug in
get_python_constraint_from_marker()
that is fixed by the last commit.E.g. for
python_version >= "3.9" or sys_platform == "linux"
the function returned>=3.9
whereas*
would be correct (because forlinux
all python versions are allowed).Further, relying on the marker being in DNF before conversion, allows to simplify
convert_markers()
significantly.