False positive with assignment expression shadowing a builtin
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
To Reproduce
https://mypy-play.net/?mypy=latest&python=3.11&gist=a7fd112a423a2e565e5f2cd3e3607e58
def foo(x: int) -> int:
res = vars + 1 if (vars := x) else 0
return res
Expected Behavior
This should type check without errors. It does if I rename vars to anything that is not a name of a built-in.
Actual Behavior
main.py:2: error: Unsupported operand types for + (overloaded function and "int") [operator]
Your Environment
- Mypy version used: 1.5.1
- Mypy command-line flags: no
- Mypy configuration options from
mypy.ini(and other config files): no - Python version used: 3.11
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
Beginne damit, den verlinkten mypy-play-Reproduzierer mit Python 3.11 und mypy 1.5.1 auszuführen, und verfolge dann, wie der Zuweisungsausdruck und der Name vars analysiert werden. Als abgeschlossen gilt die Aufgabe, wenn das Beispiel ohne den gemeldeten Operatorfehler typgeprüft wird und dabei das bestehende Verhalten für integrierte Namen erhalten bleibt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- devtools
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100