Patch 533291. Deprecate None return form of __reduce__.

This commit is contained in:
Raymond Hettinger 2002-05-21 17:22:02 +00:00
parent 7f7d5bf438
commit 97394bc795
2 changed files with 12 additions and 4 deletions

View file

@ -444,6 +444,7 @@ or three, with the following semantics:
by name. by name.
\item A tuple of arguments for the callable object, or \code{None}. \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 \item Optionally, the object's state, which will be passed to
the object's \method{__setstate__()} method as described in 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 Upon unpickling, the callable will be called (provided that it meets
the above criteria), passing in the tuple of arguments; it should the above criteria), passing in the tuple of arguments; it should
return the unpickled object. If the second item was \code{None}, then return the unpickled object.
instead of calling the callable directly, its \method{__basicnew__()}
method is called without arguments. It should also return the If the second item was \code{None}, then instead of calling the
unpickled object. 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 An alternative to implementing a \method{__reduce__()} method on the
object to be pickled, is to register the callable with the object to be pickled, is to register the callable with the

View file

@ -862,6 +862,10 @@ class Unpickler:
"unpickling" % callable "unpickling" % callable
if arg_tup is None: 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__() value = callable.__basicnew__()
else: else:
value = apply(callable, arg_tup) value = apply(callable, arg_tup)