Speed-up building enums by value, e.g. http.HTTPStatus(200) (#11318)
bpo-35585: Speed up enum by-value lookup
This commit is contained in:
parent
3a81076bbf
commit
34ae04f74d
|
@ -563,8 +563,10 @@ class Enum(metaclass=EnumMeta):
|
||||||
# by-value search for a matching enum member
|
# by-value search for a matching enum member
|
||||||
# see if it's in the reverse mapping (for hashable values)
|
# see if it's in the reverse mapping (for hashable values)
|
||||||
try:
|
try:
|
||||||
if value in cls._value2member_map_:
|
|
||||||
return cls._value2member_map_[value]
|
return cls._value2member_map_[value]
|
||||||
|
except KeyError:
|
||||||
|
# Not found, no need to do long O(n) search
|
||||||
|
pass
|
||||||
except TypeError:
|
except TypeError:
|
||||||
# not there, now do long search -- O(n) behavior
|
# not there, now do long search -- O(n) behavior
|
||||||
for member in cls._member_map_.values():
|
for member in cls._member_map_.values():
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Speed-up building enums by value, e.g. http.HTTPStatus(200).
|
Loading…
Reference in New Issue