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: ...