mirror of
https://github.com/python/cpython.git
synced 2025-09-25 01:43:11 +00:00
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. ........ ................
This commit is contained in:
parent
8ffe0bc55f
commit
d6abb72a79
15 changed files with 48 additions and 51 deletions
10
Doc/bugs.rst
10
Doc/bugs.rst
|
@ -38,10 +38,9 @@ information is needed (in which case you are welcome to provide it if you can!).
|
||||||
To do this, search the bug database using the search box on the top of the page.
|
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
|
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
|
the Python Bug Tracker and log in. If you don't already have a tracker account,
|
||||||
"Register" link in the sidebar and undergo the registration procedure.
|
select the "Register" link or, if you use OpenID, one of the OpenID provider
|
||||||
Otherwise, if you're not logged in, enter your credentials and select "Login".
|
logos in the sidebar. It is not possible to submit a bug report anonymously.
|
||||||
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
|
Being now logged in, you can submit a bug. Select the "Create New" link in the
|
||||||
sidebar to open the bug reporting form.
|
sidebar to open the bug reporting form.
|
||||||
|
@ -58,7 +57,8 @@ were using (including version information as appropriate).
|
||||||
|
|
||||||
Each bug report will be assigned to a developer who will determine what needs to
|
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
|
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::
|
.. seealso::
|
||||||
|
|
|
@ -257,9 +257,9 @@ Running the ``check`` command will display some warnings::
|
||||||
(maintainer and maintainer_email) must be supplied
|
(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
|
`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.
|
option.
|
||||||
|
|
||||||
For example, if the :file:`setup.py` script is changed like this::
|
For example, if the :file:`setup.py` script is changed like this::
|
||||||
|
@ -278,7 +278,7 @@ For example, if the :file:`setup.py` script is changed like this::
|
||||||
url='http://example.com', long_description=desc)
|
url='http://example.com', long_description=desc)
|
||||||
|
|
||||||
Where the long description is broken, ``check`` will be able to detect it
|
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
|
$ pythontrunk setup.py check --restructuredtext
|
||||||
running check
|
running check
|
||||||
|
|
|
@ -60,13 +60,13 @@ in the package::
|
||||||
setup(name='Distutils',
|
setup(name='Distutils',
|
||||||
long_description=open('README.txt'))
|
long_description=open('README.txt'))
|
||||||
|
|
||||||
In that case, `README.txt` is a regular reStructuredText text file located
|
In that case, :file:`README.txt` is a regular reStructuredText text file located
|
||||||
in the root of the package besides `setup.py`.
|
in the root of the package besides :file:`setup.py`.
|
||||||
|
|
||||||
To prevent registering broken reStructuredText content, you can use the
|
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::
|
and check the ``long_description`` from the command line::
|
||||||
|
|
||||||
$ python setup.py --long-description | rst2html.py > output.html
|
$ 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.
|
||||||
|
|
|
@ -331,7 +331,7 @@ Glossary
|
||||||
|
|
||||||
iterator
|
iterator
|
||||||
An object representing a stream of data. Repeated calls to the iterator's
|
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
|
method return successive items in the stream. When no more data are
|
||||||
available a :exc:`StopIteration` exception is raised instead. At this
|
available a :exc:`StopIteration` exception is raised instead. At this
|
||||||
point, the iterator object is exhausted and any further calls to its
|
point, the iterator object is exhausted and any further calls to its
|
||||||
|
|
|
@ -486,7 +486,7 @@ statement.
|
||||||
|
|
||||||
.. attribute:: HTTPResponse.debuglevel
|
.. 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.
|
will be printed to stdout as the response is read and parsed.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -387,7 +387,7 @@ Classes and functions
|
||||||
|
|
||||||
.. function:: getargspec(func)
|
.. 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,
|
:term:`named tuple` ``ArgSpec(args, varargs, keywords,
|
||||||
defaults)`` is returned. *args* is a list of
|
defaults)`` is returned. *args* is a list of
|
||||||
the argument names. *varargs* and *varkw* are the names of the ``*`` and
|
the argument names. *varargs* and *varkw* are the names of the ``*`` and
|
||||||
|
@ -402,8 +402,8 @@ Classes and functions
|
||||||
|
|
||||||
.. function:: getfullargspec(func)
|
.. function:: getfullargspec(func)
|
||||||
|
|
||||||
Get the names and default values of a function's arguments. A :term:`named
|
Get the names and default values of a Python function's arguments. A
|
||||||
tuple` is returned:
|
:term:`named tuple` is returned:
|
||||||
|
|
||||||
``FullArgSpec(args, varargs, varkw, defaults, kwonlyargs, kwonlydefaults,
|
``FullArgSpec(args, varargs, varkw, defaults, kwonlyargs, kwonlydefaults,
|
||||||
annotations)``
|
annotations)``
|
||||||
|
|
|
@ -117,5 +117,5 @@ empty, and the path manipulations are skipped; however the import of
|
||||||
Adds a directory to sys.path and processes its pth files.
|
Adds a directory to sys.path and processes its pth files.
|
||||||
|
|
||||||
|
|
||||||
XXX Update documentation
|
.. XXX Update documentation
|
||||||
XXX document python -m site --user-base --user-site
|
.. XXX document python -m site --user-base --user-site
|
||||||
|
|
|
@ -278,14 +278,6 @@ SSLSocket Objects
|
||||||
else:
|
else:
|
||||||
raise
|
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)
|
.. method:: SSLSocket.getpeercert(binary_form=False)
|
||||||
|
|
||||||
If there is no certificate for the peer on the other end of the connection,
|
If there is no certificate for the peer on the other end of the connection,
|
||||||
|
|
|
@ -359,7 +359,7 @@ always available.
|
||||||
specific.
|
specific.
|
||||||
|
|
||||||
If given, *default* will be returned if the object does not provide means to
|
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
|
:func:`getsizeof` calls the object's ``__sizeof__`` method and adds an
|
||||||
additional garbage collector overhead if the object is managed by the garbage
|
additional garbage collector overhead if the object is managed by the garbage
|
||||||
|
|
|
@ -136,10 +136,10 @@ Server code::
|
||||||
server.register_function(adder_function, 'add')
|
server.register_function(adder_function, 'add')
|
||||||
|
|
||||||
# Register an instance; all the methods of the instance are
|
# 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:
|
class MyFuncs:
|
||||||
def div(self, x, y):
|
def mul(self, x, y):
|
||||||
return x // y
|
return x * y
|
||||||
|
|
||||||
server.register_instance(MyFuncs())
|
server.register_instance(MyFuncs())
|
||||||
|
|
||||||
|
@ -209,7 +209,8 @@ requests sent to Python CGI scripts.
|
||||||
Example::
|
Example::
|
||||||
|
|
||||||
class MyFuncs:
|
class MyFuncs:
|
||||||
def div(self, x, y) : return x // y
|
def mul(self, x, y):
|
||||||
|
return x * y
|
||||||
|
|
||||||
|
|
||||||
handler = CGIXMLRPCRequestHandler()
|
handler = CGIXMLRPCRequestHandler()
|
||||||
|
|
|
@ -169,7 +169,6 @@ Options: -v verbose (print all checked file names)
|
||||||
return 2
|
return 2
|
||||||
|
|
||||||
count = defaultdict(int)
|
count = defaultdict(int)
|
||||||
out = sys.stdout
|
|
||||||
|
|
||||||
for root, dirs, files in os.walk(path):
|
for root, dirs, files in os.walk(path):
|
||||||
# ignore subdirs controlled by svn
|
# ignore subdirs controlled by svn
|
||||||
|
@ -212,8 +211,7 @@ Options: -v verbose (print all checked file names)
|
||||||
csev = checker.severity
|
csev = checker.severity
|
||||||
if csev >= severity:
|
if csev >= severity:
|
||||||
for lno, msg in checker(fn, lines):
|
for lno, msg in checker(fn, lines):
|
||||||
print('[%d] %s:%d: %s' % (csev, fn, lno, msg),
|
print('[%d] %s:%d: %s' % (csev, fn, lno, msg))
|
||||||
file=out)
|
|
||||||
count[csev] += 1
|
count[csev] += 1
|
||||||
if verbose:
|
if verbose:
|
||||||
print()
|
print()
|
||||||
|
|
|
@ -30,7 +30,7 @@ understand the complete implementation and design rationale for a change, refer
|
||||||
to the PEP for a particular new feature.
|
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
|
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
|
"What's So Special About Python 2.2?" is also about the new 2.2 features, and
|
||||||
|
|
|
@ -350,9 +350,10 @@ A high-level explanation of the context management protocol is:
|
||||||
|
|
||||||
* The code in *BLOCK* is executed.
|
* The code in *BLOCK* is executed.
|
||||||
|
|
||||||
* If *BLOCK* raises an exception, the :meth:`__exit__(type, value, traceback)`
|
* If *BLOCK* raises an exception, the context manager's :meth:`__exit__` method
|
||||||
is called with the exception details, the same values returned by
|
is called with three arguments, the exception details (``type, value, traceback``,
|
||||||
:func:`sys.exc_info`. The method's return value controls whether the exception
|
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
|
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
|
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
|
if you do the author of the code containing the ':keyword:`with`' statement will
|
||||||
|
@ -463,7 +464,7 @@ could be written as::
|
||||||
with db_transaction(db) as cursor:
|
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
|
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`'
|
':keyword:`with`' statements. In this example, the single ':keyword:`with`'
|
||||||
statement both starts a database transaction and acquires a thread lock::
|
statement both starts a database transaction and acquires a thread lock::
|
||||||
|
@ -472,8 +473,9 @@ statement both starts a database transaction and acquires a thread lock::
|
||||||
with nested (db_transaction(db), lock) as (cursor, locked):
|
with nested (db_transaction(db), lock) as (cursor, locked):
|
||||||
...
|
...
|
||||||
|
|
||||||
Finally, the :func:`closing(object)` function returns *object* so that it can be
|
Finally, the :func:`closing` function returns its argument so that it can be
|
||||||
bound to a variable, and calls ``object.close`` at the end of the block. ::
|
bound to a variable, and calls the argument's ``.close()`` method at the end
|
||||||
|
of the block. ::
|
||||||
|
|
||||||
import urllib, sys
|
import urllib, sys
|
||||||
from contextlib import closing
|
from contextlib import closing
|
||||||
|
|
|
@ -11,13 +11,13 @@ class FnmatchTestCase(unittest.TestCase):
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
_purge()
|
_purge()
|
||||||
|
|
||||||
def check_match(self, filename, pattern, should_match=1):
|
def check_match(self, filename, pattern, should_match=1, fn=fnmatch):
|
||||||
if should_match:
|
if should_match:
|
||||||
self.assertTrue(fnmatch(filename, pattern),
|
self.assertTrue(fn(filename, pattern),
|
||||||
"expected %r to match pattern %r"
|
"expected %r to match pattern %r"
|
||||||
% (filename, pattern))
|
% (filename, pattern))
|
||||||
else:
|
else:
|
||||||
self.assertTrue(not fnmatch(filename, pattern),
|
self.assertTrue(not fn(filename, pattern),
|
||||||
"expected %r not to match pattern %r"
|
"expected %r not to match pattern %r"
|
||||||
% (filename, pattern))
|
% (filename, pattern))
|
||||||
|
|
||||||
|
@ -54,6 +54,11 @@ class FnmatchTestCase(unittest.TestCase):
|
||||||
self.assertRaises(TypeError, fnmatchcase, 'test', b'*')
|
self.assertRaises(TypeError, fnmatchcase, 'test', b'*')
|
||||||
self.assertRaises(TypeError, fnmatchcase, b'test', '*')
|
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):
|
def test_bytes(self):
|
||||||
self.check_match(b'test', b'te*')
|
self.check_match(b'test', b'te*')
|
||||||
self.check_match(b'test\xff', b'te*\xff')
|
self.check_match(b'test\xff', b'te*\xff')
|
||||||
|
|
|
@ -117,16 +117,15 @@ class StrftimeTest(unittest.TestCase):
|
||||||
try:
|
try:
|
||||||
result = time.strftime(e[0], now)
|
result = time.strftime(e[0], now)
|
||||||
except ValueError as error:
|
except ValueError as error:
|
||||||
print("Standard '%s' format gaver error:" % (e[0], error))
|
self.fail("strftime '%s' format gave error: %s" % (e[0], error))
|
||||||
continue
|
|
||||||
if re.match(escapestr(e[1], self.ampm), result):
|
if re.match(escapestr(e[1], self.ampm), result):
|
||||||
continue
|
continue
|
||||||
if not result or result[0] == '%':
|
if not result or result[0] == '%':
|
||||||
print("Does not support standard '%s' format (%s)" % \
|
self.fail("strftime does not support standard '%s' format (%s)"
|
||||||
(e[0], e[2]))
|
% (e[0], e[2]))
|
||||||
else:
|
else:
|
||||||
print("Conflict for %s (%s):" % (e[0], e[2]))
|
self.fail("Conflict for %s (%s): expected %s, but got %s"
|
||||||
print(" Expected %s, but got %s" % (e[1], result))
|
% (e[0], e[2], e[1], result))
|
||||||
|
|
||||||
def strftest2(self, now):
|
def strftest2(self, now):
|
||||||
nowsecs = str(int(now))[:-1]
|
nowsecs = str(int(now))[:-1]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue