def from_call(f: Callable[..., A], *args, **kwargs): exc = kwargs.pop('exc', Exception) try: return Maybe.check(f(*args, **kwargs)) except exc: if exc == Exception: from amino.logging import log frame = inspect.currentframe().f_back # type: ignore stack = traceback.format_stack(frame) log.exception('Maybe.from_call:') log.error(''.join(stack)) return Nothing
def s() -> str: try: return format_funcall(f, Lists.wrap(a), kw) except Exception as e: return str(f) log.error(str(e))
def run() -> None: try: f(*a, **kw).attempt.lmap( lambda a: log.error(f'forked IO failed: {a}')) except Exception as e: log.caught_exception_error(f'running forked IO', e)