openapi-core/openapi_core/schema/schemas/util.py

46 lines
972 B
Python
Raw Normal View History

2018-04-17 12:18:40 +00:00
"""OpenAPI core schemas util module"""
2019-03-07 21:55:27 +00:00
from base64 import b64decode
import datetime
2018-04-17 12:18:40 +00:00
from distutils.util import strtobool
2018-07-28 20:57:49 +00:00
from json import dumps
2019-05-21 11:54:13 +00:00
from six import string_types, text_type, integer_types
import strict_rfc3339
from uuid import UUID
2018-04-17 12:18:40 +00:00
def forcebool(val):
if isinstance(val, string_types):
2018-04-17 12:18:40 +00:00
val = strtobool(val)
return bool(val)
2018-07-28 20:57:49 +00:00
def dicthash(d):
return hash(dumps(d, sort_keys=True))
def format_date(value):
return datetime.datetime.strptime(value, '%Y-%m-%d').date()
2018-08-22 10:51:06 +00:00
def format_datetime(value):
timestamp = strict_rfc3339.rfc3339_to_timestamp(value)
return datetime.datetime.utcfromtimestamp(timestamp)
def format_uuid(value):
if isinstance(value, UUID):
return value
return UUID(value)
2019-03-07 21:55:27 +00:00
def format_byte(value, encoding='utf8'):
return text_type(b64decode(value), encoding)
2019-05-21 11:54:13 +00:00
def format_number(value):
if isinstance(value, integer_types + (float, )):
return value
return float(value)