Handle malformed collection operands in Version comparisons - #479
Merged
Merged
Conversation
Str0k
marked this pull request as ready for review
September 12, 2026 08:06
Member
|
Thank you for the contribution! 👍 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Comparing a
Versionwith a malformed list, tuple, or dictionary leaks errors from the internal constructor. For example,Version(1, 0, 0) == []raisesTypeErroreven though equality with unsupported operands should evaluate toFalse.Convert collection operands in the comparison decorator and return
NotImplementedwhen construction raisesTypeErrororValueError. Equality then returnsFalse, and ordering raises Python's standard unsupported-comparisonTypeError. Valid collections and subclass behavior are preserved;Version.compare()and string parsing are unchanged.The patch adds 19 regression cases, updates the documentation's comparison example, and includes
changelog.d/pr479.bugfix.rstusing the actual PR number as documented bychangelog.d/README.rst.Validation against base
1e8757912f633684e1a65d9d7c7e2270c3c79928, reproduced independently in clean checkouts:python -m pytest -q, including documentationThe changelog was added in a separate commit after draft creation. Towncrier validation passed; that commit changes only the reviewed newsfragment, leaving the tested code and documentation unchanged.
AI assistance: implementation and independent code review used Hermes with self-hosted GLM 5.3. Automated validation was reproduced separately. This does not represent a human review.