blob: e440cff257d4c91c1c405130afecd2db130eb3e8 [file] [log] [blame]
from hamilton.function_modifiers import pipe, source, step, value
def _add_one(v: int) -> int:
return v + 1
def _add_n(v: int, n: int) -> int:
return v + n
def _multiply_n(v: int, *, n: int) -> int:
return v * n
def _add_two(v: int) -> int:
return v + 2
def _square(v: int) -> int:
return v * v
def v() -> int:
return 10
@pipe(
step(_add_one).named("a"),
step(_add_two).named("b"),
step(_add_n, n=3).named("c").when(calc_c=True),
step(_add_n, n=source("input_1")).named("d"),
step(_multiply_n, n=source("input_2")).named("e"),
)
def chain_1_using_pipe(v: int) -> int:
return v * 10
def chain_1_not_using_pipe(v: int, input_1: int, input_2: int, calc_c: bool = False) -> int:
a = _add_one(v)
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 * 10
@pipe(
step(_square).named("a"),
step(_multiply_n, n=value(2)).named("b"),
step(_add_n, n=10).named("c").when(calc_c=True),
step(_add_n, n=source("input_3")).named("d"),
step(_add_two).named("e"),
)
def chain_2_using_pipe(v: int) -> int:
return v + 10
def chain_2_not_using_pipe(v: int, input_3: int, calc_c: bool = False) -> int:
a = _square(v)
b = _multiply_n(a, n=2)
c = _add_n(b, n=10) if calc_c else b
d = _add_n(c, n=input_3) # Assuming "upstream" refers to the same value as "v" here
e = _add_two(d)
return e + 10