- Replace manual field type validation with Pydantic model schemas - Add pydantic>=2.0 as core dependency - Fix sync wrapper in decorator to properly handle rate limiting - Update pyright settings for stricter type checking - Fix repository URL in pyproject.toml - Remove unused main.py - Update test assertions for new validation error format
50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
"""FastAPI Traffic - Production-grade rate limiting for FastAPI."""
|
|
|
|
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 (
|
|
BackendError,
|
|
ConfigurationError,
|
|
RateLimitExceeded,
|
|
)
|
|
|
|
__version__ = "0.2.0"
|
|
__all__ = [
|
|
"Algorithm",
|
|
"Backend",
|
|
"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
|
|
try:
|
|
from fastapi_traffic.backends.redis import RedisBackend
|
|
|
|
__all__.append("RedisBackend")
|
|
except ImportError:
|
|
pass
|