Merge pull request #161 from emakarov/case_sensitive_strenums

Uppercase and lowercase string enums behaviour updated
This commit is contained in:
Alexander Goldberg 2020-12-14 15:56:58 +02:00 committed by GitHub
commit 7c90c1e4c3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -468,9 +468,16 @@ class BaseEnumField(Field):
return value return value
try: try:
if isinstance(value, str): if isinstance(value, str):
return self.enum_cls[value] try:
return self.enum_cls[value]
except Exception:
return self.enum_cls(value)
if isinstance(value, bytes): if isinstance(value, bytes):
return self.enum_cls[value.decode('UTF-8')] decoded = value.decode('UTF-8')
try:
return self.enum_cls[decoded]
except Exception:
return self.enum_cls(decoded)
if isinstance(value, int): if isinstance(value, int):
return self.enum_cls(value) return self.enum_cls(value)
except (KeyError, ValueError): except (KeyError, ValueError):
@ -665,4 +672,3 @@ class LowCardinalityField(Field):
# Expose only relevant classes in import * # Expose only relevant classes in import *
__all__ = get_subclass_names(locals(), Field) __all__ = get_subclass_names(locals(), Field)