blob: 723a44fc883528462a59a5f44aa75ce7a527f3a6 [file] [log] [blame]
import collections
import functools
from hamilton.htypes import Collect, Parallelizable
_fn_call_counter = collections.Counter()
def _track_fn_call(fn) -> callable:
@functools.wraps(fn)
def wrapped(*args, **kwargs):
_fn_call_counter[fn.__name__] += 1
return fn(*args, **kwargs)
return wrapped
def _reset_counter():
_fn_call_counter.clear()
@_track_fn_call
def not_to_repeat() -> int:
return -1
@_track_fn_call
def number_to_repeat(iterations: int) -> Parallelizable[int]:
for i in range(iterations):
yield i
@_track_fn_call
def something_else_not_to_repeat() -> int:
return -2
@_track_fn_call
def double(number_to_repeat: int) -> int:
return number_to_repeat * 2
@_track_fn_call
def summed(double: Collect[int], not_to_repeat: int, something_else_not_to_repeat: int) -> int:
return sum(double) + not_to_repeat + something_else_not_to_repeat