Merged revisions 68133-68134,68141-68142,68145-68146,68148-68149,68159-68162,68166,68171-68174,68179,68195-68196,68210,68214-68215,68217-68222 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r68133 | antoine.pitrou | 2009-01-01 16:38:03 +0100 (Thu, 01 Jan 2009) | 1 line
fill in actual issue number in tests
........
r68134 | hirokazu.yamamoto | 2009-01-01 16:45:39 +0100 (Thu, 01 Jan 2009) | 2 lines
Issue #4797: IOError.filename was not set when _fileio.FileIO failed to open
file with `str' filename on Windows.
........
r68141 | benjamin.peterson | 2009-01-01 17:43:12 +0100 (Thu, 01 Jan 2009) | 1 line
fix highlighting
........
r68142 | benjamin.peterson | 2009-01-01 18:29:49 +0100 (Thu, 01 Jan 2009) | 2 lines
welcome to 2009, Python!
........
r68145 | amaury.forgeotdarc | 2009-01-02 01:03:54 +0100 (Fri, 02 Jan 2009) | 5 lines
#4801 _collections module fails to build on cygwin.
_PyObject_GC_TRACK is the macro version of PyObject_GC_Track,
and according to documentation it should not be used for extension modules.
........
r68146 | ronald.oussoren | 2009-01-02 11:44:46 +0100 (Fri, 02 Jan 2009) | 2 lines
Fix for issue4472: "configure --enable-shared doesn't work on OSX"
........
r68148 | ronald.oussoren | 2009-01-02 11:48:31 +0100 (Fri, 02 Jan 2009) | 2 lines
Forgot to add a NEWS item in my previous checkin
........
r68149 | ronald.oussoren | 2009-01-02 11:50:48 +0100 (Fri, 02 Jan 2009) | 2 lines
Fix for issue4780
........
r68159 | ronald.oussoren | 2009-01-02 15:48:17 +0100 (Fri, 02 Jan 2009) | 2 lines
Fix for issue 1627952
........
r68160 | ronald.oussoren | 2009-01-02 15:52:09 +0100 (Fri, 02 Jan 2009) | 2 lines
Fix for issue r1737832
........
r68161 | ronald.oussoren | 2009-01-02 16:00:05 +0100 (Fri, 02 Jan 2009) | 3 lines
Fix for issue 1149804
........
r68162 | ronald.oussoren | 2009-01-02 16:06:00 +0100 (Fri, 02 Jan 2009) | 3 lines
Fix for issue 4472 is incompatible with Cygwin, this patch
should fix that.
........
r68166 | benjamin.peterson | 2009-01-02 19:26:23 +0100 (Fri, 02 Jan 2009) | 1 line
document PyMemberDef
........
r68171 | georg.brandl | 2009-01-02 21:25:14 +0100 (Fri, 02 Jan 2009) | 3 lines
#4811: fix markup glitches (mostly remains of the conversion),
found by Gabriel Genellina.
........
r68172 | martin.v.loewis | 2009-01-02 21:32:55 +0100 (Fri, 02 Jan 2009) | 2 lines
Issue #4075: Use OutputDebugStringW in Py_FatalError.
........
r68173 | martin.v.loewis | 2009-01-02 21:40:14 +0100 (Fri, 02 Jan 2009) | 2 lines
Issue #4051: Prevent conflict of UNICODE macros in cPickle.
........
r68174 | benjamin.peterson | 2009-01-02 21:47:27 +0100 (Fri, 02 Jan 2009) | 1 line
fix compilation on non-Windows platforms
........
r68179 | raymond.hettinger | 2009-01-02 22:26:45 +0100 (Fri, 02 Jan 2009) | 1 line
Issue #4615. Document how to use itertools for de-duping.
........
r68195 | georg.brandl | 2009-01-03 14:45:15 +0100 (Sat, 03 Jan 2009) | 2 lines
Remove useless string literal.
........
r68196 | georg.brandl | 2009-01-03 15:29:53 +0100 (Sat, 03 Jan 2009) | 2 lines
Fix indentation.
........
r68210 | georg.brandl | 2009-01-03 20:10:12 +0100 (Sat, 03 Jan 2009) | 2 lines
Set eol-style correctly for mp_distributing.py.
........
r68214 | georg.brandl | 2009-01-03 20:44:48 +0100 (Sat, 03 Jan 2009) | 2 lines
Make indentation consistent.
........
r68215 | georg.brandl | 2009-01-03 21:15:14 +0100 (Sat, 03 Jan 2009) | 2 lines
Fix role name.
........
r68217 | georg.brandl | 2009-01-03 21:30:15 +0100 (Sat, 03 Jan 2009) | 2 lines
Add rstlint, a little tool to find subtle markup problems and inconsistencies in the Doc sources.
........
r68218 | georg.brandl | 2009-01-03 21:38:59 +0100 (Sat, 03 Jan 2009) | 2 lines
Recognize usage of the default role.
........
r68219 | georg.brandl | 2009-01-03 21:47:01 +0100 (Sat, 03 Jan 2009) | 2 lines
Fix uses of the default role.
........
r68220 | georg.brandl | 2009-01-03 21:55:06 +0100 (Sat, 03 Jan 2009) | 2 lines
Remove trailing whitespace.
........
r68221 | georg.brandl | 2009-01-03 22:04:55 +0100 (Sat, 03 Jan 2009) | 2 lines
Remove tabs from the documentation.
........
r68222 | georg.brandl | 2009-01-03 22:11:58 +0100 (Sat, 03 Jan 2009) | 2 lines
Disable the line length checker by default.
........
diff --git a/Doc/howto/functional.rst b/Doc/howto/functional.rst
index b717f80..d589f36 100644
--- a/Doc/howto/functional.rst
+++ b/Doc/howto/functional.rst
@@ -145,7 +145,7 @@
functions are also easier to read and to check for errors.
-Ease of debugging and testing
+Ease of debugging and testing
-----------------------------
Testing and debugging a functional-style program is easier.
@@ -213,7 +213,7 @@
Traceback (most recent call last):
File "<stdin>", line 1, in ?
StopIteration
- >>>
+ >>>
Python expects iterable objects in several different contexts, the most
important being the ``for`` statement. In the statement ``for X in Y``, Y must
@@ -362,7 +362,7 @@
comprehensions are surrounded by square brackets ("[]"). Generator expressions
have the form::
- ( expression for expr in sequence1
+ ( expression for expr in sequence1
if condition1
for expr2 in sequence2
if condition2
@@ -404,7 +404,7 @@
if not (conditionN):
continue # Skip this element
- # Output the value of
+ # Output the value of
# the expression.
This means that when there are multiple ``for...in`` clauses but no ``if``
@@ -418,8 +418,8 @@
>>> seq1 = 'abc'
>>> seq2 = (1,2,3)
>>> [(x,y) for x in seq1 for y in seq2]
- [('a', 1), ('a', 2), ('a', 3),
- ('b', 1), ('b', 2), ('b', 3),
+ [('a', 1), ('a', 2), ('a', 3),
+ ('b', 1), ('b', 2), ('b', 3),
('c', 1), ('c', 2), ('c', 3)]
To avoid introducing an ambiguity into Python's grammar, if ``expression`` is
@@ -585,7 +585,7 @@
9
>>> print it.next()
Traceback (most recent call last):
- File ``t.py'', line 15, in ?
+ File "t.py", line 15, in ?
print it.next()
StopIteration
@@ -759,7 +759,7 @@
True
>>> all([0,1,0])
False
- >>> all([0,0,0])
+ >>> all([0,0,0])
False
>>> all([1,1,1])
True
@@ -845,7 +845,7 @@
4) Convert the lambda to a def statement, using that name.
5) Remove the comment.
-I really like these rules, but you're free to disagree
+I really like these rules, but you're free to disagree
about whether this lambda-free style is better.
@@ -970,7 +970,7 @@
``itertools.starmap(func, iter)`` assumes that the iterable will return a stream
of tuples, and calls ``f()`` using these tuples as the arguments::
- itertools.starmap(os.path.join,
+ itertools.starmap(os.path.join,
[('/usr', 'bin', 'java'), ('/bin', 'python'),
('/usr', 'bin', 'perl'),('/usr', 'bin', 'ruby')])
=>
@@ -1039,9 +1039,9 @@
::
- city_list = [('Decatur', 'AL'), ('Huntsville', 'AL'), ('Selma', 'AL'),
+ city_list = [('Decatur', 'AL'), ('Huntsville', 'AL'), ('Selma', 'AL'),
('Anchorage', 'AK'), ('Nome', 'AK'),
- ('Flagstaff', 'AZ'), ('Phoenix', 'AZ'), ('Tucson', 'AZ'),
+ ('Flagstaff', 'AZ'), ('Phoenix', 'AZ'), ('Tucson', 'AZ'),
...
]
@@ -1056,7 +1056,7 @@
where
iterator-1 =>
('Decatur', 'AL'), ('Huntsville', 'AL'), ('Selma', 'AL')
- iterator-2 =>
+ iterator-2 =>
('Anchorage', 'AK'), ('Nome', 'AK')
iterator-3 =>
('Flagstaff', 'AZ'), ('Phoenix', 'AZ'), ('Tucson', 'AZ')
@@ -1150,7 +1150,7 @@
>>> double(add(5, 6))
22
-
+
The ``unpack`` keyword is provided to work around the fact that Python functions
are not always `fully curried <http://en.wikipedia.org/wiki/Currying>`__. By
default, it is expected that the ``inner`` function will return a single object
@@ -1159,15 +1159,15 @@
will be expanded before being passed to ``outer``. Put simply, ::
compose(f, g)(5, 6)
-
+
is equivalent to::
f(g(5, 6))
-
+
while ::
compose(f, g, unpack=True)(5, 6)
-
+
is equivalent to::
f(*g(5, 6))
@@ -1178,20 +1178,20 @@
``functional`` and ``functools``). ::
from functional import compose, partial
-
+
multi_compose = partial(reduce, compose)
-
-
+
+
We can also use ``map()``, ``compose()`` and ``partial()`` to craft a version of
``"".join(...)`` that converts its arguments to string::
from functional import compose, partial
-
+
join = compose("".join, partial(map, str))
``flip(func)``
-
+
``flip()`` wraps the callable in ``func`` and causes it to receive its
non-keyword arguments in reverse order. ::
@@ -1206,7 +1206,7 @@
(7, 6, 5)
``foldl(func, start, iterable)``
-
+
``foldl()`` takes a binary function, a starting value (usually some kind of
'zero'), and an iterable. The function is applied to the starting value and the
first element of the list, then the result of that and the second element of the
@@ -1220,7 +1220,7 @@
f(f(f(0, 1), 2), 3)
-
+
``foldl()`` is roughly equivalent to the following recursive function::
def foldl(func, start, seq):
@@ -1298,7 +1298,7 @@
Text Processing".
Mertz also wrote a 3-part series of articles on functional programming
-for IBM's DeveloperWorks site; see
+for IBM's DeveloperWorks site; see
`part 1 <http://www-128.ibm.com/developerworks/library/l-prog.html>`__,
`part 2 <http://www-128.ibm.com/developerworks/library/l-prog2.html>`__, and
`part 3 <http://www-128.ibm.com/developerworks/linux/library/l-prog3.html>`__,