mirror of
				https://github.com/HKUDS/LightRAG.git
				synced 2025-11-04 03:39:35 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from __future__ import annotations
 | 
						|
 | 
						|
import httpx
 | 
						|
from typing import Literal
 | 
						|
 | 
						|
 | 
						|
class APIStatusError(Exception):
 | 
						|
    """Raised when an API response has a status code of 4xx or 5xx."""
 | 
						|
 | 
						|
    response: httpx.Response
 | 
						|
    status_code: int
 | 
						|
    request_id: str | None
 | 
						|
 | 
						|
    def __init__(
 | 
						|
        self, message: str, *, response: httpx.Response, body: object | None
 | 
						|
    ) -> None:
 | 
						|
        super().__init__(message, response.request, body=body)
 | 
						|
        self.response = response
 | 
						|
        self.status_code = response.status_code
 | 
						|
        self.request_id = response.headers.get("x-request-id")
 | 
						|
 | 
						|
 | 
						|
class APIConnectionError(Exception):
 | 
						|
    def __init__(
 | 
						|
        self, *, message: str = "Connection error.", request: httpx.Request
 | 
						|
    ) -> None:
 | 
						|
        super().__init__(message, request, body=None)
 | 
						|
 | 
						|
 | 
						|
class BadRequestError(APIStatusError):
 | 
						|
    status_code: Literal[400] = 400  # pyright: ignore[reportIncompatibleVariableOverride]
 | 
						|
 | 
						|
 | 
						|
class AuthenticationError(APIStatusError):
 | 
						|
    status_code: Literal[401] = 401  # pyright: ignore[reportIncompatibleVariableOverride]
 | 
						|
 | 
						|
 | 
						|
class PermissionDeniedError(APIStatusError):
 | 
						|
    status_code: Literal[403] = 403  # pyright: ignore[reportIncompatibleVariableOverride]
 | 
						|
 | 
						|
 | 
						|
class NotFoundError(APIStatusError):
 | 
						|
    status_code: Literal[404] = 404  # pyright: ignore[reportIncompatibleVariableOverride]
 | 
						|
 | 
						|
 | 
						|
class ConflictError(APIStatusError):
 | 
						|
    status_code: Literal[409] = 409  # pyright: ignore[reportIncompatibleVariableOverride]
 | 
						|
 | 
						|
 | 
						|
class UnprocessableEntityError(APIStatusError):
 | 
						|
    status_code: Literal[422] = 422  # pyright: ignore[reportIncompatibleVariableOverride]
 | 
						|
 | 
						|
 | 
						|
class RateLimitError(APIStatusError):
 | 
						|
    status_code: Literal[429] = 429  # pyright: ignore[reportIncompatibleVariableOverride]
 | 
						|
 | 
						|
 | 
						|
class APITimeoutError(APIConnectionError):
 | 
						|
    def __init__(self, request: httpx.Request) -> None:
 | 
						|
        super().__init__(message="Request timed out.", request=request)
 |