[pickle] Fix _Pickle.reducer_override annotation (#13545)

This commit is contained in:
Sebastian Rittau
2026-03-15 13:45:55 +01:00
committed by GitHub
parent f8f0794d0f
commit 6e32e08743
3 changed files with 11 additions and 2 deletions
@@ -436,8 +436,11 @@ os._wrap_close.write # Methods that come from __getattr__() at runtime
os._wrap_close.writelines # Methods that come from __getattr__() at runtime
os.PathLike.__class_getitem__ # PathLike is a protocol; we don't expect all PathLike classes to implement class_getitem
_pickle.Pickler.reducer_override # Can be added by subclasses
pickle.Pickler.reducer_override # Can be added by subclasses
pickle._Pickler\..* # Best effort typing for undocumented internals
pickle._Unpickler\..* # Best effort typing for undocumented internals
shutil.rmtree # function with attributes, which we approximate with a callable protocol
socketserver.BaseServer.get_request # Not implemented, but expected to exist on subclasses.
ssl.PROTOCOL_SSLv2 # Depends on the existence and flags of SSL
+4 -1
View File
@@ -61,7 +61,6 @@ class PicklerMemoProxy:
class Pickler:
fast: bool
dispatch_table: Mapping[type, Callable[[Any], _ReducedType]]
reducer_override: Callable[[Any], Any]
bin: bool # undocumented
def __init__(
self,
@@ -79,6 +78,10 @@ class Pickler:
# this method has no default implementation for Python < 3.13
def persistent_id(self, obj: Any, /) -> Any: ...
# The following method is not defined on _Pickler, but can be defined on
# sub-classes. Should return `NotImplemented` if pickling the supplied
# object is not supported and returns the same types as `__reduce__()`.
def reducer_override(self, obj: object, /) -> _ReducedType: ...
@type_check_only
class UnpicklerMemoProxy:
+4 -1
View File
@@ -208,7 +208,6 @@ class _Pickler:
dispatch_table: Mapping[type, Callable[[Any], _ReducedType]]
bin: bool # undocumented
dispatch: ClassVar[dict[type, Callable[[Unpickler, Any], None]]] # undocumented, _Pickler only
reducer_override: Callable[[Any], Any]
def __init__(
self,
file: SupportsWrite[bytes],
@@ -220,6 +219,10 @@ class _Pickler:
def dump(self, obj: Any) -> None: ...
def clear_memo(self) -> None: ...
def persistent_id(self, obj: Any) -> Any: ...
# The following method is not defined on _Pickler, but can be defined on
# sub-classes. Should return `NotImplemented` if pickling the supplied
# object is not supported and returns the same types as `__reduce__()`.
def reducer_override(self, obj: object, /) -> _ReducedType: ...
class _Unpickler:
dispatch: ClassVar[dict[int, Callable[[Unpickler], None]]] # undocumented, _Unpickler only