diff --git a/ChangeLog b/ChangeLog index 88b4d4fad..fad64dc07 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,6 +7,10 @@ What's New in astroid 2.13.0? Release date: TBA +* Add ``_value2member_map_`` member to the ``enum`` brain. + + Refs PyCQA/pylint#3941 + What's New in astroid 2.12.11? ============================== diff --git a/astroid/brain/brain_namedtuple_enum.py b/astroid/brain/brain_namedtuple_enum.py index aa2ff3cec..dfc9bf683 100644 --- a/astroid/brain/brain_namedtuple_enum.py +++ b/astroid/brain/brain_namedtuple_enum.py @@ -425,6 +425,10 @@ def name(self): new_targets.append(fake.instantiate_class()) dunder_members[local] = fake node.locals[local] = new_targets + + # The undocumented `_value2member_map_` member: + node.locals["_value2member_map_"] = [nodes.Dict(parent=node)] + members = nodes.Dict(parent=node) members.postinit( [ diff --git a/tests/unittest_scoped_nodes.py b/tests/unittest_scoped_nodes.py index a11a3b963..9e33de6ec 100644 --- a/tests/unittest_scoped_nodes.py +++ b/tests/unittest_scoped_nodes.py @@ -2534,6 +2534,21 @@ class Veg(Enum): assert inferred_member_value.value is None +def test_enums_value2member_map_() -> None: + """Check the `_value2member_map_` member is present in an Enum class""" + node = builder.extract_node( + """ + from enum import Enum + class Veg(Enum): + TOMATO: 1 + + Veg + """ + ) + inferred_class = node.inferred()[0] + assert "_value2member_map_" in inferred_class.locals + + @pytest.mark.parametrize("annotation, value", [("int", 42), ("bytes", b"")]) def test_enums_type_annotation_non_str_member(annotation, value) -> None: """A type-annotated member of an Enum class where: