def captured_function(wrapped, instance, args, kwargs): options = FallbackDict(wrapped.config, _config=wrapped.config, _log=wrapped.logger, _run=wrapped.run) if wrapped.uses_randomness: # only generate _seed and _rnd if needed options['_seed'] = get_seed(wrapped.rnd) options['_rnd'] = create_rnd(options['_seed']) bound = (instance is not None) args, kwargs = wrapped.signature.construct_arguments( args, kwargs, options, bound) if wrapped.logger is not None: wrapped.logger.debug("Started") start_time = time.time() # =================== run actual function ================================= with ConfigError.track(wrapped): result = wrapped(*args, **kwargs) # ========================================================================= if wrapped.logger is not None: stop_time = time.time() elapsed_time = timedelta(seconds=round(stop_time - start_time)) wrapped.logger.debug("Finished after %s.", elapsed_time) return result
def fbdict(): return FallbackDict({'fall1': 7, 'fall3': True})