python / python/mypy

False positive with assignment expression shadowing a builtin

Offen
#15,904 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug topic-pep-572
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

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Ö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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.