Merged revisions 77236,77383,77399,77857,78238,78861-78862,78958 via svnmerge from
svn+ssh://svn.python.org/python/branches/py3k
................
r77236 | georg.brandl | 2010-01-02 15:51:12 +0100 (Sa, 02 Jan 2010) | 1 line
#7592: remove duplicate description.
................
r77383 | georg.brandl | 2010-01-09 10:48:46 +0100 (Sa, 09 Jan 2010) | 9 lines
Merged revisions 77382 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r77382 | georg.brandl | 2010-01-09 10:47:11 +0100 (Sa, 09 Jan 2010) | 1 line
#7422: make it clear that getargspec() only works on Python functions.
........
................
r77399 | georg.brandl | 2010-01-09 23:39:42 +0100 (Sa, 09 Jan 2010) | 1 line
Remove redundant brackets in signatures.
................
r77857 | georg.brandl | 2010-01-30 18:54:04 +0100 (Sa, 30 Jan 2010) | 1 line
#7814: fix wrong example function usage.
................
r78238 | georg.brandl | 2010-02-19 10:10:15 +0100 (Fr, 19 Feb 2010) | 1 line
#5341: fix parenthesis placement.
................
r78861 | georg.brandl | 2010-03-12 11:04:37 +0100 (Fr, 12 Mär 2010) | 1 line
Make tool compatible with 2.x and 3.x.
................
r78862 | georg.brandl | 2010-03-12 11:06:40 +0100 (Fr, 12 Mär 2010) | 13 lines
Merged revisions 78859-78860 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r78859 | georg.brandl | 2010-03-12 10:57:43 +0100 (Fr, 12 Mär 2010) | 1 line
Get rid of backticks.
........
r78860 | georg.brandl | 2010-03-12 11:02:03 +0100 (Fr, 12 Mär 2010) | 1 line
Fix warnings from "make check".
........
................
r78958 | georg.brandl | 2010-03-14 11:51:01 +0100 (So, 14 Mär 2010) | 37 lines
Merged revisions 78101,78115,78117,78182,78188,78245,78386,78496 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r78101 | georg.brandl | 2010-02-08 01:04:54 +0100 (Mo, 08 Feb 2010) | 1 line
Fix test_fnmatch.
........
r78115 | georg.brandl | 2010-02-08 23:40:51 +0100 (Mo, 08 Feb 2010) | 1 line
Fix missing string formatting placeholder.
........
r78117 | georg.brandl | 2010-02-08 23:48:37 +0100 (Mo, 08 Feb 2010) | 1 line
Convert test failure from output-producing to self.fail().
........
r78182 | georg.brandl | 2010-02-14 09:18:23 +0100 (So, 14 Feb 2010) | 1 line
#7926: fix stray parens.
........
r78188 | georg.brandl | 2010-02-14 14:38:12 +0100 (So, 14 Feb 2010) | 1 line
#7926: fix-up wording.
........
r78245 | georg.brandl | 2010-02-19 20:36:08 +0100 (Fr, 19 Feb 2010) | 1 line
#7967: PyXML is no more.
........
r78386 | georg.brandl | 2010-02-23 22:48:57 +0100 (Di, 23 Feb 2010) | 1 line
#6544: fix refleak in kqueue, occurring in certain error conditions.
........
r78496 | georg.brandl | 2010-02-27 15:58:08 +0100 (Sa, 27 Feb 2010) | 1 line
Link to http://www.python.org/dev/workflow/ from bugs page.
........
................
diff --git a/Doc/bugs.rst b/Doc/bugs.rst
index 55b3107..a9a48c7 100644
--- a/Doc/bugs.rst
+++ b/Doc/bugs.rst
@@ -38,10 +38,9 @@
To do this, search the bug database using the search box on the top of the page.
If the problem you're reporting is not already in the bug tracker, go back to
-the Python Bug Tracker. If you don't already have a tracker account, select the
-"Register" link in the sidebar and undergo the registration procedure.
-Otherwise, if you're not logged in, enter your credentials and select "Login".
-It is not possible to submit a bug report anonymously.
+the Python Bug Tracker and log in. If you don't already have a tracker account,
+select the "Register" link or, if you use OpenID, one of the OpenID provider
+logos in the sidebar. It is not possible to submit a bug report anonymously.
Being now logged in, you can submit a bug. Select the "Create New" link in the
sidebar to open the bug reporting form.
@@ -58,7 +57,8 @@
Each bug report will be assigned to a developer who will determine what needs to
be done to correct the problem. You will receive an update each time action is
-taken on the bug.
+taken on the bug. See http://www.python.org/dev/workflow/ for a detailed
+description of the issue workflow.
.. seealso::
diff --git a/Doc/distutils/examples.rst b/Doc/distutils/examples.rst
index 648063b..6c27738 100644
--- a/Doc/distutils/examples.rst
+++ b/Doc/distutils/examples.rst
@@ -257,9 +257,9 @@
(maintainer and maintainer_email) must be supplied
-If you use the reStructuredText syntax in the `long_description` field and
+If you use the reStructuredText syntax in the ``long_description`` field and
`docutils <http://docutils.sourceforge.net/>`_ is installed you can check if
-the syntax is fine with the ``check`` command, using the `restructuredtext`
+the syntax is fine with the ``check`` command, using the ``restructuredtext``
option.
For example, if the :file:`setup.py` script is changed like this::
@@ -278,7 +278,7 @@
url='http://example.com', long_description=desc)
Where the long description is broken, ``check`` will be able to detect it
-by using the `docutils` parser::
+by using the :mod:`docutils` parser::
$ pythontrunk setup.py check --restructuredtext
running check
diff --git a/Doc/distutils/uploading.rst b/Doc/distutils/uploading.rst
index e947245..7b790b1 100644
--- a/Doc/distutils/uploading.rst
+++ b/Doc/distutils/uploading.rst
@@ -60,13 +60,13 @@
setup(name='Distutils',
long_description=open('README.txt'))
-In that case, `README.txt` is a regular reStructuredText text file located
-in the root of the package besides `setup.py`.
+In that case, :file:`README.txt` is a regular reStructuredText text file located
+in the root of the package besides :file:`setup.py`.
To prevent registering broken reStructuredText content, you can use the
-:program:`rst2html` program that is provided by the `docutils` package
+:program:`rst2html` program that is provided by the :mod:`docutils` package
and check the ``long_description`` from the command line::
$ python setup.py --long-description | rst2html.py > output.html
-`docutils` will display a warning if there's something wrong with your syntax.
+:mod:`docutils` will display a warning if there's something wrong with your syntax.
diff --git a/Doc/glossary.rst b/Doc/glossary.rst
index 5ecf848..f1474cf 100644
--- a/Doc/glossary.rst
+++ b/Doc/glossary.rst
@@ -331,7 +331,7 @@
iterator
An object representing a stream of data. Repeated calls to the iterator's
- :meth:`__next__` (or passing it to the builtin function) :func:`next`
+ :meth:`__next__` (or passing it to the built-in function :func:`next`)
method return successive items in the stream. When no more data are
available a :exc:`StopIteration` exception is raised instead. At this
point, the iterator object is exhausted and any further calls to its
diff --git a/Doc/library/http.client.rst b/Doc/library/http.client.rst
index 0f59b9a..f8aedcc 100644
--- a/Doc/library/http.client.rst
+++ b/Doc/library/http.client.rst
@@ -486,7 +486,7 @@
.. attribute:: HTTPResponse.debuglevel
- A debugging hook. If `debuglevel` is greater than zero, messages
+ A debugging hook. If :attr:`debuglevel` is greater than zero, messages
will be printed to stdout as the response is read and parsed.
diff --git a/Doc/library/inspect.rst b/Doc/library/inspect.rst
index 37a4f1a..cc88acf 100644
--- a/Doc/library/inspect.rst
+++ b/Doc/library/inspect.rst
@@ -387,7 +387,7 @@
.. function:: getargspec(func)
- Get the names and default values of a function's arguments. A
+ Get the names and default values of a Python function's arguments. A
:term:`named tuple` ``ArgSpec(args, varargs, keywords,
defaults)`` is returned. *args* is a list of
the argument names. *varargs* and *varkw* are the names of the ``*`` and
@@ -402,8 +402,8 @@
.. function:: getfullargspec(func)
- Get the names and default values of a function's arguments. A :term:`named
- tuple` is returned:
+ Get the names and default values of a Python function's arguments. A
+ :term:`named tuple` is returned:
``FullArgSpec(args, varargs, varkw, defaults, kwonlyargs, kwonlydefaults,
annotations)``
diff --git a/Doc/library/site.rst b/Doc/library/site.rst
index 0fe63a3..bf65d17 100644
--- a/Doc/library/site.rst
+++ b/Doc/library/site.rst
@@ -117,5 +117,5 @@
Adds a directory to sys.path and processes its pth files.
-XXX Update documentation
-XXX document python -m site --user-base --user-site
+.. XXX Update documentation
+.. XXX document python -m site --user-base --user-site
diff --git a/Doc/library/ssl.rst b/Doc/library/ssl.rst
index 5c78345..d377072 100644
--- a/Doc/library/ssl.rst
+++ b/Doc/library/ssl.rst
@@ -278,14 +278,6 @@
else:
raise
-.. method:: SSLSocket.unwrap()
-
- Performs the SSL shutdown handshake, which removes the TLS layer from the
- underlying socket, and returns the underlying socket object. This can be
- used to go from encrypted operation over a connection to unencrypted. The
- returned socket should always be used for further communication with the
- other side of the connection, rather than the original socket
-
.. method:: SSLSocket.getpeercert(binary_form=False)
If there is no certificate for the peer on the other end of the connection,
diff --git a/Doc/library/sys.rst b/Doc/library/sys.rst
index 619d4fb..f0e551e 100644
--- a/Doc/library/sys.rst
+++ b/Doc/library/sys.rst
@@ -359,7 +359,7 @@
specific.
If given, *default* will be returned if the object does not provide means to
- retrieve the size. Otherwise a `TypeError` will be raised.
+ retrieve the size. Otherwise a :exc:`TypeError` will be raised.
:func:`getsizeof` calls the object's ``__sizeof__`` method and adds an
additional garbage collector overhead if the object is managed by the garbage
diff --git a/Doc/library/xmlrpc.server.rst b/Doc/library/xmlrpc.server.rst
index 4a391b7..3cb2c3a 100644
--- a/Doc/library/xmlrpc.server.rst
+++ b/Doc/library/xmlrpc.server.rst
@@ -136,10 +136,10 @@
server.register_function(adder_function, 'add')
# Register an instance; all the methods of the instance are
- # published as XML-RPC methods (in this case, just 'div').
+ # published as XML-RPC methods (in this case, just 'mul').
class MyFuncs:
- def div(self, x, y):
- return x // y
+ def mul(self, x, y):
+ return x * y
server.register_instance(MyFuncs())
@@ -209,7 +209,8 @@
Example::
class MyFuncs:
- def div(self, x, y) : return x // y
+ def mul(self, x, y):
+ return x * y
handler = CGIXMLRPCRequestHandler()
diff --git a/Doc/tools/rstlint.py b/Doc/tools/rstlint.py
index eaaf257..e977f21 100755
--- a/Doc/tools/rstlint.py
+++ b/Doc/tools/rstlint.py
@@ -169,7 +169,6 @@
return 2
count = defaultdict(int)
- out = sys.stdout
for root, dirs, files in os.walk(path):
# ignore subdirs controlled by svn
@@ -212,8 +211,7 @@
csev = checker.severity
if csev >= severity:
for lno, msg in checker(fn, lines):
- print('[%d] %s:%d: %s' % (csev, fn, lno, msg),
- file=out)
+ print('[%d] %s:%d: %s' % (csev, fn, lno, msg))
count[csev] += 1
if verbose:
print()
diff --git a/Doc/whatsnew/2.2.rst b/Doc/whatsnew/2.2.rst
index 31e8dd0..89e4d76 100644
--- a/Doc/whatsnew/2.2.rst
+++ b/Doc/whatsnew/2.2.rst
@@ -30,7 +30,7 @@
to the PEP for a particular new feature.
-.. seealso (now defunct)
+.. see also, now defunct
http://www.unixreview.com/documents/s=1356/urm0109h/0109h.htm
"What's So Special About Python 2.2?" is also about the new 2.2 features, and
diff --git a/Doc/whatsnew/2.6.rst b/Doc/whatsnew/2.6.rst
index c9fb5c8..00398fc 100644
--- a/Doc/whatsnew/2.6.rst
+++ b/Doc/whatsnew/2.6.rst
@@ -350,9 +350,10 @@
* The code in *BLOCK* is executed.
-* If *BLOCK* raises an exception, the :meth:`__exit__(type, value, traceback)`
- is called with the exception details, the same values returned by
- :func:`sys.exc_info`. The method's return value controls whether the exception
+* If *BLOCK* raises an exception, the context manager's :meth:`__exit__` method
+ is called with three arguments, the exception details (``type, value, traceback``,
+ the same values returned by :func:`sys.exc_info`, which can also be ``None``
+ if no exception occurred). The method's return value controls whether an exception
is re-raised: any false value re-raises the exception, and ``True`` will result
in suppressing it. You'll only rarely want to suppress the exception, because
if you do the author of the code containing the ':keyword:`with`' statement will
@@ -463,7 +464,7 @@
with db_transaction(db) as cursor:
...
-The :mod:`contextlib` module also has a :func:`nested(mgr1, mgr2, ...)` function
+The :mod:`contextlib` module also has a ``nested(mgr1, mgr2, ...)`` function
that combines a number of context managers so you don't need to write nested
':keyword:`with`' statements. In this example, the single ':keyword:`with`'
statement both starts a database transaction and acquires a thread lock::
@@ -472,8 +473,9 @@
with nested (db_transaction(db), lock) as (cursor, locked):
...
-Finally, the :func:`closing(object)` function returns *object* so that it can be
-bound to a variable, and calls ``object.close`` at the end of the block. ::
+Finally, the :func:`closing` function returns its argument so that it can be
+bound to a variable, and calls the argument's ``.close()`` method at the end
+of the block. ::
import urllib, sys
from contextlib import closing
diff --git a/Lib/test/test_fnmatch.py b/Lib/test/test_fnmatch.py
index abf8811..bde4ee8 100644
--- a/Lib/test/test_fnmatch.py
+++ b/Lib/test/test_fnmatch.py
@@ -11,13 +11,13 @@
def tearDown(self):
_purge()
- def check_match(self, filename, pattern, should_match=1):
+ def check_match(self, filename, pattern, should_match=1, fn=fnmatch):
if should_match:
- self.assertTrue(fnmatch(filename, pattern),
+ self.assertTrue(fn(filename, pattern),
"expected %r to match pattern %r"
% (filename, pattern))
else:
- self.assertTrue(not fnmatch(filename, pattern),
+ self.assertTrue(not fn(filename, pattern),
"expected %r not to match pattern %r"
% (filename, pattern))
@@ -54,6 +54,11 @@
self.assertRaises(TypeError, fnmatchcase, 'test', b'*')
self.assertRaises(TypeError, fnmatchcase, b'test', '*')
+ def test_fnmatchcase(self):
+ check = self.check_match
+ check('AbC', 'abc', 0, fnmatchcase)
+ check('abc', 'AbC', 0, fnmatchcase)
+
def test_bytes(self):
self.check_match(b'test', b'te*')
self.check_match(b'test\xff', b'te*\xff')
diff --git a/Lib/test/test_strftime.py b/Lib/test/test_strftime.py
index 7128fd7..5b94bbe 100755
--- a/Lib/test/test_strftime.py
+++ b/Lib/test/test_strftime.py
@@ -117,16 +117,15 @@
try:
result = time.strftime(e[0], now)
except ValueError as error:
- print("Standard '%s' format gaver error:" % (e[0], error))
- continue
+ self.fail("strftime '%s' format gave error: %s" % (e[0], error))
if re.match(escapestr(e[1], self.ampm), result):
continue
if not result or result[0] == '%':
- print("Does not support standard '%s' format (%s)" % \
- (e[0], e[2]))
+ self.fail("strftime does not support standard '%s' format (%s)"
+ % (e[0], e[2]))
else:
- print("Conflict for %s (%s):" % (e[0], e[2]))
- print(" Expected %s, but got %s" % (e[1], result))
+ self.fail("Conflict for %s (%s): expected %s, but got %s"
+ % (e[0], e[2], e[1], result))
def strftest2(self, now):
nowsecs = str(int(now))[:-1]