summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeal Norwitz <nnorwitz@gmail.com>2003-04-10 22:35:32 (GMT)
committerNeal Norwitz <nnorwitz@gmail.com>2003-04-10 22:35:32 (GMT)
commitffe33b7f2416132d2e5b64683dbcc2aaf0596937 (patch)
treeba66fc78e483c14dc34b86a8f079d5b37268f03d
parent5c16c7b014f4cf975d25f667f6309933415e130d (diff)
downloadcpython-ffe33b7f2416132d2e5b64683dbcc2aaf0596937.zip
cpython-ffe33b7f2416132d2e5b64683dbcc2aaf0596937.tar.gz
cpython-ffe33b7f2416132d2e5b64683dbcc2aaf0596937.tar.bz2
Attempt to make all the various string *strip methods the same.
* Doc - add doc for when functions were added * UserString * string object methods * string module functions 'chars' is used for the last parameter everywhere. These changes will be backported, since part of the changes have already been made, but they were inconsistent.
-rw-r--r--Doc/lib/libstring.tex6
-rwxr-xr-xLib/UserString.py6
-rw-r--r--Lib/string.py19
-rw-r--r--Lib/test/string_tests.py55
-rw-r--r--Objects/stringobject.c18
-rw-r--r--Objects/unicodeobject.c18
6 files changed, 64 insertions, 58 deletions
diff --git a/Doc/lib/libstring.tex b/Doc/lib/libstring.tex
index 99bb5ee..1f1a89e 100644
--- a/Doc/lib/libstring.tex
+++ b/Doc/lib/libstring.tex
@@ -243,6 +243,8 @@ Return a copy of the string with leading characters removed. If
removed. If given and not \code{None}, \var{chars} must be a string;
the characters in the string will be stripped from the beginning of
the string this method is called on.
+\versionchanged[The \var{chars} parameter was added. The \var{chars}
+parameter cannot be passed in earlier 2.2 versions]{2.2.3}
\end{funcdesc}
\begin{funcdesc}{rstrip}{s\optional{, chars}}
@@ -251,6 +253,8 @@ Return a copy of the string with trailing characters removed. If
removed. If given and not \code{None}, \var{chars} must be a string;
the characters in the string will be stripped from the end of the
string this method is called on.
+\versionchanged[The \var{chars} parameter was added. The \var{chars}
+parameter cannot be passed in 2.2 versions]{2.2.3}
\end{funcdesc}
\begin{funcdesc}{strip}{s\optional{, chars}}
@@ -259,6 +263,8 @@ removed. If \var{chars} is omitted or \code{None}, whitespace
characters are removed. If given and not \code{None}, \var{chars}
must be a string; the characters in the string will be stripped from
the both ends of the string this method is called on.
+\versionchanged[The \var{chars} parameter was added. The \var{chars}
+parameter cannot be passed in 2.2 or 2.2.1]{2.2.2}
\end{funcdesc}
\begin{funcdesc}{swapcase}{s}
diff --git a/Lib/UserString.py b/Lib/UserString.py
index 2819ab0..fcd115d 100755
--- a/Lib/UserString.py
+++ b/Lib/UserString.py
@@ -99,7 +99,7 @@ class UserString:
def join(self, seq): return self.data.join(seq)
def ljust(self, width): return self.__class__(self.data.ljust(width))
def lower(self): return self.__class__(self.data.lower())
- def lstrip(self, sep=None): return self.__class__(self.data.lstrip(sep))
+ def lstrip(self, chars=None): return self.__class__(self.data.lstrip(chars))
def replace(self, old, new, maxsplit=-1):
return self.__class__(self.data.replace(old, new, maxsplit))
def rfind(self, sub, start=0, end=sys.maxint):
@@ -107,13 +107,13 @@ class UserString:
def rindex(self, sub, start=0, end=sys.maxint):
return self.data.rindex(sub, start, end)
def rjust(self, width): return self.__class__(self.data.rjust(width))
- def rstrip(self, sep=None): return self.__class__(self.data.rstrip(sep))
+ def rstrip(self, chars=None): return self.__class__(self.data.rstrip(chars))
def split(self, sep=None, maxsplit=-1):
return self.data.split(sep, maxsplit)
def splitlines(self, keepends=0): return self.data.splitlines(keepends)
def startswith(self, prefix, start=0, end=sys.maxint):
return self.data.startswith(prefix, start, end)
- def strip(self, sep=None): return self.__class__(self.data.strip(sep))
+ def strip(self, chars=None): return self.__class__(self.data.strip(chars))
def swapcase(self): return self.__class__(self.data.swapcase())
def title(self): return self.__class__(self.data.title())
def translate(self, *args):
diff --git a/Lib/string.py b/Lib/string.py
index 021469c..a375249 100644
--- a/Lib/string.py
+++ b/Lib/string.py
@@ -79,30 +79,31 @@ def strip(s, chars=None):
Return a copy of the string s with leading and trailing
whitespace removed.
- If chars is given and not None, remove characters in sep instead.
+ If chars is given and not None, remove characters in chars instead.
If chars is unicode, S will be converted to unicode before stripping.
"""
return s.strip(chars)
# Strip leading tabs and spaces
-def lstrip(s):
- """lstrip(s) -> string
+def lstrip(s, chars=None):
+ """lstrip(s [,chars]) -> string
Return a copy of the string s with leading whitespace removed.
+ If chars is given and not None, remove characters in chars instead.
"""
- return s.lstrip()
+ return s.lstrip(chars)
# Strip trailing tabs and spaces
-def rstrip(s):
- """rstrip(s) -> string
+def rstrip(s, chars=None):
+ """rstrip(s [,chars]) -> string
- Return a copy of the string s with trailing whitespace
- removed.
+ Return a copy of the string s with trailing whitespace removed.
+ If chars is given and not None, remove characters in chars instead.
"""
- return s.rstrip()
+ return s.rstrip(chars)
# Split a string into a list of space/tab-separated words
diff --git a/Lib/test/string_tests.py b/Lib/test/string_tests.py
index dcf961d..591b409 100644
--- a/Lib/test/string_tests.py
+++ b/Lib/test/string_tests.py
@@ -195,6 +195,33 @@ class CommonTest(unittest.TestCase):
self.checkequal(' hello', ' hello ', 'rstrip')
self.checkequal('hello', 'hello', 'strip')
+ # strip/lstrip/rstrip with None arg
+ self.checkequal('hello', ' hello ', 'strip', None)
+ self.checkequal('hello ', ' hello ', 'lstrip', None)
+ self.checkequal(' hello', ' hello ', 'rstrip', None)
+ self.checkequal('hello', 'hello', 'strip', None)
+
+ # strip/lstrip/rstrip with str arg
+ self.checkequal('hello', 'xyzzyhelloxyzzy', 'strip', 'xyz')
+ self.checkequal('helloxyzzy', 'xyzzyhelloxyzzy', 'lstrip', 'xyz')
+ self.checkequal('xyzzyhello', 'xyzzyhelloxyzzy', 'rstrip', 'xyz')
+ self.checkequal('hello', 'hello', 'strip', 'xyz')
+
+ # strip/lstrip/rstrip with unicode arg
+ if test_support.have_unicode:
+ self.checkequal(unicode('hello', 'ascii'), 'xyzzyhelloxyzzy',
+ 'strip', unicode('xyz', 'ascii'))
+ self.checkequal(unicode('helloxyzzy', 'ascii'), 'xyzzyhelloxyzzy',
+ 'lstrip', unicode('xyz', 'ascii'))
+ self.checkequal(unicode('xyzzyhello', 'ascii'), 'xyzzyhelloxyzzy',
+ 'rstrip', unicode('xyz', 'ascii'))
+ self.checkequal(unicode('hello', 'ascii'), 'hello',
+ 'strip', unicode('xyz', 'ascii'))
+
+ self.checkraises(TypeError, 'hello', 'strip', 42, 42)
+ self.checkraises(TypeError, 'hello', 'lstrip', 42, 42)
+ self.checkraises(TypeError, 'hello', 'rstrip', 42, 42)
+
def test_ljust(self):
self.checkequal('abc ', 'abc', 'ljust', 10)
self.checkequal('abc ', 'abc', 'ljust', 6)
@@ -432,34 +459,6 @@ class MixinStrUnicodeUserStringTest:
self.checkraises(TypeError, 'hello', 'endswith')
self.checkraises(TypeError, 'hello', 'endswith', 42)
- def test_strip_args(self):
- # strip/lstrip/rstrip with None arg
- self.checkequal('hello', ' hello ', 'strip', None)
- self.checkequal('hello ', ' hello ', 'lstrip', None)
- self.checkequal(' hello', ' hello ', 'rstrip', None)
- self.checkequal('hello', 'hello', 'strip', None)
-
- # strip/lstrip/rstrip with str arg
- self.checkequal('hello', 'xyzzyhelloxyzzy', 'strip', 'xyz')
- self.checkequal('helloxyzzy', 'xyzzyhelloxyzzy', 'lstrip', 'xyz')
- self.checkequal('xyzzyhello', 'xyzzyhelloxyzzy', 'rstrip', 'xyz')
- self.checkequal('hello', 'hello', 'strip', 'xyz')
-
- # strip/lstrip/rstrip with unicode arg
- if test_support.have_unicode:
- self.checkequal(unicode('hello', 'ascii'), 'xyzzyhelloxyzzy',
- 'strip', unicode('xyz', 'ascii'))
- self.checkequal(unicode('helloxyzzy', 'ascii'), 'xyzzyhelloxyzzy',
- 'lstrip', unicode('xyz', 'ascii'))
- self.checkequal(unicode('xyzzyhello', 'ascii'), 'xyzzyhelloxyzzy',
- 'rstrip', unicode('xyz', 'ascii'))
- self.checkequal(unicode('hello', 'ascii'), 'hello',
- 'strip', unicode('xyz', 'ascii'))
-
- self.checkraises(TypeError, 'hello', 'strip', 42, 42)
- self.checkraises(TypeError, 'hello', 'lstrip', 42, 42)
- self.checkraises(TypeError, 'hello', 'rstrip', 42, 42)
-
def test___contains__(self):
self.checkequal(True, '', '__contains__', '') # vereq('' in '', True)
self.checkequal(True, 'abc', '__contains__', '') # vereq('' in 'abc', True)
diff --git a/Objects/stringobject.c b/Objects/stringobject.c
index ac4ad04..0425b1b 100644
--- a/Objects/stringobject.c
+++ b/Objects/stringobject.c
@@ -1770,12 +1770,12 @@ do_argstrip(PyStringObject *self, int striptype, PyObject *args)
PyDoc_STRVAR(strip__doc__,
-"S.strip([sep]) -> string or unicode\n\
+"S.strip([chars]) -> string or unicode\n\
\n\
Return a copy of the string S with leading and trailing\n\
whitespace removed.\n\
-If sep is given and not None, remove characters in sep instead.\n\
-If sep is unicode, S will be converted to unicode before stripping");
+If chars is given and not None, remove characters in chars instead.\n\
+If chars is unicode, S will be converted to unicode before stripping");
static PyObject *
string_strip(PyStringObject *self, PyObject *args)
@@ -1788,11 +1788,11 @@ string_strip(PyStringObject *self, PyObject *args)
PyDoc_STRVAR(lstrip__doc__,
-"S.lstrip([sep]) -> string or unicode\n\
+"S.lstrip([chars]) -> string or unicode\n\
\n\
Return a copy of the string S with leading whitespace removed.\n\
-If sep is given and not None, remove characters in sep instead.\n\
-If sep is unicode, S will be converted to unicode before stripping");
+If chars is given and not None, remove characters in chars instead.\n\
+If chars is unicode, S will be converted to unicode before stripping");
static PyObject *
string_lstrip(PyStringObject *self, PyObject *args)
@@ -1805,11 +1805,11 @@ string_lstrip(PyStringObject *self, PyObject *args)
PyDoc_STRVAR(rstrip__doc__,
-"S.rstrip([sep]) -> string or unicode\n\
+"S.rstrip([chars]) -> string or unicode\n\
\n\
Return a copy of the string S with trailing whitespace removed.\n\
-If sep is given and not None, remove characters in sep instead.\n\
-If sep is unicode, S will be converted to unicode before stripping");
+If chars is given and not None, remove characters in chars instead.\n\
+If chars is unicode, S will be converted to unicode before stripping");
static PyObject *
string_rstrip(PyStringObject *self, PyObject *args)
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 847580c..096dfcb 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -5247,12 +5247,12 @@ do_argstrip(PyUnicodeObject *self, int striptype, PyObject *args)
PyDoc_STRVAR(strip__doc__,
-"S.strip([sep]) -> unicode\n\
+"S.strip([chars]) -> unicode\n\
\n\
Return a copy of the string S with leading and trailing\n\
whitespace removed.\n\
-If sep is given and not None, remove characters in sep instead.\n\
-If sep is a str, it will be converted to unicode before stripping");
+If chars is given and not None, remove characters in chars instead.\n\
+If chars is a str, it will be converted to unicode before stripping");
static PyObject *
unicode_strip(PyUnicodeObject *self, PyObject *args)
@@ -5265,11 +5265,11 @@ unicode_strip(PyUnicodeObject *self, PyObject *args)
PyDoc_STRVAR(lstrip__doc__,
-"S.lstrip([sep]) -> unicode\n\
+"S.lstrip([chars]) -> unicode\n\
\n\
Return a copy of the string S with leading whitespace removed.\n\
-If sep is given and not None, remove characters in sep instead.\n\
-If sep is a str, it will be converted to unicode before stripping");
+If chars is given and not None, remove characters in chars instead.\n\
+If chars is a str, it will be converted to unicode before stripping");
static PyObject *
unicode_lstrip(PyUnicodeObject *self, PyObject *args)
@@ -5282,11 +5282,11 @@ unicode_lstrip(PyUnicodeObject *self, PyObject *args)
PyDoc_STRVAR(rstrip__doc__,
-"S.rstrip([sep]) -> unicode\n\
+"S.rstrip([chars]) -> unicode\n\
\n\
Return a copy of the string S with trailing whitespace removed.\n\
-If sep is given and not None, remove characters in sep instead.\n\
-If sep is a str, it will be converted to unicode before stripping");
+If chars is given and not None, remove characters in chars instead.\n\
+If chars is a str, it will be converted to unicode before stripping");
static PyObject *
unicode_rstrip(PyUnicodeObject *self, PyObject *args)