Ejemplo n.º 1
0
    def test_ext_exceptions(self):
        with self.assertRaises(TypeError):
            _ = umsgpack.Ext(-1, b"")

        with self.assertRaises(TypeError):
            _ = umsgpack.Ext(128, b"")

        with self.assertRaises(TypeError):
            _ = umsgpack.Ext(0, u"unicode string")
Ejemplo n.º 2
0
 def test_ext_exceptions(self):
     try:
         _ = umsgpack.Ext(-1, b"")
     except Exception as e:
         self.assertTrue(isinstance(e, TypeError))
     try:
         _ = umsgpack.Ext(128, b"")
     except Exception as e:
         self.assertTrue(isinstance(e, TypeError))
     try:
         _ = umsgpack.Ext(0, u"unicode string")
     except Exception as e:
         self.assertTrue(isinstance(e, TypeError))
Ejemplo n.º 3
0
    def test_ext_exceptions(self):
        # Test invalid Ext type type
        with self.assertRaises(TypeError):
            _ = umsgpack.Ext(5.0, b"")

        # Test invalid data type
        with self.assertRaises(TypeError):
            _ = umsgpack.Ext(0, u"unicode string")

        # Test out of range Ext type value
        with self.assertRaises(ValueError):
            _ = umsgpack.Ext(-129, b"data")
        with self.assertRaises(ValueError):
            _ = umsgpack.Ext(128, b"data")
Ejemplo n.º 4
0
def pack_numpy_array(x):
    if x.dtype == np.float64:
        x = x.astype(np.float32)
    typename, extcode = threejs_type(x.dtype)
    return {
        u"itemSize": item_size(x),
        u"type": typename,
        u"array": umsgpack.Ext(extcode, x.tobytes('F')),
        u"normalized": False
    }
Ejemplo n.º 5
0
    def _ext_encoder(self, obj, obj_encoded, ext_handlers):
        """ Classes metadata default encoder. """
        encoded = {}

        # encode module and class name if no id
        encoded[self.MODULE_NAME] = obj.__class__.__module__
        encoded[self.CLASS_NAME] = obj.__class__.__qualname__
        encoded[self.CLASS_DATA] = obj_encoded

        return umsgpack.Ext(0,
                            umsgpack.packb(encoded, ext_handlers=ext_handlers))
Ejemplo n.º 6
0
 def from_stream(f):
     if isinstance(f, BytesIO):
         arr = np.frombuffer(f.read(), dtype=np.uint8)
     elif isinstance(f, StringIO):
         arr = np.frombuffer(bytes(f.read(), "utf-8"), dtype=np.uint8)
     else:
         raise ValueError(
             'Stream must be instance of StringIO or BytesIO, not {}'.
             format(type(f)))
     _, extcode = threejs_type(np.uint8)
     encoded = umsgpack.Ext(extcode, arr.tobytes())
     return MeshGeometry(encoded, u"stl")
Ejemplo n.º 7
0
    def test_ext_handlers_subclass(self):
        class Rectangle:
            def __init__(self, length, width):
                self.length = length
                self.width = width

            def __eq__(self, other):
                return self.length == other.length and self.width == other.width

        class Square(Rectangle):
            def __init__(self, width):
                Rectangle.__init__(self, width, width)

        # Test pack (packs base class)
        packed = umsgpack.packb(Square(5), ext_handlers={
            Rectangle: lambda obj: umsgpack.Ext(0x10, umsgpack.packb([obj.length, obj.width])),
        })
        self.assertEqual(packed, b"\xc7\x03\x10\x92\x05\x05")

        # Test unpack (unpacks base class)
        unpacked = umsgpack.unpackb(packed, ext_handlers={
            0x10: lambda ext: Rectangle(*umsgpack.unpackb(ext.data)),
        })
        self.assertEqual(unpacked, Rectangle(5, 5))
     b"\xd9\x28\xd0\x9f\xd0\xbe\x20\xd0\xbe\xd0\xb6\xd0\xb8\xd0\xb2\xd0\xbb\xd1\x91\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xbc\x20\xd0\xb1\xd0\xb5\xd1\x80\xd0\xb5\xd0\xb3\xd0\xb0\xd0\xbc"
 ],
 # 8-bit Binary
 ["8-bit binary", b"\x80" * 1, b"\xc4\x01" + b"\x80" * 1],
 ["8-bit binary", b"\x80" * 32, b"\xc4\x20" + b"\x80" * 32],
 ["8-bit binary", b"\x80" * 255, b"\xc4\xff" + b"\x80" * 255],
 # 16-bit Binary
 ["16-bit binary", b"\x80" * 256, b"\xc5\x01\x00" + b"\x80" * 256],
 # 32-bit Binary
 [
     "32-bit binary", b"\x80" * 65536,
     b"\xc6\x00\x01\x00\x00" + b"\x80" * 65536
 ],
 # Fixext 1
 ["fixext 1",
  umsgpack.Ext(0x05, b"\x80" * 1), b"\xd4\x05" + b"\x80" * 1],
 # Fixext 2
 ["fixext 2",
  umsgpack.Ext(0x05, b"\x80" * 2), b"\xd5\x05" + b"\x80" * 2],
 # Fixext 4
 ["fixext 4",
  umsgpack.Ext(0x05, b"\x80" * 4), b"\xd6\x05" + b"\x80" * 4],
 # Fixext 8
 ["fixext 8",
  umsgpack.Ext(0x05, b"\x80" * 8), b"\xd7\x05" + b"\x80" * 8],
 # Fixext 16
 [
     "fixext 16",
     umsgpack.Ext(0x05, b"\x80" * 16), b"\xd8\x05" + b"\x80" * 16
 ],
 # 8-bit Ext
Ejemplo n.º 9
0
 # 32-bit String
 ["32-bit string", u"b" * 65536, b"\xdb\x00\x01\x00\x00" + b"b" * 65536],
 # Wide character String
 ["wide char string", u"Allagbé", b"\xa8Allagb\xc3\xa9"],
 ["wide char string", u"По оживлённым берегам",
     b"\xd9\x28\xd0\x9f\xd0\xbe\x20\xd0\xbe\xd0\xb6\xd0\xb8\xd0\xb2\xd0\xbb\xd1\x91\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xbc\x20\xd0\xb1\xd0\xb5\xd1\x80\xd0\xb5\xd0\xb3\xd0\xb0\xd0\xbc"],
 # 8-bit Binary
 ["8-bit binary", b"\x80" * 1, b"\xc4\x01" + b"\x80" * 1],
 ["8-bit binary", b"\x80" * 32, b"\xc4\x20" + b"\x80" * 32],
 ["8-bit binary", b"\x80" * 255, b"\xc4\xff" + b"\x80" * 255],
 # 16-bit Binary
 ["16-bit binary", b"\x80" * 256, b"\xc5\x01\x00" + b"\x80" * 256],
 # 32-bit Binary
 ["32-bit binary", b"\x80" * 65536, b"\xc6\x00\x01\x00\x00" + b"\x80" * 65536],
 # Fixext 1
 ["fixext 1", umsgpack.Ext(0x05, b"\x80" * 1), b"\xd4\x05" + b"\x80" * 1],
 # Fixext 2
 ["fixext 2", umsgpack.Ext(0x05, b"\x80" * 2), b"\xd5\x05" + b"\x80" * 2],
 # Fixext 4
 ["fixext 4", umsgpack.Ext(0x05, b"\x80" * 4), b"\xd6\x05" + b"\x80" * 4],
 # Fixext 8
 ["fixext 8", umsgpack.Ext(0x05, b"\x80" * 8), b"\xd7\x05" + b"\x80" * 8],
 # Fixext 16
 ["fixext 16", umsgpack.Ext(0x05, b"\x80" * 16),
     b"\xd8\x05" + b"\x80" * 16],
 # 8-bit Ext
 ["8-bit ext", umsgpack.Ext(0x05, b"\x80" * 255),
     b"\xc7\xff\x05" + b"\x80" * 255],
 # 16-bit Ext
 ["16-bit ext", umsgpack.Ext(0x05, b"\x80" * 256),
     b"\xc8\x01\x00\x05" + b"\x80" * 256],
Ejemplo n.º 10
0
 def from_file(fname):
     with open(fname, "rb") as f:
         arr = np.frombuffer(f.read(), dtype=np.uint8)
         _, extcode = threejs_type(np.uint8)
         encoded = umsgpack.Ext(extcode, arr.tobytes())
         return MeshGeometry(encoded, u"stl")
Ejemplo n.º 11
0
 def from_datetime(self, dt):
     return umsgpack.Ext(0x20, dt.strftime(self.datetime_fmt).encode())
Ejemplo n.º 12
0
 def from_date(self, date):
     return umsgpack.Ext(0x10, date.isoformat().encode())
Ejemplo n.º 13
0
     b"\xd9\x28\xd0\x9f\xd0\xbe\x20\xd0\xbe\xd0\xb6\xd0\xb8\xd0\xb2\xd0\xbb\xd1\x91\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xbc\x20\xd0\xb1\xd0\xb5\xd1\x80\xd0\xb5\xd0\xb3\xd0\xb0\xd0\xbc"
 ],
 # 8-bit Binary
 ["8-bit binary", b"\x80" * 1, b"\xc4\x01" + b"\x80" * 1],
 ["8-bit binary", b"\x80" * 32, b"\xc4\x20" + b"\x80" * 32],
 ["8-bit binary", b"\x80" * 255, b"\xc4\xff" + b"\x80" * 255],
 # 16-bit Binary
 ["16-bit binary", b"\x80" * 256, b"\xc5\x01\x00" + b"\x80" * 256],
 # 32-bit Binary
 [
     "32-bit binary", b"\x80" * 65536,
     b"\xc6\x00\x01\x00\x00" + b"\x80" * 65536
 ],
 # Fixext 1
 ["fixext 1",
  umsgpack.Ext(0x05, b"\x80" * 1), b"\xd4\x05" + b"\x80" * 1],
 # Fixext 2
 ["fixext 2",
  umsgpack.Ext(0x05, b"\x80" * 2), b"\xd5\x05" + b"\x80" * 2],
 # Fixext 4
 ["fixext 4",
  umsgpack.Ext(0x05, b"\x80" * 4), b"\xd6\x05" + b"\x80" * 4],
 # Fixext 8
 ["fixext 8",
  umsgpack.Ext(0x05, b"\x80" * 8), b"\xd7\x05" + b"\x80" * 8],
 # Fixext 16
 [
     "fixext 16",
     umsgpack.Ext(0x05, b"\x80" * 16), b"\xd8\x05" + b"\x80" * 16
 ],
 # 8-bit Ext
Ejemplo n.º 14
0
 [ "16-bit string", u"c"*65535, b"\xda\xff\xff" + b"c"*65535 ],
 # 32-bit String
 [ "32-bit string", u"b"*65536, b"\xdb\x00\x01\x00\x00" + b"b"*65536 ],
 # Wide character String
 [ "wide char string", u"Allagbé", b"\xa8Allagb\xc3\xa9" ],
 [ "wide char string", u"По оживлённым берегам", b"\xd9\x28\xd0\x9f\xd0\xbe\x20\xd0\xbe\xd0\xb6\xd0\xb8\xd0\xb2\xd0\xbb\xd1\x91\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xbc\x20\xd0\xb1\xd0\xb5\xd1\x80\xd0\xb5\xd0\xb3\xd0\xb0\xd0\xbc" ],
 # 8-bit Binary
 [ "8-bit binary", b"\x80"*1, b"\xc4\x01" + b"\x80"*1 ],
 [ "8-bit binary", b"\x80"*32, b"\xc4\x20" + b"\x80"*32 ],
 [ "8-bit binary", b"\x80"*255, b"\xc4\xff" + b"\x80"*255 ],
 # 16-bit Binary
 [ "16-bit binary", b"\x80"*256, b"\xc5\x01\x00" + b"\x80"*256 ],
 # 32-bit Binary
 [ "32-bit binary", b"\x80"*65536, b"\xc6\x00\x01\x00\x00" + b"\x80"*65536 ],
 # Fixext 1
 [ "fixext 1", umsgpack.Ext(0x05, b"\x80"*1), b"\xd4\x05" + b"\x80"*1 ],
 # Fixext 2
 [ "fixext 2", umsgpack.Ext(0x05, b"\x80"*2), b"\xd5\x05" + b"\x80"*2 ],
 # Fixext 4
 [ "fixext 4", umsgpack.Ext(0x05, b"\x80"*4), b"\xd6\x05" + b"\x80"*4 ],
 # Fixext 8
 [ "fixext 8", umsgpack.Ext(0x05, b"\x80"*8), b"\xd7\x05" + b"\x80"*8 ],
 # Fixext 16
 [ "fixext 16", umsgpack.Ext(0x05, b"\x80"*16), b"\xd8\x05" + b"\x80"*16 ],
 # 8-bit Ext
 [ "8-bit ext", umsgpack.Ext(0x05, b"\x80"*255), b"\xc7\xff\x05" + b"\x80"*255 ],
 # 16-bit Ext
 [ "16-bit ext", umsgpack.Ext(0x05, b"\x80"*256), b"\xc8\x01\x00\x05" + b"\x80"*256 ],
 # 32-bit Ext
 [ "32-bit ext", umsgpack.Ext(0x05, b"\x80"*65536), b"\xc9\x00\x01\x00\x00\x05" + b"\x80"*65536 ],
 # Empty Array
Ejemplo n.º 15
0
     b"\xd9\x28\xd0\x9f\xd0\xbe\x20\xd0\xbe\xd0\xb6\xd0\xb8\xd0\xb2\xd0\xbb\xd1\x91\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xbc\x20\xd0\xb1\xd0\xb5\xd1\x80\xd0\xb5\xd0\xb3\xd0\xb0\xd0\xbc"
 ],
 # 8-bit Binary
 ["8-bit binary", b"\x80" * 1, b"\xc4\x01" + b"\x80" * 1],
 ["8-bit binary", b"\x80" * 32, b"\xc4\x20" + b"\x80" * 32],
 ["8-bit binary", b"\x80" * 255, b"\xc4\xff" + b"\x80" * 255],
 # 16-bit Binary
 ["16-bit binary", b"\x80" * 256, b"\xc5\x01\x00" + b"\x80" * 256],
 # 32-bit Binary
 [
     "32-bit binary", b"\x80" * 65536,
     b"\xc6\x00\x01\x00\x00" + b"\x80" * 65536
 ],
 # Fixext 1
 ["fixext 1",
  umsgpack.Ext(0x05, b"\x80" * 1), b"\xd4\x05" + b"\x80" * 1],
 # Fixext 2
 ["fixext 2",
  umsgpack.Ext(0x05, b"\x80" * 2), b"\xd5\x05" + b"\x80" * 2],
 # Fixext 4
 ["fixext 4",
  umsgpack.Ext(0x05, b"\x80" * 4), b"\xd6\x05" + b"\x80" * 4],
 # Fixext 8
 ["fixext 8",
  umsgpack.Ext(0x05, b"\x80" * 8), b"\xd7\x05" + b"\x80" * 8],
 # Fixext 16
 [
     "fixext 16",
     umsgpack.Ext(0x05, b"\x80" * 16), b"\xd8\x05" + b"\x80" * 16
 ],
 # 8-bit Ext