Source code for fumus.decorators.wrapper

from functools import wraps

from fumus.utils import Optional, Result

# Naive implementations -> one could do better than this


[docs] def returns_optional(func): @wraps(func) def wrapper(*args, **kw): return Optional.of_nullable(func(*args, *kw)) return wrapper
[docs] def returns_result(*err_list): def handle_errors(func): exceptions = tuple(set(err_list).union((Exception,))) @wraps(func) def invoke_func(*args, **kw): try: result = func(*args, *kw) except exceptions as err: return Result.failure(err) return Result.success(result) return invoke_func return handle_errors