mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +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 @@ def main(argv): | ||||||
|         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 @@ def main(argv): | ||||||
|                 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 @@ def test_mix_bytes_str(self): | ||||||
|         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 @@ def strftest1(self, now): | ||||||
|             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
	
	 Georg Brandl
						Georg Brandl