From c93200f0cddb125be39b1249180506a141a8de0d Mon Sep 17 00:00:00 2001 From: tobixx Date: Fri, 6 Jun 2025 08:51:39 +0200 Subject: [PATCH 1/3] Add protected methods Added more protected methods --- stdlib/pprint.pyi | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/stdlib/pprint.pyi b/stdlib/pprint.pyi index 171878f4165d..fb4b100022f1 100644 --- a/stdlib/pprint.pyi +++ b/stdlib/pprint.pyi @@ -1,4 +1,5 @@ import sys +from collections import deque from typing import IO __all__ = ["pprint", "pformat", "isreadable", "isrecursive", "saferepr", "PrettyPrinter", "pp"] @@ -110,3 +111,41 @@ class PrettyPrinter: def isreadable(self, object: object) -> bool: ... def isrecursive(self, object: object) -> bool: ... def format(self, object: object, context: dict[int, int], maxlevels: int, level: int) -> tuple[str, bool, bool]: ... + def _format( + self, object: object, stream: IO[str], indent: int, allowance: int, context: dict[int, int], level: int + ) -> None: ... + def _pprint_dict( + self, object: dict[object, object], stream: IO[str], indent: int, allowance: int, context: dict[int, int], level: int + ) -> None: ... + def _pprint_list( + self, object: list[object], stream: IO[str], indent: int, allowance: int, context: dict[int, int], level: int + ) -> None: ... + def _pprint_tuple( + self, object: tuple[object, ...], stream: IO[str], indent: int, allowance: int, context: dict[int, int], level: int + ) -> None: ... + def _pprint_set( + self, object: set[object], stream: IO[str], indent: int, allowance: int, context: dict[int, int], level: int + ) -> None: ... + def _pprint_frozenset( + self, object: frozenset[object], stream: IO[str], indent: int, allowance: int, context: dict[int, int], level: int + ) -> None: ... + def _pprint_deque( + self, object: deque[object], stream: IO[str], indent: int, allowance: int, context: dict[int, int], level: int + ) -> None: ... + def _format_dict_items( + self, + items: list[tuple[object, object]], + stream: IO[str], + indent: int, + allowance: int, + context: dict[int, int], + level: int, + ) -> None: ... + def _format_items( + self, items: list[object], stream: IO[str], indent: int, allowance: int, context: dict[int, int], level: int + ) -> None: ... + def _repr(self, object: object, context: dict[int, int], level: int) -> str: ... + def _readable(self, object: object, context: dict[int, int]) -> bool: ... + def _recursive(self, object: object, context: dict[int, int]) -> bool: ... + def _depth(self, object: object, context: dict[int, int]) -> int: ... + def _safe_repr(self, object: object, context: dict[int, int], maxlevels: int, level: int) -> tuple[str, bool, bool]: ... From e195782e8361ba6e01a93e40e6cfda8a867b8ca9 Mon Sep 17 00:00:00 2001 From: Tobias Witten Date: Fri, 11 Jul 2025 14:40:33 +0200 Subject: [PATCH 2/3] Remove attributes. --- stdlib/pprint.pyi | 3 --- 1 file changed, 3 deletions(-) diff --git a/stdlib/pprint.pyi b/stdlib/pprint.pyi index fb4b100022f1..37bc84166459 100644 --- a/stdlib/pprint.pyi +++ b/stdlib/pprint.pyi @@ -145,7 +145,4 @@ class PrettyPrinter: self, items: list[object], stream: IO[str], indent: int, allowance: int, context: dict[int, int], level: int ) -> None: ... def _repr(self, object: object, context: dict[int, int], level: int) -> str: ... - def _readable(self, object: object, context: dict[int, int]) -> bool: ... - def _recursive(self, object: object, context: dict[int, int]) -> bool: ... - def _depth(self, object: object, context: dict[int, int]) -> int: ... def _safe_repr(self, object: object, context: dict[int, int], maxlevels: int, level: int) -> tuple[str, bool, bool]: ... From dad1cb7fd7e10b5109108bcf5025ae233d2c1d78 Mon Sep 17 00:00:00 2001 From: Tobias Witten Date: Fri, 11 Jul 2025 14:51:33 +0200 Subject: [PATCH 3/3] Replaced IO with SupportsWrite as suggested --- stdlib/pprint.pyi | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/stdlib/pprint.pyi b/stdlib/pprint.pyi index 37bc84166459..535720e30b5c 100644 --- a/stdlib/pprint.pyi +++ b/stdlib/pprint.pyi @@ -1,4 +1,5 @@ import sys +from _typeshed import SupportsWrite from collections import deque from typing import IO @@ -112,37 +113,55 @@ class PrettyPrinter: def isrecursive(self, object: object) -> bool: ... def format(self, object: object, context: dict[int, int], maxlevels: int, level: int) -> tuple[str, bool, bool]: ... def _format( - self, object: object, stream: IO[str], indent: int, allowance: int, context: dict[int, int], level: int + self, object: object, stream: SupportsWrite[str], indent: int, allowance: int, context: dict[int, int], level: int ) -> None: ... def _pprint_dict( - self, object: dict[object, object], stream: IO[str], indent: int, allowance: int, context: dict[int, int], level: int + self, + object: dict[object, object], + stream: SupportsWrite[str], + indent: int, + allowance: int, + context: dict[int, int], + level: int, ) -> None: ... def _pprint_list( - self, object: list[object], stream: IO[str], indent: int, allowance: int, context: dict[int, int], level: int + self, object: list[object], stream: SupportsWrite[str], indent: int, allowance: int, context: dict[int, int], level: int ) -> None: ... def _pprint_tuple( - self, object: tuple[object, ...], stream: IO[str], indent: int, allowance: int, context: dict[int, int], level: int + self, + object: tuple[object, ...], + stream: SupportsWrite[str], + indent: int, + allowance: int, + context: dict[int, int], + level: int, ) -> None: ... def _pprint_set( - self, object: set[object], stream: IO[str], indent: int, allowance: int, context: dict[int, int], level: int + self, object: set[object], stream: SupportsWrite[str], indent: int, allowance: int, context: dict[int, int], level: int ) -> None: ... def _pprint_frozenset( - self, object: frozenset[object], stream: IO[str], indent: int, allowance: int, context: dict[int, int], level: int + self, + object: frozenset[object], + stream: SupportsWrite[str], + indent: int, + allowance: int, + context: dict[int, int], + level: int, ) -> None: ... def _pprint_deque( - self, object: deque[object], stream: IO[str], indent: int, allowance: int, context: dict[int, int], level: int + self, object: deque[object], stream: SupportsWrite[str], indent: int, allowance: int, context: dict[int, int], level: int ) -> None: ... def _format_dict_items( self, items: list[tuple[object, object]], - stream: IO[str], + stream: SupportsWrite[str], indent: int, allowance: int, context: dict[int, int], level: int, ) -> None: ... def _format_items( - self, items: list[object], stream: IO[str], indent: int, allowance: int, context: dict[int, int], level: int + self, items: list[object], stream: SupportsWrite[str], indent: int, allowance: int, context: dict[int, int], level: int ) -> None: ... def _repr(self, object: object, context: dict[int, int], level: int) -> str: ... def _safe_repr(self, object: object, context: dict[int, int], maxlevels: int, level: int) -> tuple[str, bool, bool]: ...