Skip to content

Commit 522c4bf

Browse files
committed
slightly change to API
1 parent 5529dfe commit 522c4bf

File tree

2 files changed

+14
-19
lines changed

2 files changed

+14
-19
lines changed

msgpack/fallback.py

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ def _fb_unpack(self, execute=EX_CONSTRUCT, write_bytes=None):
398398
if typ >= EXTENDED_TYPE:
399399
typ -= EXTENDED_TYPE
400400
data = self._fb_read(n, write_bytes)
401-
return self.handle_extended_type(typ, data)
401+
return self.read_extended_type(typ, data)
402402
assert typ == TYPE_IMMEDIATE
403403
return obj
404404

@@ -420,7 +420,7 @@ def unpack(self, write_bytes=None):
420420
self._fb_consume()
421421
return ret
422422

423-
def handle_extended_type(self, typecode, data):
423+
def read_extended_type(self, typecode, data):
424424
raise NotImplementedError("Cannot decode extended type with typecode=%d" % typecode)
425425

426426
def read_array_header(self, write_bytes=None):
@@ -533,32 +533,26 @@ def _pack(self, obj, nest_limit=DEFAULT_RECURSE_LIMIT, isinstance=isinstance):
533533
if isinstance(obj, dict):
534534
return self._fb_pack_map_pairs(len(obj), dict_iteritems(obj),
535535
nest_limit - 1)
536-
if self.pack_extended_type(obj):
537-
# it means that obj was succesfully handled by
538-
# handle_extended_type, so we are done
536+
if self.handle_unknown_type(obj):
537+
# it means that obj was succesfully packed, so we are done
539538
return
540539
if self._default is not None:
541540
return self._pack(self._default(obj), nest_limit - 1)
542541
raise TypeError("Cannot serialize %r" % obj)
543542

544-
def pack_extended_type(self, obj):
545-
res = self.handle_extended_type(obj)
546-
if res is None:
547-
return False
548-
fmt, typecode, data = res
543+
def handle_unknown_type(self, obj):
544+
# by default we don't support any extended type. This can be
545+
# overridden by subclasses
546+
return None
547+
548+
def pack_extended_type(self, fmt, typecode, data):
549549
# for now we support only this. We should add support for the other
550550
# fixext/ext formats
551551
assert fmt == "ext 32"
552552
assert 0 <= typecode <= 127
553553
N = len(data)
554554
self._buffer.write(struct.pack('>BIB', 0xc9, N, typecode))
555555
self._buffer.write(data)
556-
return True
557-
558-
def handle_extended_type(self, obj):
559-
# by default we don't support any extended type. This can be
560-
# overridden by subclasses
561-
return None
562556

563557
def pack(self, obj):
564558
self._pack(obj)

test/test_extension.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,16 @@
33

44
def test_extension_type():
55
class MyPacker(msgpack.Packer):
6-
def handle_extended_type(self, obj):
6+
def handle_unknown_type(self, obj):
77
if isinstance(obj, array.array):
88
fmt = "ext 32"
99
typecode = 123 # application specific typecode
1010
data = obj.tostring()
11-
return fmt, typecode, data
11+
self.pack_extended_type(fmt, typecode, data)
12+
return True
1213

1314
class MyUnpacker(msgpack.Unpacker):
14-
def handle_extended_type(self, typecode, data):
15+
def read_extended_type(self, typecode, data):
1516
assert typecode == 123
1617
obj = array.array('d')
1718
obj.fromstring(data)

0 commit comments

Comments
 (0)