Patch 533291.  Deprecate None return form of __reduce__.
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 @@
       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 @@
 
 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 @@
                                            "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)