import datetime from .utils import format_rfc3339 try: _string_types = (str, unicode) _int_types = (int, long) except NameError: _string_types = str _int_types = int def translate_to_test(v): if isinstance(v, dict): return { k: translate_to_test(v) for k, v in v.items() } if isinstance(v, list): a = [translate_to_test(x) for x in v] if v and isinstance(v[0], dict): return a else: return {'type': 'array', 'value': a} if isinstance(v, datetime.datetime): return {'type': 'datetime', 'value': format_rfc3339(v)} if isinstance(v, bool): return {'type': 'bool', 'value': 'true' if v else 'false'} if isinstance(v, _int_types): return {'type': 'integer', 'value': str(v)} if isinstance(v, float): return {'type': 'float', 'value': '{:.17}'.format(v)} if isinstance(v, _string_types): return {'type': 'string', 'value': v} raise RuntimeError('unexpected value: {!r}'.format(v))