From 59d7a55a4198f503431f6eeddc532d7a5c72614a Mon Sep 17 00:00:00 2001 From: Steve C Date: Wed, 25 Feb 2026 11:54:11 -0500 Subject: [PATCH] [tasks] Add overloads --- discord/ext/tasks/__init__.py | 41 ++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/discord/ext/tasks/__init__.py b/discord/ext/tasks/__init__.py index 6ed0273e3..ba11d6322 100644 --- a/discord/ext/tasks/__init__.py +++ b/discord/ext/tasks/__init__.py @@ -37,6 +37,7 @@ from typing import ( Type, TypeVar, Union, + overload, ) import aiohttp @@ -176,7 +177,7 @@ class Loop(Generic[LF]): if self.count is not None and self.count <= 0: raise ValueError('count must be greater than 0 or None.') - self.change_interval(seconds=seconds, minutes=minutes, hours=hours, time=time) + self.change_interval(seconds=seconds, minutes=minutes, hours=hours, time=time) # type: ignore self._last_iteration_failed = False self._last_iteration: datetime.datetime = MISSING self._next_iteration = None @@ -710,6 +711,22 @@ class Loop(Generic[LF]): ret = sorted(set(ret)) # de-dupe and sort times return ret + @overload + def change_interval( + self, + *, + seconds: float = 0, + minutes: float = 0, + hours: float = 0, + ) -> None: ... + + @overload + def change_interval( + self, + *, + time: Union[datetime.time, Sequence[datetime.time]], + ) -> None: ... + def change_interval( self, *, @@ -777,6 +794,28 @@ class Loop(Generic[LF]): self._handle.recalculate(self._next_iteration) +@overload +def loop( + *, + seconds: float = 0, + minutes: float = 0, + hours: float = 0, + count: Optional[int] = None, + reconnect: bool = True, + name: Optional[str] = None, +) -> Callable[[LF], Loop[LF]]: ... + + +@overload +def loop( + *, + time: Union[datetime.time, Sequence[datetime.time]], + count: Optional[int] = None, + reconnect: bool = True, + name: Optional[str] = None, +) -> Callable[[LF], Loop[LF]]: ... + + def loop( *, seconds: float = MISSING,