Source code for spikelab.batch_jobs.validation

"""Validation helpers for CLI/API job inputs."""

from __future__ import annotations

from typing import Any, Dict

from pydantic import ValidationError

from .models import JobSpec, RunConfig


[docs] def validate_job_spec(payload: Dict[str, Any]) -> JobSpec: """Parse and validate a raw job spec payload.""" return JobSpec.model_validate(payload)
[docs] def validate_run_config(payload: Dict[str, Any]) -> RunConfig: """Parse and validate a run config payload.""" return RunConfig.model_validate(payload)
[docs] def summarize_validation_error(exc: ValidationError) -> str: """Return a concise human-readable validation summary.""" parts = [] for issue in exc.errors(): loc = ".".join(str(item) for item in issue.get("loc", [])) msg = issue.get("msg", "invalid value") parts.append(f"{loc}: {msg}" if loc else msg) return "; ".join(parts)