Ejemplo n.º 1
0
 def test_var_dims(self):
     self.assertEqual(parse('var * bool', self.sym),
                      ct.DataShape(ct.Var(), ct.bool_))
     self.assertEqual(parse('var * var * bool', self.sym),
                      ct.DataShape(ct.Var(), ct.Var(), ct.bool_))
     self.assertEqual(parse('M * 5 * var * bool', self.sym),
                      ct.DataShape(ct.TypeVar('M'), ct.Fixed(5), ct.Var(), ct.bool_))
Ejemplo n.º 2
0
def test_funcproto(sym):
    # Simple funcproto
    assert (parse('(float32) -> float64', sym) ==
            ct.DataShape(ct.Function(ct.DataShape(ct.float32),
                                     ct.DataShape(ct.float64))))
    assert (parse('(int16, int32) -> bool', sym) ==
            ct.DataShape(ct.Function(ct.DataShape(ct.int16),
                                     ct.DataShape(ct.int32),
                                     ct.DataShape(ct.bool_))))
    # A trailing comma is ok
    assert (parse('(float32,) -> float64', sym) ==
            ct.DataShape(ct.Function(ct.DataShape(ct.float32),
                                     ct.DataShape(ct.float64))))
    assert_dshape_equal(
        parse('(int16, int32,) -> bool', sym),
        ct.DataShape(ct.Function(
            ct.DataShape(ct.int16),
            ct.DataShape(ct.int32),
            ct.DataShape(ct.bool_)
        ))
    )

    # Empty argument signature.
    assert_dshape_equal(
        parse('() -> bool', sym),
        ct.DataShape(ct.Function(
            ct.DataShape(ct.bool_),
        ))
    )
Ejemplo n.º 3
0
 def test_typevar_dims(self):
     self.assertEqual(parse("M * bool", self.sym), ct.DataShape(ct.TypeVar("M"), ct.bool_))
     self.assertEqual(parse("A * B * bool", self.sym), ct.DataShape(ct.TypeVar("A"), ct.TypeVar("B"), ct.bool_))
     self.assertEqual(
         parse("A... * X * 3 * bool", self.sym),
         ct.DataShape(ct.Ellipsis(ct.TypeVar("A")), ct.TypeVar("X"), ct.Fixed(3), ct.bool_),
     )
Ejemplo n.º 4
0
 def test_var_dims(self):
     self.assertEqual(parse('var * bool', self.sym),
                      ct.DataShape(ct.Var(), ct.bool_))
     self.assertEqual(parse('var * var * bool', self.sym),
                      ct.DataShape(ct.Var(), ct.Var(), ct.bool_))
     self.assertEqual(parse('M * 5 * var * bool', self.sym),
                      ct.DataShape(ct.TypeVar('M'), ct.Fixed(5), ct.Var(), ct.bool_))
Ejemplo n.º 5
0
 def test_unsigned_integers(self):
     self.assertEqual(parse("uint8", self.sym), ct.DataShape(ct.uint8))
     self.assertEqual(parse("uint16", self.sym), ct.DataShape(ct.uint16))
     self.assertEqual(parse("uint32", self.sym), ct.DataShape(ct.uint32))
     self.assertEqual(parse("uint64", self.sym), ct.DataShape(ct.uint64))
     # self.assertEqual(parse('uint128', self.sym),
     #                 ct.DataShape(ct.uint128))
     self.assertEqual(parse("uintptr", self.sym), ct.DataShape(ct.uintptr))
Ejemplo n.º 6
0
 def test_typevar_dims(self):
     self.assertEqual(parse('M * bool', self.sym),
                      ct.DataShape(ct.TypeVar('M'), ct.bool_))
     self.assertEqual(parse('A * B * bool', self.sym),
                      ct.DataShape(ct.TypeVar('A'), ct.TypeVar('B'), ct.bool_))
     self.assertEqual(parse('A... * X * 3 * bool', self.sym),
                      ct.DataShape(ct.Ellipsis(ct.TypeVar('A')), ct.TypeVar('X'),
                                  ct.Fixed(3), ct.bool_))
Ejemplo n.º 7
0
 def test_unsigned_integers(self):
     self.assertEqual(parse('uint8', self.sym), ct.DataShape(ct.uint8))
     self.assertEqual(parse('uint16', self.sym), ct.DataShape(ct.uint16))
     self.assertEqual(parse('uint32', self.sym), ct.DataShape(ct.uint32))
     self.assertEqual(parse('uint64', self.sym), ct.DataShape(ct.uint64))
     #self.assertEqual(parse('uint128', self.sym),
     #                 ct.DataShape(ct.uint128))
     self.assertEqual(parse('uintptr', self.sym), ct.DataShape(ct.uintptr))
Ejemplo n.º 8
0
 def test_ellipses(self):
     self.assertEqual(parse('... * bool', self.sym),
                      ct.DataShape(ct.Ellipsis(), ct.bool_))
     self.assertEqual(parse('M * ... * bool', self.sym),
                      ct.DataShape(ct.TypeVar('M'), ct.Ellipsis(), ct.bool_))
     self.assertEqual(parse('M * ... * 3 * bool', self.sym),
                      ct.DataShape(ct.TypeVar('M'), ct.Ellipsis(),
                                   ct.Fixed(3), ct.bool_))
Ejemplo n.º 9
0
 def test_typevar_dims(self):
     self.assertEqual(parse('M * bool', self.sym),
                      ct.DataShape(ct.TypeVar('M'), ct.bool_))
     self.assertEqual(parse('A * B * bool', self.sym),
                      ct.DataShape(ct.TypeVar('A'), ct.TypeVar('B'), ct.bool_))
     self.assertEqual(parse('A... * X * 3 * bool', self.sym),
                      ct.DataShape(ct.Ellipsis(ct.TypeVar('A')), ct.TypeVar('X'),
                                   ct.Fixed(3), ct.bool_))
Ejemplo n.º 10
0
 def test_ellipses(self):
     self.assertEqual(parse('... * bool', self.sym),
                      ct.DataShape(ct.Ellipsis(), ct.bool_))
     self.assertEqual(parse('M * ... * bool', self.sym),
                      ct.DataShape(ct.TypeVar('M'), ct.Ellipsis(), ct.bool_))
     self.assertEqual(parse('M * ... * 3 * bool', self.sym),
                      ct.DataShape(ct.TypeVar('M'), ct.Ellipsis(),
                                  ct.Fixed(3), ct.bool_))
Ejemplo n.º 11
0
 def test_complex(self):
     self.assertEqual(parse('complex[float32]', self.sym),
                      ct.DataShape(ct.complex_float32))
     self.assertEqual(parse('complex[float64]', self.sym),
                      ct.DataShape(ct.complex_float64))
     self.assertEqual(parse('complex', self.sym), ct.DataShape(ct.complex_))
     # 'complex' is an alias for 'complex[float64]'
     self.assertEqual(parse('complex', self.sym),
                      parse('complex[float64]', self.sym))
Ejemplo n.º 12
0
 def test_fixed_dims(self):
     self.assertEqual(parse("3 * bool", self.sym), ct.DataShape(ct.Fixed(3), ct.bool_))
     self.assertEqual(parse("7 * 3 * bool", self.sym), ct.DataShape(ct.Fixed(7), ct.Fixed(3), ct.bool_))
     self.assertEqual(
         parse("5 * 3 * 12 * bool", self.sym), ct.DataShape(ct.Fixed(5), ct.Fixed(3), ct.Fixed(12), ct.bool_)
     )
     self.assertEqual(
         parse("2 * 3 * 4 * 5 * bool", self.sym),
         ct.DataShape(ct.Fixed(2), ct.Fixed(3), ct.Fixed(4), ct.Fixed(5), ct.bool_),
     )
Ejemplo n.º 13
0
 def test_float(self):
     # self.assertEqual(parse('float16', self.sym),
     #                 ct.DataShape(ct.float16))
     self.assertEqual(parse("float32", self.sym), ct.DataShape(ct.float32))
     self.assertEqual(parse("float64", self.sym), ct.DataShape(ct.float64))
     # self.assertEqual(parse('float128', self.sym),
     #                 ct.DataShape(ct.float128))
     self.assertEqual(parse("real", self.sym), ct.DataShape(ct.real))
     # 'real' is an alias for 'float64'
     self.assertEqual(parse("real", self.sym), parse("float64", self.sym))
Ejemplo n.º 14
0
 def test_complex(self):
     self.assertEqual(parse('complex[float32]', self.sym),
                      ct.DataShape(ct.complex_float32))
     self.assertEqual(parse('complex[float64]', self.sym),
                      ct.DataShape(ct.complex_float64))
     self.assertEqual(parse('complex', self.sym),
                      ct.DataShape(ct.complex_))
     # 'complex' is an alias for 'complex[float64]'
     self.assertEqual(parse('complex', self.sym),
                      parse('complex[float64]', self.sym))
Ejemplo n.º 15
0
 def test_float(self):
     #self.assertEqual(parse('float16', self.sym),
     #                 ct.DataShape(ct.float16))
     self.assertEqual(parse('float32', self.sym), ct.DataShape(ct.float32))
     self.assertEqual(parse('float64', self.sym), ct.DataShape(ct.float64))
     #self.assertEqual(parse('float128', self.sym),
     #                 ct.DataShape(ct.float128))
     self.assertEqual(parse('real', self.sym), ct.DataShape(ct.real))
     # 'real' is an alias for 'float64'
     self.assertEqual(parse('real', self.sym), parse('float64', self.sym))
Ejemplo n.º 16
0
 def test_fixed_dims(self):
     self.assertEqual(parse('3 * bool', self.sym),
                      ct.DataShape(ct.Fixed(3), ct.bool_))
     self.assertEqual(parse('7 * 3 * bool', self.sym),
                      ct.DataShape(ct.Fixed(7), ct.Fixed(3), ct.bool_))
     self.assertEqual(parse('5 * 3 * 12 * bool', self.sym),
                      ct.DataShape(ct.Fixed(5), ct.Fixed(3),
                                   ct.Fixed(12), ct.bool_))
     self.assertEqual(parse('2 * 3 * 4 * 5 * bool', self.sym),
                      ct.DataShape(ct.Fixed(2), ct.Fixed(3),
                                   ct.Fixed(4), ct.Fixed(5), ct.bool_))
Ejemplo n.º 17
0
 def test_fixed_dims(self):
     self.assertEqual(parse('3 * bool', self.sym),
                      T.DataShape(T.Fixed(3), T.bool_))
     self.assertEqual(parse('7 * 3 * bool', self.sym),
                      T.DataShape(T.Fixed(7), T.Fixed(3), T.bool_))
     self.assertEqual(parse('5 * 3 * 12 * bool', self.sym),
                      T.DataShape(T.Fixed(5), T.Fixed(3),
                                  T.Fixed(12), T.bool_))
     self.assertEqual(parse('2 * 3 * 4 * 5 * bool', self.sym),
                      T.DataShape(T.Fixed(2), T.Fixed(3),
                                  T.Fixed(4), T.Fixed(5), T.bool_))
Ejemplo n.º 18
0
 def test_tuple(self):
     # Simple tuple
     self.assertEqual(parse("(float32)", self.sym), ct.DataShape(ct.Tuple([ct.DataShape(ct.float32)])))
     self.assertEqual(
         parse("(int16, int32)", self.sym), ct.DataShape(ct.Tuple([ct.DataShape(ct.int16), ct.DataShape(ct.int32)]))
     )
     # A trailing comma is ok
     self.assertEqual(parse("(float32,)", self.sym), ct.DataShape(ct.Tuple([ct.DataShape(ct.float32)])))
     self.assertEqual(
         parse("(int16, int32,)", self.sym), ct.DataShape(ct.Tuple([ct.DataShape(ct.int16), ct.DataShape(ct.int32)]))
     )
Ejemplo n.º 19
0
 def test_unsigned_integers(self):
     self.assertEqual(parse('uint8', self.sym),
                      T.DataShape(T.uint8))
     self.assertEqual(parse('uint16', self.sym),
                      T.DataShape(T.uint16))
     self.assertEqual(parse('uint32', self.sym),
                      T.DataShape(T.uint32))
     self.assertEqual(parse('uint64', self.sym),
                      T.DataShape(T.uint64))
     #self.assertEqual(parse('uint128', self.sym),
     #                 T.DataShape(T.uint128))
     self.assertEqual(parse('uintptr', self.sym),
                      T.DataShape(T.uintptr))
Ejemplo n.º 20
0
 def test_tuple(self):
     # Simple tuple
     self.assertEqual(parse('(float32)', self.sym),
                      ct.DataShape(ct.Tuple([ct.DataShape(ct.float32)])))
     self.assertEqual(parse('(int16, int32)', self.sym),
                      ct.DataShape(ct.Tuple([ct.DataShape(ct.int16),
                                             ct.DataShape(ct.int32)])))
     # A trailing comma is ok
     self.assertEqual(parse('(float32,)', self.sym),
                      ct.DataShape(ct.Tuple([ct.DataShape(ct.float32)])))
     self.assertEqual(parse('(int16, int32,)', self.sym),
                      ct.DataShape(ct.Tuple([ct.DataShape(ct.int16),
                                             ct.DataShape(ct.int32)])))
Ejemplo n.º 21
0
 def test_tuple(self):
     # Simple tuple
     self.assertEqual(parse('(float32)', self.sym),
                      T.DataShape(T.Tuple([T.DataShape(T.float32)])))
     self.assertEqual(parse('(int16, int32)', self.sym),
                      T.DataShape(T.Tuple([T.DataShape(T.int16),
                                           T.DataShape(T.int32)])))
     # A trailing comma is ok
     self.assertEqual(parse('(float32,)', self.sym),
                      T.DataShape(T.Tuple([T.DataShape(T.float32)])))
     self.assertEqual(parse('(int16, int32,)', self.sym),
                      T.DataShape(T.Tuple([T.DataShape(T.int16),
                                           T.DataShape(T.int32)])))
Ejemplo n.º 22
0
def test_funcproto(sym):
    # Simple funcproto
    assert (parse('(float32) -> float64', sym) == ct.DataShape(
        ct.Function(ct.DataShape(ct.float32), ct.DataShape(ct.float64))))
    assert (parse('(int16, int32) -> bool', sym) == ct.DataShape(
        ct.Function(ct.DataShape(ct.int16), ct.DataShape(ct.int32),
                    ct.DataShape(ct.bool_))))
    # A trailing comma is ok
    assert (parse('(float32,) -> float64', sym) == ct.DataShape(
        ct.Function(ct.DataShape(ct.float32), ct.DataShape(ct.float64))))
    assert (parse('(int16, int32,) -> bool', sym) == ct.DataShape(
        ct.Function(ct.DataShape(ct.int16), ct.DataShape(ct.int32),
                    ct.DataShape(ct.bool_))))
Ejemplo n.º 23
0
 def test_float(self):
     #self.assertEqual(parse('float16', self.sym),
     #                 T.DataShape(T.float16))
     self.assertEqual(parse('float32', self.sym),
                      T.DataShape(T.float32))
     self.assertEqual(parse('float64', self.sym),
                      T.DataShape(T.float64))
     #self.assertEqual(parse('float128', self.sym),
     #                 T.DataShape(T.float128))
     self.assertEqual(parse('real', self.sym),
                      T.DataShape(T.real))
     # 'real' is an alias for 'float64'
     self.assertEqual(parse('real', self.sym),
                      parse('float64', self.sym))
Ejemplo n.º 24
0
 def test_strings_in_ds(self):
     # Name the fields with some arbitrary string!
     ds = parse("""5 * var * {
           id: int64,
          'my field': string,
           name: string }
          """, self.sym)
     self.assertEqual(len(ds[-1].names), 3)
     ds = parse("""2 * var * {
          "AASD @#$@#$ \' sdf": string,
           id: float32,
           id2: int64,
           name: string }
          """, self.sym)
     self.assertEqual(len(ds[-1].names), 4)
Ejemplo n.º 25
0
def test_funcproto(sym):
    # Simple funcproto
    assert parse("(float32) -> float64", sym) == ct.DataShape(
        ct.Function(ct.DataShape(ct.float32), ct.DataShape(ct.float64))
    )
    assert parse("(int16, int32) -> bool", sym) == ct.DataShape(
        ct.Function(ct.DataShape(ct.int16), ct.DataShape(ct.int32), ct.DataShape(ct.bool_))
    )
    # A trailing comma is ok
    assert parse("(float32,) -> float64", sym) == ct.DataShape(
        ct.Function(ct.DataShape(ct.float32), ct.DataShape(ct.float64))
    )
    assert parse("(int16, int32,) -> bool", sym) == ct.DataShape(
        ct.Function(ct.DataShape(ct.int16), ct.DataShape(ct.int32), ct.DataShape(ct.bool_))
    )
Ejemplo n.º 26
0
 def test_strings_in_ds(self):
     #Name the fields with some arbitrary string!
     ds = parse("""5 * var * {
           id: int64,
          'my field': string,
           name: string }
          """, self.sym)
     self.assertEqual(len(ds[-1].names), 3)
     ds = parse("""2 * var * {
          "AASD @#$@#$ \' sdf": string,
           id: float32,
           id: int64,
           name: string }
          """, self.sym)
     self.assertEqual(len(ds[-1].names), 4)
Ejemplo n.º 27
0
 def assertExpectedParse(ds_str, expected):
     # Set the expected value, and call the parser
     expected_blah[0] = expected
     self.assertEqual(parse(ds_str, sym), ct.DataShape(ct.float32))
     # Make sure the expected value was actually run by
     # check that it reset the expected value to None
     self.assertEqual(expected_blah[0], None, "The test unary type constructor did not run")
Ejemplo n.º 28
0
 def test_funcproto(self):
     # Simple funcproto
     self.assertEqual(parse('(float32) -> float64', self.sym),
                      ct.DataShape(ct.Function(ct.DataShape(ct.float32),
                                             ct.DataShape(ct.float64))))
     self.assertEqual(parse('(int16, int32) -> bool', self.sym),
                      ct.DataShape(ct.Function(ct.DataShape(ct.int16),
                                             ct.DataShape(ct.int32),
                                             ct.DataShape(ct.bool_))))
     # A trailing comma is ok
     self.assertEqual(parse('(float32,) -> float64', self.sym),
                      ct.DataShape(ct.Function(ct.DataShape(ct.float32),
                                             ct.DataShape(ct.float64))))
     self.assertEqual(parse('(int16, int32,) -> bool', self.sym),
                      ct.DataShape(ct.Function(ct.DataShape(ct.int16),
                                             ct.DataShape(ct.int32),
                                             ct.DataShape(ct.bool_))))
Ejemplo n.º 29
0
 def assertExpectedParse(ds_str, expected):
     # Set the expected value, and call the parser
     expected_blah[0] = expected
     self.assertEqual(parse(ds_str, sym), ct.DataShape(ct.float32))
     # Make sure the expected value was actually run by
     # check that it reset the expected value to None
     self.assertEqual(expected_blah[0], None,
                      'The test unary type constructor did not run')
Ejemplo n.º 30
0
 def test_struct(self):
     # Simple struct
     self.assertEqual(
         parse('{x: int16, y: int32}', self.sym),
         ct.DataShape(
             ct.Record([('x', ct.DataShape(ct.int16)),
                        ('y', ct.DataShape(ct.int32))])))
     # A trailing comma is ok
     self.assertEqual(
         parse('{x: int16, y: int32,}', self.sym),
         ct.DataShape(
             ct.Record([('x', ct.DataShape(ct.int16)),
                        ('y', ct.DataShape(ct.int32))])))
     # Field names starting with _ and caps
     self.assertEqual(
         parse('{_x: int16, Zed: int32,}', self.sym),
         ct.DataShape(
             ct.Record([('_x', ct.DataShape(ct.int16)),
                        ('Zed', ct.DataShape(ct.int32))])))
     # A slightly bigger example
     ds_str = """3 * var * {
                     id : int32,
                     name : string,
                     description : {
                         language : string,
                         text : string
                     },
                     entries : var * {
                         date : date,
                         text : string
                     }
                 }"""
     int32 = ct.DataShape(ct.int32)
     string = ct.DataShape(ct.string)
     date = ct.DataShape(ct.date_)
     ds = (ct.Fixed(3), ct.Var(),
           ct.Record([
               ('id', int32), ('name', string),
               ('description',
                ct.DataShape(
                    ct.Record([('language', string), ('text', string)]))),
               ('entries',
                ct.DataShape(ct.Var(),
                             ct.Record([('date', date), ('text', string)])))
           ]))
     self.assertEqual(parse(ds_str, self.sym), ct.DataShape(*ds))
Ejemplo n.º 31
0
 def test_struct(self):
     # Simple struct
     self.assertEqual(
         parse("{x: int16, y: int32}", self.sym),
         ct.DataShape(ct.Record([("x", ct.DataShape(ct.int16)), ("y", ct.DataShape(ct.int32))])),
     )
     # A trailing comma is ok
     self.assertEqual(
         parse("{x: int16, y: int32,}", self.sym),
         ct.DataShape(ct.Record([("x", ct.DataShape(ct.int16)), ("y", ct.DataShape(ct.int32))])),
     )
     # Field names starting with _ and caps
     self.assertEqual(
         parse("{_x: int16, Zed: int32,}", self.sym),
         ct.DataShape(ct.Record([("_x", ct.DataShape(ct.int16)), ("Zed", ct.DataShape(ct.int32))])),
     )
     # A slightly bigger example
     ds_str = """3 * var * {
                     id : int32,
                     name : string,
                     description : {
                         language : string,
                         text : string
                     },
                     entries : var * {
                         date : date,
                         text : string
                     }
                 }"""
     int32 = ct.DataShape(ct.int32)
     string = ct.DataShape(ct.string)
     date = ct.DataShape(ct.date_)
     ds = (
         ct.Fixed(3),
         ct.Var(),
         ct.Record(
             [
                 ("id", int32),
                 ("name", string),
                 ("description", ct.DataShape(ct.Record([("language", string), ("text", string)]))),
                 ("entries", ct.DataShape(ct.Var(), ct.Record([("date", date), ("text", string)]))),
             ]
         ),
     )
     self.assertEqual(parse(ds_str, self.sym), ct.DataShape(*ds))
Ejemplo n.º 32
0
 def assertExpectedParse(ds_str, expected_a, expected_b):
     # Set the expected value, and call the parser
     expected_arg[0] = expected_a
     expected_arg[1] = expected_b
     self.assertEqual(parse(ds_str, sym), ct.DataShape(ct.float32))
     # Make sure the expected value was actually run by
     # check that it reset the expected value to None
     self.assertEqual(expected_arg, [None, None],
                      'The test binary type constructor did not run')
Ejemplo n.º 33
0
 def test_signed_integers(self):
     self.assertEqual(parse("int8", self.sym), ct.DataShape(ct.int8))
     self.assertEqual(parse("int16", self.sym), ct.DataShape(ct.int16))
     self.assertEqual(parse("int32", self.sym), ct.DataShape(ct.int32))
     self.assertEqual(parse("int64", self.sym), ct.DataShape(ct.int64))
     # self.assertEqual(parse('int128', self.sym),
     #                 ct.DataShape(ct.int128))
     self.assertEqual(parse("int", self.sym), ct.DataShape(ct.int_))
     # 'int' is an alias for 'int32'
     self.assertEqual(parse("int", self.sym), parse("int32", self.sym))
     self.assertEqual(parse("intptr", self.sym), ct.DataShape(ct.intptr))
Ejemplo n.º 34
0
 def test_signed_integers(self):
     self.assertEqual(parse('int8', self.sym), ct.DataShape(ct.int8))
     self.assertEqual(parse('int16', self.sym), ct.DataShape(ct.int16))
     self.assertEqual(parse('int32', self.sym), ct.DataShape(ct.int32))
     self.assertEqual(parse('int64', self.sym), ct.DataShape(ct.int64))
     #self.assertEqual(parse('int128', self.sym),
     #                 ct.DataShape(ct.int128))
     self.assertEqual(parse('int', self.sym), ct.DataShape(ct.int_))
     # 'int' is an alias for 'int32'
     self.assertEqual(parse('int', self.sym), parse('int32', self.sym))
     self.assertEqual(parse('intptr', self.sym), ct.DataShape(ct.intptr))
Ejemplo n.º 35
0
def test_funcproto(sym):
    # Simple funcproto
    assert (parse('(float32) -> float64', sym) == ct.DataShape(
        ct.Function(ct.DataShape(ct.float32), ct.DataShape(ct.float64))))
    assert (parse('(int16, int32) -> bool', sym) == ct.DataShape(
        ct.Function(ct.DataShape(ct.int16), ct.DataShape(ct.int32),
                    ct.DataShape(ct.bool_))))
    # A trailing comma is ok
    assert (parse('(float32,) -> float64', sym) == ct.DataShape(
        ct.Function(ct.DataShape(ct.float32), ct.DataShape(ct.float64))))
    assert_dshape_equal(
        parse('(int16, int32,) -> bool', sym),
        ct.DataShape(
            ct.Function(ct.DataShape(ct.int16), ct.DataShape(ct.int32),
                        ct.DataShape(ct.bool_))))

    # Empty argument signature.
    assert_dshape_equal(parse('() -> bool', sym),
                        ct.DataShape(ct.Function(ct.DataShape(ct.bool_), )))
Ejemplo n.º 36
0
 def test_struct(self):
     # Simple struct
     self.assertEqual(parse('{x: int16, y: int32}', self.sym),
                      ct.DataShape(ct.Record([('x', ct.DataShape(ct.int16)),
                                            ('y', ct.DataShape(ct.int32))])))
     # A trailing comma is ok
     self.assertEqual(parse('{x: int16, y: int32,}', self.sym),
                      ct.DataShape(ct.Record([('x', ct.DataShape(ct.int16)),
                                            ('y', ct.DataShape(ct.int32))])))
     # Field names starting with _ and caps
     self.assertEqual(parse('{_x: int16, Zed: int32,}', self.sym),
                      ct.DataShape(ct.Record([('_x', ct.DataShape(ct.int16)),
                                            ('Zed', ct.DataShape(ct.int32))])))
     # A slightly bigger example
     ds_str = """3 * var * {
                     id : int32,
                     name : string,
                     description : {
                         language : string,
                         text : string
                     },
                     entries : var * {
                         date : date,
                         text : string
                     }
                 }"""
     int32 = ct.DataShape(ct.int32)
     string = ct.DataShape(ct.string)
     date = ct.DataShape(ct.date_)
     ds = (ct.Fixed(3), ct.Var(),
           ct.Record([('id', int32),
                     ('name', string),
                     ('description', ct.DataShape(ct.Record([('language', string),
                                                           ('text', string)]))),
                     ('entries', ct.DataShape(ct.Var(),
                                             ct.Record([('date', date),
                                                       ('text', string)])))]))
     self.assertEqual(parse(ds_str, self.sym), ct.DataShape(*ds))
Ejemplo n.º 37
0
 def test_funcproto(self):
     # Simple funcproto
     self.assertEqual(
         parse('(float32) -> float64', self.sym),
         ct.DataShape(
             ct.Function(ct.DataShape(ct.float32),
                         ct.DataShape(ct.float64))))
     self.assertEqual(
         parse('(int16, int32) -> bool', self.sym),
         ct.DataShape(
             ct.Function(ct.DataShape(ct.int16), ct.DataShape(ct.int32),
                         ct.DataShape(ct.bool_))))
     # A trailing comma is ok
     self.assertEqual(
         parse('(float32,) -> float64', self.sym),
         ct.DataShape(
             ct.Function(ct.DataShape(ct.float32),
                         ct.DataShape(ct.float64))))
     self.assertEqual(
         parse('(int16, int32,) -> bool', self.sym),
         ct.DataShape(
             ct.Function(ct.DataShape(ct.int16), ct.DataShape(ct.int32),
                         ct.DataShape(ct.bool_))))
Ejemplo n.º 38
0
 def test_signed_integers(self):
     self.assertEqual(parse('int8', self.sym),
                      T.DataShape(T.int8))
     self.assertEqual(parse('int16', self.sym),
                      T.DataShape(T.int16))
     self.assertEqual(parse('int32', self.sym),
                      T.DataShape(T.int32))
     self.assertEqual(parse('int64', self.sym),
                      T.DataShape(T.int64))
     #self.assertEqual(parse('int128', self.sym),
     #                 T.DataShape(T.int128))
     self.assertEqual(parse('int', self.sym),
                      T.DataShape(T.int_))
     # 'int' is an alias for 'int32'
     self.assertEqual(parse('int', self.sym),
                      parse('int32', self.sym))
     self.assertEqual(parse('intptr', self.sym),
                      T.DataShape(T.intptr))
Ejemplo n.º 39
0
 def test_option(self):
     self.assertEqual(parse("option[int32]", self.sym), ct.DataShape(ct.Option(ct.int32)))
     self.assertEqual(parse("?int32", self.sym), ct.DataShape(ct.Option(ct.int32)))
     self.assertEqual(
         parse("2 * 3 * option[int32]", self.sym), ct.DataShape(ct.Fixed(2), ct.Fixed(3), ct.Option(ct.int32))
     )
     self.assertEqual(parse("2 * 3 * ?int32", self.sym), ct.DataShape(ct.Fixed(2), ct.Fixed(3), ct.Option(ct.int32)))
     self.assertEqual(
         parse("2 * option[3 * int32]", self.sym),
         ct.DataShape(ct.Fixed(2), ct.Option(ct.DataShape(ct.Fixed(3), ct.int32))),
     )
     self.assertEqual(
         parse("2 * ?3 * int32", self.sym), ct.DataShape(ct.Fixed(2), ct.Option(ct.DataShape(ct.Fixed(3), ct.int32)))
     )
Ejemplo n.º 40
0
 def test_fields_with_dshape_names(self):
     # Should be able to name a field 'type', 'int64', etc
     ds = parse(
         """{
             type: bool,
             data: bool,
             blob: bool,
             bool: bool,
             int: int32,
             float: float32,
             double: float64,
             int8: int8,
             int16: int16,
             int32: int32,
             int64: int64,
             uint8: uint8,
             uint16: uint16,
             uint32: uint32,
             uint64: uint64,
             float16: float32,
             float32: float32,
             float64: float64,
             float128: float64,
             complex: float32,
             complex64: float32,
             complex128: float64,
             string: string,
             object: string,
             datetime: string,
             datetime64: string,
             timedelta: string,
             timedelta64: string,
             json: string,
             var: string,
         }""",
         self.sym,
     )
     self.assertEqual(type(ds[-1]), ct.Record)
     self.assertEqual(len(ds[-1].names), 30)
Ejemplo n.º 41
0
 def test_fields_with_dshape_names(self):
     # Should be able to name a field 'type', 'int64', etc
     ds = parse(
         """{
             type: bool,
             data: bool,
             blob: bool,
             bool: bool,
             int: int32,
             float: float32,
             double: float64,
             int8: int8,
             int16: int16,
             int32: int32,
             int64: int64,
             uint8: uint8,
             uint16: uint16,
             uint32: uint32,
             uint64: uint64,
             float16: float32,
             float32: float32,
             float64: float64,
             float128: float64,
             complex: float32,
             complex64: float32,
             complex128: float64,
             string: string,
             object: string,
             datetime: string,
             datetime64: string,
             timedelta: string,
             timedelta64: string,
             json: string,
             var: string,
         }""", self.sym)
     self.assertEqual(type(ds[-1]), ct.Record)
     self.assertEqual(len(ds[-1].names), 30)
Ejemplo n.º 42
0
 def test_option(self):
     self.assertEqual(parse('option[int32]', self.sym),
                      ct.DataShape(ct.Option(ct.int32)))
     self.assertEqual(parse('?int32', self.sym),
                      ct.DataShape(ct.Option(ct.int32)))
     self.assertEqual(parse('2 * 3 * option[int32]', self.sym),
                      ct.DataShape(ct.Fixed(2), ct.Fixed(3),
                                  ct.Option(ct.int32)))
     self.assertEqual(parse('2 * 3 * ?int32', self.sym),
                      ct.DataShape(ct.Fixed(2), ct.Fixed(3),
                                  ct.Option(ct.int32)))
     self.assertEqual(parse('2 * option[3 * int32]', self.sym),
                      ct.DataShape(ct.Fixed(2),
                                   ct.Option(ct.DataShape(ct.Fixed(3),
                                                          ct.int32))))
     self.assertEqual(parse('2 * ?3 * int32', self.sym),
                      ct.DataShape(ct.Fixed(2),
                                   ct.Option(ct.DataShape(ct.Fixed(3),
                                                          ct.int32))))
Ejemplo n.º 43
0
 def test_option(self):
     self.assertEqual(parse('option[int32]', self.sym),
                      ct.DataShape(ct.Option(ct.int32)))
     self.assertEqual(parse('?int32', self.sym),
                      ct.DataShape(ct.Option(ct.int32)))
     self.assertEqual(
         parse('2 * 3 * option[int32]', self.sym),
         ct.DataShape(ct.Fixed(2), ct.Fixed(3), ct.Option(ct.int32)))
     self.assertEqual(
         parse('2 * 3 * ?int32', self.sym),
         ct.DataShape(ct.Fixed(2), ct.Fixed(3), ct.Option(ct.int32)))
     self.assertEqual(
         parse('2 * option[3 * int32]', self.sym),
         ct.DataShape(ct.Fixed(2),
                      ct.Option(ct.DataShape(ct.Fixed(3), ct.int32))))
     self.assertEqual(
         parse('2 * ?3 * int32', self.sym),
         ct.DataShape(ct.Fixed(2),
                      ct.Option(ct.DataShape(ct.Fixed(3), ct.int32))))
Ejemplo n.º 44
0
def test_empty_tuple(sym):
    t = parse('()', sym)
    assert isinstance(t, ct.DataShape)
    assert isinstance(t.measure, ct.Tuple)
    assert t.measure.dshapes == ()
Ejemplo n.º 45
0
def test_dim_constructor_fail(sym):
    with pytest.raises(NotImplementedError):
        parse('fixed[10] * var * string', sym)
    with pytest.raises(DataShapeSyntaxError):
        parse('fixed[10 * var * string', sym)
Ejemplo n.º 46
0
 def test_bool(self):
     self.assertEqual(parse('bool', self.sym),
                      ct.DataShape(ct.bool_))
Ejemplo n.º 47
0
 def test_kiva_datashape(self):
     # A slightly more complicated datashape which should parse
     ds = parse(
         """5 * var * {
           id: int64,
           name: string,
           description: {
             languages: var * string[2],
             texts: json,
           },
           status: string,
           funded_amount: float64,
           basket_amount: json,
           paid_amount: json,
           image: {
             id: int64,
             template_id: int64,
           },
           video: json,
           activity: string,
           sector: string,
           use: string,
           delinquent: bool,
           location: {
             country_code: string[2],
             country: string,
             town: json,
             geo: {
               level: string,
               pairs: string,
               type: string,
             },
           },
           partner_id: int64,
           posted_date: json,
           planned_expiration_date: json,
           loan_amount: float64,
           currency_exchange_loss_amount: json,
           borrowers: var * {
             first_name: string,
             last_name: string,
             gender: string[1],
             pictured: bool,
           },
           terms: {
             disbursal_date: json,
             disbursal_currency: string[3,'A'],
             disbursal_amount: float64,
             loan_amount: float64,
             local_payments: var * {
               due_date: json,
               amount: float64,
             },
             scheduled_payments: var * {
               due_date: json,
               amount: float64,
             },
             loss_liability: {
               nonpayment: string,
               currency_exchange: string,
               currency_exchange_coverage_rate: json,
             },
           },
           payments: var * {
             amount: float64,
             local_amount: float64,
             processed_date: json,
             settlement_date: json,
             rounded_local_amount: float64,
             currency_exchange_loss_amount: float64,
             payment_id: int64,
             comment: json,
           },
           funded_date: json,
           paid_date: json,
           journal_totals: {
             entries: int64,
             bulkEntries: int64,
           },
         }
     """, self.sym)
     self.assertEqual(type(ds[-1]), ct.Record)
     self.assertEqual(len(ds[-1].names), 25)
Ejemplo n.º 48
0
 def test_void(self):
     self.assertEqual(parse('void', self.sym), ct.DataShape(ct.void))
Ejemplo n.º 49
0
def test_funcproto_no_return_type(sym):
    with pytest.raises(DataShapeSyntaxError):
        parse('(int64, int32) ->', sym)
Ejemplo n.º 50
0
 def test_bool(self):
     self.assertEqual(parse('bool', self.sym), ct.DataShape(ct.bool_))
Ejemplo n.º 51
0
def test_empty_tuple_fails(sym):
    with pytest.raises(DataShapeSyntaxError):
        parse('()', sym)
Ejemplo n.º 52
0
 def test_object(self):
     self.assertEqual(parse('object', self.sym), ct.DataShape(ct.object_))
Ejemplo n.º 53
0
 def test_object(self):
     self.assertEqual(parse('object', self.sym), ct.DataShape(ct.object_))
Ejemplo n.º 54
0
 def test_void(self):
     self.assertEqual(parse('void', self.sym), ct.DataShape(ct.void))
Ejemplo n.º 55
0
 def test_null(self):
     self.assertEqual(parse('null', self.sym), ct.DataShape(ct.null))
Ejemplo n.º 56
0
def test_no_right_paren_tuple(sym):
    with pytest.raises(DataShapeSyntaxError):
        parse('(int64', sym)
Ejemplo n.º 57
0
def test_type_constructor_fail(sym):
    with pytest.raises(DataShapeSyntaxError):
        parse('string[10,[', sym)

    with pytest.raises(DataShapeSyntaxError):
        parse('string[10,', sym)
Ejemplo n.º 58
0
def test_garbage_at_end(sym):
    with pytest.raises(DataShapeSyntaxError):
        parse('int64,asdf', sym)
Ejemplo n.º 59
0
def test_invalid_dtype(sym):
    with pytest.raises(DataShapeSyntaxError):
        parse('10 * foo[10]', sym)
Ejemplo n.º 60
0
 def test_kiva_datashape(self):
     # A slightly more complicated datashape which should parse
     ds = parse("""5 * var * {
           id: int64,
           name: string,
           description: {
             languages: var * string[2],
             texts: json,
           },
           status: string,
           funded_amount: float64,
           basket_amount: json,
           paid_amount: json,
           image: {
             id: int64,
             template_id: int64,
           },
           video: json,
           activity: string,
           sector: string,
           use: string,
           delinquent: bool,
           location: {
             country_code: string[2],
             country: string,
             town: json,
             geo: {
               level: string,
               pairs: string,
               type: string,
             },
           },
           partner_id: int64,
           posted_date: json,
           planned_expiration_date: json,
           loan_amount: float64,
           currency_exchange_loss_amount: json,
           borrowers: var * {
             first_name: string,
             last_name: string,
             gender: string[1],
             pictured: bool,
           },
           terms: {
             disbursal_date: json,
             disbursal_currency: string[3,'A'],
             disbursal_amount: float64,
             loan_amount: float64,
             local_payments: var * {
               due_date: json,
               amount: float64,
             },
             scheduled_payments: var * {
               due_date: json,
               amount: float64,
             },
             loss_liability: {
               nonpayment: string,
               currency_exchange: string,
               currency_exchange_coverage_rate: json,
             },
           },
           payments: var * {
             amount: float64,
             local_amount: float64,
             processed_date: json,
             settlement_date: json,
             rounded_local_amount: float64,
             currency_exchange_loss_amount: float64,
             payment_id: int64,
             comment: json,
           },
           funded_date: json,
           paid_date: json,
           journal_totals: {
             entries: int64,
             bulkEntries: int64,
           },
         }
     """, self.sym)
     self.assertEqual(type(ds[-1]), ct.Record)
     self.assertEqual(len(ds[-1].names), 25)