blob: 0aa212a96b8ec4744ad815010bcb174511f211bc [file] [log] [blame]
from hamilton.function_modifiers import apply_to, mutate, source, value
def upstream() -> str:
return "-upstream-"
def user_input() -> str:
return "-user input-"
def f_of_interest(user_input: str) -> str:
return user_input + "-raw function-"
def downstream_f(f_of_interest: str) -> str:
return f_of_interest + "-downstream."
@mutate(f_of_interest)
def _mutate0(x: str) -> str:
return x + "-post pipe 0-"
@mutate(apply_to(f_of_interest, upstream=source("upstream")).named("random"))
def _mutate1(x: str, upstream: str) -> str:
return x + f"-post pipe 1 with {upstream}-"
@mutate(apply_to(f_of_interest, some_val=value(1000)))
def _mutate2(x: str, some_val: int) -> str:
return x + f"-post pipe 2 with value {some_val}-"
def chain_not_using_mutate() -> str:
t = downstream_f(_mutate2(_mutate1(_mutate0(f_of_interest(user_input())), upstream()), 1000))
return t
def v() -> int:
return 10
def chain_1_using_mutate(v: int) -> int:
return v * 10
def chain_1_not_using_mutate(v: int, input_1: int, input_2: int, calc_c: bool = False) -> int:
start = v * 10
a = _add_one(start)
b = _add_two(a)
c = _add_n(b, n=3) if calc_c else b
d = _add_n(c, n=input_1)
e = _multiply_n(d, n=input_2)
return e
def chain_2_using_mutate(v: int) -> int:
return v + 10
def chain_2_not_using_mutate(v: int, input_3: int, calc_c: bool = False) -> int:
start = v + 10
a = _square(start)
b = _multiply_n(a, n=2)
return b
@mutate(
apply_to(chain_2_using_mutate).named("a"),
)
def _square(v: int) -> int:
return v * v
@mutate(
apply_to(chain_1_using_mutate).named("a"),
)
def _add_one(v: int) -> int:
return v + 1
@mutate(
apply_to(chain_1_using_mutate).named("b"),
)
def _add_two(v: int) -> int:
return v + 2
@mutate(
apply_to(chain_1_using_mutate, n=3).named("c").when(calc_c=True),
apply_to(chain_1_using_mutate, n=source("input_1")).named("d"),
)
def _add_n(v: int, n: int) -> int:
return v + n
@mutate(
apply_to(chain_1_using_mutate).named("e"),
apply_to(chain_2_using_mutate, n=value(2)).named("b"),
n=source("input_2"),
)
def _multiply_n(v: int, *, n: int) -> int:
return v * n