Uh oh!
There was an error while loading. Please reload this page.
Fix matching against union of tuples - #19600
Merged
Merged
Conversation
saulshanabrook
marked this pull request as draft
August 6, 2025 20:22
This comment has been minimized.
This comment has been minimized.
saulshanabrook
marked this pull request as ready for review
August 6, 2025 20:40
This comment has been minimized.
This comment has been minimized.
for more information, see https://pre-commit.ci
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
saulshanabrook
commented
Aug 7, 2025
ContributorAuthor
This is now ready for review. |
This was referenced Aug 7, 2025
| elif not tuple_types and not sequence_types and not unknown_type: | ||
| return self.early_non_match() | ||
| elif tuple_types: | ||
| inner_types = [make_simplified_union([*sequence_types, *x]) for x in zip(*tuple_types)] |
Collaborator
There was a problem hiding this comment.
I think this zip isn't quite right, I will push the fix + test
This comment was marked as outdated.
This comment was marked as outdated.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
hauntsaninjaforce-pushed
the
issue-19599
branch
from
February 5, 2026 06:32
0d9e2fe to
53b58acCompareContributor
According to mypy_primer, this change doesn't affect type check results on a corpus of open source code. ✅ |
Uh oh!
There was an error while loading. Please reload this page.
hauntsaninja
commented
Feb 5, 2026
Collaborator
Thank you! |
hauntsaninja added a commit
to hauntsaninja/mypy
that referenced
this pull request
Feb 5, 2026
I realised there is a simpler and more powerful approach than the one taken in python#19600. This basically adds the new "Step 2" to the original code.
hauntsaninja added a commit
to hauntsaninja/mypy
that referenced
this pull request
Feb 5, 2026
I realised there is a simpler and more powerful approach than the one taken in python#19600. This basically adds the new "Step 2" to the original code.
saulshanabrook
commented
Feb 5, 2026
ContributorAuthor
Thank you for fixing this up! Excited to have this working now :) |
hauntsaninja added a commit
that referenced
this pull request
Feb 11, 2026
I realised there is a simpler and more complete approach than the one taken in #19600. This adds the new "Step 2" to the original code. Best way to review the diff is probably to check it out and review it squashed with #19600 , but really the net logic change is just "Step 2" Fixes#15190Fixes#17549Fixes#17600 Mostly fixes#18039 Helps with things in #19081
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 freeto 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.
This pull request fixes handling of union types containing tuples in match statements. Previously, when a tuple was part of a union, all its items would be unioned together and treated as a homogeneous tuple of that union type, which was incorrect.
It still fallbacks on this behavior if we there are multiple tuples in the union with Unpack in them, but otherwise now it should be handled correctly.
I attempted to keep as much of the existing semantics the same besides for this change. I also tried to keep the performance roughly similar, not unioning types more than needed.
Fixes#19599
Fixes#19082