list of lists not inferred correctly
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug Report
This came up in testing for pandas-stubs.
If you have a list of lists of different types, mypy infers it as a list[object] rather than a list of the union of the lists of the inner types.
To Reproduce
class NAType:
pass
class NaTType:
pass
NA: NAType = NAType()
NaT: NaTType = NaTType()
foo = [[None], [NA], [NaT]]
reveal_type(foo)
Expected Behavior
Revealed type is list[list[None] | list[NAType] | list[NaTType]]
This is what pyright returns with the setting strictListInference=True
Actual Behavior
Revealed type is "builtins.list[builtins.object]
Your Environment
- Mypy version used: 1.19.0
- Mypy command-line flags: None
- Mypy configuration options from
mypy.ini(and other config files): None - 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, die Python-Reproduktion des Issues mit mypy 1.19.0 auszuführen, und untersuche den aufgedeckten Typ für foo. Verfolge anschließend den Pfad der Listeninferenz, der für das Kombinieren verschachtelter Listentypen verantwortlich ist, und überprüfe dann, dass das Ergebnis list[list[None] | list[NAType] | list[NaTType]] lautet, ohne die bestehenden Annahmen zur Befehlszeile oder Konfiguration zu ändern.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 38/100