From 541d22d00434863ce1e3607950c199edbd2b850a Mon Sep 17 00:00:00 2001 From: Alexei Romanoff Date: Fri, 12 Oct 2012 13:32:29 +0300 Subject: [PATCH 1/2] Added example of using default/object_hook into README --- README.rst | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/README.rst b/README.rst index 1da6ece..ee896ce 100644 --- a/README.rst +++ b/README.rst @@ -61,6 +61,36 @@ stream. for unpacked in unpacker: print unpacked +packing/unpacking of custom data type +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Also possible to pack/unpack user's data types. Here is an example for +``datetime.datetime``. + +:: + import datetime + + import msgpack + + useful_dict = { + "id": 1, + "created": datetime.datetime.now(), + } + + def decode_datetime(obj): + if b'__datetime__' in obj: + obj = datetime.datetime.strptime(obj["as_str"], "%Y%m%dT%H:%M:%S.%f") + return obj + + def encode_datetime(obj): + if isinstance(obj, datetime.datetime): + return {'__datetime__': True, 'as_str': obj.strftime("%Y%m%dT%H:%M:%S.%f")} + return obj + + + packed_dict = msgpack.packb(useful_dict, default=encode_datetime) + this_dict_again = msgpack.unpackb(packed_dict, object_hook=decode_datetime) + INSTALL --------- From fa1c4745ec4c8cf8bad5f35be8ddb7fd9e28532e Mon Sep 17 00:00:00 2001 From: Alexei Romanoff Date: Fri, 12 Oct 2012 15:25:14 +0300 Subject: [PATCH 2/2] README formatting has been improved --- README.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/README.rst b/README.rst index ee896ce..834c86c 100644 --- a/README.rst +++ b/README.rst @@ -68,6 +68,7 @@ Also possible to pack/unpack user's data types. Here is an example for ``datetime.datetime``. :: + import datetime import msgpack