def pretty(obj): """return an object in a pretty form >>> obj = dict(name='Joe', age=25) >>> pretty(obj) '{\\n "age": 25,\\n "name": "Joe"\\n}' """ try: return json.dumps(obj, indent=2, sort_keys=True) except TypeError: if isinstance(obj, dict): return '{\n%s\n}' % '\n'.join([ ' {!r} {}: {!r}'.format(key, '.' * (15 - len(key)), value) for key, value in sorted(obj.items()) ]) elif isinstance(obj, set): return '{\n%s\n}' % ',\n'.join([ ' {!r}'.format(key) for key in sorted(obj) ]) elif hasattr(obj, '__dict__'): return '<%s \n%s\n>' % (obj.__class__.__name__, '\n'.join([ ' {} {}: {!r}'.format(key, '.' * (15 - len(key)), value) for key, value in sorted(obj.__dict__.items()) ])) else: return repr(obj)
def dictify(item): """prepare an object for transmission by marshalling it's members Marshals only members that json can handle. """ # pylint: disable=W0703 result = {} for k, v in item.__dict__.items(): try: json.dumps(v) except Exception: pass else: result[k] = v return result
def __str__(self): code = join(system.lib_path, '..', 'setup', 'www', 'static', 'dz', 'd3', 'assets', 'force.js') links = [dict(source=source, target=target) for source, target in self.edges] system.js |= ['\nvar links = %s;\n' % dumps(links) + load(code)] system.libs |= d3_libs system.styles |= self.styles return '<div id="visual" class="iefallback"></div>'
def put(self, message): """put a message in the topic""" return self.messages.put( Message( topic=self.name, timestamp=now(), node=platform.node(), body=json.dumps(message), ))
def test_obj_with_datetime_without_milliseconds(self): """test date encoding decoding when part of a list like object""" d = [ datetime.datetime(2020, 1, 1, 2, 2, 2), dict(status='this is a test') ] dj = dumps(d) d2 = loads(dj) self.assertListEqual(d, d2)
def __str__(self): code = join(system.lib_path, '..', 'setup', 'www', 'static', 'dz', 'd3', 'assets', 'force.js') links = [ dict(source=source, target=target) for source, target in self.edges ] system.js |= ['\nvar links = %s;\n' % dumps(links) + load(code)] system.libs |= d3_libs system.styles |= self.styles return '<div id="visual" class="iefallback"></div>'
def __init__( self, content, indent=4, sort_keys=True, ensure_ascii=False, **kwargs ): content = dumps(content, indent, sort_keys, ensure_ascii, **kwargs) TextResponse.__init__(self, content) self.headers['Content-type'] = 'application/json;charset=utf-8'
def dictify(item): """prepare an object for transmission by marshalling it's members Marshals only members that json can handle. >>> class Thing(object): pass >>> pp(dictify(Bunch(name='Terry', age=21, funky_type=Thing()))) { "age": 21, "name": "Terry" } """ # pylint: disable=W0703 result = {} for k, v in item.__dict__.items(): try: json.dumps(v) except Exception: pass else: result[k] = v return result
def test_decimal(self): d = [Decimal('22.32'), Decimal(22.32)] dj = dumps(d) d2 = loads(dj) self.assertEqual(d, d2)
def test_float(self): d = [22.32, u"22.32"] dj = dumps(d) d2 = loads(dj) self.assertEqual(d, d2)
def test_date(self): d = datetime.date.today() dj = dumps(d) d2 = loads(dj) self.assertEqual(d,d2)
def test_string(self): t = 'This is a test' tj = dumps(t) t2 = loads(tj) self.assertEqual(t,t2)
def test_bytes(self): d = [b'123', Decimal(22.32)] dj = dumps(d) d2 = loads(dj) self.assertEqual(d, d2)
def test_decimal(self): d = [Decimal('22.32'), Decimal(22.32)] dj = dumps(d) d2 = loads(dj) self.assertEqual(d, d2)
def test_float(self): d = [22.32, '22.32'] dj = dumps(d) d2 = loads(dj) self.assertEqual(d, d2)
def test_date(self): d = datetime.date.today() dj = dumps(d) d2 = loads(dj) self.assertEqual(d, d2)
def test_string(self): t = 'This is a test' tj = dumps(t) t2 = loads(tj) self.assertEqual(t, t2)
def test_obj(self): """test object literal decode - pass/fallthrough of object_hook of loads""" d = [Decimal('22.32'), dict(status='this is a test')] dj = dumps(d) d2 = loads(dj) self.assertListEqual(d, d2)