Repository navigation
Disable promotions in isinstance checks - #6114
Merged
Michael0x2a merged 1 commit intoDec 31, 2018
Merged
Michael0x2a merged 1 commit into
Michael0x2a merged 1 commit into
Conversation
This pull request resolves python#6060 by modifying `conditional_type_map` function in `checker.py` to ignore promotions.
Collaborator
Author
|
Note: I am somewhat suspicious of this solution. I'll try testing it on our internal codebases later today or tomorrow. |
ilevkivskyi
approved these changes
Dec 30, 2018
ilevkivskyi
left a comment
Member
There was a problem hiding this comment.
I think this is a right change. You can merge this after verifying this works well with internal code bases.
Collaborator
|
This does actually cause some trouble in internal code bases (with |
msullivan
added a commit
that referenced
this pull request
Jan 4, 2019
msullivan
added a commit
that referenced
this pull request
Jan 8, 2019
The type of Num.n is `complex`, though it can in practice also be an `int` or a `float`, and we case on the actual type to determine which sort of mypy ast node to use. In #6114, promotions were disabled in `isinstance` checks, which caused mypy to decide that the `isinstance` checks for int and float won't match. Fix this by giving the value the type object instead of complex. Typeshed *does* actually annotate `n` as `Union[float, int, complex]`, but mypy simplifies that into `complex`. (It does *not* do this simplification for local variables with such an annotation; see issue #6168.)
msullivan
added a commit
that referenced
this pull request
Jan 9, 2019
The type of Num.n is `complex`, though it can in practice also be an `int` or a `float`, and we case on the actual type to determine which sort of mypy ast node to use. In #6114, promotions were disabled in `isinstance` checks, which caused mypy to decide that the `isinstance` checks for int and float won't match. Fix this by giving the value the type object instead of complex. Typeshed *does* actually annotate `n` as `Union[float, int, complex]`, but mypy simplifies that into `complex`. (It does *not* do this simplification for local variables with such an annotation; see issue #6168.)
Michael0x2a
added a commit
to Michael0x2a/mypy
that referenced
this pull request
Jan 11, 2019
This pull request reverts python#6114 and python#6142: see python#6180 for rationale. In short, the original fix ended up being more disruptive then anticipated: it's modifying str and unicode semantics, and we should put a little more thought into reasoning about that particular case before moving ahead with any fix here. This should also help unblock the upcoming 0.660 release.
Michael0x2a
added a commit
that referenced
this pull request
Jan 11, 2019
This pull request reverts #6114 and #6142: see #6180 for rationale. In short, the original fix ended up being more disruptive then anticipated: it's modifying str and unicode semantics, and we should put a little more thought into reasoning about that particular case before moving ahead with any fix here. This should also help unblock the upcoming 0.660 release.
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.
This pull request resolves #6060 by modifying
conditional_type_mapfunction inchecker.pyto ignore promotions.