From 044e36d9783fb9c5a6043d1ac56d41b9b8a61f28 Mon Sep 17 00:00:00 2001 From: sobolevn Date: Sat, 3 May 2025 16:57:09 +0300 Subject: [PATCH] gh-133117: Enable stricter mypy checks for `tomllib` (GH-133206) (cherry picked from commit cb3174113e7dbb8a757ce64faac5a8c7e074945b) Co-authored-by: sobolevn --- Lib/tomllib/_parser.py | 10 +++++----- Lib/tomllib/_re.py | 6 +++--- Lib/tomllib/mypy.ini | 2 -- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/Lib/tomllib/_parser.py b/Lib/tomllib/_parser.py index 86322e2761befc..9c80a6a547dce9 100644 --- a/Lib/tomllib/_parser.py +++ b/Lib/tomllib/_parser.py @@ -142,7 +142,7 @@ class Flags: EXPLICIT_NEST = 1 def __init__(self) -> None: - self._flags: dict[str, dict] = {} + self._flags: dict[str, dict[Any, Any]] = {} self._pending_flags: set[tuple[Key, int]] = set() def add_pending(self, key: Key, flag: int) -> None: @@ -200,7 +200,7 @@ def get_or_create_nest( key: Key, *, access_lists: bool = True, - ) -> dict: + ) -> dict[str, Any]: cont: Any = self.dict for k in key: if k not in cont: @@ -409,9 +409,9 @@ def parse_one_line_basic_str(src: str, pos: Pos) -> tuple[Pos, str]: return parse_basic_str(src, pos, multiline=False) -def parse_array(src: str, pos: Pos, parse_float: ParseFloat) -> tuple[Pos, list]: +def parse_array(src: str, pos: Pos, parse_float: ParseFloat) -> tuple[Pos, list[Any]]: pos += 1 - array: list = [] + array: list[Any] = [] pos = skip_comments_and_array_ws(src, pos) if src.startswith("]", pos): @@ -433,7 +433,7 @@ def parse_array(src: str, pos: Pos, parse_float: ParseFloat) -> tuple[Pos, list] return pos + 1, array -def parse_inline_table(src: str, pos: Pos, parse_float: ParseFloat) -> tuple[Pos, dict]: +def parse_inline_table(src: str, pos: Pos, parse_float: ParseFloat) -> tuple[Pos, dict[str, Any]]: pos += 1 nested_dict = NestedDict() flags = Flags() diff --git a/Lib/tomllib/_re.py b/Lib/tomllib/_re.py index 994bb7493fd928..a97cab2f9db0b2 100644 --- a/Lib/tomllib/_re.py +++ b/Lib/tomllib/_re.py @@ -49,7 +49,7 @@ ) -def match_to_datetime(match: re.Match) -> datetime | date: +def match_to_datetime(match: re.Match[str]) -> datetime | date: """Convert a `RE_DATETIME` match to `datetime.datetime` or `datetime.date`. Raises ValueError if the match does not correspond to a valid date @@ -95,13 +95,13 @@ def cached_tz(hour_str: str, minute_str: str, sign_str: str) -> timezone: ) -def match_to_localtime(match: re.Match) -> time: +def match_to_localtime(match: re.Match[str]) -> time: hour_str, minute_str, sec_str, micros_str = match.groups() micros = int(micros_str.ljust(6, "0")) if micros_str else 0 return time(int(hour_str), int(minute_str), int(sec_str), micros) -def match_to_number(match: re.Match, parse_float: ParseFloat) -> Any: +def match_to_number(match: re.Match[str], parse_float: ParseFloat) -> Any: if match.group("floatpart"): return parse_float(match.group()) return int(match.group(), 0) diff --git a/Lib/tomllib/mypy.ini b/Lib/tomllib/mypy.ini index 0297d19e2c8445..1761dce45562a6 100644 --- a/Lib/tomllib/mypy.ini +++ b/Lib/tomllib/mypy.ini @@ -15,5 +15,3 @@ strict = True strict_bytes = True local_partial_types = True warn_unreachable = True -# TODO(@sobolevn): remove this setting and refactor any found problems -disallow_any_generics = False \ No newline at end of file