コード例 #1
0
    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()
コード例 #2
0
 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.",
         )
コード例 #3
0
 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.",
         )
コード例 #4
0
 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]])
コード例 #5
0
 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]])
コード例 #6
0
 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]])
コード例 #7
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.]])
コード例 #8
0
 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]])
コード例 #9
0
 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]])
コード例 #10
0
 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"))
コード例 #11
0
 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]])
コード例 #12
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]])
コード例 #13
0
 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]])
コード例 #14
0
 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]])
コード例 #15
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)
     self.assertEqual(len(a), 2)
     self.assertEqual(len(a[0]), 1)
     self.assertEqual(a, [[1.], [1.]])
コード例 #16
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)
     self.assertEqual(len(a), 2)
     self.assertEqual(len(a[0]), 1)
     self.assertEqual(a, [[2**40], [2**40]])
コード例 #17
0
 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]])
コード例 #18
0
 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]])
コード例 #19
0
 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]])
コード例 #20
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]])
コード例 #21
0
 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]])
コード例 #22
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, consumer=WXFConsumerNumpy())
     self.assertEqual(a.shape, (2, 1))
     self.assertEqual(a.dtype, 'uint32')
     self.assertEqual(a.tolist(), [[-1 + 2**32], [-1 + 2**32]])
コード例 #23
0
 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]])
コード例 #24
0
 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]]])
コード例 #25
0
 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]])
コード例 #26
0
 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]])
コード例 #27
0
 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]])
コード例 #28
0
 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]])
コード例 #29
0
 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]])
コード例 #30
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]])