From 25b3999a10e279f9e45d066d9d2e93ab4d6b1300 Mon Sep 17 00:00:00 2001 From: Alex Waygood Date: Sun, 29 Jan 2023 19:41:09 +0000 Subject: [PATCH] croniter: complete stubs (#9584) --- stubs/croniter/@tests/stubtest_allowlist.txt | 5 -- stubs/croniter/croniter/croniter.pyi | 54 +++++++++++++++++++- 2 files changed, 52 insertions(+), 7 deletions(-) delete mode 100644 stubs/croniter/@tests/stubtest_allowlist.txt diff --git a/stubs/croniter/@tests/stubtest_allowlist.txt b/stubs/croniter/@tests/stubtest_allowlist.txt deleted file mode 100644 index 34d9807ed..000000000 --- a/stubs/croniter/@tests/stubtest_allowlist.txt +++ /dev/null @@ -1,5 +0,0 @@ -# missing from stub -croniter.croniter.EXPANDERS -croniter.croniter.HashExpander -croniter.croniter.VALID_LEN_EXPRESSION -croniter.croniter.timedelta_to_seconds diff --git a/stubs/croniter/croniter/croniter.pyi b/stubs/croniter/croniter/croniter.pyi index 69c22e969..45b8d5c32 100644 --- a/stubs/croniter/croniter/croniter.pyi +++ b/stubs/croniter/croniter/croniter.pyi @@ -1,11 +1,22 @@ import datetime -from _typeshed import Self +from _typeshed import ReadableBuffer, Self +from collections import OrderedDict from collections.abc import Iterator -from typing import Any +from re import Match, Pattern +from typing import Any, overload from typing_extensions import Literal, TypeAlias _RetType: TypeAlias = type[float | datetime.datetime] +step_search_re: Pattern[str] +only_int_re: Pattern[str] +star_or_int_re: Pattern[str] +special_weekday_re: Pattern[str] +hash_expression_re: Pattern[str] +VALID_LEN_EXPRESSION: list[int] + +def timedelta_to_seconds(td: datetime.timedelta) -> float: ... + class CroniterError(ValueError): ... class CroniterBadTypeRangeError(TypeError): ... class CroniterBadCronError(CroniterError): ... @@ -83,3 +94,42 @@ def croniter_range( exclude_ends: bool = ..., _croniter: type[croniter] | None = ..., ) -> Iterator[Any]: ... + +class HashExpander: + cron: croniter + def __init__(self, cronit: croniter) -> None: ... + @overload + def do( + self, + idx: int, + hash_type: Literal["r"], + hash_id: None = None, + range_end: int | None = None, + range_begin: int | None = None, + ) -> int: ... + @overload + def do( + self, idx: int, hash_type: str, hash_id: ReadableBuffer, range_end: int | None = None, range_begin: int | None = None + ) -> int: ... + @overload + def do( + self, + idx: int, + hash_type: str = "h", + *, + hash_id: ReadableBuffer, + range_end: int | None = None, + range_begin: int | None = None, + ) -> int: ... + def match(self, efl: object, idx: object, expr: str, hash_id: object = None, **kw: object) -> Match[str] | None: ... + def expand( + self, + efl: object, + idx: int, + expr: str, + hash_id: ReadableBuffer | None = None, + match: Match[str] | None | Literal[""] = "", + **kw: object, + ) -> str: ... + +EXPANDERS: OrderedDict[str, HashExpander]