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)')
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']])