def test__stack_raises_when_kwargs_list_lengths_and_stackers_lengths_differ(): with pytest.raises(ValueError) as e: _stack(['a', 'b', 'c'], 'foo', 'bar', baz=[1, 2], quux=[3, 4]) assert str(e).endswith( "Keyword argument sequences for broadcasting must be the same length as stackers" )
def test__stack_raises_when_spec_in_kwargs(): with pytest.raises(ValueError) as e: _stack(['a', 'b'], 'foo', 'bar', foo=10) assert str(e).endswith("Stack property 'foo' cannot appear in keyword args") with pytest.raises(ValueError) as e: _stack(['a', 'b'], 'foo', 'bar', bar=10) assert str(e).endswith("Stack property 'bar' cannot appear in keyword args")
def test__stack_broadcast_with_no_kwargs(): stackers = ['a', 'b', 'c', 'd'] kws = _stack(stackers, 'start', 'end') assert len(kws) == len(stackers) for i, kw in enumerate(kws): assert set(['start', 'end']) == set(kw.keys()) assert list(kw['start']['expr'].fields) == stackers[:i] assert list(kw['end']['expr'].fields) == stackers[:(i+1)]
def test__stack_broadcast_with_no_kwargs(): stackers = ['a', 'b', 'c', 'd'] kws = _stack(stackers, 'start', 'end') assert len(kws) == len(stackers) for i, kw in enumerate(kws): assert set(['start', 'end']) == set(kw.keys()) assert list(kw['start']['expr'].fields) == stackers[:i] assert list(kw['end']['expr'].fields) == stackers[:(i + 1)]
def test__stack_broadcast_with_list_kwargs(): stackers = ['a', 'b', 'c', 'd'] kws = _stack(stackers, 'start', 'end', foo=[10, 20, 30, 40], bar="baz") assert len(kws) == len(stackers) for i, kw in enumerate(kws): assert set(['start', 'end', 'foo', 'bar']) == set(kw.keys()) assert list(kw['start']['expr'].fields) == stackers[:i] assert list(kw['end']['expr'].fields) == stackers[:(i+1)] assert kw['foo'] == [10, 20, 30, 40][i] assert kw['bar'] == "baz"
def test__stack_broadcast_with_list_kwargs(): stackers = ['a', 'b', 'c', 'd'] kws = _stack(stackers, 'start', 'end', foo=[10, 20, 30, 40], bar="baz") assert len(kws) == len(stackers) for i, kw in enumerate(kws): assert set(['start', 'end', 'foo', 'bar']) == set(kw.keys()) assert list(kw['start']['expr'].fields) == stackers[:i] assert list(kw['end']['expr'].fields) == stackers[:(i + 1)] assert kw['foo'] == [10, 20, 30, 40][i] assert kw['bar'] == "baz"
def test__stack_broadcast_name_scalar_overrides(): stackers = ['a', 'b', 'c', 'd'] kws = _stack(stackers, 'start', 'end', foo=[10, 20, 30, 40], bar="baz", name="name") assert len(kws) == len(stackers) for i, kw in enumerate(kws): assert set(['start', 'end', 'foo', 'bar', 'name']) == set(kw.keys()) assert list(kw['start']['expr'].fields) == stackers[:i] assert list(kw['end']['expr'].fields) == stackers[:(i+1)] assert kw['foo'] == [10, 20, 30, 40][i] assert kw['bar'] == "baz" assert kw['name'] == "name"
def test__stack_raises_when_kwargs_list_lengths_and_stackers_lengths_differ(): with pytest.raises(ValueError) as e: _stack(['a', 'b', 'c'], 'foo', 'bar', baz=[1, 2], quux=[3,4]) assert str(e).endswith("Keyword argument sequences for broadcasting must be the same length as stackers")