From d27cb718e70a35638c83316f31be9a4ccec1900f Mon Sep 17 00:00:00 2001 From: b9788213 Date: Wed, 28 Jan 2026 14:41:52 +0300 Subject: [PATCH 1/4] Add missing attributes to json/decoder.pyi JSONDecoder --- stdlib/json/decoder.pyi | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/stdlib/json/decoder.pyi b/stdlib/json/decoder.pyi index 8debfe6cd65a..30b2a1457a4d 100644 --- a/stdlib/json/decoder.pyi +++ b/stdlib/json/decoder.pyi @@ -18,6 +18,10 @@ class JSONDecoder: parse_constant: Callable[[str], Any] strict: bool object_pairs_hook: Callable[[list[tuple[str, Any]]], Any] + parse_object: Callable + parse_array: Callable + parse_string: Callable + memo: dict def __init__( self, *, From aae4e27f491166af82aba1f66e5c3e29ed50bb8d Mon Sep 17 00:00:00 2001 From: b9788213 Date: Wed, 28 Jan 2026 14:54:26 +0300 Subject: [PATCH 2/4] . --- stdlib/json/decoder.pyi | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/stdlib/json/decoder.pyi b/stdlib/json/decoder.pyi index 30b2a1457a4d..b0b0b30575b7 100644 --- a/stdlib/json/decoder.pyi +++ b/stdlib/json/decoder.pyi @@ -18,10 +18,10 @@ class JSONDecoder: parse_constant: Callable[[str], Any] strict: bool object_pairs_hook: Callable[[list[tuple[str, Any]]], Any] - parse_object: Callable - parse_array: Callable - parse_string: Callable - memo: dict + parse_object: Callable[..., Any] + parse_array: Callable[..., Any] + parse_string: Callable[..., Any] + memo: dict[Any, Any] def __init__( self, *, From 6087a978078eff5d2a1d5dd001dae9a4905caae2 Mon Sep 17 00:00:00 2001 From: b9788213 Date: Wed, 28 Jan 2026 16:38:25 +0300 Subject: [PATCH 3/4] . --- stdlib/json/decoder.pyi | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/stdlib/json/decoder.pyi b/stdlib/json/decoder.pyi index b0b0b30575b7..77d9bbb86649 100644 --- a/stdlib/json/decoder.pyi +++ b/stdlib/json/decoder.pyi @@ -1,5 +1,6 @@ from collections.abc import Callable from typing import Any +from _typeshed import Incomplete __all__ = ["JSONDecoder", "JSONDecodeError"] @@ -11,6 +12,24 @@ class JSONDecodeError(ValueError): colno: int def __init__(self, msg: str, doc: str, pos: int) -> None: ... +def JSONObject( + s_and_end: tuple[str, int], + strict: bool, + scan_once: Callable[[Incomplete], Incomplete], + object_hook: Callable[[Incomplete], Incomplete] | None, + object_pairs_hook: Callable[[Incomplete], Incomplete] | None, + memo: dict[Incomplete, Incomplete] | None = None, + _w: Callable[[str, int], Incomplete] = ..., + _ws: str = ... +) -> tuple[Incomplete, int]: ... + +def JSONArray( + s_and_end: tuple[str, int], + scan_once: Callable[[Incomplete], Incomplete], + _w: Callable[[str, int], Incomplete] = ..., + _ws: str = ... +) -> tuple[list[Incomplete], int]: ... + class JSONDecoder: object_hook: Callable[[dict[str, Any]], Any] parse_float: Callable[[str], Any] @@ -18,10 +37,10 @@ class JSONDecoder: parse_constant: Callable[[str], Any] strict: bool object_pairs_hook: Callable[[list[tuple[str, Any]]], Any] - parse_object: Callable[..., Any] - parse_array: Callable[..., Any] - parse_string: Callable[..., Any] - memo: dict[Any, Any] + parse_object: Callable[[Incomplete], Incomplete] + parse_array: Callable[[Incomplete], Incomplete] + parse_string: Callable[[Incomplete], Incomplete] + memo: dict[Incomplete, Incomplete] def __init__( self, *, From 47fda0fdc50e0d4eb78099c0feb1c155fd4d0f18 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 28 Jan 2026 13:41:01 +0000 Subject: [PATCH 4/4] [pre-commit.ci] auto fixes from pre-commit.com hooks --- stdlib/json/decoder.pyi | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/stdlib/json/decoder.pyi b/stdlib/json/decoder.pyi index 77d9bbb86649..041f66013f1b 100644 --- a/stdlib/json/decoder.pyi +++ b/stdlib/json/decoder.pyi @@ -1,6 +1,6 @@ +from _typeshed import Incomplete from collections.abc import Callable from typing import Any -from _typeshed import Incomplete __all__ = ["JSONDecoder", "JSONDecodeError"] @@ -20,14 +20,13 @@ def JSONObject( object_pairs_hook: Callable[[Incomplete], Incomplete] | None, memo: dict[Incomplete, Incomplete] | None = None, _w: Callable[[str, int], Incomplete] = ..., - _ws: str = ... + _ws: str = ..., ) -> tuple[Incomplete, int]: ... - def JSONArray( s_and_end: tuple[str, int], scan_once: Callable[[Incomplete], Incomplete], _w: Callable[[str, int], Incomplete] = ..., - _ws: str = ... + _ws: str = ..., ) -> tuple[list[Incomplete], int]: ... class JSONDecoder: