python / python/mypy

Need help annotating class with dynamic inheritance

Offen
#17,379 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug
Vorherrschende Sprache
Python
Sterne
20.6k
Forks
3.3k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

To Reproduce

Gist URL: https://gist.github.com/mypy-play/d139ee55a5729d2ec5b63d4ceaeb5a33
Playground URL: https://mypy-play.net/?mypy=latest&python=3.12&gist=d139ee55a5729d2ec5b63d4ceaeb5a33

$ python test_mypy.py
header
1
header
2

$ mypy test_mypy.py
Warning: --strict-concatenate is deprecated; use --extra-checks instead
test_mypy.py:27: error: "__new__" must return a class instance (got "BaseClassT")  [misc]
test_mypy.py:36: error: Unsupported argument 1 for "super"  [misc]
test_mypy.py:38: error: Returning Any from function declared to return "BaseClassT"  [no-any-return]
test_mypy.py:41: error: Non-overlapping identity check (left operand type: "type[BaseClassT]", right operand type: "type[Type1]")  [comparison-overlap]
test_mypy.py:42: error: Returning Any from function declared to return "None"  [no-any-return]
test_mypy.py:42: error: "Example[BaseClassT]" has no attribute "method1"; maybe "method"?  [attr-defined]
test_mypy.py:43: error: Non-overlapping identity check (left operand type: "type[BaseClassT]", right operand type: "type[Type2]")  [comparison-overlap]
test_mypy.py:44: error: Returning Any from function declared to return "None"  [no-any-return]
test_mypy.py:44: error: "Example[BaseClassT]" has no attribute "method2"; maybe "method"?  [attr-defined]
test_mypy.py:48: error: Missing type parameters for generic type "Example"  [type-arg]
test_mypy.py:54: error: Cannot instantiate abstract class "ExampleSubclass" with abstract attribute "base_class"  [abstract]
test_mypy.py:55: error: Cannot instantiate abstract class "ExampleSubclass" with abstract attribute "base_class"  [abstract]
Found 12 errors in 1 file (checked 1 source file)

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 dem verlinkten gist oder Playground und führe dann die gezeigten Befehle python test_mypy.py und mypy test_mypy.py aus, um die Diagnosen in test_mypy.py zu reproduzieren. Verfolge die gemeldeten Fehler rund um die dynamisch geerbte Klasse und vergleiche sie mit der Laufzeitausgabe. Erledigt bedeutet, das erwartete Typisierungsverhalten und eine klare minimale Reproduktion für jede weitere Untersuchung festzulegen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
tooling
Issue-Typ
Bug
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

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