Skip to content

Commit 1ac8e54

Browse files
committed
[Enum] dir() on a Flag now shows aliases
1 parent 49365bd commit 1ac8e54

File tree

3 files changed

+12
-2
lines changed

3 files changed

+12
-2
lines changed

Lib/enum.py

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

775775
def __dir__(cls):
776+
if issubclass(cls, Flag):
777+
members = list(cls._member_map_.keys())
778+
else:
779+
members = cls._member_names_
776780
interesting = set([
777781
'__class__', '__contains__', '__doc__', '__getitem__',
778782
'__iter__', '__len__', '__members__', '__module__',
779783
'__name__', '__qualname__',
780784
]
781-
+ cls._member_names_
785+
+ members
782786
)
783787
if cls._new_member_ is not object.__new__:
784788
interesting.add('__new__')

Lib/test/test_enum.py

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

55315531
def enum_dir(cls):
5532+
if issubclass(cls, Flag):
5533+
members = list(cls._member_map_.keys())
5534+
else:
5535+
members = cls._member_names_
55325536
interesting = set([
55335537
'__class__', '__contains__', '__doc__', '__getitem__',
55345538
'__iter__', '__len__', '__members__', '__module__',
55355539
'__name__', '__qualname__',
55365540
]
5537-
+ cls._member_names_
5541+
+ members
55385542
)
55395543
if cls._new_member_ is not object.__new__:
55405544
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)