Skip to content

Faulty type inference for Enum attributes #15454

Open
@harahu

Description

@harahu

Bug Report

Accessing an instance of an enum though another instance leads to the wrong type being inferred for the instance.

To Reproduce

See: https://mypy-play.net/?mypy=master&python=3.12&flags=disallow-any-unimported&gist=26f57e606e831442885c45110b8d8650

import enum

class Color(enum.Enum):
    RED = "RED"
    GREEN = "GREEN"
    BLUE = "BLUE"

c = Color.RED

# error: Incompatible types in assignment (expression has type "str", variable has type "Color")  [assignment]
c = c.GREEN

Expected Behavior

I expect mypy to understand that c.GREEN is also of type Color.

Actual Behavior

Mypy thinks c.GREEN is of type str.

main.py:11: error: Incompatible types in assignment (expression has type "str", variable has type "Color")  [assignment]
Found 1 error in 1 file (checked 1 source file)

Your Environment

  • Mypy version used: master (post 1.3.0 at time of writing)
  • Mypy command-line flags: n/a
  • Mypy configuration options from mypy.ini (and other config files): n/a
  • Python version used: 3.12

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions