| |
| from typing import Optional, List |
| from .module import BaseModule |
|
|
| class BaseConfig(BaseModule): |
|
|
| """ |
| Base configuration class that serves as parent for all configuration classes. |
| |
| A config should inherit BaseConfig and specify the attributes and their types. |
| Otherwise this will be an empty config. |
| """ |
| def save(self, path: str, **kwargs)-> str: |
|
|
| """Save configuration to the specified path. |
| |
| Args: |
| path: The file path to save the configuration |
| **kwargs (Any): Additional keyword arguments passed to save_module method |
| |
| Returns: |
| str: The path where the file was saved |
| """ |
| return super().save_module(path, **kwargs) |
|
|
| def get_config_params(self) -> List[str]: |
| """Get a list of configuration parameters. |
| |
| Returns: |
| List[str]: List of configuration parameter names, excluding 'class_name' |
| """ |
| config_params = list(type(self).model_fields.keys()) |
| config_params.remove("class_name") |
| return config_params |
|
|
| def get_set_params(self, ignore: List[str] = []) -> dict: |
| """Get a dictionary of explicitly set parameters. |
| |
| Args: |
| ignore: List of parameter names to ignore |
| |
| Returns: |
| dict: Dictionary of explicitly set parameters, excluding 'class_name' and ignored parameters |
| """ |
| explicitly_set_fields = {field: getattr(self, field) for field in self.model_fields_set} |
| if self.kwargs: |
| explicitly_set_fields.update(self.kwargs) |
| for field in ignore: |
| explicitly_set_fields.pop(field, None) |
| explicitly_set_fields.pop("class_name", None) |
| return explicitly_set_fields |
|
|
|
|
| class Parameter(BaseModule): |
| """Parameter class used to define configuration parameters. |
| |
| Attributes: |
| name: Parameter name |
| type: Parameter type |
| description: Parameter description |
| required: Whether the parameter is required, defaults to True |
| """ |
| name: str |
| type: str |
| description: str |
| required: Optional[bool] = True |
|
|
|
|