Add your description here
Project description
FastAPI Docs Exception
📖 Automatically surface your controllers exceptions in FastAPI’s Swagger / ReDoc docs
fastapi_docs_exception is a tiny helper that turns your own HTTPException subclasses into fully-documented responses with somes line of code. No more copy-pasting responses={404: {...}, 500: {...}} in every route – let the library build a shared responses mapping for you, complete with example payloads.
🚀 Installation
# With uv (recommended)
uv add fastapi_docs_exception
# Or the classic way
pip install fastapi_docs_exception
⚡ Quickstart
from fastapi import FastAPI, HTTPException
from fastapi_docs_exception.handler import ExceptionResponseFactory
# 1️⃣ Define your exceptions any way you like
class ApiNotFoundException(HTTPException):
"""Custom exception for API not found errors in FastAPI."""
def __init__(self, detail: str = "API key not found or invalid"):
super().__init__(status_code=404, detail=detail)
class NotFoundError(HTTPException):
"""Custom exception for not found errors in FastAPI."""
def __init__(self, detail: str = "Resource not found in the storage"):
super().__init__(status_code=404, detail=detail)
class InternalServerError(HTTPException):
"""Custom exception for internal server errors in FastAPI."""
def __init__(self, detail: str = "Internal server error, please try again later"):
super().__init__(status_code=500, detail=detail)
# 2️⃣ Feed them to the factory (class allow more flexibility)
# You can specify Pydantic schemas, edit the JSON schema, etc.
exc_response_factory = ExceptionResponseFactory()
app = FastAPI(
responses=exc_response_factory.build([
NotFoundError(), # 404 section
ApiNotFoundException(), # 404 section (grouped with the previous one)
InternalServerError(), # 500 section (only one)
]),
)
# 3️⃣ Use your exceptions in the code
@app.get("/items/{item_id}")
def get_item(item_id: str):
if item_id != "42":
raise NotFoundError()
return {"item_id": item_id}
Open http://localhost:8000/docs and you will see the custom 404 and 500 responses in the Swagger UI and ReDoc documentation with example payloads.
🔧 Development
# Clone
git clone https://github.com/your-user/fastapi_docs_exception.git
cd fastapi_docs_exception
# Optional: create a virtual env
uv venv # makes .venv and activates it
source .venv/bin/activate
# Install dev dependencies (test, lint, type-checking)
uv pip install -e ".[dev]"
Lint, format, type-check (all in one)
uv run lint # will use ruff lint, ruff format, ty
Run the test-suite
pytest
A coverage report will be shown in the terminal and htmlcov will be generated in the project root.
🤝 Contributing
All kinds of contributions are welcome – bug reports, feature ideas, docs fixes...
- Fork the repo & create your branch:
git checkout -b feat/amazing-stuff - Commit your changes with clear messages.
- Run
uv run lint && uv run testand ensure everything stays green. - Open a Pull Request describing why the change is useful.
Please use commitizen to format your commit messages, e.g. cz commit
📜 License
fastapi_docs_exception is distributed under the MIT License – see LICENSE 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fastapi_docs_exception-0.4.1.tar.gz.
File metadata
- Download URL: fastapi_docs_exception-0.4.1.tar.gz
- Upload date:
- Size: 184.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6069050355cbadf44fe8c33de9e9027ce3e8828866c1ceaccd917026781a1bfd
|
|
| MD5 |
3994ac48d30cc8af1e00a4050038ec4c
|
|
| BLAKE2b-256 |
16dd27a455548f185293162ab10db7880beabc9e617162d8bb930a8e25ba78ac
|
File details
Details for the file fastapi_docs_exception-0.4.1-py3-none-any.whl.
File metadata
- Download URL: fastapi_docs_exception-0.4.1-py3-none-any.whl
- Upload date:
- Size: 5.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
45f1523c687c87036fcc1779640b93042a616700b347ce761ac88dd7f046de38
|
|
| MD5 |
16b120ebe4cec56bbfce5aeeb09cb580
|
|
| BLAKE2b-256 |
e23b02935ea47d4c686ea3ba8767cfef33ca752acfc85c8ae7dd964fda6364f5
|