Exemple #1
0
def test_parse_signature():
    assert (UFuncSignature([['x']]) ==
            UFuncSignature.from_string('(x)->()'))
    assert (UFuncSignature([['x', 'y']]) ==
            UFuncSignature.from_string('(x,y)->()'))
    assert (UFuncSignature([['x'], ['y']]) ==
            UFuncSignature.from_string('(x),(y)->()'))
    assert (UFuncSignature([['x']], [['y'], []]) ==
            UFuncSignature.from_string('(x)->(y),()'))
    with pytest.raises(ValueError):
        UFuncSignature.from_string('(x)(y)->()')
    with pytest.raises(ValueError):
        UFuncSignature.from_string('(x),(y)->')
    with pytest.raises(ValueError):
        UFuncSignature.from_string('((x))->(x)')
Exemple #2
0
def test_signature_properties():
    sig = UFuncSignature.from_string('(x),(x,y)->(z)')
    assert sig.input_core_dims == (('x',), ('x', 'y'))
    assert sig.output_core_dims == (('z',),)
    assert sig.all_input_core_dims == frozenset(['x', 'y'])
    assert sig.all_output_core_dims == frozenset(['z'])
    assert sig.n_inputs == 2
    assert sig.n_outputs == 1
    # dimension names matter
    assert UFuncSignature([['x']]) != UFuncSignature([['y']])