Skip to content

Commit 615cf05

Browse files
ethanfurmanmiss-islington
authored andcommitted
gh-135559: [Enum] dir() on a Flag now shows aliases (GH-136527)
(cherry picked from commit 26757d1) Co-authored-by: Ethan Furman <ethan@stoneleaf.us>
1 parent 35df805 commit 615cf05

3 files changed

Lines changed: 12 additions & 2 deletions

File tree

Lib/enum.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -750,12 +750,16 @@ def __delattr__(cls, attr):
750750
super().__delattr__(attr)
751751

752752
def __dir__(cls):
753+
if issubclass(cls, Flag):
754+
members = list(cls._member_map_.keys())
755+
else:
756+
members = cls._member_names_
753757
interesting = set([
754758
'__class__', '__contains__', '__doc__', '__getitem__',
755759
'__iter__', '__len__', '__members__', '__module__',
756760
'__name__', '__qualname__',
757761
]
758-
+ cls._member_names_
762+
+ members
759763
)
760764
if cls._new_member_ is not object.__new__:
761765
interesting.add('__new__')

Lib/test/test_enum.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5492,12 +5492,16 @@ def test_enum_dict_standalone(self):
54925492
# helpers
54935493

54945494
def enum_dir(cls):
5495+
if issubclass(cls, Flag):
5496+
members = list(cls._member_map_.keys())
5497+
else:
5498+
members = cls._member_names_
54955499
interesting = set([
54965500
'__class__', '__contains__', '__doc__', '__getitem__',
54975501
'__iter__', '__len__', '__members__', '__module__',
54985502
'__name__', '__qualname__',
54995503
]
5500-
+ cls._member_names_
5504+
+ members
55015505
)
55025506
if cls._new_member_ is not object.__new__:
55035507
interesting.add('__new__')
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Flag: a ``dir()`` on a ``Flag`` enumeration now shows non-canonical members.
2+
(i.e. aliases).

0 commit comments

Comments
 (0)