Esempio n. 1
0
    def _save_generation_strategy_to_db_if_possible(
            self,
            generation_strategy: GenerationStrategy,
            suppress_all_errors: bool = False) -> bool:
        """Saves given generation strategy if DB settings are set on this
        `WithDBSettingsBase` instance.

        Args:
            generation_strategy: Generation strategy to save 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 generation strategy was saved.
        """
        if self.db_settings_set:
            start_time = time.time()
            _save_generation_strategy(
                generation_strategy=generation_strategy,
                encoder=self.db_settings.encoder,
            )
            logger.debug(
                f"Saved generation strategy {generation_strategy.name} in "
                f"{_round_floats_for_logging(time.time() - start_time)} seconds."
            )
            return True
        return False
Esempio n. 2
0
def save_experiment_and_generation_strategy(
    experiment: Experiment,
    generation_strategy: GenerationStrategy,
    db_settings: DBSettings,
    overwrite_existing_experiment: bool = False,
) -> None:
    """Save experiment and generation strategy to DB.

    Args:
        experiment: `Experiment` object.
        generation_strategy: Corresponding generation strategy.
        db_settings: Defines behavior for loading/saving experiment to/from db.
        overwrite_existing_experiment: If the experiment being created
            has the same name as some experiment already stored, this flag
            determines whether to overwrite the existing experiment.
            Defaults to False.
    """
    save_experiment(
        experiment=experiment,
        db_settings=db_settings,
        overwrite_existing_experiment=overwrite_existing_experiment,
    )
    _save_generation_strategy(
        generation_strategy=generation_strategy, encoder=db_settings.encoder
    )
Esempio n. 3
0
def save_generation_strategy(generation_strategy: GenerationStrategy,
                             db_settings: DBSettings) -> None:
    """Save generation strategy to DB.

    Args:
        generation_strategy: Corresponding generation strategy.
        db_settings: Defines behavior for loading/saving experiment to/from db.
    """
    _save_generation_strategy(generation_strategy=generation_strategy,
                              encoder=db_settings.encoder)
Esempio n. 4
0
def save_generation_strategy(generation_strategy: GenerationStrategy,
                             db_settings: DBSettings) -> None:
    """Save generation strategy to DB.

    Args:
        generation_strategy: Corresponding generation strategy.
        db_settings: Defines behavior for loading/saving experiment to/from db.
    """
    start_time = time.time()
    _save_generation_strategy(generation_strategy=generation_strategy,
                              encoder=db_settings.encoder)
    logger.debug(
        f"Saved generation strategy {generation_strategy.name} in "
        f"{_round_floats_for_logging(time.time() - start_time)} seconds.")
Esempio n. 5
0
    def setUp(self):
        self.generation_strategy = get_generation_strategy(
            with_experiment=True)
        self.experiment = self.generation_strategy.experiment

        init_test_engine_and_session_factory(force_init=True)
        self.with_db_settings = WithDBSettingsBase(db_settings=DBSettings(
            url="sqlite://"))
        _save_experiment(self.experiment,
                         encoder=self.with_db_settings.db_settings.encoder)
        _save_generation_strategy(
            generation_strategy=self.generation_strategy,
            encoder=self.with_db_settings.db_settings.encoder,
        )
Esempio n. 6
0
def _save_generation_strategy_to_db_if_possible(
    generation_strategy: GenerationStrategy,
    encoder: Encoder,
    decoder: Decoder,
    suppress_all_errors: bool,
) -> None:
    start_time = time.time()
    _save_generation_strategy(
        generation_strategy=generation_strategy,
        encoder=encoder,
        decoder=decoder,
    )
    logger.debug(
        f"Saved generation strategy {generation_strategy.name} in "
        f"{_round_floats_for_logging(time.time() - start_time)} seconds.")
Esempio n. 7
0
def save_experiment_and_generation_strategy(
    experiment: Experiment,
    generation_strategy: GenerationStrategy,
    db_settings: DBSettings,
) -> None:
    """Save experiment and generation strategy to DB.

    Args:
        experiment: `Experiment` object.
        generation_strategy: Corresponding generation strategy.
        db_settings: Defines behavior for loading/saving experiment to/from db.
    """
    save_experiment(experiment=experiment, db_settings=db_settings)
    _save_generation_strategy(generation_strategy=generation_strategy,
                              encoder=db_settings.encoder)
Esempio n. 8
0
    def init_experiment_and_generation_strategy(
        self,
        save_experiment: bool = True,
        save_generation_strategy: bool = True
    ) -> Tuple[Experiment, GenerationStrategy]:
        """ Generate a random Experiment and associated generation_strategy """

        generation_strategy = self.get_random_generation_strategy()
        experiment = self.get_random_experiment()
        generation_strategy.experiment = experiment

        if save_experiment:
            _save_experiment(experiment,
                             encoder=self.with_db_settings.db_settings.encoder)
        if save_generation_strategy:
            _save_generation_strategy(
                generation_strategy=generation_strategy,
                encoder=self.with_db_settings.db_settings.encoder,
            )
        return experiment, generation_strategy