Files
deb-python-toml/tests/decoding_test.py
Uiri b955a3c3f5 PEP8 and Flake8 style compliance
Change all of the explicit backslash line continuations into
implicit line continuations. This isn't strictly required by flake8

Clean up all the issues with overly long lines introduced since my
last cleanup.

Fix some whitespace issues.

Ignore py2-specific code causing an issue for the py3 lint in
tests/decoding_test.py
2017-05-26 22:26:32 -04:00

57 lines
1.5 KiB
Python
Executable File

"""Decodes toml and outputs it as tagged JSON"""
import datetime
import json
import sys
import toml
if sys.version_info < (3,):
_range = xrange # noqa: F821
iteritems = dict.iteritems
else:
unicode = str
_range = range
basestring = str
unichr = chr
iteritems = dict.items
long = int
def tag(value):
if isinstance(value, dict):
d = {}
for k, v in iteritems(value):
d[k] = tag(v)
return d
elif isinstance(value, list):
a = []
for v in value:
a.append(tag(v))
try:
a[0]["value"]
except KeyError:
return a
except IndexError:
pass
return {'type': 'array', 'value': a}
elif isinstance(value, basestring):
return {'type': 'string', 'value': value}
elif isinstance(value, bool):
return {'type': 'bool', 'value': str(value).lower()}
elif isinstance(value, int):
return {'type': 'integer', 'value': str(value)}
elif isinstance(value, long):
return {'type': 'integer', 'value': str(value)}
elif isinstance(value, float):
return {'type': 'float', 'value': repr(value)}
elif isinstance(value, datetime.datetime):
sdate = value.strftime('%Y-%m-%dT%H:%M:%SZ')
return {'type': 'datetime', 'value': sdate}
assert False, 'Unknown type: %s' % type(value)
if __name__ == '__main__':
tdata = toml.loads(sys.stdin.read())
tagged = tag(tdata)
print(json.dumps(tagged))