nested isinstances lose type information
Offen
Dieses Issue hat noch niemand übernommen.
bug
false-positive
topic-join-v-union
topic-type-narrowing
topic-union-types
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug Report
To Reproduce
x = object()
if isinstance(x, (int, str)):
reveal_type(x) # Union[int, str]
if isinstance(x, int):
pass
reveal_type(x) # object
Expected Behavior
both types revealed as Union[int, str]
Actual Behavior
object from second type
Your Environment
- Mypy version used: latest master (0.820+dev.72ac2cee910ca61bfdf449217328b6d10b45d378)
- Mypy command-line flags: none
- Mypy configuration options from
mypy.ini(and other config files): none - Python version used: 3.7.3
- Operating system and version: debian 10 based linux distro
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Verwende den bereitgestellten Python-Reproducer als Regressionstest und untersuche die vorhandenen Tests von mypy für die auf isinstance basierende Typverengung. Die Korrektur ist vollständig, wenn beide reveal_type-Aufrufe weiterhin Union[int, str] beibehalten und das umgebende Verengungsverhalten weiterhin durch Tests abgedeckt ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- devtools
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100