python / python/mypy

mypy reports an error when passing enum values as arguments

Offen
#20,739 9 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

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

Beschreibung

Bug Report

Starting with https://github.com/python/mypy/commit/1a04c073260c13107abfab6ae0ff4c8cc214eb54 @sterliakov enum values assigned to functions are typed as Callables. This seems to make mypy report an error when passing enum values to functions that expect the enum.

To Reproduce


from enum import Enum
import operator

class Op(Enum):
    ADD = operator.add
    SUB = operator.sub
    MUL = operator.mul

def takes_op(op: Op, x: int, y: int):
    return op.value(x, y)

print(takes_op(Op.ADD, 2, 2))

Expected Behavior

No error

Actual Behavior

/Users/psawicki/test.py:12: error: Argument 1 to "takes_op" has incompatible type "Callable[[Any, Any], Any]"; expected "Op"  [arg-type]

Your Environment

  • Mypy version used: mypy 1.20.0+dev.1a04c073260c13107abfab6ae0ff4c8cc214eb54 and up
  • Mypy command-line flags: mypy ~/test.py
  • Mypy configuration options from mypy.ini (and other config files): None
  • Python version used: 3.13.5

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

Führe das minimale Python-Beispiel aus dem Issue mit mypy 1.20.0+dev.1a04c073260c13107abfab6ae0ff4c8cc214eb54 aus und verfolge, wie Enum-Mitglieder, denen aufrufbare Werte zugewiesen sind, typisiert werden. Füge einen Regressionstest für die Übergabe von Op.ADD an takes_op hinzu und bestätige, dass mypy keinen Argumenttypfehler meldet.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
compilers
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
58/100

Neue Issues direkt in Ihr Postfach

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