FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Add __reversed__ to Enum. Minor code reorg (moved __members__ to be … · python/cpython@2131a4a · GitHub

Repository navigation

Commit 2131a4a

Browse files
committed
Add __reversed__ to Enum. Minor code reorg (moved __members__ to be in alpha order).
1 parent 5589bd1 commit 2131a4a

2 files changed

Lines changed: 20 additions & 10 deletions

File tree

‎Lib/enum.py‎

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -225,16 +225,6 @@ def __contains__(cls, member):
225225
def __dir__(self):
226226
return ['__class__', '__doc__', '__members__'] + self._member_names_
227227

228-
@property
229-
def __members__(cls):
230-
"""Returns a mapping of member name->value.
231-
232-
This mapping lists all enum members, including aliases. Note that this
233-
is a read-only view of the internal mapping.
234-
235-
"""
236-
return MappingProxyType(cls._member_map_)
237-
238228
def __getattr__(cls, name):
239229
"""Return the enum member matching `name`
240230
@@ -260,9 +250,22 @@ def __iter__(cls):
260250
def __len__(cls):
261251
return len(cls._member_names_)
262252

253+
@property
254+
def __members__(cls):
255+
"""Returns a mapping of member name->value.
256+
257+
This mapping lists all enum members, including aliases. Note that this
258+
is a read-only view of the internal mapping.
259+
260+
"""
261+
return MappingProxyType(cls._member_map_)
262+
263263
def __repr__(cls):
264264
return "<enum %r>" % cls.__name__
265265

266+
def __reversed__(cls):
267+
return (cls._member_map_[name] for name in reversed(cls._member_names_))
268+
266269
def __setattr__(cls, name, value):
267270
"""Block attempts to reassign Enum members.
268271

‎Lib/test/test_enum.py‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,13 @@ class Season(Enum):
477477
[Season.SUMMER, Season.WINTER, Season.AUTUMN, Season.SPRING],
478478
)
479479

480+
def test_reversed_iteration_order(self):
481+
self.assertEqual(
482+
list(reversed(self.Season)),
483+
[self.Season.WINTER, self.Season.AUTUMN, self.Season.SUMMER,
484+
self.Season.SPRING]
485+
)
486+
480487
def test_programatic_function_string(self):
481488
SummerMonth = Enum('SummerMonth', 'june july august')
482489
lst = list(SummerMonth)

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL