[3.14] gh-148669: Clarify __reduce__() module lookup behavior (GH-148670) (#149704)

gh-148669: Clarify `__reduce__()` module lookup behavior (GH-148670)
(cherry picked from commit 54a5fd4126)

Co-authored-by: Victorien <65306057+Viicos@users.noreply.github.com>
This commit is contained in:
Miss Islington (bot) 2026-05-12 04:53:36 +02:00 committed by GitHub
parent 0aeb040979
commit 49bf2d1cbd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -59,7 +59,7 @@ The :mod:`!pickle` module differs from :mod:`marshal` in several significant way
* :mod:`marshal` cannot be used to serialize user-defined classes and their
instances. :mod:`!pickle` can save and restore class instances transparently,
however the class definition must be importable and live in the same module as
when the object was stored.
when the object was pickled.
* The :mod:`marshal` serialization format is not guaranteed to be portable
across Python versions. Because its primary job in life is to support
@ -696,7 +696,10 @@ or both.
If a string is returned, the string should be interpreted as the name of a
global variable. It should be the object's local name relative to its
module; the pickle module searches the module namespace to determine the
object's module. This behaviour is typically useful for singletons.
object's module: for a given ``obj`` to be pickled, the ``__module__``
attribute is looked up on ``obj`` directly, which falls back to a lookup
on the type of ``obj`` if no ``__module__`` instance attribute is set.
This behaviour is typically useful for singletons.
When a tuple is returned, it must be between two and six items long.
Optional items can either be omitted, or ``None`` can be provided as their