Incompatible return value type `type[Enum]` when returning a functional-style Enum
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug Report
When returning a functional-style Enum class from a function with the return type type[Enum] mypy reports an error.
When the created Enum class is assigned to a variable and the variable is return, mypy does not report an error.
To Reproduce
from enum import Enum
def direct_return() -> type[Enum]:
return Enum("direct", {"a": 0}) # error: Incompatible return value type (got "Enum", expected "type[Enum]") [return-value]
def indirect_return() -> type[Enum]:
indirect = Enum("indirect", {"a": 0})
return indirect # no error as expected
Expected Behavior
no mypy warnings
Actual Behavior
main.py:4: error: Incompatible return value type (got "Enum", expected "type[Enum]") [return-value]
Your Environment
- Mypy version used:
1.9.0andmasteron mypy-play.net - Mypy command-line flags: mypy-play.net defaults
- Mypy configuration options from
mypy.ini(and other config files): mypy-play.net defaults - Python version used:
3.12
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 Beispiele direct_return und indirect_return mit mypy 1.9.0 oder master zu reproduzieren, wobei du das Verhalten des verlinkten Playgrounds als Referenz verwendest. Verfolge, wie Aufrufe von Enum im funktionalen Stil im Type Checker inferiert werden, und füge anschließend einen Regressionstest hinzu, der zeigt, dass beide Funktionen ohne Warnungen zurückkehren.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- devtools
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 48/100