python / python/mypy

Cannot instantiate Type[Type[...]]

Offen
#12,425 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

feature
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()

Playground

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

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 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

Neue Issues direkt in Ihr Postfach

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