def my_function( a: either("xx", bool), b: str = "bb", c: vector(length=2) = (4.0, 4), d: Tuple[str, bool] = ("yes", True), e: float = 22.0, ): return a
def test_validated_types(): Choice = either("a", vector(int, length=2)) assert Choice("a").is_valid() assert not Choice("b").is_valid() assert Choice([1, 2]).is_valid() assert Choice(np.array((4, 4))).is_valid() assert not Choice((4.0, 2.0)).is_valid() assert not Choice((4.1, 2.0)).is_valid() assert not Choice([1, 2, 3]).is_valid() assert not Choice([1]).is_valid() assert not Choice([[1, 2]]).is_valid()
def test_vector_bool(): Vector = vector(bool) assert not Vector("not a numeric vector").is_valid() assert not Vector([1, 2]).is_valid() assert not Vector((1, 2)).is_valid() assert Vector((True, False)).is_valid() assert not Vector((9.9, False)).is_valid() assert not Vector(np.array((9.9, False))).is_valid() assert not Vector([1, 2]).is_valid() assert not Vector([1, 2, 88.8, False]).is_valid() assert not Vector([1, 4 - 0.1j]).is_valid() assert not Vector([1, 2, 88.8, 4 - 0.1j]).is_valid() assert not Vector(np.array([1, 2, 88.8, 4 - 0.1j])).is_valid()
def test_vector_shape(): Vector = vector(float, length=2) assert not Vector("not a numeric vector").is_valid() assert Vector([1, 2]).is_valid() assert Vector((1, 2)).is_valid() assert Vector((True, False)).is_valid() assert Vector((9.9, False)).is_valid() assert Vector(np.array((9.9, False))).is_valid() assert Vector([1, 2]).is_valid() assert not Vector([1]).is_valid() assert not Vector([1, 2, 88.8, False]).is_valid() assert not Vector([1, 4 - 0.1j]).is_valid() assert not Vector([1, 2, 88.8, 4 - 0.1j]).is_valid() assert not Vector(np.array([1, 2, 88.8, 4 - 0.1j])).is_valid()