Merge "Add docstring(s) to handler registry(s)"
This commit is contained in:
commit
2df5edaa9b
@ -40,6 +40,17 @@ UnpackException = msgpack.UnpackException
|
|||||||
|
|
||||||
|
|
||||||
class HandlerRegistry(object):
|
class HandlerRegistry(object):
|
||||||
|
"""Registry of *type* specific msgpack handlers extensions.
|
||||||
|
|
||||||
|
See: https://github.com/msgpack/msgpack/blob/master/spec.md#formats-ext
|
||||||
|
|
||||||
|
Do note that due to the current limitations in the msgpack python
|
||||||
|
library we can not *currently* dump/load a tuple without converting
|
||||||
|
it to a list.
|
||||||
|
|
||||||
|
This may be fixed in: https://github.com/msgpack/msgpack-python/pull/100
|
||||||
|
"""
|
||||||
|
|
||||||
# Applications can assign 0 to 127 to store
|
# Applications can assign 0 to 127 to store
|
||||||
# application-specific type information...
|
# application-specific type information...
|
||||||
min_value = 0
|
min_value = 0
|
||||||
@ -53,6 +64,7 @@ class HandlerRegistry(object):
|
|||||||
return six.itervalues(self._handlers)
|
return six.itervalues(self._handlers)
|
||||||
|
|
||||||
def register(self, handler):
|
def register(self, handler):
|
||||||
|
"""Register a extension handler to handle its associated type."""
|
||||||
if self.frozen:
|
if self.frozen:
|
||||||
raise ValueError("Frozen handler registry can't be modified")
|
raise ValueError("Frozen handler registry can't be modified")
|
||||||
ident = handler.identity
|
ident = handler.identity
|
||||||
@ -73,9 +85,11 @@ class HandlerRegistry(object):
|
|||||||
return len(self._handlers)
|
return len(self._handlers)
|
||||||
|
|
||||||
def get(self, identity):
|
def get(self, identity):
|
||||||
|
"""Get the handle for the given numeric identity (or none)."""
|
||||||
return self._handlers.get(identity, None)
|
return self._handlers.get(identity, None)
|
||||||
|
|
||||||
def match(self, obj):
|
def match(self, obj):
|
||||||
|
"""Match the registries handlers to the given object (or none)."""
|
||||||
for handler in six.itervalues(self._handlers):
|
for handler in six.itervalues(self._handlers):
|
||||||
if isinstance(obj, handler.handles):
|
if isinstance(obj, handler.handles):
|
||||||
return handler
|
return handler
|
||||||
@ -268,8 +282,20 @@ def _create_default_registry():
|
|||||||
return registry
|
return registry
|
||||||
|
|
||||||
|
|
||||||
#: Default, read-only/frozen registry that will be used when none is provided.
|
|
||||||
default_registry = _create_default_registry()
|
default_registry = _create_default_registry()
|
||||||
|
"""
|
||||||
|
Default, read-only/frozen registry that will be used when none is provided.
|
||||||
|
|
||||||
|
This registry has msgpack extensions for the following:
|
||||||
|
|
||||||
|
* ``DateTime`` objects.
|
||||||
|
* ``Date`` objects.
|
||||||
|
* ``UUID`` objects.
|
||||||
|
* ``itertools.count`` objects/iterators.
|
||||||
|
* ``set`` and ``frozenset`` container(s).
|
||||||
|
* ``netaddr.IPAddress`` objects (only if ``netaddr`` is importable).
|
||||||
|
* ``xmlrpclib.DateTime`` datetime objects.
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
def load(fp, registry=None):
|
def load(fp, registry=None):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user