Skip to content
You're not viewing the latest version. Click here to go to latest.

# FastAPI Toolsets

A modular collection of production-ready utilities for FastAPI. Install only what you need — from async CRUD and database helpers to CLI tooling, Prometheus metrics, and pytest fixtures. Each module is independently installable via optional extras, keeping your dependency footprint minimal.

Documentation: https://fastapi-toolsets.d3vyce.fr

Source Code: https://github.com/d3vyce/fastapi-toolsets

## Installation

The base package includes the core modules (CRUD, database, schemas, exceptions, fixtures, dependencies, model mixins, logging):

    uv add fastapi-toolsets

Install only the extras you need:

    uv add "fastapi-toolsets[cli]"
    uv add "fastapi-toolsets[metrics]"
    uv add "fastapi-toolsets[pytest]"

Or install everything:

    uv add "fastapi-toolsets[all]"

## Features

### Core

- CRUD: Generic async CRUD operations with `CrudFactory`, built-in full-text/faceted search and Offset/Cursor pagination.
- Database: Session management, transaction helpers, table locking, and polling-based row change detection
- Dependencies: FastAPI dependency factories (`PathDependency`, `BodyDependency`) for automatic DB lookups from path or body parameters
- Fixtures: Fixture system with dependency management, context support, and pytest integration
- Model Mixins: SQLAlchemy mixins for common column patterns (`UUIDMixin`, `UUIDv7Mixin`, `CreatedAtMixin`, `UpdatedAtMixin`, `TimestampMixin`) and lifecycle callbacks (`WatchedFieldsMixin`) that fire after commit for insert, update, and delete events.
- Standardized API Responses: Consistent response format with `Response`, `ErrorResponse`, `PaginatedResponse`, `CursorPaginatedResponse` and `OffsetPaginatedResponse`.
- Exception Handling: Structured error responses with automatic OpenAPI documentation
- Logging: Logging configuration with uvicorn integration via `configure_logging` and `get_logger`

### Optional

- CLI: Django-like command-line interface with fixture management and custom commands support
- Metrics: Prometheus metrics endpoint with provider/collector registry
- Pytest Helpers: Async test client, database session management, `pytest-xdist` support, and table cleanup utilities

## License

MIT License - see LICENSE for details.

## Contributing

Contributions are welcome! Please feel free to submit issues and pull requests.