From 97394bc7950d898843f7136c5af69279ea9bb080 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Tue, 21 May 2002 17:22:02 +0000 Subject: Patch 533291. Deprecate None return form of __reduce__. --- Doc/lib/libpickle.tex | 12 ++++++++---- Lib/pickle.py | 4 ++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Doc/lib/libpickle.tex b/Doc/lib/libpickle.tex index d4a54cd..194a717 100644 --- a/Doc/lib/libpickle.tex +++ b/Doc/lib/libpickle.tex @@ -444,6 +444,7 @@ or three, with the following semantics: by name. \item A tuple of arguments for the callable object, or \code{None}. +\deprecated{2.3}{Use the tuple of arguments instead} \item Optionally, the object's state, which will be passed to the object's \method{__setstate__()} method as described in @@ -456,10 +457,13 @@ or three, with the following semantics: Upon unpickling, the callable will be called (provided that it meets the above criteria), passing in the tuple of arguments; it should -return the unpickled object. If the second item was \code{None}, then -instead of calling the callable directly, its \method{__basicnew__()} -method is called without arguments. It should also return the -unpickled object. +return the unpickled object. + +If the second item was \code{None}, then instead of calling the +callable directly, its \method{__basicnew__()} method is called +without arguments. It should also return the unpickled object. + +\deprecated{2.3}{Use the tuple of arguments instead} An alternative to implementing a \method{__reduce__()} method on the object to be pickled, is to register the callable with the diff --git a/Lib/pickle.py b/Lib/pickle.py index 5837884..d24786a 100644 --- a/Lib/pickle.py +++ b/Lib/pickle.py @@ -862,6 +862,10 @@ class Unpickler: "unpickling" % callable if arg_tup is None: + import warnings + warnings.warn("The None return argument form of __reduce__ is " + "deprecated. Return a tuple of arguments instead.", + DeprecationWarning) value = callable.__basicnew__() else: value = apply(callable, arg_tup) -- cgit v0.12