Source code for alts.core.experiment_module

#Version 1.1.1 conform as of 18.12.2024
"""
| *alts.core.experiment_module*
"""
from __future__ import annotations
from dataclasses import dataclass, field
from typing import TYPE_CHECKING

from alts.core.configuration import Configurable, Required, is_set, post_init

if TYPE_CHECKING:
    from typing_extensions import Self #type: ignore
    from alts.core.experiment_modules import ExperimentModules
    from alts.core.data.data_pools import DataPools
    from alts.core.oracle.oracles import Oracles

[docs] class ExperimentModule(Configurable): """ ExperimentModule(exp_modules) | **Description** | An ExperimentModule is a fully setup experiment, ready to be run. :param exp_modules: A collection of already configured and setup experiment modules :type exp_modules: ExperimentModules """ exp_modules: ExperimentModules = post_init() def __call__(self, exp_modules: Required[ExperimentModules] = None, **kwargs) -> Self: """ __call__(self, exp_modules, **kwargs) -> ExperimentModule | **Description** | Creates a new instance of itself with the given configuration. :param exp_modules: A collection of already configured and setup experiment modules :type exp_modules: ExperimentModules :param **kwargs: Keyword arguments for configuration :type **kwargs: Any :return: Newly configured object :rtype: ExperimentModule """ obj = super().__call__( **kwargs) obj.exp_modules = is_set(exp_modules) return obj @property def data_pools(self) -> DataPools: """ data_pools(self) -> DataPools | **Description** | Returns the experiment's data pools. :return: The experiment's data pools :rtype: DataPools """ return self.exp_modules.data_pools @property def oracles(self) -> Oracles: """ oracles(self) -> Oracles | **Description** | Returns the experiment's oracles. :return: The experiment's oracles :rtype: Oracles """ return self.exp_modules.oracles