Changelog ========= All notable changes to FastAPI Traffic are documented here. The format is based on `Keep a Changelog `_, and this project adheres to `Semantic Versioning `_. [0.3.0] - 2026-03-17 -------------------- Added ^^^^^ - Expanded example scripts with improved docstrings and usage patterns - New ``00_basic_usage.py`` example for getting started quickly Changed ^^^^^^^ - Refactored Redis backend connection handling for improved reliability - Updated algorithm implementations with cleaner type annotations - Improved config loader validation with stricter Pydantic schemas - Enhanced decorator and middleware error handling - Reorganized examples directory structure (removed legacy ``basic_usage.py``) Fixed ^^^^^ - Redis backend connection pool management edge cases - Type annotation inconsistencies across core modules [0.2.1] - 2026-03-12 -------------------- Fixed ^^^^^ - Test assertion bug in ``test_load_rate_limit_config_from_env_missing_limit`` test case within ``test_config_loader.py``. [0.2.0] - 2026-02-04 -------------------- Added ^^^^^ - **Configuration Loader** — Load rate limiting configuration from external files: - ``ConfigLoader`` class for loading ``RateLimitConfig`` and ``GlobalConfig`` - Support for ``.env`` files with ``FASTAPI_TRAFFIC_*`` prefixed variables - Support for JSON configuration files - Environment variable loading with ``load_rate_limit_config_from_env()`` and ``load_global_config_from_env()`` - Auto-detection of file format with ``load_rate_limit_config()`` and ``load_global_config()`` - Custom environment variable prefix support - Type validation and comprehensive error handling - 47 new tests for configuration loading - Example ``11_config_loader.py`` demonstrating all configuration loading patterns - ``get_stats()`` method to ``MemoryBackend`` for consistency with ``RedisBackend`` - Comprehensive test suite with 134 tests covering: - All five rate limiting algorithms with timing and concurrency tests - Backend tests for Memory and SQLite with edge cases - Decorator and middleware integration tests - Exception handling and configuration validation - End-to-end integration tests with FastAPI apps - ``httpx`` and ``pytest-asyncio`` as dev dependencies for testing Changed ^^^^^^^ - Improved documentation in README.md and DEVELOPMENT.md - Added ``asyncio_default_fixture_loop_scope`` config for pytest-asyncio compatibility [0.1.0] - 2025-01-09 -------------------- Initial release. Added ^^^^^ - Core rate limiting with ``@rate_limit`` decorator - Five algorithms: - Token Bucket - Sliding Window - Fixed Window - Leaky Bucket - Sliding Window Counter - Three storage backends: - Memory (default) — In-memory with LRU eviction - SQLite — Persistent storage with WAL mode - Redis — Distributed storage with Lua scripts - Middleware support for global rate limiting via ``RateLimitMiddleware`` - Dependency injection support with ``RateLimitDependency`` - Custom key extractors for flexible rate limit grouping (by IP, API key, user, etc.) - Configurable exemptions with ``exempt_when`` callback - Rate limit headers (``X-RateLimit-Limit``, ``X-RateLimit-Remaining``, ``X-RateLimit-Reset``) - ``RateLimitExceeded`` exception with ``retry_after`` and ``limit_info`` - Full async support throughout - Strict type hints (pyright/mypy compatible)