]> granicus.if.org Git - python/commitdiff
Issue #14783: Merge changes from 3.2.
authorChris Jerdonek <chris.jerdonek@gmail.com>
Sun, 7 Oct 2012 21:56:27 +0000 (14:56 -0700)
committerChris Jerdonek <chris.jerdonek@gmail.com>
Sun, 7 Oct 2012 21:56:27 +0000 (14:56 -0700)
1  2 
Doc/library/functions.rst
Misc/NEWS
Objects/longobject.c
Objects/rangeobject.c
Objects/sliceobject.c
Objects/unicodeobject.c

index c2b3b212d2b5f493b2d1cc2d3579c5868f2cb023,2575d7f787974cf18c142625beb37dd10bd35f6b..e9691948674af270bb9e34df0da9a73af9854e4f
@@@ -1202,8 -1236,8 +1202,9 @@@ are always available.  They are listed 
     standard type hierarchy in :ref:`types`.
  
  
- .. function:: str([object[, encoding[, errors]]])
 +.. _func-str:
+ .. function:: str(object='')
+               str(object[, encoding[, errors]])
  
     Return a string version of an object, using one of the following modes:
  
diff --cc Misc/NEWS
Simple merge
Simple merge
index c47a4ff03487bada8fe878c3164ae2026ee4fd33,b67b9694d58aaacea0c210c7e1237b715a84d599..68d563694a6de31834b33be66f288aa1b658c094
@@@ -964,52 -826,6 +965,52 @@@ rangeiter_len(rangeiterobject *r
  PyDoc_STRVAR(length_hint_doc,
               "Private method returning an estimate of len(list(it)).");
  
-     
 +static PyObject *
 +rangeiter_reduce(rangeiterobject *r)
 +{
 +    PyObject *start=NULL, *stop=NULL, *step=NULL;
 +    PyObject *range;
++
 +    /* create a range object for pickling */
 +    start = PyLong_FromLong(r->start);
 +    if (start == NULL)
 +        goto err;
 +    stop = PyLong_FromLong(r->start + r->len * r->step);
 +    if (stop == NULL)
 +        goto err;
 +    step = PyLong_FromLong(r->step);
 +    if (step == NULL)
 +        goto err;
 +    range = (PyObject*)make_range_object(&PyRange_Type,
 +                               start, stop, step);
 +    if (range == NULL)
 +        goto err;
 +    /* return the result */
 +    return Py_BuildValue("N(N)i", _PyObject_GetBuiltin("iter"), range, r->index);
 +err:
 +    Py_XDECREF(start);
 +    Py_XDECREF(stop);
 +    Py_XDECREF(step);
 +    return NULL;
 +}
 +
 +static PyObject *
 +rangeiter_setstate(rangeiterobject *r, PyObject *state)
 +{
 +    long index = PyLong_AsLong(state);
 +    if (index == -1 && PyErr_Occurred())
 +        return NULL;
 +    if (index < 0 || index >= r->len) {
 +        PyErr_SetString(PyExc_ValueError, "index out of range");
 +        return NULL;
 +    }
 +    r->index = index;
 +    Py_RETURN_NONE;
 +}
 +
 +PyDoc_STRVAR(reduce_doc, "Return state information for pickling.");
 +PyDoc_STRVAR(setstate_doc, "Set state information for unpickling.");
 +
  static PyMethodDef rangeiter_methods[] = {
      {"__length_hint__", (PyCFunction)rangeiter_len, METH_NOARGS,
          length_hint_doc},
Simple merge
Simple merge