From 3cf7da0ab6d943a179be4fdf1c7fd251b21768c5 Mon Sep 17 00:00:00 2001 From: Medidala Aditya Date: Tue, 3 Mar 2026 10:56:13 +0530 Subject: [PATCH] Expose public API via __init__ and add v0.2.0 migration guide --- README.md | 46 +++++++++++++++++++++++++++++++++++-- fastapi_limiter/__init__.py | 12 ++++++++++ 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 252cfe0..5c653fd 100644 --- a/README.md +++ b/README.md @@ -171,7 +171,49 @@ async def websocket_endpoint(websocket: WebSocket): await websocket.send_text("Hello again") ``` -## License +--- +## Migration Guide (v0.1.x → v0.2.0) + +### API Changes + +In v0.2.0, the public API has been restructured. + +- `FastAPILimiter` is not available in v0.2.0.. +- Redis-based initialization via `FastAPILimiter.init()` has been removed. +- Rate limiting is now built around `pyrate_limiter.Limiter`. + +### Import Changes + +| v0.1.x | v0.2.0 | +|--------|--------| +| `from fastapi_limiter import FastAPILimiter` | `from fastapi_limiter import RateLimiter` | +| `await FastAPILimiter.init(redis)` | Create a `Limiter` instance from `pyrate_limiter` | +| `RateLimiter()` | `Depends(RateLimiter(limiter=limiter))` | + +--- + +### Example – v0.1.x +```python +from fastapi_limiter import FastAPILimiter + +await FastAPILimiter.init(redis) +``` +### Example – v0.2.0 +```python +from fastapi import FastAPI, Depends +from pyrate_limiter import Limiter, Rate, Duration +from fastapi_limiter import RateLimiter + +app = FastAPI() + +limiter = Limiter(Rate(2, Duration.SECOND * 5)) + +@app.get("/", dependencies=[Depends(RateLimiter(limiter=limiter))]) +async def root(): + return {"msg": "Hello"} +``` +--- +## License This project is licensed under the -[Apache-2.0](https://github.com/long2ice/fastapi-limiter/blob/master/LICENCE) License. +[Apache-2.0](https://github.com/long2ice/fastapi-limiter/blob/master/LICENCE) License. \ No newline at end of file diff --git a/fastapi_limiter/__init__.py b/fastapi_limiter/__init__.py index e69de29..2267507 100644 --- a/fastapi_limiter/__init__.py +++ b/fastapi_limiter/__init__.py @@ -0,0 +1,12 @@ +from .callback import default_callback +from .depends import RateLimiter, WebSocketRateLimiter +from .identifier import default_identifier +from .middleware import RateLimiterMiddleware + +__all__ = [ + "RateLimiter", + "WebSocketRateLimiter", + "RateLimiterMiddleware", + "default_identifier", + "default_callback", +] \ No newline at end of file