python / python/mypy

`isinstance` doesn't work with `TypeAlias` for classes inherited from `NamedTuple`

Offen
#21,100 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug topic-named-tuple topic-type-alias
Vorherrschende Sprache
Python
Sterne
20.6k
Forks
3.3k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Bug Report

isinstance throws Parameterized generics cannot be used with class or instance checks [misc] for TypeAlias for a class inherited from NamedTuple. This is related to https://github.com/python/mypy/issues/18488

To Reproduce

from typing import Any, TypeAlias, NamedTuple

class Foo(NamedTuple):
    pass

Alias: TypeAlias = Foo

def is_foo(x: Any) -> bool:
    return isinstance(x, Alias)

https://mypy-play.net//?mypy=latest&python=3.13&gist=91206dbc88693a2e88ec03e79a8d8235

Expected Behavior
Should not throw.

Actual Behavior
Throws Parameterized generics cannot be used with class or instance checks [misc]

  • Mypy version used: 1.19.1
  • Mypy command-line flags: mypy . --strict
  • Mypy configuration options from pyproject.toml:
[tool.mypy]
strict = true
allow_redefinition = true
allow_redefinition_new = true
local_partial_types = true
follow_untyped_imports = true
  • Python version used: 3.13.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 mit der bereitgestellten Reproduktion von NamedTuple, TypeAlias und isinstance in mypy-play, unter Verwendung von mypy 1.19.1 mit Python 3.13 und strikten Einstellungen. Verfolge die Diagnose, die parametrisierte Generics in Klassen- oder Instanzprüfungen meldet, und bestätige anschließend die Behebung, indem du die Reproduktion erneut ausführst und überprüfst, dass kein Fehler gemeldet wird.

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
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
52/100

Neue Issues direkt in Ihr Postfach

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