[Python-checkins] r54760 - in python/trunk: Lib/test/test_slice.py Misc/NEWS Objects/sliceobject.c (original) (raw)
raymond.hettinger python-checkins at python.org
Wed Apr 11 20:41:02 CEST 2007
- Previous message: [Python-checkins] buildbot warnings in sparc solaris10 gcc trunk
- Next message: [Python-checkins] r54762 - python/trunk/Lib/cgitb.py
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: raymond.hettinger Date: Wed Apr 11 20:40:58 2007 New Revision: 54760
Modified: python/trunk/Lib/test/test_slice.py python/trunk/Misc/NEWS python/trunk/Objects/sliceobject.c Log: SF 1191699: Make slices picklable
Modified: python/trunk/Lib/test/test_slice.py
--- python/trunk/Lib/test/test_slice.py (original) +++ python/trunk/Lib/test/test_slice.py Wed Apr 11 20:40:58 2007 @@ -2,6 +2,7 @@
import unittest from test import test_support +from cPickle import loads, dumps
import sys
@@ -102,6 +103,13 @@ x[1:2] = 42 self.assertEquals(tmp, [(1, 2, 42)])
- def test_pickle(self):
s = slice(10, 20, 3)
for protocol in (0,1,2):
t = loads(dumps(s, protocol))
self.assertEqual(s, t)
self.assertEqual(s.indices(15), t.indices(15))
self.assertNotEqual(id(s), id(t))
def test_main(): test_support.run_unittest(SliceTest)
Modified: python/trunk/Misc/NEWS
--- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Wed Apr 11 20:40:58 2007 @@ -12,6 +12,8 @@ Core and builtins
+- Request #1191699: Slices can now be pickled. +
- Patch #1682205: a TypeError while unpacking an iterable is no longer masked by a generic one with the message "unpack non-sequence".
Modified: python/trunk/Objects/sliceobject.c
--- python/trunk/Objects/sliceobject.c (original)
+++ python/trunk/Objects/sliceobject.c Wed Apr 11 20:40:58 2007
@@ -274,9 +274,19 @@
S. Out of bounds indices are clipped in a manner consistent with the\n
handling of normal slices.");
+static PyObject *
+slice_reduce(PySliceObject* self)
+{
+ return Py_BuildValue("O(OOO)", self->ob_type, self->start, self->stop, self->step);
+}
+
+PyDoc_STRVAR(reduce_doc, "Return state information for pickling.");
+
static PyMethodDef slice_methods[] = {
{"indices", (PyCFunction)slice_indices,
METH_O, slice_indices_doc},
+ {"reduce", (PyCFunction)slice_reduce,
+ METH_NOARGS, reduce_doc},
{NULL, NULL}
};
- Previous message: [Python-checkins] buildbot warnings in sparc solaris10 gcc trunk
- Next message: [Python-checkins] r54762 - python/trunk/Lib/cgitb.py
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]