|
1 | 1 | import sys |
2 | 2 | from types import MappingProxyType, DynamicClassAttribute |
3 | 3 |
|
4 | | -# try _collections first to reduce startup cost |
5 | | -try: |
6 | | - from _collections import OrderedDict |
7 | | -except ImportError: |
8 | | - from collections import OrderedDict |
9 | | - |
10 | 4 |
|
11 | 5 | __all__ = [ |
12 | 6 | 'EnumMeta', |
@@ -168,7 +162,7 @@ def __new__(metacls, cls, bases, classdict): |
168 | 162 | # create our new Enum type |
169 | 163 | enum_class = super().__new__(metacls, cls, bases, classdict) |
170 | 164 | enum_class._member_names_ = [] # names in definition order |
171 | | - enum_class._member_map_ = OrderedDict() # name->value map |
| 165 | + enum_class._member_map_ = {} # name->value map |
172 | 166 | enum_class._member_type_ = member_type |
173 | 167 |
|
174 | 168 | # save attributes from super classes so we know if we can take |
@@ -630,14 +624,12 @@ def _convert(cls, name, module, filter, source=None): |
630 | 624 | source = vars(source) |
631 | 625 | else: |
632 | 626 | source = module_globals |
633 | | - # We use an OrderedDict of sorted source keys so that the |
634 | | - # _value2member_map is populated in the same order every time |
| 627 | + # _value2member_map_ is populated in the same order every time |
635 | 628 | # for a consistent reverse mapping of number to name when there |
636 | | - # are multiple names for the same number rather than varying |
637 | | - # between runs due to hash randomization of the module dictionary. |
| 629 | + # are multiple names for the same number. |
638 | 630 | members = [ |
639 | | - (name, source[name]) |
640 | | - for name in source.keys() |
| 631 | + (name, value) |
| 632 | + for name, value in source.items() |
641 | 633 | if filter(name)] |
642 | 634 | try: |
643 | 635 | # sort by value |
|
0 commit comments