Source code for pyvergeos.exceptions

"""Custom exceptions for pyvergeos.

Note: Exception names are prefixed with 'Verge' to avoid shadowing
Python builtins (ConnectionError, TimeoutError).
"""

from typing import Optional


[docs] class VergeError(Exception): """Base exception for all pyvergeos errors.""" pass
[docs] class VergeConnectionError(VergeError): """Connection to VergeOS failed.""" pass
[docs] class NotConnectedError(VergeError): """Operation attempted without an active connection.""" pass
[docs] class VergeTimeoutError(VergeError): """Request timed out.""" pass
[docs] class APIError(VergeError): """Base class for API errors."""
[docs] def __init__(self, message: str, status_code: Optional[int] = None) -> None: super().__init__(message) self.status_code = status_code
[docs] class AuthenticationError(APIError): """Authentication failed (401/403).""" pass
[docs] class NotFoundError(APIError): """Resource not found (404).""" pass
[docs] class ConflictError(APIError): """Resource conflict (409).""" pass
[docs] class ValidationError(APIError): """Validation error (422).""" pass
[docs] class TaskError(VergeError): """Task execution failed."""
[docs] def __init__(self, message: str, task_id: Optional[int] = None) -> None: super().__init__(message) self.task_id = task_id
[docs] class TaskTimeoutError(TaskError): """Task wait timed out.""" pass