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-08-01 20:51 +0000

1# model/model_blue_prints/blue_print_base.py 

2 

3# global imports 

4import inspect 

5from abc import ABC, abstractmethod 

6 

7# local imports 

8from source.model import ModelAdapterBase 

9 

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 """ 

15 

16 @abstractmethod 

17 def instantiate_model(self, **kwargs) -> ModelAdapterBase: 

18 """ 

19 Instantiates a model based on the provided keyword arguments. 

20 

21 Parameters: 

22 (**kwargs): Keyword arguments containing the parameters needed for model instantiation. 

23 

24 Returns: 

25 (ModelAdapterBase): An instance of the model adapter. 

26 """ 

27 

28 pass 

29 

30 def report_parameters_needed_for_instantiation(self) -> list[str]: 

31 """ 

32 Reports the parameters needed for model instantiation. 

33 

34 Returns: 

35 (list[str]): A list of parameter names that are required for instantiation. 

36 """ 

37 

38 instatiate_function_params = dict(inspect.signature(self.instantiate_model).parameters) 

39 

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]]