Source code for gcip2.tasks_core.models.params

 1import dataclasses
 2import typing
 3
 4import injector
 5import pydantic
 6
 7from gcip2.project_config import ProjectConfig
 8
 9
[docs] 10class Param(pydantic.BaseModel): 11 name: str 12 default: typing.Any = None 13 long: str 14 15 short: typing.Optional[str] = "" 16 type: typing.Callable[[typing.Any], typing.Any] = lambda x: x 17 help: typing.Optional[str] = None 18 env_var: typing.Optional[str] = None 19 inverse: typing.Optional[str] = None
20 21
[docs] 22@injector.inject 23@dataclasses.dataclass 24class Params: 25 config: ProjectConfig 26
[docs] 27 def ci(self): 28 return Param( 29 name="ci", 30 long="ci", 31 type=bool, 32 default=False, 33 env_var="CI", 34 )
35
[docs] 36 def from_config(self, key: str, **kwargs): 37 return Param( 38 name=f"extra__{key}", 39 long=key.replace("_", "-"), 40 default=(self.config.extra.model_extra or {}).get(key), 41 **kwargs, 42 )