mirror of
https://github.com/python/cpython.git
synced 2024-11-23 18:04:37 +08:00
Eliminate the deprecated option to return None instead of a tuple of arguments in __reduce__().
This commit is contained in:
parent
84667c063a
commit
a6b45cc31d
@ -515,12 +515,8 @@ Otherwise, an \exception{UnpicklingError} will be raised in the
|
||||
unpickling environment. Note that as usual, the callable itself is
|
||||
pickled by name.
|
||||
|
||||
\item A tuple of arguments for the callable object, or \code{None}.
|
||||
\deprecated{2.3}{If this item is \code{None}, then instead of calling
|
||||
the callable directly, its \method{__basicnew__()} method is called
|
||||
without arguments; this method should also return the unpickled
|
||||
object. Providing \code{None} is deprecated, however; return a
|
||||
tuple of arguments instead.}
|
||||
\item A tuple of arguments for the callable object.
|
||||
\versionchanged[Formerly, this argument could also be \code{None}]{2.5}
|
||||
|
||||
\item Optionally, the object's state, which will be passed to
|
||||
the object's \method{__setstate__()} method as described in
|
||||
|
@ -33,7 +33,6 @@ import marshal
|
||||
import sys
|
||||
import struct
|
||||
import re
|
||||
import warnings
|
||||
|
||||
__all__ = ["PickleError", "PicklingError", "UnpicklingError", "Pickler",
|
||||
"Unpickler", "dump", "dumps", "load", "loads"]
|
||||
@ -349,14 +348,7 @@ class Pickler:
|
||||
|
||||
# Assert that args is a tuple or None
|
||||
if not isinstance(args, TupleType):
|
||||
if args is None:
|
||||
# A hack for Jim Fulton's ExtensionClass, now deprecated.
|
||||
# See load_reduce()
|
||||
warnings.warn("__basicnew__ special case is deprecated",
|
||||
DeprecationWarning)
|
||||
else:
|
||||
raise PicklingError(
|
||||
"args from reduce() should be a tuple")
|
||||
raise PicklingError("args from reduce() should be a tuple")
|
||||
|
||||
# Assert that func is callable
|
||||
if not callable(func):
|
||||
@ -1138,13 +1130,7 @@ class Unpickler:
|
||||
stack = self.stack
|
||||
args = stack.pop()
|
||||
func = stack[-1]
|
||||
if args is None:
|
||||
# A hack for Jim Fulton's ExtensionClass, now deprecated
|
||||
warnings.warn("__basicnew__ special case is deprecated",
|
||||
DeprecationWarning)
|
||||
value = func.__basicnew__()
|
||||
else:
|
||||
value = func(*args)
|
||||
value = func(*args)
|
||||
stack[-1] = value
|
||||
dispatch[REDUCE] = load_reduce
|
||||
|
||||
|
@ -17,6 +17,9 @@ Core and builtins
|
||||
Extension Modules
|
||||
-----------------
|
||||
|
||||
- the cPickle module no longer accepts the deprecated None option in the
|
||||
args tuple returned by __reduce__().
|
||||
|
||||
- itertools.islice() now accepts None for the start and step arguments.
|
||||
This allows islice() to work more readily with slices:
|
||||
islice(s.start, s.stop, s.step)
|
||||
@ -25,6 +28,9 @@ Extension Modules
|
||||
Library
|
||||
-------
|
||||
|
||||
- the pickle module no longer accepts the deprecated None option in the
|
||||
args tuple returned by __reduce__().
|
||||
|
||||
- optparse now optionally imports gettext. This allows its use in setup.py.
|
||||
|
||||
- the deprecated tzparse module was removed.
|
||||
|
@ -2143,6 +2143,12 @@ save_reduce(Picklerobject *self, PyObject *args, PyObject *ob)
|
||||
&dictitems))
|
||||
return -1;
|
||||
|
||||
if (!PyTuple_Check(argtup)) {
|
||||
PyErr_SetString(PicklingError,
|
||||
"args from reduce() should be a tuple");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (state == Py_None)
|
||||
state = NULL;
|
||||
if (listitems == Py_None)
|
||||
@ -3616,17 +3622,6 @@ Instance_New(PyObject *cls, PyObject *args)
|
||||
else goto err;
|
||||
}
|
||||
|
||||
if (args==Py_None) {
|
||||
/* Special case, call cls.__basicnew__() */
|
||||
PyObject *basicnew;
|
||||
|
||||
basicnew = PyObject_GetAttr(cls, __basicnew___str);
|
||||
if (!basicnew) return NULL;
|
||||
r=PyObject_CallObject(basicnew, NULL);
|
||||
Py_DECREF(basicnew);
|
||||
if (r) return r;
|
||||
}
|
||||
|
||||
if ((r=PyObject_CallObject(cls, args))) return r;
|
||||
|
||||
err:
|
||||
|
Loading…
Reference in New Issue
Block a user