Skip to content

Commit 7ffb7e0

Browse files
authored
Fix typing of Pickler.persistent_id and Unpickler.persistent_load for Python < 3.13. (#13818)
1 parent 76cd40e commit 7ffb7e0

File tree

5 files changed

+30
-9
lines changed

5 files changed

+30
-9
lines changed

stdlib/@tests/stubtest_allowlists/py310.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,3 +295,9 @@ typing_extensions\.Annotated # Undocumented implementation details
295295
# (Remove once 3.10.17 becomes available for all platforms)
296296
(email._header_value_parser.get_encoded_word)?
297297
(email._header_value_parser.make_quoted_pairs)?
298+
299+
# These methods have no default implementation for Python < 3.13.
300+
_pickle.Pickler.persistent_id
301+
_pickle.Unpickler.persistent_load
302+
pickle.Pickler.persistent_id
303+
pickle.Unpickler.persistent_load

stdlib/@tests/stubtest_allowlists/py311.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,3 +259,9 @@ typing_extensions\.Annotated # Undocumented implementation details
259259
# (Remove once 3.11.12 becomes available for all platforms)
260260
(email._header_value_parser.get_encoded_word)?
261261
(email._header_value_parser.make_quoted_pairs)?
262+
263+
# These methods have no default implementation for Python < 3.13.
264+
_pickle.Pickler.persistent_id
265+
_pickle.Unpickler.persistent_load
266+
pickle.Pickler.persistent_id
267+
pickle.Unpickler.persistent_load

stdlib/@tests/stubtest_allowlists/py312.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,3 +228,9 @@ sunau.Au_write.initfp
228228
threading.Lock # Factory function at runtime, but that wouldn't let us use it in type hints
229229
types.SimpleNamespace.__init__ # class doesn't accept positional arguments but has default C signature
230230
typing_extensions\.Annotated # Undocumented implementation details
231+
232+
# These methods have no default implementation for Python < 3.13.
233+
_pickle.Pickler.persistent_id
234+
_pickle.Unpickler.persistent_load
235+
pickle.Pickler.persistent_id
236+
pickle.Unpickler.persistent_load

stdlib/@tests/stubtest_allowlists/py39.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,3 +245,9 @@ typing_extensions\.Annotated # Undocumented implementation details
245245
# Incompatible changes introduced in Python 3.9.22
246246
# (Remove once 3.9.22 becomes available for all platforms)
247247
(email._header_value_parser.get_encoded_word)?
248+
249+
# These methods have no default implementation for Python < 3.13.
250+
_pickle.Pickler.persistent_id
251+
_pickle.Unpickler.persistent_load
252+
pickle.Pickler.persistent_id
253+
pickle.Unpickler.persistent_load

stdlib/_pickle.pyi

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import sys
21
from _typeshed import ReadableBuffer, SupportsWrite
32
from collections.abc import Callable, Iterable, Iterator, Mapping
43
from pickle import PickleBuffer as PickleBuffer
@@ -75,10 +74,9 @@ class Pickler:
7574
def memo(self, value: PicklerMemoProxy | dict[int, tuple[int, Any]]) -> None: ...
7675
def dump(self, obj: Any, /) -> None: ...
7776
def clear_memo(self) -> None: ...
78-
if sys.version_info >= (3, 13):
79-
def persistent_id(self, obj: Any, /) -> Any: ...
80-
else:
81-
persistent_id: Callable[[Any], Any]
77+
78+
# this method has no default implementation for Python < 3.13
79+
def persistent_id(self, obj: Any, /) -> Any: ...
8280

8381
@type_check_only
8482
class UnpicklerMemoProxy:
@@ -101,7 +99,6 @@ class Unpickler:
10199
def memo(self, value: UnpicklerMemoProxy | dict[int, tuple[int, Any]]) -> None: ...
102100
def load(self) -> Any: ...
103101
def find_class(self, module_name: str, global_name: str, /) -> Any: ...
104-
if sys.version_info >= (3, 13):
105-
def persistent_load(self, pid: Any, /) -> Any: ...
106-
else:
107-
persistent_load: Callable[[Any], Any]
102+
103+
# this method has no default implementation for Python < 3.13
104+
def persistent_load(self, pid: Any, /) -> Any: ...

0 commit comments

Comments
 (0)