Skip to main content

Shared base exception utilities for FastAPI apps.

Project description

Exception Core Package

A comprehensive exception handling package for FastAPI applications that provides standardized error responses and exception handling.

Features

  • Pre-defined HTTP exceptions for common error scenarios
  • Dynamic error creation for custom scenarios
  • Standardized error response format
  • Request validation error handling

Installation

pip install abs-exception-core

Usage

1. Import and Register Exception Handlers

from fastapi import FastAPI
from abs_exception_core.exception_handlers import (
    request_validation_exception_handler,
    global_exception_handler,
    # ... other handlers
)

app = FastAPI()

# Register exception handlers
app.add_exception_handler(RequestValidationError, request_validation_exception_handler)
app.add_exception_handler(Exception, global_exception_handler)

2. Using Pre-defined Exceptions

from abs_exception_core.exceptions import (
    NotFoundError,
    ValidationError,
    AuthError,
    GenericHttpError,
    # ... other exceptions
)

# Example usage in a route
@app.get("/items/{item_id}")
async def get_item(item_id: int):
    if not item_exists(item_id):
        raise NotFoundError(detail="Item not found")
    
    if not has_permission():
        raise AuthError(detail="Insufficient permissions")

3. Using Generic Error

The GenericHttpError class allows you to create custom HTTP exceptions with any status code:

# Create a custom error with status code 418
error = GenericHttpError(
    status_code=418,
    detail="I'm a teapot",
    headers={"X-Custom-Header": "value"}
)

# Create a custom error with just status code and message
error = GenericHttpError(
    status_code=451,
    detail="Unavailable For Legal Reasons"
)

# Create a custom error with just status code
error = GenericHttpError(status_code=402)

Available Exceptions

  • DuplicatedError (409 Conflict)
  • AuthError (403 Forbidden)
  • NotFoundError (404 Not Found)
  • ValidationError (422 Unprocessable Entity)
  • PermissionDeniedError (403 Forbidden)
  • UnauthorizedError (401 Unauthorized)
  • BadRequestError (400 Bad Request)
  • ConflictError (409 Conflict)
  • InternalServerError (500 Internal Server Error)
  • RateLimitExceededError (429 Too Many Requests)
  • ServiceUnavailableError (503 Service Unavailable)
  • GenericHttpError (Custom Status Code) - For creating custom HTTP exceptions

Error Response Format

All errors follow a standardized format:

{
    "message": "Error message",
    "error": "Detailed error description",
    "type": "ErrorType",
    "details": {
        "path": "/api/endpoint",
        "method": "GET"
    },
    "errors": [
        {
            "field": "field_name",
            "message": "Validation message",
            "type": "error_type",
            "input_value": "invalid_value"
        }
    ]
}

Best Practices

  1. Use the most specific exception type that matches your error scenario
  2. For custom status codes or scenarios not covered by standard exceptions, use GenericHttpError
  3. Provide meaningful error details to help clients understand and resolve issues
  4. Use custom headers sparingly and only when they provide additional value
  5. Follow the standardized error response format for consistency

License

This project is licensed under the MIT License - see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

abs_exception_core-0.1.3.tar.gz (3.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

abs_exception_core-0.1.3-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

Details for the file abs_exception_core-0.1.3.tar.gz.

File metadata

  • Download URL: abs_exception_core-0.1.3.tar.gz
  • Upload date:
  • Size: 3.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.13.3 Darwin/23.6.0

File hashes

Hashes for abs_exception_core-0.1.3.tar.gz
Algorithm Hash digest
SHA256 b603ccf846f7e9d567237dfb645d5cee02db76ee408ca2abede95e403173963b
MD5 787b9efadf27202a2ec0f81ab0e5162e
BLAKE2b-256 e362411c6dc87b3f69f36bff50e7b4e1fd7bbb687cf442fdb53ea1fac7390074

See more details on using hashes here.

File details

Details for the file abs_exception_core-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: abs_exception_core-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 4.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.13.3 Darwin/23.6.0

File hashes

Hashes for abs_exception_core-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 bba1bec64c331bb7e98918a86c86556588f92018f6d75c3e3854ccc82dbe9faf
MD5 e4a2d7c34531aaed39ff6b3b20b576ef
BLAKE2b-256 9975d3107dd5e7bd0ed3ba85a2cc5828e3e078108ceb42c1b3935d7251563534

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page