Source code for miniworld.decorators
__author__ = 'Nils Schmidt'
[docs]def memoize_pos_args(fun):
''' Memoize the functions positional arguments and return the same result for it '''
# arguments, result
memo = {}
def wrapper(*args, **kwargs):
if args in memo:
return memo[args]
else:
memoize = True
if kwargs.get("no_memoize"):
del kwargs["no_memoize"]
memoize = False
res = fun(*args, **kwargs)
if memoize:
memo[args] = res
return res
return wrapper