Source code for tic.utils.jsonpickle.handlers

[docs]class BaseHandler(object): """ Abstract base class for handlers. """ def __init__(self, base): """ Initialize a new handler to handle `type`. :Parameters: - `base`: reference to pickler/unpickler """ self._base = base
[docs] def flatten(self, obj, data): """ Flatten `obj` into a json-friendly form. :Parameters: - `obj`: object of `type` """ raise NotImplementedError("Abstract method.")
[docs] def restore(self, obj): """ Restores the `obj` to `type` :Parameters: - `object`: json-friendly object """ raise NotImplementedError("Abstract method.")
[docs]class Registry(object): REGISTRY = {}
[docs] def register(self, cls, handler): """ Register handler. :Parameters: - `cls`: Object class - `handler`: `BaseHandler` subclass """ self.REGISTRY[cls] = handler return handler
[docs] def unregister(self, cls): """ Unregister hander. :Parameters: - `cls`: Object class """ if cls in self.REGISTRY: del self.REGISTRY[cls]
[docs] def get(self, cls): """ Get the customer handler for `obj` (if any) :Parameters: - `cls`: class to handle """ return self.REGISTRY.get(cls, None)
registry = Registry()