diff options
author | Ethan Furman <ethan@stoneleaf.us> | 2013-09-15 01:11:24 (GMT) |
---|---|---|
committer | Ethan Furman <ethan@stoneleaf.us> | 2013-09-15 01:11:24 (GMT) |
commit | 2131a4a2fc933132c8f2b1f97b3bbf246cccc669 (patch) | |
tree | d3c00a2914f976802467faabe45918fdb92f2714 /Lib | |
parent | 5589bd109adf9cdf1eec9ad78d4250b9f9b078ea (diff) | |
download | cpython-2131a4a2fc933132c8f2b1f97b3bbf246cccc669.zip cpython-2131a4a2fc933132c8f2b1f97b3bbf246cccc669.tar.gz cpython-2131a4a2fc933132c8f2b1f97b3bbf246cccc669.tar.bz2 |
Add __reversed__ to Enum. Minor code reorg (moved __members__ to be in alpha order).
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/enum.py | 23 | ||||
-rw-r--r-- | Lib/test/test_enum.py | 7 |
2 files changed, 20 insertions, 10 deletions
diff --git a/Lib/enum.py b/Lib/enum.py index 82058ae..0d72f3e 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -225,16 +225,6 @@ class EnumMeta(type): def __dir__(self): return ['__class__', '__doc__', '__members__'] + self._member_names_ - @property - def __members__(cls): - """Returns a mapping of member name->value. - - This mapping lists all enum members, including aliases. Note that this - is a read-only view of the internal mapping. - - """ - return MappingProxyType(cls._member_map_) - def __getattr__(cls, name): """Return the enum member matching `name` @@ -260,9 +250,22 @@ class EnumMeta(type): def __len__(cls): return len(cls._member_names_) + @property + def __members__(cls): + """Returns a mapping of member name->value. + + This mapping lists all enum members, including aliases. Note that this + is a read-only view of the internal mapping. + + """ + return MappingProxyType(cls._member_map_) + def __repr__(cls): return "<enum %r>" % cls.__name__ + def __reversed__(cls): + return (cls._member_map_[name] for name in reversed(cls._member_names_)) + def __setattr__(cls, name, value): """Block attempts to reassign Enum members. diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index 018e3fd..1308003 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -477,6 +477,13 @@ class TestEnum(unittest.TestCase): [Season.SUMMER, Season.WINTER, Season.AUTUMN, Season.SPRING], ) + def test_reversed_iteration_order(self): + self.assertEqual( + list(reversed(self.Season)), + [self.Season.WINTER, self.Season.AUTUMN, self.Season.SUMMER, + self.Season.SPRING] + ) + def test_programatic_function_string(self): SummerMonth = Enum('SummerMonth', 'june july august') lst = list(SummerMonth) |