Bases: KiaraModel
Base class that describes the configuration a [KiaraModule
][kiara.module.KiaraModule] class accepts.
This is stored in the _config_cls
class attribute in each KiaraModule
class.
There are two config options every KiaraModule
supports:
Constants are pre-set inputs, and users can't change them and an error is thrown if they try. Defaults are default
values that override the schema defaults, and those can be overwritten by users. If both a constant and a default
value is set for an input field, an error is thrown.
Source code in kiara/models/module/__init__.py
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93 | class KiaraModuleConfig(KiaraModel):
"""Base class that describes the configuration a [``KiaraModule``][kiara.module.KiaraModule] class accepts.
This is stored in the ``_config_cls`` class attribute in each ``KiaraModule`` class.
There are two config options every ``KiaraModule`` supports:
- ``constants``, and
- ``defaults``
Constants are pre-set inputs, and users can't change them and an error is thrown if they try. Defaults are default
values that override the schema defaults, and those can be overwritten by users. If both a constant and a default
value is set for an input field, an error is thrown.
"""
_kiara_model_id = "instance.module_config"
@classmethod
def requires_config(cls, config: Union[Mapping[str, Any], None] = None) -> bool:
"""Return whether this class can be used as-is, or requires configuration before an instance can be created."""
for field_name, field in cls.__fields__.items():
if field.required and field.default is None:
if config:
if config.get(field_name, None) is None:
return True
else:
return True
return False
_config_hash: str = PrivateAttr(default=None)
constants: Dict[str, Any] = Field(
default_factory=dict, description="Value constants for this module."
)
defaults: Dict[str, Any] = Field(
default_factory=dict, description="Value defaults for this module."
)
class Config:
extra = Extra.forbid
validate_assignment = True
def get(self, key: str) -> Any:
"""Get the value for the specified configuation key."""
if key not in self.__fields__:
raise Exception(
f"No config value '{key}' in module config class '{self.__class__.__name__}'."
)
return getattr(self, key)
def create_renderable(self, **config: Any) -> RenderableType:
my_table = Table(box=box.MINIMAL, show_header=False)
my_table.add_column("Field name", style="i")
my_table.add_column("Value")
for field in self.__fields__:
attr = getattr(self, field)
if isinstance(attr, str):
attr_str = attr
elif hasattr(attr, "create_renderable"):
attr_str = attr.create_renderable()
elif isinstance(attr, BaseModel):
attr_str = attr.json(option=orjson.orjson.OPT_INDENT_2)
else:
attr_str = str(attr)
my_table.add_row(field, attr_str)
return my_table
|
Attributes
constants: Dict[str, Any] = Field(default_factory=dict, description='Value constants for this module.')
class-attribute
defaults: Dict[str, Any] = Field(default_factory=dict, description='Value defaults for this module.')
class-attribute
Classes
Config
Source code in kiara/models/module/__init__.py
| class Config:
extra = Extra.forbid
validate_assignment = True
|
Attributes
validate_assignment = True
class-attribute
Functions
requires_config(config: Union[Mapping[str, Any], None] = None) -> bool
classmethod
Return whether this class can be used as-is, or requires configuration before an instance can be created.
Source code in kiara/models/module/__init__.py
41
42
43
44
45
46
47
48
49
50
51
52 | @classmethod
def requires_config(cls, config: Union[Mapping[str, Any], None] = None) -> bool:
"""Return whether this class can be used as-is, or requires configuration before an instance can be created."""
for field_name, field in cls.__fields__.items():
if field.required and field.default is None:
if config:
if config.get(field_name, None) is None:
return True
else:
return True
return False
|
get(key: str) -> Any
Get the value for the specified configuation key.
Source code in kiara/models/module/__init__.py
66
67
68
69
70
71
72
73
74 | def get(self, key: str) -> Any:
"""Get the value for the specified configuation key."""
if key not in self.__fields__:
raise Exception(
f"No config value '{key}' in module config class '{self.__class__.__name__}'."
)
return getattr(self, key)
|
create_renderable(**config: Any) -> RenderableType
Source code in kiara/models/module/__init__.py
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93 | def create_renderable(self, **config: Any) -> RenderableType:
my_table = Table(box=box.MINIMAL, show_header=False)
my_table.add_column("Field name", style="i")
my_table.add_column("Value")
for field in self.__fields__:
attr = getattr(self, field)
if isinstance(attr, str):
attr_str = attr
elif hasattr(attr, "create_renderable"):
attr_str = attr.create_renderable()
elif isinstance(attr, BaseModel):
attr_str = attr.json(option=orjson.orjson.OPT_INDENT_2)
else:
attr_str = str(attr)
my_table.add_row(field, attr_str)
return my_table
|