diff --git a/fastapi_traffic/core/config.py b/fastapi_traffic/core/config.py index 665a443..a538fc2 100644 --- a/fastapi_traffic/core/config.py +++ b/fastapi_traffic/core/config.py @@ -2,8 +2,9 @@ from __future__ import annotations +from collections.abc import Callable from dataclasses import dataclass, field -from typing import TYPE_CHECKING, Any, Callable +from typing import TYPE_CHECKING, Any from fastapi_traffic.core.algorithms import Algorithm diff --git a/fastapi_traffic/core/decorator.py b/fastapi_traffic/core/decorator.py index 5148405..4f99d3c 100644 --- a/fastapi_traffic/core/decorator.py +++ b/fastapi_traffic/core/decorator.py @@ -3,19 +3,26 @@ from __future__ import annotations import functools -from typing import TYPE_CHECKING, Any, Callable, TypeVar, overload +from collections.abc import Callable +from typing import TYPE_CHECKING, Any, TypeVar, overload from fastapi_traffic.core.algorithms import Algorithm -from fastapi_traffic.core.config import KeyExtractor, RateLimitConfig, default_key_extractor +from fastapi_traffic.core.config import ( + KeyExtractor, + RateLimitConfig, + default_key_extractor, +) from fastapi_traffic.core.limiter import get_limiter -from fastapi_traffic.exceptions import RateLimitExceeded if TYPE_CHECKING: from starlette.requests import Request from starlette.responses import Response + from fastapi_traffic.exceptions import RateLimitExceeded + F = TypeVar("F", bound=Callable[..., Any]) +# Note: Config loader from secrets .env @overload def rate_limit( diff --git a/fastapi_traffic/middleware.py b/fastapi_traffic/middleware.py index 8583d05..d734324 100644 --- a/fastapi_traffic/middleware.py +++ b/fastapi_traffic/middleware.py @@ -3,18 +3,24 @@ from __future__ import annotations import logging -from typing import TYPE_CHECKING, Awaitable, Callable +from typing import TYPE_CHECKING from starlette.middleware.base import BaseHTTPMiddleware from starlette.responses import JSONResponse from fastapi_traffic.backends.memory import MemoryBackend from fastapi_traffic.core.algorithms import Algorithm -from fastapi_traffic.core.config import GlobalConfig, RateLimitConfig, default_key_extractor +from fastapi_traffic.core.config import ( + GlobalConfig, + RateLimitConfig, + default_key_extractor, +) from fastapi_traffic.core.limiter import RateLimiter from fastapi_traffic.exceptions import RateLimitExceeded if TYPE_CHECKING: + from collections.abc import Awaitable, Callable + from starlette.requests import Request from starlette.responses import Response from starlette.types import ASGIApp