Open
Description
Bug Report
I stumbled across a weird issue with literals and using the .name
property with enums. I was wondering if this is expected behavior. Seems inconsistent to me.
To Reproduce
from enum import Enum
from typing import Literal
class Foo(Enum):
A = 1
B = 1
keys = Literal["A", "B", "C"]
def f(name: keys) -> None:
print(name)
foo: Foo = Foo.A
f(foo.name) # Error: Argument 1 to "f" has incompatible type "str"; expected "Literal['A', 'B', 'C']"
f(Foo.A.name) # No Error
Expected Behavior
I would expect both versions to be valid.
Your Environment
- Mypy version used: mypy 1.15.0 (compiled: yes)
- Mypy command-line flags: none
- Mypy configuration options from
mypy.ini
(and other config files): none - Python version used: 3.11.11