summaryrefslogtreecommitdiff
path: root/msgpack/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'msgpack/__init__.py')
-rw-r--r--msgpack/__init__.py14
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
-