exlab_wizard.config.models#
Pydantic models that mirror config.yaml. Backend Spec §9.
These models are the typed schema for the on-disk config.yaml. The loader
(exlab_wizard.config.loader) parses YAML into a plain dict, hands it to
Config.model_validate, and converts any Pydantic ValidationError into a
ConfigError at the boundary; nothing here raises ConfigError directly
except for cases that need a custom message before the model layer sees the
input (for instance the password-key rejection in
RsyncSshTransport).
Style:
- model_config = ConfigDict(extra="forbid", str_strip_whitespace=True) on
every model so unknown keys raise a clear validation error.
StrEnumvalues are accepted in either string or enum form; Pydantic v2 lax mode coerces raw strings to enum members, and the spec stores the string value verbatim on dump (viaStrEnum.valueor explicitfield_serializer).All cross-field invariants from §9 are encoded as ``model_validator``s.
Classes
|
|
|
One |
|
Top-level |
|
One |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
One operator-defined extra README field. |
|
|
|
|
|
|
|
|
- class exlab_wizard.config.models.BandwidthConfig(**data)[source]#
Bases:
BaseModelbandwidth:sub-block on a transport.- Parameters:
data (
Any)
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'str_strip_whitespace': True}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- schedule: list[BandwidthWindow]#
- class exlab_wizard.config.models.BandwidthWindow(**data)[source]#
Bases:
BaseModelOne
{days, from, to}window. Backend Spec §9.- Parameters:
data (
Any)
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'populate_by_name': True, 'str_strip_whitespace': True, 'validate_by_alias': True, 'validate_by_name': True}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class exlab_wizard.config.models.Config(**data)[source]#
Bases:
BaseModelTop-level
config.yamlmodel. Mirrors §9 verbatim.- Parameters:
data (
Any)
- equipment: list[EquipmentConfig]#
- lims: LIMSConfig#
- logging: LoggingConfig#
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'str_strip_whitespace': True}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- nas_cleanup: NASCleanupConfig#
- operators: OperatorsConfig#
- orchestrator: OrchestratorConfig#
- paths: PathsConfig#
- plugins: PluginsConfig#
- readme: READMEConfig#
- sync: SyncConfig#
- validator: ValidatorConfig#
- class exlab_wizard.config.models.EquipmentConfig(**data)[source]#
Bases:
BaseModelOne
equipment:list entry. Backend Spec §9.- Parameters:
data (
Any)
- completeness_signal: CompletenessSignal#
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'str_strip_whitespace': True}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- orchestrator_staging_transport: OrchestratorStagingTransport | None#
- transport: Annotated[RcloneTransport | RsyncSshTransport, FieldInfo(annotation=NoneType, required=True, discriminator='type')]#
- class exlab_wizard.config.models.LIMSConfig(**data)[source]#
Bases:
BaseModellims:block. Read-only LIMS endpoint plus offline catalogue path.- Parameters:
data (
Any)
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'str_strip_whitespace': True}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class exlab_wizard.config.models.LoggingConfig(**data)[source]#
Bases:
BaseModellogging:block. Central app-log rotation + level.- Parameters:
data (
Any)
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'str_strip_whitespace': True}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class exlab_wizard.config.models.NASCleanupConfig(**data)[source]#
Bases:
BaseModelnas_cleanup:block. Local-copy retention after NAS verify.- Parameters:
data (
Any)
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'str_strip_whitespace': True}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class exlab_wizard.config.models.OperatorsConfig(**data)[source]#
Bases:
BaseModeloperators:block. Optional case-sensitive allowlist.- Parameters:
data (
Any)
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'str_strip_whitespace': True}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class exlab_wizard.config.models.OrchestratorConfig(**data)[source]#
Bases:
BaseModelorchestrator:block. Backend Spec §9, §13.- Parameters:
data (
Any)
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'str_strip_whitespace': True}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- staging_cleanup: OrchestratorStagingCleanup#
- class exlab_wizard.config.models.OrchestratorStagingCleanup(**data)[source]#
Bases:
BaseModelorchestrator.staging_cleanup:sub-block. Backend Spec §13.7.- Parameters:
data (
Any)
- mode: StagingCleanupMode#
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'str_strip_whitespace': True}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class exlab_wizard.config.models.OrchestratorStagingTransport(**data)[source]#
Bases:
BaseModelorchestrator_staging_transport:– staging hop only. Backend Spec §13.- Parameters:
data (
Any)
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'str_strip_whitespace': True}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- type: OrchestratorTransportType#
- class exlab_wizard.config.models.PathsConfig(**data)[source]#
Bases:
BaseModelpaths:block. Templates / plugins / equipment-first local root.- Parameters:
data (
Any)
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'str_strip_whitespace': True}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class exlab_wizard.config.models.PluginsConfig(**data)[source]#
Bases:
BaseModelplugins:block. Master opt-in for network-declaring plugins.- Parameters:
data (
Any)
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'str_strip_whitespace': True}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class exlab_wizard.config.models.READMEConfig(**data)[source]#
Bases:
BaseModelreadme:block. Lab-policy fields layered on top of the core set.- Parameters:
data (
Any)
- defaults: list[READMEDefaultField]#
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'str_strip_whitespace': True}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class exlab_wizard.config.models.READMEDefaultField(**data)[source]#
Bases:
BaseModelOne operator-defined extra README field. Backend Spec §9, §10.
- Parameters:
data (
Any)
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'str_strip_whitespace': True}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- type: FieldType#
- class exlab_wizard.config.models.RcloneTransport(**data)[source]#
Bases:
BaseModeltransport:block whentype == 'rclone'.- Parameters:
data (
Any)
- bandwidth: BandwidthConfig#
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'str_strip_whitespace': True}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class exlab_wizard.config.models.RsyncSshTransport(**data)[source]#
Bases:
BaseModeltransport:block whentype == 'rsync_ssh'.The model rejects any input dict that contains a
passwordkey. SSH password auth is forbidden by spec; only key-based auth is supported. Theextra='forbid'setting also rejects the field, but the explicitmode='before'validator emits a more actionable error message.- Parameters:
data (
Any)
- bandwidth: BandwidthConfig#
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'str_strip_whitespace': True}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class exlab_wizard.config.models.SyncConfig(**data)[source]#
Bases:
BaseModelsync:block. NAS sync engine kill-switch + retry policy.- Parameters:
data (
Any)
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'str_strip_whitespace': True}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class exlab_wizard.config.models.ValidatorConfig(**data)[source]#
Bases:
BaseModelvalidator:block. Content-scan tuning. Backend Spec §8.1.1, §11.8.- Parameters:
data (
Any)
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'str_strip_whitespace': True}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].