# app/modules/dev_tools/exceptions.py """ Dev-Tools Module Exceptions Module-specific exceptions for code quality and test runner functionality. Re-exports code quality exceptions from the legacy location and adds test runner specific exceptions. """ from app.exceptions.base import ( ExternalServiceException, ResourceNotFoundException, ) # Re-export code quality exceptions from their module location from app.modules.monitoring.exceptions import ( InvalidViolationStatusException, ScanExecutionException, ScanNotFoundException, ScanParseException, ScanTimeoutException, ViolationNotFoundException, ViolationOperationException, ) # ============================================================================= # Test Runner Exceptions (defined here as they don't exist in legacy location) # ============================================================================= class TestRunNotFoundException(ResourceNotFoundException): # noqa: MOD025 """Raised when a test run is not found.""" def __init__(self, run_id: int): super().__init__( resource_type="TestRun", identifier=str(run_id), error_code="TEST_RUN_NOT_FOUND", ) class TestExecutionException(ExternalServiceException): # noqa: MOD025 """Raised when test execution fails.""" def __init__(self, reason: str): super().__init__( service_name="TestRunner", message=f"Test execution failed: {reason}", error_code="TEST_EXECUTION_FAILED", ) class TestTimeoutException(ExternalServiceException): # noqa: MOD025 """Raised when test execution times out.""" def __init__(self, timeout_seconds: int = 3600): super().__init__( service_name="TestRunner", message=f"Test execution timed out after {timeout_seconds} seconds", error_code="TEST_TIMEOUT", ) __all__ = [ # Code quality exceptions (re-exported) "ViolationNotFoundException", "ScanNotFoundException", "ScanExecutionException", "ScanTimeoutException", "ScanParseException", "ViolationOperationException", "InvalidViolationStatusException", # Test runner exceptions (defined here) "TestRunNotFoundException", "TestExecutionException", "TestTimeoutException", ]