summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.rst30
1 files changed, 30 insertions, 0 deletions
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
---------