python / python/mypy

(🎁) No warning about `TypeAlias` to bare `TypeVar` when using `TypeAlias`

Offen
#13,376 4 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

feature priority-2-low topic-runtime-semantics topic-type-alias topic-type-variables
Vorherrschende Sprache
Python
Sterne
20.6k
Forks
3.3k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

from typing import TypeVar, TypeAlias

T = TypeVar("T")
TAlias: TypeAlias = T

def foo(
    t1: TAlias[int],  # no error
    t2: TAlias,  # error: Missing type parameters for generic type "TAlias"
) -> None: ...

Treating it as a generic type and not as TypeVar is incorrect as at runtime it is not subscriptable:

Traceback (most recent call last):
  File "test.py", line 7, in <module>
    t1: TAlias[int],  # no error
TypeError: 'TypeVar' object is not subscriptable

playground

Strangely, the correct error is reported when the TypeAlias is omitted.

from typing import TypeVar, TypeAlias

T = TypeVar("T")
TAlias = T  # error: Type variable "__main__.T" is invalid as target for type alias  [misc]

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 test.py-Reproduktion und vergleiche sie mit der Playground-Konfiguration unter Verwendung von mypy master, Python 3.10 und strict flags. Verfolge, warum die TypeAlias-Form TAlias[int] akzeptiert, während der direkte Alias ein ungültiges TypeVar-Ziel meldet; abgeschlossen ist die Untersuchung, wenn die Alias-Form eine geeignete Diagnose ausgibt und die ungültige Verwendung mit Subscript nicht akzeptiert.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
tooling
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
38/100

Neue Issues direkt in Ihr Postfach

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