def finalize_initialization(self, run): # look at seed again, because it might have changed during the # configuration process if 'seed' in self.config: self.seed = self.config['seed'] self.rnd = create_rnd(self.seed) for cfunc in self._captured_functions: # Setup the captured function cfunc.logger = self.logger.getChild(cfunc.__name__) seed = get_seed(self.rnd) cfunc.rnd = create_rnd(seed) cfunc.run = run cfunc.config = get_by_dotted_path(self.get_fixture(), cfunc.prefix, default={}) # Make configuration read only if enabled in settings if SETTINGS.CONFIG.READ_ONLY_CONFIG: cfunc.config = make_read_only( cfunc.config, error_message='The configuration is read-only in a ' 'captured function!') if not run.force: self._warn_about_suspicious_changes()
def finalize_initialization(self, run): # look at seed again, because it might have changed during the # configuration process if 'seed' in self.config: self.seed = self.config['seed'] self.rnd = create_rnd(self.seed) for cfunc in self._captured_functions: cfunc.logger = self.logger.getChild(cfunc.__name__) cfunc.config = get_by_dotted_path(self.get_fixture(), cfunc.prefix) seed = get_seed(self.rnd) cfunc.rnd = create_rnd(seed) cfunc.run = run self._warn_about_suspicious_changes()
def captured_function(wrapped, instance, args, kwargs): options = fallback_dict(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 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 ================================= 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 set_up_seed(self, rnd=None): if self.seed is not None: return self.seed = self.config.get('seed') or get_seed(rnd) self.rnd = create_rnd(self.seed) if self.generate_seed: self.config['seed'] = self.seed if 'seed' in self.config and 'seed' in self.config_mods.added: self.config_mods.modified.add('seed') self.config_mods.added -= {'seed'} # Hierarchically set the seed of proper subrunners for subrunner_path, subrunner in reversed(list( self.subrunners.items())): if is_prefix(self.path, subrunner_path): subrunner.set_up_seed(self.rnd)