Skip to content

ccproxy.core.errors

ccproxy.core.errors

Core error types for the proxy system.

ProxyError

ProxyError(message, cause=None)

Bases: Exception

Base exception for all proxy-related errors.

Parameters:

Name Type Description Default
message str

The error message

required
cause Exception | None

The underlying exception that caused this error

None
Source code in ccproxy/core/errors.py
def __init__(self, message: str, cause: Exception | None = None):
    """Initialize with a message and optional cause.

    Args:
        message: The error message
        cause: The underlying exception that caused this error
    """
    super().__init__(message)
    self.cause = cause
    if cause:
        # Use Python's exception chaining
        self.__cause__ = cause

TransformationError

TransformationError(message, data=None, cause=None)

Bases: ProxyError

Error raised during data transformation.

Parameters:

Name Type Description Default
message str

The error message

required
data Any

The data that failed to transform

None
cause Exception | None

The underlying exception

None
Source code in ccproxy/core/errors.py
def __init__(self, message: str, data: Any = None, cause: Exception | None = None):
    """Initialize with a message, optional data, and cause.

    Args:
        message: The error message
        data: The data that failed to transform
        cause: The underlying exception
    """
    super().__init__(message, cause)
    self.data = data

MiddlewareError

MiddlewareError(message, middleware_name=None, cause=None)

Bases: ProxyError

Error raised during middleware execution.

Parameters:

Name Type Description Default
message str

The error message

required
middleware_name str | None

The name of the middleware that failed

None
cause Exception | None

The underlying exception

None
Source code in ccproxy/core/errors.py
def __init__(
    self,
    message: str,
    middleware_name: str | None = None,
    cause: Exception | None = None,
):
    """Initialize with a message, middleware name, and cause.

    Args:
        message: The error message
        middleware_name: The name of the middleware that failed
        cause: The underlying exception
    """
    super().__init__(message, cause)
    self.middleware_name = middleware_name

ProxyConnectionError

ProxyConnectionError(message, url=None, cause=None)

Bases: ProxyError

Error raised when proxy connection fails.

Parameters:

Name Type Description Default
message str

The error message

required
url str | None

The URL that failed to connect

None
cause Exception | None

The underlying exception

None
Source code in ccproxy/core/errors.py
def __init__(
    self, message: str, url: str | None = None, cause: Exception | None = None
):
    """Initialize with a message, URL, and cause.

    Args:
        message: The error message
        url: The URL that failed to connect
        cause: The underlying exception
    """
    super().__init__(message, cause)
    self.url = url

ProxyTimeoutError

ProxyTimeoutError(message, timeout=None, cause=None)

Bases: ProxyError

Error raised when proxy operation times out.

Parameters:

Name Type Description Default
message str

The error message

required
timeout float | None

The timeout value in seconds

None
cause Exception | None

The underlying exception

None
Source code in ccproxy/core/errors.py
def __init__(
    self,
    message: str,
    timeout: float | None = None,
    cause: Exception | None = None,
):
    """Initialize with a message, timeout value, and cause.

    Args:
        message: The error message
        timeout: The timeout value in seconds
        cause: The underlying exception
    """
    super().__init__(message, cause)
    self.timeout = timeout

ProxyAuthenticationError

ProxyAuthenticationError(
    message, auth_type=None, cause=None
)

Bases: ProxyError

Error raised when proxy authentication fails.

Parameters:

Name Type Description Default
message str

The error message

required
auth_type str | None

The type of authentication that failed

None
cause Exception | None

The underlying exception

None
Source code in ccproxy/core/errors.py
def __init__(
    self,
    message: str,
    auth_type: str | None = None,
    cause: Exception | None = None,
):
    """Initialize with a message, auth type, and cause.

    Args:
        message: The error message
        auth_type: The type of authentication that failed
        cause: The underlying exception
    """
    super().__init__(message, cause)
    self.auth_type = auth_type

ClaudeProxyError

ClaudeProxyError(
    message,
    error_type="internal_server_error",
    status_code=500,
    details=None,
)

Bases: Exception

Base exception for Claude Proxy errors.

Source code in ccproxy/core/errors.py
def __init__(
    self,
    message: str,
    error_type: str = "internal_server_error",
    status_code: int = 500,
    details: dict[str, Any] | None = None,
) -> None:
    super().__init__(message)
    self.message = message
    self.error_type = error_type
    self.status_code = status_code
    self.details = details or {}

ValidationError

ValidationError(message, details=None)

Bases: ClaudeProxyError

Validation error (400).

Source code in ccproxy/core/errors.py
def __init__(self, message: str, details: dict[str, Any] | None = None) -> None:
    super().__init__(
        message=message,
        error_type="invalid_request_error",
        status_code=400,
        details=details,
    )

AuthenticationError

AuthenticationError(message='Authentication failed')

Bases: ClaudeProxyError

Authentication error (401).

Source code in ccproxy/core/errors.py
def __init__(self, message: str = "Authentication failed") -> None:
    super().__init__(
        message=message, error_type="authentication_error", status_code=401
    )

PermissionError

PermissionError(message='Permission denied')

Bases: ClaudeProxyError

Permission error (403).

Source code in ccproxy/core/errors.py
def __init__(self, message: str = "Permission denied") -> None:
    super().__init__(
        message=message, error_type="permission_error", status_code=403
    )

NotFoundError

NotFoundError(message='Resource not found')

Bases: ClaudeProxyError

Not found error (404).

Source code in ccproxy/core/errors.py
def __init__(self, message: str = "Resource not found") -> None:
    super().__init__(message=message, error_type="not_found_error", status_code=404)

RateLimitError

RateLimitError(message='Rate limit exceeded')

Bases: ClaudeProxyError

Rate limit error (429).

Source code in ccproxy/core/errors.py
def __init__(self, message: str = "Rate limit exceeded") -> None:
    super().__init__(
        message=message, error_type="rate_limit_error", status_code=429
    )

ModelNotFoundError

ModelNotFoundError(model)

Bases: ClaudeProxyError

Model not found error (404).

Source code in ccproxy/core/errors.py
def __init__(self, model: str) -> None:
    super().__init__(
        message=f"Model '{model}' not found",
        error_type="not_found_error",
        status_code=404,
    )

TimeoutError

TimeoutError(message='Request timeout')

Bases: ClaudeProxyError

Request timeout error (408).

Source code in ccproxy/core/errors.py
def __init__(self, message: str = "Request timeout") -> None:
    super().__init__(message=message, error_type="timeout_error", status_code=408)

ServiceUnavailableError

ServiceUnavailableError(
    message="Service temporarily unavailable",
)

Bases: ClaudeProxyError

Service unavailable error (503).

Source code in ccproxy/core/errors.py
def __init__(self, message: str = "Service temporarily unavailable") -> None:
    super().__init__(
        message=message, error_type="service_unavailable_error", status_code=503
    )

DockerError

DockerError(
    message, command=None, cause=None, details=None
)

Bases: ClaudeProxyError

Docker operation error.

Source code in ccproxy/core/errors.py
def __init__(
    self,
    message: str,
    command: str | None = None,
    cause: Exception | None = None,
    details: dict[str, Any] | None = None,
) -> None:
    error_details = details or {}
    if command:
        error_details["command"] = command
    if cause:
        error_details["cause"] = str(cause)
        error_details["cause_type"] = type(cause).__name__

    super().__init__(
        message=message,
        error_type="docker_error",
        status_code=500,
        details=error_details,
    )