bpo-33866: enum: Stop using OrderedDict (GH-7698)

This commit is contained in:
INADA Naoki 2018-06-19 01:14:26 +09:00 committed by GitHub
parent ea3dc8029a
commit e57f91a0f0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 15 deletions

View file

@ -1,12 +1,6 @@
import sys
from types import MappingProxyType, DynamicClassAttribute
# try _collections first to reduce startup cost
try:
from _collections import OrderedDict
except ImportError:
from collections import OrderedDict
__all__ = [
'EnumMeta',
@ -168,7 +162,7 @@ class EnumMeta(type):
# create our new Enum type
enum_class = super().__new__(metacls, cls, bases, classdict)
enum_class._member_names_ = [] # names in definition order
enum_class._member_map_ = OrderedDict() # name->value map
enum_class._member_map_ = {} # name->value map
enum_class._member_type_ = member_type
# save attributes from super classes so we know if we can take
@ -630,14 +624,12 @@ class Enum(metaclass=EnumMeta):
source = vars(source)
else:
source = module_globals
# We use an OrderedDict of sorted source keys so that the
# _value2member_map is populated in the same order every time
# _value2member_map_ is populated in the same order every time
# for a consistent reverse mapping of number to name when there
# are multiple names for the same number rather than varying
# between runs due to hash randomization of the module dictionary.
# are multiple names for the same number.
members = [
(name, source[name])
for name in source.keys()
(name, value)
for name, value in source.items()
if filter(name)]
try:
# sort by value