feat: add configuration loader for .env and JSON files

- Add ConfigLoader class for loading RateLimitConfig and GlobalConfig
- Support .env files with FASTAPI_TRAFFIC_* prefixed variables
- Support JSON configuration files with type validation
- Add convenience functions: load_rate_limit_config, load_global_config
- Add load_rate_limit_config_from_env, load_global_config_from_env
- Support custom environment variable prefixes
- Add comprehensive error handling with ConfigurationError
- Add 47 tests for configuration loading
- Add example 11_config_loader.py with 9 usage patterns
- Update examples/README.md with config loader documentation
- Update CHANGELOG.md with new feature
- Fix typo in limiter.py (errant 'fi' on line 4)
This commit is contained in:
2026-02-01 13:59:32 +00:00
parent 6c5584c6b4
commit fb23e3c7cf
8 changed files with 1665 additions and 24 deletions

View File

@@ -1,30 +1,43 @@
"""FastAPI Traffic - Production-grade rate limiting for FastAPI."""
from fastapi_traffic.core.decorator import rate_limit
from fastapi_traffic.core.limiter import RateLimiter
from fastapi_traffic.core.config import RateLimitConfig
from fastapi_traffic.core.algorithms import Algorithm
from fastapi_traffic.backends.base import Backend
from fastapi_traffic.backends.memory import MemoryBackend
from fastapi_traffic.backends.sqlite import SQLiteBackend
from fastapi_traffic.core.algorithms import Algorithm
from fastapi_traffic.core.config import GlobalConfig, RateLimitConfig
from fastapi_traffic.core.config_loader import (
ConfigLoader,
load_global_config,
load_global_config_from_env,
load_rate_limit_config,
load_rate_limit_config_from_env,
)
from fastapi_traffic.core.decorator import rate_limit
from fastapi_traffic.core.limiter import RateLimiter
from fastapi_traffic.exceptions import (
RateLimitExceeded,
BackendError,
ConfigurationError,
RateLimitExceeded,
)
__version__ = "0.1.0"
__all__ = [
"rate_limit",
"RateLimiter",
"RateLimitConfig",
"Algorithm",
"Backend",
"MemoryBackend",
"SQLiteBackend",
"RateLimitExceeded",
"BackendError",
"ConfigLoader",
"ConfigurationError",
"GlobalConfig",
"MemoryBackend",
"RateLimitConfig",
"RateLimitExceeded",
"RateLimiter",
"SQLiteBackend",
"load_global_config",
"load_global_config_from_env",
"load_rate_limit_config",
"load_rate_limit_config_from_env",
"rate_limit",
]
# Optional Redis backend