Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
1b6e7c47
Commit
1b6e7c47
authored
Sep 08, 2012
by
R David Murray
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
#15510: clarify textwrap's handling of whitespace, and add confirming tests.
Patch by Chris Jerdonek.
parent
b676727d
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
68 additions
and
13 deletions
+68
-13
Doc/library/textwrap.rst
Doc/library/textwrap.rst
+13
-6
Lib/test/test_textwrap.py
Lib/test/test_textwrap.py
+55
-7
No files found.
Doc/library/textwrap.rst
View file @
1b6e7c47
...
...
@@ -26,6 +26,9 @@ otherwise, you should use an instance of :class:`TextWrapper` for efficiency.
Optional keyword arguments correspond to the instance attributes of
:class:`TextWrapper`, documented below. *width* defaults to ``70``.
See the :meth:`TextWrapper.wrap` method for additional details on how
:func:`wrap` behaves.
.. function:: fill(text[, width[, ...]])
...
...
@@ -134,9 +137,11 @@ indentation from strings that have unwanted whitespace to the left of the text.
.. attribute:: drop_whitespace
(default: ``True``) If true, whitespace that, after wrapping, happens to
end up at the beginning or end of a line is dropped (leading whitespace in
the first line is always preserved, though).
(default: ``True``) If true, whitespace at the beginning and ending of
every line (after wrapping but before indenting) is dropped.
Whitespace at the beginning of the paragraph, however, is not dropped
if non-whitespace follows it. If whitespace being dropped takes up an
entire line, the whole line is dropped.
.. versionadded:: 2.6
Whitespace was always dropped in earlier versions.
...
...
@@ -145,7 +150,8 @@ indentation from strings that have unwanted whitespace to the left of the text.
.. attribute:: initial_indent
(default: ``''``) String that will be prepended to the first line of
wrapped output. Counts towards the length of the first line.
wrapped output. Counts towards the length of the first line. The empty
string is not indented.
.. attribute:: subsequent_indent
...
...
@@ -208,8 +214,9 @@ indentation from strings that have unwanted whitespace to the left of the text.
Wraps the single paragraph in *text* (a string) so every line is at most
:attr:`width` characters long. All wrapping options are taken from
instance attributes of the :class:`TextWrapper` instance. Returns a list
of output lines, without final newlines.
instance attributes of the :class:`TextWrapper` instance. Returns a list
of output lines, without final newlines. If the wrapped output has no
content, the returned list is empty.
.. method:: fill(text)
...
...
Lib/test/test_textwrap.py
View file @
1b6e7c47
...
...
@@ -66,6 +66,15 @@ class WrapTestCase(BaseTestCase):
"I'm glad to hear it!"
])
self
.
check_wrap
(
text
,
80
,
[
text
])
def
test_empty_string
(
self
):
# Check that wrapping the empty string returns an empty list.
self
.
check_wrap
(
""
,
6
,
[])
self
.
check_wrap
(
""
,
6
,
[],
drop_whitespace
=
False
)
def
test_empty_string_with_initial_indent
(
self
):
# Check that the empty string is not indented.
self
.
check_wrap
(
""
,
6
,
[],
initial_indent
=
"++"
)
self
.
check_wrap
(
""
,
6
,
[],
initial_indent
=
"++"
,
drop_whitespace
=
False
)
def
test_whitespace
(
self
):
# Whitespace munging and end-of-sentence detection
...
...
@@ -323,7 +332,32 @@ What a mess!
[
"blah"
,
" "
,
"(ding"
,
" "
,
"dong),"
,
" "
,
"wubba"
])
def
test_initial_whitespace
(
self
):
def
test_drop_whitespace_false
(
self
):
# Check that drop_whitespace=False preserves whitespace.
# SF patch #1581073
text
=
" This is a sentence with much whitespace."
self
.
check_wrap
(
text
,
10
,
[
" This is a"
,
" "
,
"sentence "
,
"with "
,
"much white"
,
"space."
],
drop_whitespace
=
False
)
def
test_drop_whitespace_false_whitespace_only
(
self
):
# Check that drop_whitespace=False preserves a whitespace-only string.
self
.
check_wrap
(
" "
,
6
,
[
" "
],
drop_whitespace
=
False
)
def
test_drop_whitespace_false_whitespace_only_with_indent
(
self
):
# Check that a whitespace-only string gets indented (when
# drop_whitespace is False).
self
.
check_wrap
(
" "
,
6
,
[
" "
],
drop_whitespace
=
False
,
initial_indent
=
" "
)
def
test_drop_whitespace_whitespace_only
(
self
):
# Check drop_whitespace on a whitespace-only string.
self
.
check_wrap
(
" "
,
6
,
[])
def
test_drop_whitespace_leading_whitespace
(
self
):
# Check that drop_whitespace does not drop leading whitespace (if
# followed by non-whitespace).
# SF bug #622849 reported inconsistent handling of leading
# whitespace; let's test that a bit, shall we?
text
=
" This is a sentence with leading whitespace."
...
...
@@ -332,13 +366,27 @@ What a mess!
self
.
check_wrap
(
text
,
30
,
[
" This is a sentence with"
,
"leading whitespace."
])
def
test_
no_drop_whitespac
e
(
self
):
#
SF patch #1581073
text
=
" This is a sentence with much whitespace."
self
.
check_wrap
(
text
,
10
,
[
" This is a"
,
" "
,
"sentence "
,
"with "
,
"much white"
,
"space.
"
],
def
test_
drop_whitespace_whitespace_lin
e
(
self
):
#
Check that drop_whitespace skips the whole line if a non-leading
# line consists only of whitespace.
text
=
"abcd efgh"
# Include the result for drop_whitespace=False for comparison.
self
.
check_wrap
(
text
,
6
,
[
"abcd"
,
" "
,
"efgh
"
],
drop_whitespace
=
False
)
self
.
check_wrap
(
text
,
6
,
[
"abcd"
,
"efgh"
])
def
test_drop_whitespace_whitespace_only_with_indent
(
self
):
# Check that initial_indent is not applied to a whitespace-only
# string. This checks a special case of the fact that dropping
# whitespace occurs before indenting.
self
.
check_wrap
(
" "
,
6
,
[],
initial_indent
=
"++"
)
def
test_drop_whitespace_whitespace_indent
(
self
):
# Check that drop_whitespace does not drop whitespace indents.
# This checks a special case of the fact that dropping whitespace
# occurs before indenting.
self
.
check_wrap
(
"abcd efgh"
,
6
,
[
" abcd"
,
" efgh"
],
initial_indent
=
" "
,
subsequent_indent
=
" "
)
if
test_support
.
have_unicode
:
def
test_unicode
(
self
):
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment