From 1ac8e54b5cdab3b7db4b5ef3ca1bef10a416fc4f Mon Sep 17 00:00:00 2001 From: Ethan Furman Date: Thu, 10 Jul 2025 18:40:29 -0700 Subject: [PATCH 1/2] [Enum] dir() on a Flag now shows aliases --- Lib/enum.py | 6 +++++- Lib/test/test_enum.py | 6 +++++- .../Library/2025-07-10-18-40-11.gh-issue-135559.BMDtYn.rst | 2 ++ 3 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2025-07-10-18-40-11.gh-issue-135559.BMDtYn.rst diff --git a/Lib/enum.py b/Lib/enum.py index 538b9cc8e96fc1..32e7783064a9e8 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -773,12 +773,16 @@ def __delattr__(cls, attr): super().__delattr__(attr) def __dir__(cls): + if issubclass(cls, Flag): + members = list(cls._member_map_.keys()) + else: + members = cls._member_names_ interesting = set([ '__class__', '__contains__', '__doc__', '__getitem__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__', ] - + cls._member_names_ + + members ) if cls._new_member_ is not object.__new__: interesting.add('__new__') diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index 2dd585f246d506..600d737e86c55a 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -5529,12 +5529,16 @@ def test_enum_dict_standalone(self): # helpers def enum_dir(cls): + if issubclass(cls, Flag): + members = list(cls._member_map_.keys()) + else: + members = cls._member_names_ interesting = set([ '__class__', '__contains__', '__doc__', '__getitem__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__', ] - + cls._member_names_ + + members ) if cls._new_member_ is not object.__new__: interesting.add('__new__') diff --git a/Misc/NEWS.d/next/Library/2025-07-10-18-40-11.gh-issue-135559.BMDtYn.rst b/Misc/NEWS.d/next/Library/2025-07-10-18-40-11.gh-issue-135559.BMDtYn.rst new file mode 100644 index 00000000000000..75bb6b8fe6dd88 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-07-10-18-40-11.gh-issue-135559.BMDtYn.rst @@ -0,0 +1,2 @@ +Flag: a `dir()` on a `Flag` enumeration now shows non-canonical members +(i.e. aliases). From d09ea7f3a5afa65d9e8246cbdf8f046e3e004e92 Mon Sep 17 00:00:00 2001 From: Ethan Furman Date: Mon, 21 Jul 2025 09:49:39 -0700 Subject: [PATCH 2/2] Update Misc/NEWS.d/next/Library/2025-07-10-18-40-11.gh-issue-135559.BMDtYn.rst --- .../next/Library/2025-07-10-18-40-11.gh-issue-135559.BMDtYn.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Misc/NEWS.d/next/Library/2025-07-10-18-40-11.gh-issue-135559.BMDtYn.rst b/Misc/NEWS.d/next/Library/2025-07-10-18-40-11.gh-issue-135559.BMDtYn.rst index 75bb6b8fe6dd88..2ab3d4d76f38e8 100644 --- a/Misc/NEWS.d/next/Library/2025-07-10-18-40-11.gh-issue-135559.BMDtYn.rst +++ b/Misc/NEWS.d/next/Library/2025-07-10-18-40-11.gh-issue-135559.BMDtYn.rst @@ -1,2 +1,2 @@ -Flag: a `dir()` on a `Flag` enumeration now shows non-canonical members +Flag: a ``dir()`` on a ``Flag`` enumeration now shows non-canonical members. (i.e. aliases).