|
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