[Python-checkins] r51718 - in python/branches/release25-maint: Doc/lib/libstdtypes.tex Lib/test/string_tests.py Misc/NEWS Objects/stringlib/partition.h Objects/stringobject.c Objects/unicodeobject.c
neal.norwitz
python-checkins at python.org
Tue Sep 5 04:21:40 CEST 2006
Author: neal.norwitz
Date: Tue Sep 5 04:21:38 2006
New Revision: 51718
Modified:
python/branches/release25-maint/Doc/lib/libstdtypes.tex
python/branches/release25-maint/Lib/test/string_tests.py
python/branches/release25-maint/Misc/NEWS
python/branches/release25-maint/Objects/stringlib/partition.h
python/branches/release25-maint/Objects/stringobject.c
python/branches/release25-maint/Objects/unicodeobject.c
Log:
Fix str.rpartition(sep) when sep is not found in str.
Partially from SF patch #1551339, but also taken from head.
Modified: python/branches/release25-maint/Doc/lib/libstdtypes.tex
==============================================================================
--- python/branches/release25-maint/Doc/lib/libstdtypes.tex (original)
+++ python/branches/release25-maint/Doc/lib/libstdtypes.tex Tue Sep 5 04:21:38 2006
@@ -771,8 +771,8 @@
Split the string at the last occurrence of \var{sep}, and return
a 3-tuple containing the part before the separator, the separator
itself, and the part after the separator. If the separator is not
-found, return a 3-tuple containing the string itself, followed by
-two empty strings.
+found, return a 3-tuple containing two empty strings, followed by
+the string itself.
\versionadded{2.5}
\end{methoddesc}
Modified: python/branches/release25-maint/Lib/test/string_tests.py
==============================================================================
--- python/branches/release25-maint/Lib/test/string_tests.py (original)
+++ python/branches/release25-maint/Lib/test/string_tests.py Tue Sep 5 04:21:38 2006
@@ -1069,7 +1069,7 @@
# from raymond's original specification
S = 'http://www.python.org'
self.checkequal(('http', '://', 'www.python.org'), S, 'rpartition', '://')
- self.checkequal(('http://www.python.org', '', ''), S, 'rpartition', '?')
+ self.checkequal(('', '', 'http://www.python.org'), S, 'rpartition', '?')
self.checkequal(('', 'http://', 'www.python.org'), S, 'rpartition', 'http://')
self.checkequal(('http://www.python.', 'org', ''), S, 'rpartition', 'org')
Modified: python/branches/release25-maint/Misc/NEWS
==============================================================================
--- python/branches/release25-maint/Misc/NEWS (original)
+++ python/branches/release25-maint/Misc/NEWS Tue Sep 5 04:21:38 2006
@@ -27,6 +27,9 @@
- Patch #1546288: fix seg fault in dict_equal due to ref counting bug.
+- The return tuple from str.rpartition(sep) is (tail, sep, head) where
+ head is the original string if sep was not found.
+
Library
-------
Modified: python/branches/release25-maint/Objects/stringlib/partition.h
==============================================================================
--- python/branches/release25-maint/Objects/stringlib/partition.h (original)
+++ python/branches/release25-maint/Objects/stringlib/partition.h Tue Sep 5 04:21:38 2006
@@ -78,12 +78,12 @@
}
if (pos < 0) {
- Py_INCREF(str_obj);
- PyTuple_SET_ITEM(out, 0, (PyObject*) str_obj);
Py_INCREF(STRINGLIB_EMPTY);
- PyTuple_SET_ITEM(out, 1, (PyObject*) STRINGLIB_EMPTY);
+ PyTuple_SET_ITEM(out, 0, (PyObject*) STRINGLIB_EMPTY);
Py_INCREF(STRINGLIB_EMPTY);
- PyTuple_SET_ITEM(out, 2, (PyObject*) STRINGLIB_EMPTY);
+ PyTuple_SET_ITEM(out, 1, (PyObject*) STRINGLIB_EMPTY);
+ Py_INCREF(str_obj);
+ PyTuple_SET_ITEM(out, 2, (PyObject*) str_obj);
return out;
}
Modified: python/branches/release25-maint/Objects/stringobject.c
==============================================================================
--- python/branches/release25-maint/Objects/stringobject.c (original)
+++ python/branches/release25-maint/Objects/stringobject.c Tue Sep 5 04:21:38 2006
@@ -1543,11 +1543,11 @@
}
PyDoc_STRVAR(rpartition__doc__,
-"S.rpartition(sep) -> (head, sep, tail)\n\
+"S.rpartition(sep) -> (tail, sep, head)\n\
\n\
Searches for the separator sep in S, starting at the end of S, and returns\n\
the part before it, the separator itself, and the part after it. If the\n\
-separator is not found, returns S and two empty strings.");
+separator is not found, returns two empty strings and S.");
static PyObject *
string_rpartition(PyStringObject *self, PyObject *sep_obj)
Modified: python/branches/release25-maint/Objects/unicodeobject.c
==============================================================================
--- python/branches/release25-maint/Objects/unicodeobject.c (original)
+++ python/branches/release25-maint/Objects/unicodeobject.c Tue Sep 5 04:21:38 2006
@@ -6708,11 +6708,11 @@
}
PyDoc_STRVAR(rpartition__doc__,
-"S.rpartition(sep) -> (head, sep, tail)\n\
+"S.rpartition(sep) -> (tail, sep, head)\n\
\n\
Searches for the separator sep in S, starting at the end of S, and returns\n\
the part before it, the separator itself, and the part after it. If the\n\
-separator is not found, returns S and two empty strings.");
+separator is not found, returns two empty strings and S.");
static PyObject*
unicode_rpartition(PyUnicodeObject *self, PyObject *separator)
More information about the Python-checkins
mailing list