summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorEthan Furman <ethan@stoneleaf.us>2013-08-12 13:51:41 (GMT)
committerEthan Furman <ethan@stoneleaf.us>2013-08-12 13:51:41 (GMT)
commit388a3921cf21a5ff99b1f80ebc5ada3db63225b8 (patch)
tree58ec58bfe8c028bf54ddaf519f7c6518d98ed311 /Lib
parent8f2c2bcc9dedacea0d18ee5f553dfb7ea325f044 (diff)
downloadcpython-388a3921cf21a5ff99b1f80ebc5ada3db63225b8.zip
cpython-388a3921cf21a5ff99b1f80ebc5ada3db63225b8.tar.gz
cpython-388a3921cf21a5ff99b1f80ebc5ada3db63225b8.tar.bz2
Issue 18693: Put custom __dir__ back in place. Will instead look at fixing `help()`.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/enum.py6
-rw-r--r--Lib/test/test_enum.py15
2 files changed, 21 insertions, 0 deletions
diff --git a/Lib/enum.py b/Lib/enum.py
index dc97017..34eb7b8 100644
--- a/Lib/enum.py
+++ b/Lib/enum.py
@@ -223,6 +223,9 @@ class EnumMeta(type):
def __contains__(cls, member):
return isinstance(member, cls) and member.name in cls._member_map_
+ def __dir__(self):
+ return ['__class__', '__doc__', '__members__'] + self._member_names_
+
@property
def __members__(cls):
"""Returns a mapping of member name->value.
@@ -430,6 +433,9 @@ class Enum(metaclass=EnumMeta):
def __str__(self):
return "%s.%s" % (self.__class__.__name__, self._name_)
+ def __dir__(self):
+ return (['__class__', '__doc__', 'name', 'value'])
+
def __eq__(self, other):
if type(other) is self.__class__:
return self is other
diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py
index 751fd56..71c77a0 100644
--- a/Lib/test/test_enum.py
+++ b/Lib/test/test_enum.py
@@ -67,6 +67,21 @@ class TestEnum(unittest.TestCase):
WINTER = 4
self.Season = Season
+ def test_dir_on_class(self):
+ Season = self.Season
+ self.assertEqual(
+ set(dir(Season)),
+ set(['__class__', '__doc__', '__members__',
+ 'SPRING', 'SUMMER', 'AUTUMN', 'WINTER']),
+ )
+
+ def test_dir_on_item(self):
+ Season = self.Season
+ self.assertEqual(
+ set(dir(Season.WINTER)),
+ set(['__class__', '__doc__', 'name', 'value']),
+ )
+
def test_enum_in_enum_out(self):
Season = self.Season
self.assertIs(Season(Season.WINTER), Season.WINTER)