mirror of
https://github.com/msgpack/msgpack-python.git
synced 2025-10-20 04:13:16 +00:00
25 lines
747 B
Python
25 lines
747 B
Python
![]() |
import array
|
||
|
import msgpack
|
||
|
|
||
|
def test_extension_type():
|
||
|
class MyPacker(msgpack.Packer):
|
||
|
def handle_extended_type(self, obj):
|
||
|
if isinstance(obj, array.array):
|
||
|
fmt = "ext 32"
|
||
|
typecode = 123 # application specific typecode
|
||
|
data = obj.tostring()
|
||
|
return fmt, typecode, data
|
||
|
|
||
|
class MyUnpacker(msgpack.Unpacker):
|
||
|
def handle_extended_type(self, typecode, data):
|
||
|
assert typecode == 123
|
||
|
obj = array.array('d')
|
||
|
obj.fromstring(data)
|
||
|
return obj
|
||
|
|
||
|
obj = [42, 'hello', array.array('d', [1.1, 2.2, 3.3])]
|
||
|
s = msgpack.packb(obj, MyPacker)
|
||
|
obj2 = msgpack.unpackb(s, MyUnpacker)
|
||
|
assert obj == obj2
|
||
|
|