False positive errors with anonymous and inline declaration of namedtuple types
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug Report
Mypy raises false positive errors with anonymous and inline declaration of namedtuple types.
To Reproduce
from collections import namedtuple
dim = namedtuple("Dimension", ["x", "y"])(2, 3)
This should be equivalent to the following, which mypy gets correct:
from collections import namedtuple
Dimension = namedtuple("Dimension", ["x", "y"])
dim = Dimension(2, 3)
(Example taken from here: https://stackoverflow.com/a/26405216)
Expected Behavior
No error raised.
Actual Behavior
$ mypy namedtuple.py
namedtuple.py:3: error: Too many arguments for "tuple" [call-arg]
namedtuple.py:3: error: Argument 1 to "tuple" has incompatible type "int"; expected "Iterable[Any]" [arg-type]
Found 2 errors in 1 file (checked 1 source file)
My Environment
$ mypy --version
mypy 1.7.1 (compiled: yes)
$ python --version
Python 3.11.6
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 Bericht mit namedtuple.py und der im Issue gezeigten Inline-anonymen Deklaration zu reproduzieren, und vergleiche ihn dann mit der separaten Dimension-Deklaration. Verfolge, wie mypy Aufrufe von collections.namedtuple verarbeitet. Fertig ist die Arbeit, wenn die Inline-Form keine falschpositiven Fehler erzeugt, während das bestehende Beispiel mit separater Deklaration korrekt 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
- Klar beschrieben
- Anfängerfreundlichkeit
- 35/100