Type Variable Specialized by Generic
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
It seems that Type[...] variables dont specialize correctly:
Types = Union[int, str]
T = TypeVar('T', bound=Types)
class A:
x: Types
y: Type[Types]
class B(A, Generic[T]):
x: T # ok
y: Type[T] # error: Incompatible types in assignment
The error that arises is
error: Incompatible types in assignment (expression has type "Type[T]", base class "A" defined the type as "Union[Type[int], Type[str]]")
I believe this is a bug and it should be an allowed specialization (similar to the instance x above), unless there is a counterexample I'm not thinking of?
Tested with mypy v0.660 as well as mypy master + typed-ast master, CPython 3.7.1
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
Verwende das bereitgestellte Python-Snippet als Reproducer und untersuche den Type-Checking-Pfad für generische Attributüberschreibungen mit Type[T] und Union-Bounds. Als abgeschlossen gilt dies, wenn mypy y: Type[T] in B ohne den Fehler wegen inkompatibler Zuweisung akzeptiert und eine Regressionsprüfung für dieses Beispiel vorhanden ist.
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
- 35/100