make enums hashable
This commit is contained in:
@@ -943,6 +943,10 @@ cdef class _DynamicEnum:
|
|||||||
elif op == 5: # >=
|
elif op == 5: # >=
|
||||||
return left >= right
|
return left >= right
|
||||||
|
|
||||||
|
def __hash__(_DynamicEnum self):
|
||||||
|
return hash(self._as_str())
|
||||||
|
|
||||||
|
|
||||||
cdef class _DynamicEnumField:
|
cdef class _DynamicEnumField:
|
||||||
cdef _init(self, proto):
|
cdef _init(self, proto):
|
||||||
self.thisptr = proto
|
self.thisptr = proto
|
||||||
|
|||||||
@@ -415,6 +415,12 @@ def check_all_types(reader):
|
|||||||
assert subSubReader.structField.textField == "really nested"
|
assert subSubReader.structField.textField == "really nested"
|
||||||
|
|
||||||
assert subReader.enumField == "baz"
|
assert subReader.enumField == "baz"
|
||||||
|
# Check that enums are hashable and can be used as keys in dicts
|
||||||
|
# interchangably with their string version.
|
||||||
|
assert hash(subReader.enumField) == hash('baz')
|
||||||
|
assert {subReader.enumField: 17}.get(subReader.enumField) == 17
|
||||||
|
assert {subReader.enumField: 17}.get('baz') == 17
|
||||||
|
assert {'baz': 17}.get(subReader.enumField) == 17
|
||||||
|
|
||||||
check_list(subReader.voidList, [None, None, None])
|
check_list(subReader.voidList, [None, None, None])
|
||||||
check_list(subReader.boolList, [False, True, False, True, True])
|
check_list(subReader.boolList, [False, True, False, True, True])
|
||||||
|
|||||||
Reference in New Issue
Block a user