Coverage for source/model/model_blue_prints/blue_print_base.py: 70%
10 statements
« prev ^ index » next coverage.py v7.8.0, created at 2025-07-30 20:59 +0000
« prev ^ index » next coverage.py v7.8.0, created at 2025-07-30 20:59 +0000
1# model/model_blue_prints/blue_print_base.py
3# global imports
4import inspect
5from abc import ABC, abstractmethod
7# local imports
8from source.model import ModelAdapterBase
10class BluePrintBase(ABC):
11 """
12 Implements a base class for model blueprints. It provides an interface for
13 instantiating models and reporting parameters needed for instantiation.
14 """
16 @abstractmethod
17 def instantiate_model(self, **kwargs) -> ModelAdapterBase:
18 """
19 Instantiates a model based on the provided keyword arguments.
21 Parameters:
22 (**kwargs): Keyword arguments containing the parameters needed for model instantiation.
24 Returns:
25 (ModelAdapterBase): An instance of the model adapter.
26 """
28 pass
30 def report_parameters_needed_for_instantiation(self) -> list[str]:
31 """
32 Reports the parameters needed for model instantiation.
34 Returns:
35 (list[str]): A list of parameter names that are required for instantiation.
36 """
38 instatiate_function_params = dict(inspect.signature(self.instantiate_model).parameters)
40 return [name for name, param in instatiate_function_params.items()
41 if param.default is param.empty and param.kind not in [param.VAR_KEYWORD, param.VAR_POSITIONAL]]