diff options
Diffstat (limited to 'msgpack/__init__.py')
| -rw-r--r-- | msgpack/__init__.py | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/msgpack/__init__.py b/msgpack/__init__.py index 79107b6..a958025 100644 --- a/msgpack/__init__.py +++ b/msgpack/__init__.py @@ -4,7 +4,17 @@ from msgpack.exceptions import * from collections import namedtuple -ExtType = namedtuple('ExtType', 'code data') + +class ExtType(namedtuple('ExtType', 'code data')): + def __new__(cls, code, data): + if not isinstance(code, int): + raise TypeError("code must be int") + if not isinstance(data, bytes): + raise TypeError("data must be bytes") + if not 0 <= code <= 127: + raise ValueError("code must be 0~127") + return super(ExtType, cls).__new__(cls, code, data) + import os if os.environ.get('MSGPACK_PUREPYTHON'): @@ -26,6 +36,7 @@ def pack(o, stream, **kwargs): packer = Packer(**kwargs) stream.write(packer.pack(o)) + def packb(o, **kwargs): """ Pack object `o` and return packed bytes @@ -40,4 +51,3 @@ loads = unpackb dump = pack dumps = packb - |
