def deserialize_primitive(cls, data):
if cls is datetime.datetime:
try:
d = parse_date(data)
except iso8601.ParseError:
raise ValueError("'{}' is not a datetime.".format(data))
elif cls is datetime.date:
try:
d = parse_date(data).date()
except iso8601.ParseError:
raise ValueError("'{}' is not a date.".format(data))
elif cls in {int, float, uuid.UUID, bool}:
d = cls(data)
elif cls is numbers.Integral:
d = data
elif cls is decimal.Decimal:
try:
d = cls(data)
except decimal.InvalidOperation:
raise ValueError("'{}' is not a decimal.".format(data))
elif cls is text_type:
if not isinstance(data, text_type):
raise ValueError("'{}' is not a string.".format(data))
d = cls(data)
else:
raise TypeError(
"'{0}' is not a primitive type.".format(typing._type_repr(cls))
)
return d
评论列表
文章目录