Cannot instantiate Type[Type[...]]
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 thinks that Type[Type[...]] cannot be instantiated. I understand that it can be difficult to support, but is there any reason to consider it an error?
Type[Type[something]] is type or its subclass. It can be instantiated (code below runs without errors).
To Reproduce
Write the following code, run mypy on it.
class A:
pass
B = type(A)('B', (A,), {})
b = B()
Expected Behavior
No errors (but I'm not sure that I'm not just missing something and under certain circumstances such code can be incorrect).
Actual Behavior
mypy reports:
main.py:4: error: Cannot instantiate type "Type[Type[A]]"
Your Environment
- Mypy version used: 0.941 latest (from pip & playground)
- Mypy command-line flags: nothing
- Mypy configuration options from
mypy.ini(and other config files): nothing - Python version used: 3.10
- Operating system and version: Ubuntu 22.04
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 gemeldeten Klassendefinitionen und den Aufruf von type() in main.py einzufügen und mypy mit dem angegebenen Python-3.10-Setup auszuführen, um die Diagnose zu reproduzieren. Verfolge die Verarbeitung von Type[Type[A]] und füge einen Regressionstest hinzu, der diesen Fall abdeckt; abgeschlossen ist die Aufgabe, wenn mypy das Beispiel akzeptiert, ohne andere Instanziierungsprüfungen abzuschwächen.
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
- Größtenteils klar
- Anfängerfreundlichkeit
- 42/100