Esempio n. 1
0
class SimpleCase(ValueOp):

    input_type = [
        value(name='base'),
        list_of(value, name='cases'),
        list_of(value, name='results'),
        value(name='default')
    ]

    def __init__(self, base, cases, results, default):
        assert len(cases) == len(results)
        ValueOp.__init__(self, base, cases, results, default)

    def root_tables(self):
        base, cases, results, default = self.args
        all_exprs = [base] + cases + results
        if default is not None:
            all_exprs.append(default)
        return ir.distinct_roots(*all_exprs)

    def output_type(self):
        base, cases, results, default = self.args
        out_exprs = results + [default]
        typename = rules.highest_precedence_type(out_exprs)
        return rules.shape_like(base, typename)
Esempio n. 2
0
def test_valid_list_of_extra():
    validator = rlz.tuple_of(identity)
    assert validator((3, 2)) == tuple([3, 2])

    validator = rlz.list_of(rlz.list_of(rlz.string))
    result = validator([[], ['a']])
    assert result[1][0].equals(ibis.literal('a'))
Esempio n. 3
0
    class MyOp(ops.ValueOp):

        input_type = [
            rules.list_of(rules.enum(MyEnum),
                          name='one',
                          as_value_expr=custom_as_value_expr),
            rules.list_of(rules.enum(MyEnum2),
                          name='two',
                          as_value_expr=custom_as_value_expr),
        ]
Esempio n. 4
0
 class MyOp(ops.ValueOp):
     input_type = [
         rules.list_of(
             rules.integer(as_value_expr=custom_as_value_expr),
             name='bar',
         )
     ]
Esempio n. 5
0
])
def test_valid_member_of(obj, value, expected):
    assert rlz.member_of(obj, value) == expected


@pytest.mark.parametrize(('obj', 'value', 'expected'),
                         [(Foo, 'c', IbisTypeError), (Bar, 'c', IbisTypeError),
                          (Baz(3), 'b', IbisTypeError)])
def test_invalid_member_of(obj, value, expected):
    with pytest.raises(expected):
        rlz.member_of(obj, value)


@pytest.mark.parametrize(
    ('validator', 'values', 'expected'),
    [(rlz.list_of(identity), (3, 2), ibis.sequence([3, 2])),
     (rlz.list_of(rlz.integer), (3, 2), ibis.sequence([3, 2])),
     (rlz.list_of(rlz.integer), (3, None), ibis.sequence([3, ibis.NA])),
     (rlz.list_of(rlz.string), ('a', ), ibis.sequence(['a'])),
     (rlz.list_of(rlz.string), ['a', 'b'], ibis.sequence(['a', 'b'])),
     pytest.param(
         rlz.list_of(rlz.list_of(rlz.string)),
         [[], ['a']],
         ibis.sequence([[], ['a']]),
         marks=pytest.mark.xfail(raises=ValueError,
                                 reason='Not yet implemented'),
     ),
     (rlz.list_of(rlz.boolean,
                  min_length=2), [True, False], ibis.sequence([True, False]))])
def test_valid_list_of(validator, values, expected):
    result = validator(values)
Esempio n. 6
0
class StringJoin(ValueOp):

    input_type = [string(name='sep'), list_of(string, min_length=1)]
    output_type = rules.shape_like_flatargs('string')
Esempio n. 7
0
class FindInSet(ValueOp):

    input_type = [string(name='needle'), list_of(string, min_length=1)]
    output_type = rules.shape_like_arg(0, 'int64')
Esempio n. 8
0
])
def test_valid_member_of(obj, value, expected):
    assert rlz.member_of(obj, value) == expected


@pytest.mark.parametrize(('obj', 'value', 'expected'),
                         [(Foo, 'c', IbisTypeError), (Bar, 'c', IbisTypeError),
                          (Baz(3), 'b', IbisTypeError)])
def test_invalid_member_of(obj, value, expected):
    with pytest.raises(expected):
        rlz.member_of(obj, value)


@pytest.mark.parametrize(
    ('validator', 'values', 'expected'),
    [(rlz.list_of(identity), 3, ibis.sequence([3])),
     (rlz.list_of(identity), (3, 2), ibis.sequence([3, 2])),
     (rlz.list_of(rlz.integer), (3, 2), ibis.sequence([3, 2])),
     (rlz.list_of(rlz.integer), (3, None), ibis.sequence([3, ibis.NA])),
     (rlz.list_of(rlz.string), 'asd', ibis.sequence(['asd'])),
     (rlz.list_of(rlz.boolean,
                  min_length=2), [True, False], ibis.sequence([True, False]))])
def test_valid_list_of(validator, values, expected):
    result = validator(values)
    assert result.equals(expected)


@pytest.mark.parametrize(('validator', 'values', 'expected'), [
    (rlz.list_of(rlz.double, min_length=2), [1], IbisTypeError),
    (rlz.list_of(rlz.integer), 1.1, IbisTypeError),
])
Esempio n. 9
0
    ('obj', 'value', 'expected'),
    [
        (Foo, 'c', IbisTypeError),
        (Bar, 'c', IbisTypeError),
        (Baz(3), 'b', IbisTypeError),
    ],
)
def test_invalid_member_of(obj, value, expected):
    with pytest.raises(expected):
        rlz.member_of(obj, value)


@pytest.mark.parametrize(
    ('validator', 'values', 'expected'),
    [
        (rlz.list_of(identity), (3, 2), ibis.sequence([3, 2])),
        (rlz.list_of(rlz.integer), (3, 2), ibis.sequence([3, 2])),
        (rlz.list_of(rlz.integer), (3, None), ibis.sequence([3, ibis.NA])),
        (rlz.list_of(rlz.string), ('a',), ibis.sequence(['a'])),
        (rlz.list_of(rlz.string), ['a', 'b'], ibis.sequence(['a', 'b'])),
        pytest.param(
            rlz.list_of(rlz.list_of(rlz.string)),
            [[], ['a']],
            ibis.sequence([[], ['a']]),
            marks=pytest.mark.xfail(
                raises=ValueError, reason='Not yet implemented'
            ),
        ),
        (
            rlz.list_of(rlz.boolean, min_length=2),
            [True, False],