2.5 KiB
2.5 KiB
Changelog
All notable changes to fastapi-traffic will be documented here.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.2.0] - 2026-02-04
Added
- Configuration Loader - Load rate limiting configuration from external files:
ConfigLoaderclass for loadingRateLimitConfigandGlobalConfig- Support for
.envfiles withFASTAPI_TRAFFIC_*prefixed variables - Support for JSON configuration files
- Environment variable loading with
load_rate_limit_config_from_env()andload_global_config_from_env() - Auto-detection of file format with
load_rate_limit_config()andload_global_config() - Custom environment variable prefix support
- Type validation and comprehensive error handling
- 47 new tests for configuration loading
- Example
11_config_loader.pydemonstrating all configuration loading patterns get_stats()method toMemoryBackendfor consistency withRedisBackend- 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
httpxandpytest-asyncioas dev dependencies for testing
Changed
- Improved documentation in README.md and DEVELOPMENT.md
- Added
asyncio_default_fixture_loop_scopeconfig for pytest-asyncio compatibility
[0.1.0] - 2025-01-09
Initial release.
Added
- Core rate limiting with
@rate_limitdecorator - Five algorithms: Token Bucket, Sliding Window, Fixed Window, Leaky Bucket, Sliding Window Counter
- Three storage backends: Memory (default), SQLite (persistent), Redis (distributed)
- 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_whencallback - Rate limit headers (
X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset) RateLimitExceededexception withretry_afterandlimit_info- Full async support throughout
- Strict type hints (pyright/mypy compatible)
- Redis backend with Lua scripts for atomic operations
- SQLite backend with WAL mode and connection pooling
- Memory backend with LRU eviction and TTL cleanup