Source code for job_execution.backends.base
"""Protocol and exceptions shared by execution backends."""
from typing import Protocol
from simtools.job_execution.job import ExecutionOptions, JobResult, JobSpec, SubmissionHandle
[docs]
class BackendError(RuntimeError):
"""Base class for backend failures."""
[docs]
class BackendConfigurationError(BackendError):
"""Raised when backend configuration is invalid or unavailable."""
[docs]
class BackendSubmissionError(BackendError):
"""Raised when a backend cannot submit a job set."""
[docs]
class BackendExecutionError(BackendError):
"""Raised when one or more submitted jobs fail."""
[docs]
class ExecutionBackend(Protocol):
"""Protocol implemented by all job-execution backends."""
[docs]
def submit(self, job_specs: list[JobSpec], options: ExecutionOptions) -> SubmissionHandle:
"""Submit jobs and return a handle."""
[docs]
def wait(self, submission: SubmissionHandle) -> list[JobResult]:
"""Wait for completion and return ordered results."""
[docs]
def is_finished(self, submission: SubmissionHandle) -> bool:
"""Return whether a submission has completed."""
[docs]
def collect(self, submission: SubmissionHandle) -> list[JobResult]:
"""Collect results after a submission has finished."""
[docs]
def cancel(self, submission: SubmissionHandle) -> None:
"""Cancel an active submission."""