From eec809d049d10a5ae9b88780eab15fe36a9768d7 Mon Sep 17 00:00:00 2001 From: Tatsh Date: Wed, 30 Apr 2025 18:50:53 -0400 Subject: [PATCH] Add ratelimit stubs (#13909) --- stubs/ratelimit/@tests/stubtest_allowlist.txt | 3 +++ stubs/ratelimit/METADATA.toml | 2 ++ stubs/ratelimit/ratelimit/__init__.pyi | 7 +++++++ stubs/ratelimit/ratelimit/decorators.pyi | 14 ++++++++++++++ stubs/ratelimit/ratelimit/exception.pyi | 3 +++ 5 files changed, 29 insertions(+) create mode 100644 stubs/ratelimit/@tests/stubtest_allowlist.txt create mode 100644 stubs/ratelimit/METADATA.toml create mode 100644 stubs/ratelimit/ratelimit/__init__.pyi create mode 100644 stubs/ratelimit/ratelimit/decorators.pyi create mode 100644 stubs/ratelimit/ratelimit/exception.pyi diff --git a/stubs/ratelimit/@tests/stubtest_allowlist.txt b/stubs/ratelimit/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..5b0935ce9 --- /dev/null +++ b/stubs/ratelimit/@tests/stubtest_allowlist.txt @@ -0,0 +1,3 @@ +# This file lacks __all__ and "now" is only used to set the default value of +# RateLimitDecorator.__init__()'s clock parameter +ratelimit.decorators.now diff --git a/stubs/ratelimit/METADATA.toml b/stubs/ratelimit/METADATA.toml new file mode 100644 index 000000000..d7e6677be --- /dev/null +++ b/stubs/ratelimit/METADATA.toml @@ -0,0 +1,2 @@ +version = "2.2.*" +upstream_repository = "https://github.com/tomasbasham/ratelimit" diff --git a/stubs/ratelimit/ratelimit/__init__.pyi b/stubs/ratelimit/ratelimit/__init__.pyi new file mode 100644 index 000000000..374329aaa --- /dev/null +++ b/stubs/ratelimit/ratelimit/__init__.pyi @@ -0,0 +1,7 @@ +from ratelimit.decorators import RateLimitDecorator, sleep_and_retry +from ratelimit.exception import RateLimitException + +limits = RateLimitDecorator +rate_limited = RateLimitDecorator + +__all__ = ["RateLimitException", "limits", "rate_limited", "sleep_and_retry"] diff --git a/stubs/ratelimit/ratelimit/decorators.pyi b/stubs/ratelimit/ratelimit/decorators.pyi new file mode 100644 index 000000000..297828817 --- /dev/null +++ b/stubs/ratelimit/ratelimit/decorators.pyi @@ -0,0 +1,14 @@ +from collections.abc import Callable +from typing import TypeVar +from typing_extensions import ParamSpec + +_P = ParamSpec("_P") +_T = TypeVar("_T") + +class RateLimitDecorator: + def __init__( + self, calls: int = 15, period: float = 900, clock: Callable[[], float] = ..., raise_on_limit: bool = True + ) -> None: ... + def __call__(self, func: Callable[_P, _T]) -> Callable[_P, _T]: ... + +def sleep_and_retry(func: Callable[_P, _T]) -> Callable[_P, _T]: ... diff --git a/stubs/ratelimit/ratelimit/exception.pyi b/stubs/ratelimit/ratelimit/exception.pyi new file mode 100644 index 000000000..227178145 --- /dev/null +++ b/stubs/ratelimit/ratelimit/exception.pyi @@ -0,0 +1,3 @@ +class RateLimitException(Exception): + period_remaining: float + def __init__(self, message: str, period_remaining: float) -> None: ...