"""Custom exceptions for Gitea Runner Manager.""" class GRMError(Exception): """Base exception for all Gitea Runner Manager errors.""" pass class AnsibleError(GRMError): """Raised when an Ansible command fails.""" pass class APIError(GRMError): """Raised when a REST API call returns an HTTP error.""" def __init__(self, status: int, message: str) -> None: self.status = status self.message = message super().__init__(f"HTTP {status}: {message}")