Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 388a392

Browse files
committed
Issue 18693: Put custom __dir__ back in place. Will instead look at fixing help().
1 parent 8f2c2bc commit 388a392

2 files changed

Lines changed: 21 additions & 0 deletions

File tree

Lib/enum.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,9 @@ def __call__(cls, value, names=None, *, module=None, type=None):
223223
def __contains__(cls, member):
224224
return isinstance(member, cls) and member.name in cls._member_map_
225225

226+
def __dir__(self):
227+
return ['__class__', '__doc__', '__members__'] + self._member_names_
228+
226229
@property
227230
def __members__(cls):
228231
"""Returns a mapping of member name->value.
@@ -430,6 +433,9 @@ def __repr__(self):
430433
def __str__(self):
431434
return "%s.%s" % (self.__class__.__name__, self._name_)
432435

436+
def __dir__(self):
437+
return (['__class__', '__doc__', 'name', 'value'])
438+
433439
def __eq__(self, other):
434440
if type(other) is self.__class__:
435441
return self is other

Lib/test/test_enum.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,21 @@ class Season(Enum):
6767
WINTER = 4
6868
self.Season = Season
6969

70+
def test_dir_on_class(self):
71+
Season = self.Season
72+
self.assertEqual(
73+
set(dir(Season)),
74+
set(['__class__', '__doc__', '__members__',
75+
'SPRING', 'SUMMER', 'AUTUMN', 'WINTER']),
76+
)
77+
78+
def test_dir_on_item(self):
79+
Season = self.Season
80+
self.assertEqual(
81+
set(dir(Season.WINTER)),
82+
set(['__class__', '__doc__', 'name', 'value']),
83+
)
84+
7085
def test_enum_in_enum_out(self):
7186
Season = self.Season
7287
self.assertIs(Season(Season.WINTER), Season.WINTER)

0 commit comments

Comments
 (0)