Commit 97394bc7 authored by Raymond Hettinger's avatar Raymond Hettinger

Patch 533291. Deprecate None return form of __reduce__.

parent 7f7d5bf4
...@@ -444,6 +444,7 @@ or three, with the following semantics: ...@@ -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: ...@@ -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
......
...@@ -862,6 +862,10 @@ class Unpickler: ...@@ -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)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment