jsonpickle Package

jsonpickle Package

Python library for serializing any arbitrary object graph into JSON. It can take almost any Python object and turn the object into JSON. Additionally, it can reconstitute the object back into Python.

tic.utils.jsonpickle.encode(value, unpicklable=True, max_depth=None)[source]

Return a JSON formatted representation of value, a Python object.

The keyword argument ‘unpicklable’ defaults to True. If set to False, the output will not contain the information necessary to turn the JSON data back into Python objects.

The keyword argument ‘max_depth’ defaults to None. If set to a non-negative integer then jsonpickle will not recurse deeper than ‘max_depth’ steps into the object. Anything deeper than ‘max_depth’ is represented using a Python repr() of the object.

>>> encode('my string')
'"my string"'
>>> encode(36)
'36'
>>> encode({'foo': True})
'{"foo": true}'
>>> encode({'foo': True}, max_depth=0)
'"{\'foo\': True}"'
>>> encode({'foo': True}, max_depth=1)
'{"foo": "True"}'
tic.utils.jsonpickle.decode(string)[source]

Convert a JSON string into a Python object.

>>> str(decode('"my string"'))
'my string'
>>> decode('36')
36

compat Module

handlers Module

class tic.utils.jsonpickle.handlers.BaseHandler(base)[source]

Bases: object

Abstract base class for handlers.

flatten(obj, data)[source]

Flatten obj into a json-friendly form.

Parameters :
  • obj: object of type
restore(obj)[source]

Restores the obj to type

Parameters :
  • object: json-friendly object
class tic.utils.jsonpickle.handlers.Registry[source]

Bases: object

REGISTRY = {}
get(cls)[source]

Get the customer handler for obj (if any)

Parameters :
  • cls: class to handle
register(cls, handler)[source]

Register handler.

Parameters :
  • cls: Object class
  • handler: BaseHandler subclass
unregister(cls)[source]

Unregister hander.

Parameters :
  • cls: Object class

pickler Module

class tic.utils.jsonpickle.pickler.Pickler(unpicklable=True, max_depth=None)[source]

Bases: object

Converts a Python object to a JSON representation.

Setting unpicklable to False removes the ability to regenerate the objects into object types beyond what the standard simplejson library supports.

Setting max_depth to a negative number means there is no limit to the depth jsonpickle should recurse into an object. Setting it to zero or higher places a hard limit on how deep jsonpickle recurses into objects, dictionaries, etc.

>>> p = Pickler()
>>> p.flatten('hello world')
'hello world'
flatten(obj)[source]

Takes an object and returns a JSON-safe representation of it.

Simply returns any of the basic builtin datatypes

>>> p = Pickler()
>>> p.flatten('hello world')
'hello world'
>>> p.flatten(u'hello world')
u'hello world'
>>> p.flatten(49)
49
>>> p.flatten(350.0)
350.0
>>> p.flatten(True)
True
>>> p.flatten(False)
False
>>> r = p.flatten(None)
>>> r is None
True
>>> p.flatten(False)
False
>>> p.flatten([1, 2, 3, 4])
[1, 2, 3, 4]
>>> p.flatten((1,2,))[tags.TUPLE]
[1, 2]
>>> p.flatten({'key': 'value'})
{'key': 'value'}

tags Module

The jsonpickle.tags module provides the custom tags used for pickling and unpickling Python objects.

These tags are keys into the flattened dictionaries created by the Pickler class. The Unpickler uses these custom key names to identify dictionaries that need to be specially handled.

unpickler Module

class tic.utils.jsonpickle.unpickler.Unpickler[source]

Bases: object

restore(obj)[source]

Restores a flattened object to its original python state.

Simply returns any of the basic builtin types

>>> u = Unpickler()
>>> u.restore('hello world')
'hello world'
>>> u.restore({'key': 'value'})
{'key': 'value'}
tic.utils.jsonpickle.unpickler.has_tag(obj, tag)[source]

Helper class that tests to see if the obj is a dictionary and contains a particular key/tag.

>>> obj = {'test': 1}
>>> has_tag(obj, 'test')
True
>>> has_tag(obj, 'fail')
False
>>> has_tag(42, 'fail')
False
tic.utils.jsonpickle.unpickler.loadclass(module_and_name)[source]

Loads the module and returns the class.

tic.utils.jsonpickle.unpickler.loadrepr(reprstr)[source]

Returns an instance of the object from the object’s repr() string. It involves the dynamic specification of code.

util Module

Helper functions for pickling and unpickling. Most functions assist in determining the type of an object.

tic.utils.jsonpickle.util.is_collection(obj)[source]

Helper method to see if the object is a Python collection (list, set, or tuple). >>> is_collection([4]) True

tic.utils.jsonpickle.util.is_collection_subclass(obj)[source]

Returns True if obj is a subclass of a collection type, such as list set, tuple, etc.. obj must be a subclass and not the actual builtin, such as list, set, tuple, etc..

>>> class Temp(list): pass
>>> is_collection_subclass(Temp())
True
tic.utils.jsonpickle.util.is_date(obj)[source]

Returns True if obj is string and represents a javascript date should be in the following format “new Date(23421432311);”

tic.utils.jsonpickle.util.is_dictionary(obj)[source]

Helper method for testing if the object is a dictionary.

>>> is_dictionary({'key':'value'})
True
tic.utils.jsonpickle.util.is_dictionary_subclass(obj)[source]

Returns True if obj is a subclass of the dict type. obj must be a subclass and not the actual builtin dict.

>>> class Temp(dict): pass
>>> is_dictionary_subclass(Temp())
True
tic.utils.jsonpickle.util.is_function(obj)[source]

Returns true if passed a function

>>> is_function(lambda x: 1)
True
>>> is_function(locals)
True
>>> def method(): pass
>>> is_function(method)
True
>>> is_function(1)
False
tic.utils.jsonpickle.util.is_installed(module)[source]

Tests to see if module is available on the sys.path

>>> is_installed('sys')
True
>>> is_installed('hopefullythisisnotarealmodule')
False
tic.utils.jsonpickle.util.is_list(obj)[source]

Helper method to see if the object is a Python list.

>>> is_list([4])
True
tic.utils.jsonpickle.util.is_module(obj)[source]

Returns True if passed a module

>>> import os
>>> is_module(os)
True
tic.utils.jsonpickle.util.is_noncomplex(obj)[source]

Returns True if obj is a special (weird) class, that is more complex than primitive data types, but is not a full object. Including:

  • struct_time
tic.utils.jsonpickle.util.is_object(obj)[source]

Returns True is obj is a reference to an object instance.

>>> is_object(1)
True
>>> is_object(object())
True
>>> is_object(lambda x: 1)
False
tic.utils.jsonpickle.util.is_picklable(name, value)[source]

Return True if an object cannot be pickled

>>> import os
>>> is_picklable('os', os)
True
>>> def foo(): pass
>>> is_picklable('foo', foo)
False
tic.utils.jsonpickle.util.is_primitive(obj)[source]

Helper method to see if the object is a basic data type. Strings, integers, longs, floats, booleans, and None are considered primitive and will return True when passed into is_primitive()

>>> is_primitive(3)
True
>>> is_primitive([4,4])
False
tic.utils.jsonpickle.util.is_repr(obj)[source]

Returns True if the obj must be encoded and decoded using the repr() function. Including:

  • datetime
  • date
  • time
  • timedelta
tic.utils.jsonpickle.util.is_set(obj)[source]

Helper method to see if the object is a Python set.

>>> is_set(set())
True
tic.utils.jsonpickle.util.is_tuple(obj)[source]

Helper method to see if the object is a Python tuple.

>>> is_tuple((1,))
True
tic.utils.jsonpickle.util.is_type(obj)[source]

Returns True is obj is a reference to a type.

>>> is_type(1)
False
>>> is_type(object)
True
>>> class Klass: pass
>>> is_type(Klass)
True

Table Of Contents

Previous topic

utils Package

Next topic

simplejson Package

This Page