def _save_experiment_and_maybe_generation_strategy_to_db_if_possible( self, save_generation_strategy: bool = True) -> bool: """Saves attached experiment and generation strategy if DB settings are set on this AxClient instance. Returns: bool: Whether the experiment was saved. """ if self.db_settings is not None: for i in range(3): try: if save_generation_strategy: save_experiment_and_generation_strategy( experiment=self.experiment, generation_strategy=self.generation_strategy, db_settings=self.db_settings, ) else: save_experiment(experiment=self.experiment, db_settings=self.db_settings) return True except OperationalError as err: # pragma: no covert if i < 2 or self._suppress_storage_errors: logger.exception(err) continue raise return False
def test_save_load_experiment(self): exp = get_experiment() init_test_engine_and_session_factory() db_settings = DBSettings(url="sqlite://") save_experiment(exp, db_settings) load_experiment(exp.name, db_settings) simple_experiment = get_simple_experiment() save_experiment(simple_experiment, db_settings) with self.assertRaisesRegex(ValueError, "Service API only"): load_experiment(simple_experiment.name, db_settings)
def test_save_load_experiment_and_generation_strategy(self): exp, gs = load_experiment_and_generation_strategy( self.exp.name, self.db_settings) self.assertIsNone(gs) gs = get_generation_strategy() gs._experiment = self.exp save_experiment(self.exp, self.db_settings) save_generation_strategy(gs, self.db_settings) exp, gs = load_experiment_and_generation_strategy( self.exp.name, self.db_settings) self.assertIsNotNone(gs)
def _save_experiment_to_db_if_possible( self, suppress_all_errors: bool = False ) -> bool: """Saves attached experiment and generation strategy if DB settings are set on this AxClient instance. Returns: bool: Whether the experiment was saved. """ if self.db_settings is not None: save_experiment(experiment=self.experiment, db_settings=self.db_settings) return True return False
def _save_experiment_to_db_if_possible( self, experiment: Experiment, suppress_all_errors: bool = False) -> bool: """Saves attached experiment and generation strategy if DB settings are set on this `WithDBSettingsBase` instance. Returns: bool: Whether the experiment was saved. """ if self.db_settings_set: save_experiment(experiment=experiment, db_settings=self.db_settings) return True return False
def test_save_load_experiment(self): exp = get_experiment() init_test_engine_and_session_factory(force_init=True) db_settings = DBSettings( encoder=Encoder(config=SQAConfig()), decoder=Decoder(config=SQAConfig()), creator=None, ) save_experiment(exp, db_settings) load_experiment(exp.name, db_settings) simple_experiment = get_simple_experiment() save_experiment(simple_experiment, db_settings) with self.assertRaisesRegex(ValueError, "Service API only"): load_experiment(simple_experiment.name, db_settings)
def _save_experiment_to_db_if_possible( self, experiment: Experiment, suppress_all_errors: bool = False ) -> bool: """Saves attached experiment and generation strategy if DB settings are set on this `WithDBSettingsBase` instance. Args: experiment: Experiment to save new trials in DB. suppress_all_errors: Flag for `retry_on_exception` that makes the decorator suppress the thrown exception even if it occurred in all the retries (exception is still logged). Returns: bool: Whether the experiment was saved. """ if self.db_settings_set: save_experiment(experiment=experiment, db_settings=self.db_settings) return True return False
def test_save_load_experiment(self): load_experiment(self.exp.name, self.db_settings) simple_experiment = get_simple_experiment() save_experiment(simple_experiment, self.db_settings) with self.assertRaisesRegex(ValueError, "Service API only"): load_experiment(simple_experiment.name, self.db_settings)
def setUp(self): self.exp = get_experiment() init_test_engine_and_session_factory(force=True) self.db_settings = DBSettings(url="sqlite://") save_experiment(self.exp, self.db_settings)