From a0e0e462064638774e9b7516b417af25fcadf0bf Mon Sep 17 00:00:00 2001 From: Sebastian Rittau Date: Tue, 16 Jun 2026 09:55:10 +0200 Subject: [PATCH 1/3] [dateparser] Update to ~=1.4.1 Finish `dateparser.parser` Closes: #15917 --- stubs/dateparser/METADATA.toml | 2 +- stubs/dateparser/dateparser/parser.pyi | 28 +++++++++++++++----------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/stubs/dateparser/METADATA.toml b/stubs/dateparser/METADATA.toml index 916a76d5bb0d..765568d5d0ac 100644 --- a/stubs/dateparser/METADATA.toml +++ b/stubs/dateparser/METADATA.toml @@ -1,4 +1,4 @@ -version = "~=1.4.0" +version = "~=1.4.1" upstream-repository = "https://github.com/scrapinghub/dateparser" [tool.stubtest] diff --git a/stubs/dateparser/dateparser/parser.pyi b/stubs/dateparser/dateparser/parser.pyi index 55a3756893a8..a4c4317ffb60 100644 --- a/stubs/dateparser/dateparser/parser.pyi +++ b/stubs/dateparser/dateparser/parser.pyi @@ -1,13 +1,15 @@ import datetime import re -from _typeshed import Incomplete from collections import OrderedDict from collections.abc import Callable, Iterable, Iterator from io import StringIO -from typing import Final, Literal, overload +from typing import ClassVar, Final, Literal, TypeAlias, overload from dateparser.conf import Settings +_TokenType: TypeAlias = Literal[0, 1, 2] +_Component: TypeAlias = Literal["year", "month", "day"] + NSP_COMPATIBLE: Final[re.Pattern[str]] MERIDIAN: Final[re.Pattern[str]] MICROSECOND: Final[re.Pattern[str]] @@ -17,12 +19,12 @@ HOUR_MINUTE_REGEX: Final[re.Pattern[str]] def no_space_parser_eligibile(datestring: str) -> bool: ... def get_unresolved_attrs( parser_object: object, -) -> tuple[list[Literal["year", "month", "day"]], list[Literal["year", "month", "day"]]]: ... +) -> tuple[list[_Component], list[_Component]]: ... -date_order_chart: Final[dict[str, str]] +date_order_chart: Final[dict[_Component, str]] @overload -def resolve_date_order(order: str, lst: Literal[True]) -> list[str]: ... +def resolve_date_order(order: str, lst: Literal[True]) -> list[_Component]: ... @overload def resolve_date_order(order: str, lst: Literal[False] | None = None) -> str: ... @@ -40,19 +42,21 @@ class _no_spaces_parser: def parse(cls, datestring: str, settings: Settings) -> tuple[datetime.datetime, str]: ... class _parser: - alpha_directives: OrderedDict[str, list[str]] - num_directives: dict[str, list[str]] + alpha_directives: ClassVar[dict[str, list[str]]] + num_directives: ClassVar[dict[str, list[str]]] + settings: Settings - tokens: list[tuple[Incomplete, Incomplete]] - filtered_tokens: list[tuple[Incomplete, Incomplete, int]] - unset_tokens: list[tuple[Incomplete, Incomplete, Incomplete]] + tokens: list[tuple[str, _TokenType]] + filtered_tokens: list[tuple[str, _TokenType, int]] + unset_tokens: list[tuple[str, _TokenType, _Component]] day: int | None month: int | None year: int | None time: Callable[[], datetime.time] | None auto_order: list[str] ordered_num_directives: OrderedDict[str, list[str]] - def __init__(self, tokens: Iterable[Incomplete], settings: Settings) -> None: ... + + def __init__(self, tokens: Iterable[tuple[str, _TokenType]], settings: Settings) -> None: ... @classmethod def parse( cls, datestring: str, settings: Settings, tz: datetime.tzinfo | None = None @@ -63,4 +67,4 @@ class tokenizer: letters: Literal["abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"] instream: StringIO def __init__(self, ds: str) -> None: ... - def tokenize(self) -> Iterator[tuple[str, Literal[0, 1, 2]]]: ... + def tokenize(self) -> Iterator[tuple[str, _TokenType]]: ... From 044f0ffdffdde4790303c48fc32c1561eceab610 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2026 07:58:02 +0000 Subject: [PATCH 2/3] [pre-commit.ci] auto fixes from pre-commit.com hooks --- stubs/dateparser/dateparser/parser.pyi | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/stubs/dateparser/dateparser/parser.pyi b/stubs/dateparser/dateparser/parser.pyi index a4c4317ffb60..9f3a728e5556 100644 --- a/stubs/dateparser/dateparser/parser.pyi +++ b/stubs/dateparser/dateparser/parser.pyi @@ -17,9 +17,7 @@ EIGHT_DIGIT: Final[re.Pattern[str]] HOUR_MINUTE_REGEX: Final[re.Pattern[str]] def no_space_parser_eligibile(datestring: str) -> bool: ... -def get_unresolved_attrs( - parser_object: object, -) -> tuple[list[_Component], list[_Component]]: ... +def get_unresolved_attrs(parser_object: object) -> tuple[list[_Component], list[_Component]]: ... date_order_chart: Final[dict[_Component, str]] From 11f49e7e772086e5cb3ca05c8ed8d0a06240d54f Mon Sep 17 00:00:00 2001 From: Sebastian Rittau Date: Tue, 16 Jun 2026 16:08:02 +0200 Subject: [PATCH 3/3] Fix `date_order_chart` --- stubs/dateparser/dateparser/parser.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/dateparser/dateparser/parser.pyi b/stubs/dateparser/dateparser/parser.pyi index 9f3a728e5556..1bede7cd2b9d 100644 --- a/stubs/dateparser/dateparser/parser.pyi +++ b/stubs/dateparser/dateparser/parser.pyi @@ -19,7 +19,7 @@ HOUR_MINUTE_REGEX: Final[re.Pattern[str]] def no_space_parser_eligibile(datestring: str) -> bool: ... def get_unresolved_attrs(parser_object: object) -> tuple[list[_Component], list[_Component]]: ... -date_order_chart: Final[dict[_Component, str]] +date_order_chart: Final[dict[str, str]] @overload def resolve_date_order(order: str, lst: Literal[True]) -> list[_Component]: ...