def report(self): path = tempfile.gettempdir() benchmarks = [(c, self.expression_handler(c)) for c in self.complexity] self.table_line("dumping results in %s" % path) self.table_line() # running export to do all lazy loadings binary_deserialize(export(1, target_format="wxf")) self.table_line("* Binary deserialize") self.table_line() self.table_line( "Memory", *(force_text(c).ljust(self.col_size) for c in self.complexity)) self.table_divider(len(self.complexity) + 1) for label, opts in (("wxf", dict()), ("wxf zip", dict(compress=True))): self.table_line( label, *(self.formatted_time( binary_deserialize, export(expr, target_format="wxf", **opts)) for complexity, expr in benchmarks)) self.table_line() self.table_line("* Export") self.table_line() for title, stream_generator in self.stream_generators(path): self.table_line( title, *(force_text(c).ljust(self.col_size) for c in self.complexity)) self.table_divider(len(self.complexity) + 1) for key in ("expr", "array"): for label, export_format, opts in ( ("wl", "wl", dict()), ("wxf", "wxf", dict()), ("wxf zip", "wxf", dict(compress=True)), ): if key == "expr" or (key == "array" and not label == "wl"): self.table_line( key == "expr" and label or "%s %s" % (label, key), *(self.formatted_time(export, expr[key], stream=stream_generator( complexity, export_format), target_format=export_format, **opts) for complexity, expr in benchmarks)) self.table_line()
def test_bad_greedy_consumer(self): with self.assertRaises(WolframParserException) as e: binary_deserialize(export([1, 2, 3], target_format="wxf"), consumer=self.BadGreedyConsumer()) self.assertEqual( e.msg, "Input data does not represent a valid expression in WXF format. Expecting more input data.", )
def test_bad_incomplete_consumer(self): with self.assertRaises(WolframParserException) as e: binary_deserialize(export([1, 2, 3], target_format="wxf"), consumer=self.BadIncompleteConsumer()) self.assertEqual( e.msg, "Input data does not represent a valid expression in WXF format. Some expressions are imcomplete.", )
def test_int32_numeric_array(self): # NumericArray from ConstantArray[2^16, {2, 2}] wxf = b"8:\xc2\x02\x02\x02\x02\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00" a = binary_deserialize(wxf, consumer=WXFConsumerNumpy()) self.assertEqual(a.shape, (2, 2)) self.assertEqual(a.dtype, "int32") self.assertEqual(a.tolist(), [[2 ** 16, 2 ** 16], [2 ** 16, 2 ** 16]])
def test_int64_numeric_array(self): # NumericArray from ConstantArray[2^40, {2, 1}] wxf = b"8:\xc2\x03\x02\x02\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00" a = binary_deserialize(wxf, consumer=WXFConsumerNumpy()) self.assertEqual(a.shape, (2, 1)) self.assertEqual(a.dtype, "int64") self.assertEqual(a.tolist(), [[2 ** 40], [2 ** 40]])
def test_float_numeric_array(self): # NumericArray["Real32", ConstantArray[1., {2, 1}]] wxf = b'8:\xc2"\x02\x02\x01\x00\x00\x80?\x00\x00\x80?' a = binary_deserialize(wxf, consumer=WXFConsumer()) self.assertEqual(len(a), 2) self.assertEqual(len(a[0]), 1) self.assertEqual(a, [[1.0], [1.0]])
def test_double_array(self): # ConstantArray[1., {2, 1}] wxf = b'8:\xc1#\x02\x02\x01\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?' a = binary_deserialize(wxf, consumer=WXFConsumerNumpy()) self.assertEqual(a.shape, (2, 1)) self.assertEqual(a.dtype, 'float64') self.assertAlmostEqual(a.tolist(), [[1.], [1.]])
def test_int32_array(self): # ConstantArray[2^16, {2, 2}] wxf = b'8:\xc1\x02\x02\x02\x02\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00' a = binary_deserialize(wxf) self.assertEqual(len(a), 2) self.assertEqual(len(a[0]), 2) self.assertEqual(a, [[2**16, 2**16], [2**16, 2**16]])
def test_int64_numeric_array(self): # NumericArray from ConstantArray[2^40, {2, 1}] wxf = b"8:\xc2\x03\x02\x02\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00" a = binary_deserialize(wxf, consumer=WXFConsumer()) self.assertEqual(len(a), 2) self.assertEqual(len(a[0]), 1) self.assertEqual(a, [[2 ** 40], [2 ** 40]])
def test_bigreal_precision_negexponent(self): wxf = b"8:RC4.590261537982443550699999999999999999999281`19.66183743091127*^-16" res = binary_deserialize(wxf, consumer=WXFConsumer()) self.assertEqual( res, decimal.Decimal( "4.590261537982443550699999999999999999999281E-16"))
def test_double_numeric_array(self): # NumericArray["Real64", ConstantArray[1., {2, 1}]] wxf = b"8:\xc2#\x02\x02\x01\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?" a = binary_deserialize(wxf, consumer=WXFConsumerNumpy()) self.assertEqual(a.shape, (2, 1)) self.assertEqual(a.dtype, "float64") self.assertAlmostEqual(a.tolist(), [[1.0], [1.0]])
def test_uint32_numeric_array(self): # NumericArray from ConstantArray[2^32-1, {2, 1}] wxf = b'8:\xc2\x12\x02\x02\x01\xff\xff\xff\xff\xff\xff\xff\xff' a = binary_deserialize(wxf) self.assertEqual(len(a), 2) self.assertEqual(len(a[0]), 1) self.assertEqual(a, [[-1 + 2**32], [-1 + 2**32]])
def test_int8_numeric_array(self): # NumericArray from ConstantArray[1, {2, 2}] wxf = b'8:\xc2\x00\x02\x02\x02\x01\x01\x01\x01' a = binary_deserialize(wxf, consumer=WXFConsumerNumpy()) self.assertEqual(a.shape, (2, 2)) self.assertEqual(a.dtype, 'int8') self.assertEqual(a.tolist(), [[1, 1], [1, 1]])
def test_int8_numeric_array(self): # NumericArray from ConstantArray[1, {2, 2}] wxf = b'8:\xc2\x00\x02\x02\x02\x01\x01\x01\x01' a = binary_deserialize(wxf) self.assertEqual(len(a), 2) self.assertEqual(len(a[0]), 2) self.assertEqual(a, [[1, 1], [1, 1]])
def test_double_array(self): # ConstantArray[1., {2, 1}] wxf = b'8:\xc1#\x02\x02\x01\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?' a = binary_deserialize(wxf) self.assertEqual(len(a), 2) self.assertEqual(len(a[0]), 1) self.assertEqual(a, [[1.], [1.]])
def test_int64_array(self): # ConstantArray[2^40, {2, 1}] wxf = b'8:\xc1\x03\x02\x02\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00' a = binary_deserialize(wxf) self.assertEqual(len(a), 2) self.assertEqual(len(a[0]), 1) self.assertEqual(a, [[2**40], [2**40]])
def test_uint64_numeric_array(self): # NumericArray from ConstantArray[2^64-1, {2, 1}] wxf = b"8:\xc2\x13\x02\x02\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" a = binary_deserialize(wxf, consumer=WXFConsumerNumpy()) self.assertEqual(a.shape, (2, 1)) self.assertEqual(a.dtype, "uint64") self.assertEqual(a.tolist(), [[-1 + 2 ** 64], [-1 + 2 ** 64]])
def test_int16_array(self): # ConstantArray[2^15 - 1, {2, 2}] wxf = wxf = b"8:\xc2\x01\x02\x02\x02\xff\x7f\xff\x7f\xff\x7f\xff\x7f" a = binary_deserialize(wxf, consumer=WXFConsumer()) self.assertEqual(len(a), 2) self.assertEqual(len(a[0]), 2) self.assertEqual(a, [[-1 + 2 ** 15, -1 + 2 ** 15], [-1 + 2 ** 15, -1 + 2 ** 15]])
def test_float_numeric_array(self): # NumericArray["Real32", ConstantArray[1., {2, 1}]] wxf = b'8:\xc2"\x02\x02\x01\x00\x00\x80?\x00\x00\x80?' a = binary_deserialize(wxf, consumer=WXFConsumerNumpy()) self.assertEqual(a.shape, (2, 1)) self.assertEqual(a.dtype, "float32") self.assertAlmostEqual(a.tolist(), [[1.0], [1.0]])
def test_uint16_numeric_array(self): # NumericArray from ConstantArray[2^16 - 1, {2, 2}] wxf = b"8:\xc2\x11\x02\x02\x02\xff\xff\xff\xff\xff\xff\xff\xff" a = binary_deserialize(wxf, consumer=WXFConsumer()) self.assertEqual(len(a), 2) self.assertEqual(len(a[0]), 2) self.assertEqual(a, [[-1 + 2 ** 16, -1 + 2 ** 16], [-1 + 2 ** 16, -1 + 2 ** 16]])
def test_int8_array(self): # ConstantArray[1, {2, 2}] wxf = b"8:\xc1\x00\x02\x02\x02\x01\x01\x01\x01" a = binary_deserialize(wxf, consumer=WXFConsumer()) self.assertEqual(len(a), 2) self.assertEqual(len(a[0]), 2) self.assertEqual(a, [[1, 1], [1, 1]])
def test_uint32_numeric_array(self): # NumericArray from ConstantArray[2^32-1, {2, 1}] wxf = b'8:\xc2\x12\x02\x02\x01\xff\xff\xff\xff\xff\xff\xff\xff' a = binary_deserialize(wxf, consumer=WXFConsumerNumpy()) self.assertEqual(a.shape, (2, 1)) self.assertEqual(a.dtype, 'uint32') self.assertEqual(a.tolist(), [[-1 + 2**32], [-1 + 2**32]])
def test_uint8_numeric_array(self): # NumericArray from ConstantArray[255, {2, 2}] wxf = b"8:\xc2\x10\x02\x02\x02\xff\xff\xff\xff" a = binary_deserialize(wxf, consumer=WXFConsumer()) self.assertEqual(len(a), 2) self.assertEqual(len(a[0]), 2) self.assertEqual(a, [[255, 255], [255, 255]])
def test_packedarray_ndim_int8(self): # ConstantArray[1, {2, 3, 1}] wxf = b"8:\xc1\x00\x03\x02\x03\x01\x01\x01\x01\x01\x01\x01" a = binary_deserialize(wxf, consumer=WXFConsumerNumpy()) self.assertEqual(a.shape, (2, 3, 1)) self.assertEqual(a.dtype, "int8") self.assertEqual(a.tolist(), [[[1], [1], [1]], [[1], [1], [1]]])
def test_int32_numeric_array(self): # NumericArray from ConstantArray[2^16, {2, 2}] wxf = b"8:\xc2\x02\x02\x02\x02\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00" a = binary_deserialize(wxf, consumer=WXFConsumer()) self.assertEqual(len(a), 2) self.assertEqual(len(a[0]), 2) self.assertEqual(a, [[2 ** 16, 2 ** 16], [2 ** 16, 2 ** 16]])
def test_int8_array(self): # ConstantArray[1, {2, 2}] wxf = b"8:\xc1\x00\x02\x02\x02\x01\x01\x01\x01" a = binary_deserialize(wxf, consumer=WXFConsumerNumpy()) self.assertEqual(a.shape, (2, 2)) self.assertEqual(a.dtype, "int8") self.assertEqual(a.tolist(), [[1, 1], [1, 1]])
def test_uint64_numeric_array(self): # NumericArray from ConstantArray[2^64-1, {2, 1}] wxf = b"8:\xc2\x13\x02\x02\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" a = binary_deserialize(wxf, consumer=WXFConsumer()) self.assertEqual(len(a), 2) self.assertEqual(len(a[0]), 1) self.assertEqual(a, [[-1 + 2 ** 64], [-1 + 2 ** 64]])
def test_uint8_numeric_array(self): # NumericArray from ConstantArray[255, {2, 2}] wxf = b"8:\xc2\x10\x02\x02\x02\xff\xff\xff\xff" a = binary_deserialize(wxf, consumer=WXFConsumerNumpy()) self.assertEqual(a.shape, (2, 2)) self.assertEqual(a.dtype, "uint8") self.assertEqual(a.tolist(), [[255, 255], [255, 255]])
def test_double_numeric_array(self): # NumericArray["Real64", ConstantArray[1., {2, 1}]] wxf = b"8:\xc2#\x02\x02\x01\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?" a = binary_deserialize(wxf, consumer=WXFConsumer()) self.assertEqual(len(a), 2) self.assertEqual(len(a[0]), 1) self.assertEqual(a, [[1.0], [1.0]])
def test_int64_array(self): # ConstantArray[2^40, {2, 1}] wxf = b'8:\xc1\x03\x02\x02\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00' a = binary_deserialize(wxf, consumer=WXFConsumerNumpy()) self.assertEqual(a.shape, (2, 1)) self.assertEqual(a.dtype, 'int64') self.assertEqual(a.tolist(), [[2**40], [2**40]])