summaryrefslogtreecommitdiff
path: root/msgpack/fallback.py
diff options
context:
space:
mode:
authorINADA Naoki <inada-n@klab.com>2013-02-26 14:23:08 +0900
committerINADA Naoki <inada-n@klab.com>2013-02-26 14:23:08 +0900
commitb588e8cec6f5055351fb663bfddcf7a2a4aa9f9a (patch)
treeda3f0becce56dc409c076e9cf80d70e9cd94e6c1 /msgpack/fallback.py
parentf1dcf4ef55a375c3cd1cd5d6aea4ad62b68be4cd (diff)
parentd2feb1362946c87609e3753a058ddbd0958ee0bd (diff)
downloadmsgpack-python-next-marker.tar.gz
Merge branch 'master' into next-markernext-marker
Conflicts: msgpack/fallback.py
Diffstat (limited to 'msgpack/fallback.py')
-rw-r--r--msgpack/fallback.py92
1 files changed, 57 insertions, 35 deletions
diff --git a/msgpack/fallback.py b/msgpack/fallback.py
index e295b18..f3247fc 100644
--- a/msgpack/fallback.py
+++ b/msgpack/fallback.py
@@ -61,46 +61,44 @@ TYPE_RAW = 3
DEFAULT_RECURSE_LIMIT=511
-def pack(o, stream, default=None, encoding='utf-8', unicode_errors='strict'):
- """ Pack object `o` and write it to `stream` """
- packer = Packer(default=default, encoding=encoding,
- unicode_errors=unicode_errors)
+def pack(o, stream, **kwargs):
+ """
+ Pack object `o` and write it to `stream`
+
+ See :class:`Packer` for options.
+ """
+ packer = Packer(**kwargs)
stream.write(packer.pack(o))
-def packb(o, default=None, encoding='utf-8', unicode_errors='struct',
- use_single_float=False):
- """ Pack object `o` and return packed bytes """
- packer = Packer(default=default,
- encoding=encoding,
- unicode_errors=unicode_errors,
- use_single_float=use_single_float)
- return packer.pack(o)
-
-def unpack(stream, object_hook=None, list_hook=None, use_list=True,
- encoding=None, unicode_errors='strict',
- object_pairs_hook=None):
- """ Unpack an object from `stream`.
-
- Raises `ExtraData` when `stream` has extra bytes. """
- unpacker = Unpacker(stream, object_hook=object_hook, list_hook=list_hook,
- use_list=use_list,
- encoding=encoding, unicode_errors=unicode_errors,
- object_pairs_hook=object_pairs_hook)
- ret = unpacker._unpack()
- if unpacker._got_extradata():
- raise ExtraData(ret, unpacker._get_extradata())
+def packb(o, **kwargs):
+ """
+ Pack object `o` and return packed bytes
+
+ See :class:`Packer` for options.
+ """
+ return Packer(**kwargs).pack(o)
+
+def unpack(stream, **kwargs):
+ """
+ Unpack an object from `stream`.
+
+ Raises `ExtraData` when `packed` contains extra bytes.
+ See :class:`Unpacker` for options.
+ """
+ unpacker = Unpacker(stream, **kwargs)
+ ret = unpacker._fb_unpack()
+ if unpacker._fb_got_extradata():
+ raise ExtraData(ret, unpacker._fb_get_extradata())
return ret
-def unpackb(packed, object_hook=None, list_hook=None, use_list=True,
- encoding=None, unicode_errors='strict',
- object_pairs_hook=None):
- """ Unpack an object from `packed`.
+def unpackb(packed, **kwargs):
+ """
+ Unpack an object from `packed`.
- Raises `ExtraData` when `packed` contains extra bytes. """
- unpacker = Unpacker(None, object_hook=object_hook, list_hook=list_hook,
- use_list=use_list,
- encoding=encoding, unicode_errors=unicode_errors,
- object_pairs_hook=object_pairs_hook)
+ Raises `ExtraData` when `packed` contains extra bytes.
+ See :class:`Unpacker` for options.
+ """
+ unpacker = Unpacker(None, **kwargs)
unpacker.feed(packed)
try:
ret = unpacker._unpack()
@@ -447,6 +445,30 @@ class Unpacker(object):
class Packer(object):
+ """
+ MessagePack Packer
+
+ usage:
+
+ packer = Packer()
+ astream.write(packer.pack(a))
+ astream.write(packer.pack(b))
+
+ Packer's constructor has some keyword arguments:
+
+ :param callable default:
+ Convert user type to builtin type that Packer supports.
+ See also simplejson's document.
+ :param str encoding:
+ Convert unicode to bytes with this encoding. (default: 'utf-8')
+ :param str unicode_erros:
+ Error handler for encoding unicode. (default: 'strict')
+ :param bool use_single_float:
+ Use single precision float type for float. (default: False)
+ :param bool autoreset:
+ Reset buffer after each pack and return it's content as `bytes`. (default: True).
+ If set this to false, use `bytes()` to get content and `.reset()` to clear buffer.
+ """
def __init__(self, default=None, encoding='utf-8', unicode_errors='strict',
use_single_float=False, autoreset=True):
self._use_float = use_single_float