[Python-checkins] r73125 - in python/branches/py3k: Doc/c-api/buffer.rst Doc/c-api/sequence.rst Doc/conf.py Doc/library/ctypes.rst Doc/library/email-examples.rst Doc/library/exceptions.rst Doc/library/functions.rst Doc/library/http.client.rst Doc/library/os.rst Doc/library/rlcompleter.rst Doc/library/smtplib.rst Doc/library/subprocess.rst Doc/reference/simple_stmts.rst Lib/gettext.py Lib/idlelib/macosxSupport.py Lib/logging/__init__.py Lib/test/support.py Lib/test/test_hashlib.py Lib/test/test_os.py Lib/test/test_unittest.py Lib/unittest.py Lib/zipfile.py Tools/freeze/makeconfig.py

benjamin.peterson python-checkins at python.org
Tue Jun 2 00:42:34 CEST 2009


Author: benjamin.peterson
Date: Tue Jun 2 00:42:33 2009
New Revision: 73125
Log:
Merged revisions 72506,72525-72526,72551,72558,72616,72654-72655,72689,72745,72750,72802,72812,72822,72824,72826-72827,72833,72876,72890,72923,72946,73026,73042,73045,73047,73065,73068-73069 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/trunk
........
 r72506 | vinay.sajip | 2009年05月09日 07:07:17 -0500 (2009年5月09日) | 1 line
 
 Issue #5971: StreamHandler.handleError now swallows IOErrors which occur when trying to print a traceback.
........
 r72525 | benjamin.peterson | 2009年05月09日 20:38:02 -0500 (2009年5月09日) | 1 line
 
 close file explicitly
........
 r72526 | benjamin.peterson | 2009年05月09日 21:29:00 -0500 (2009年5月09日) | 1 line
 
 make sure files are closed using the with statement
........
 r72551 | benjamin.peterson | 2009年05月10日 09:16:47 -0500 (2009年5月10日) | 1 line
 
 use isinstance
........
 r72558 | benjamin.peterson | 2009年05月10日 18:52:09 -0500 (2009年5月10日) | 1 line
 
 sys.setdefaultencoding() strikes me as a bad example
........
 r72616 | benjamin.peterson | 2009年05月13日 19:33:10 -0500 (2009年5月13日) | 1 line
 
 importlib.import_module is better these days
........
 r72654 | benjamin.peterson | 2009年05月14日 17:37:49 -0500 (2009年5月14日) | 1 line
 
 prevent refleaks from threads
........
 r72655 | benjamin.peterson | 2009年05月14日 17:40:34 -0500 (2009年5月14日) | 1 line
 
 a useful decorator for cleaning up threads
........
 r72689 | benjamin.peterson | 2009年05月16日 13:44:34 -0500 (2009年5月16日) | 1 line
 
 use skipTest()
........
 r72745 | benjamin.peterson | 2009年05月17日 09:16:29 -0500 (2009年5月17日) | 1 line
 
 ignore .rst files in sphinx its self
........
 r72750 | benjamin.peterson | 2009年05月17日 11:59:27 -0500 (2009年5月17日) | 1 line
 
 chop off slash
........
 r72802 | georg.brandl | 2009年05月20日 13:35:27 -0500 (2009年5月20日) | 1 line
 
 #6051: refer to email examples for better way to construct email messages.
........
 r72812 | michael.foord | 2009年05月21日 17:57:02 -0500 (2009年5月21日) | 1 line
 
 Rename TestCase._result to _resultForDoCleanups to avoid potential clashes in TestCase subclasses. Issue 6072.
........
 r72822 | georg.brandl | 2009年05月22日 04:33:25 -0500 (2009年5月22日) | 1 line
 
 #6084: fix example.
........
 r72824 | georg.brandl | 2009年05月22日 04:43:17 -0500 (2009年5月22日) | 1 line
 
 Fix references to file-related functions and methods (os.* vs file.*).
........
 r72826 | georg.brandl | 2009年05月22日 04:49:42 -0500 (2009年5月22日) | 1 line
 
 Fix confusing wording.
........
 r72827 | georg.brandl | 2009年05月22日 04:50:30 -0500 (2009年5月22日) | 1 line
 
 s/use/call/
........
 r72833 | georg.brandl | 2009年05月22日 12:00:17 -0500 (2009年5月22日) | 1 line
 
 #6078: _warnings is a builtin module and has no standard init_warnings function.
........
 r72876 | benjamin.peterson | 2009年05月23日 15:59:09 -0500 (2009年5月23日) | 1 line
 
 remove mention of old ctypes version
........
 r72890 | gregory.p.smith | 2009年05月24日 13:00:13 -0500 (2009年5月24日) | 2 lines
 
 add a versionadded tag for set_tunnel
........
 r72923 | michael.foord | 2009年05月25日 15:36:56 -0500 (2009年5月25日) | 1 line
 
 Make assertSequenceEqual error messages less cryptic, particularly for nested sequences.
........
 r72946 | ronald.oussoren | 2009年05月26日 13:44:48 -0500 (2009年5月26日) | 2 lines
 
 Fixes issue 6110
........
 r73026 | r.david.murray | 2009年05月29日 14:30:27 -0500 (2009年5月29日) | 3 lines
 
 Issue 6141: document that the first item of args is still the
 command name even when executable is specified.
........
 r73042 | benjamin.peterson | 2009年05月29日 22:10:52 -0500 (2009年5月29日) | 1 line
 
 no fdatasync on macos
........
 r73045 | georg.brandl | 2009年05月30日 02:26:04 -0500 (2009年5月30日) | 1 line
 
 #6146: fix markup bug.
........
 r73047 | georg.brandl | 2009年05月30日 05:33:23 -0500 (2009年5月30日) | 1 line
 
 Fix some more small markup problems.
........
 r73065 | antoine.pitrou | 2009年05月30日 16:39:25 -0500 (2009年5月30日) | 3 lines
 
 The test for #5330 wasn't correct.
........
 r73068 | antoine.pitrou | 2009年05月30日 16:45:40 -0500 (2009年5月30日) | 3 lines
 
 Update ACKS
........
 r73069 | benjamin.peterson | 2009年05月30日 19:42:42 -0500 (2009年5月30日) | 1 line
 
 fix signature
........
Modified:
 python/branches/py3k/ (props changed)
 python/branches/py3k/Doc/c-api/buffer.rst
 python/branches/py3k/Doc/c-api/sequence.rst
 python/branches/py3k/Doc/conf.py
 python/branches/py3k/Doc/library/ctypes.rst
 python/branches/py3k/Doc/library/email-examples.rst
 python/branches/py3k/Doc/library/exceptions.rst
 python/branches/py3k/Doc/library/functions.rst
 python/branches/py3k/Doc/library/http.client.rst
 python/branches/py3k/Doc/library/os.rst
 python/branches/py3k/Doc/library/rlcompleter.rst
 python/branches/py3k/Doc/library/smtplib.rst
 python/branches/py3k/Doc/library/subprocess.rst
 python/branches/py3k/Doc/reference/simple_stmts.rst
 python/branches/py3k/Lib/gettext.py
 python/branches/py3k/Lib/idlelib/macosxSupport.py
 python/branches/py3k/Lib/logging/__init__.py
 python/branches/py3k/Lib/test/support.py
 python/branches/py3k/Lib/test/test_hashlib.py
 python/branches/py3k/Lib/test/test_os.py
 python/branches/py3k/Lib/test/test_unittest.py
 python/branches/py3k/Lib/unittest.py
 python/branches/py3k/Lib/zipfile.py
 python/branches/py3k/Tools/freeze/makeconfig.py
Modified: python/branches/py3k/Doc/c-api/buffer.rst
==============================================================================
--- python/branches/py3k/Doc/c-api/buffer.rst	(original)
+++ python/branches/py3k/Doc/c-api/buffer.rst	Tue Jun 2 00:42:33 2009
@@ -137,7 +137,7 @@
 Return 1 if *obj* supports the buffer interface otherwise 0.
 
 
-.. cfunction:: int PyObject_GetBuffer(PyObject *obj, PyObject *view, int flags)
+.. cfunction:: int PyObject_GetBuffer(PyObject *obj, Py_buffer *view, int flags)
 
 Export *obj* into a :ctype:`Py_buffer`, *view*. These arguments must
 never be *NULL*. The *flags* argument is a bit field indicating what
Modified: python/branches/py3k/Doc/c-api/sequence.rst
==============================================================================
--- python/branches/py3k/Doc/c-api/sequence.rst	(original)
+++ python/branches/py3k/Doc/c-api/sequence.rst	Tue Jun 2 00:42:33 2009
@@ -50,7 +50,7 @@
 
 .. cfunction:: PyObject* PySequence_GetItem(PyObject *o, Py_ssize_t i)
 
- Return the *i*th element of *o*, or *NULL* on failure. This is the equivalent of
+ Return the *i*\ th element of *o*, or *NULL* on failure. This is the equivalent of
 the Python expression ``o[i]``.
 
 
@@ -62,14 +62,14 @@
 
 .. cfunction:: int PySequence_SetItem(PyObject *o, Py_ssize_t i, PyObject *v)
 
- Assign object *v* to the *i*th element of *o*. Returns ``-1`` on failure. This
+ Assign object *v* to the *i*\ th element of *o*. Returns ``-1`` on failure. This
 is the equivalent of the Python statement ``o[i] = v``. This function *does
 not* steal a reference to *v*.
 
 
 .. cfunction:: int PySequence_DelItem(PyObject *o, Py_ssize_t i)
 
- Delete the *i*th element of object *o*. Returns ``-1`` on failure. This is the
+ Delete the *i*\ th element of object *o*. Returns ``-1`` on failure. This is the
 equivalent of the Python statement ``del o[i]``.
 
 
@@ -131,7 +131,7 @@
 
 .. cfunction:: PyObject* PySequence_Fast_GET_ITEM(PyObject *o, Py_ssize_t i)
 
- Return the *i*th element of *o*, assuming that *o* was returned by
+ Return the *i*\ th element of *o*, assuming that *o* was returned by
 :cfunc:`PySequence_Fast`, *o* is not *NULL*, and that *i* is within bounds.
 
 
@@ -147,7 +147,7 @@
 
 .. cfunction:: PyObject* PySequence_ITEM(PyObject *o, Py_ssize_t i)
 
- Return the *i*th element of *o* or *NULL* on failure. Macro form of
+ Return the *i*\ th element of *o* or *NULL* on failure. Macro form of
 :cfunc:`PySequence_GetItem` but without checking that
 :cfunc:`PySequence_Check(o)` is true and without adjustment for negative
 indices.
Modified: python/branches/py3k/Doc/conf.py
==============================================================================
--- python/branches/py3k/Doc/conf.py	(original)
+++ python/branches/py3k/Doc/conf.py	Tue Jun 2 00:42:33 2009
@@ -46,6 +46,9 @@
 'library/xml.etree',
 ]
 
+# Ignore .rst in Sphinx its self.
+exclude_trees = ['tools/sphinx']
+
 # Relative filename of the reference count data file.
 refcount_file = 'data/refcounts.dat'
 
Modified: python/branches/py3k/Doc/library/ctypes.rst
==============================================================================
--- python/branches/py3k/Doc/library/ctypes.rst	(original)
+++ python/branches/py3k/Doc/library/ctypes.rst	Tue Jun 2 00:42:33 2009
@@ -1207,8 +1207,7 @@
 Variable-sized data types
 ^^^^^^^^^^^^^^^^^^^^^^^^^
 
-``ctypes`` provides some support for variable-sized arrays and structures (this
-was added in version 0.9.9.7).
+``ctypes`` provides some support for variable-sized arrays and structures.
 
 The ``resize`` function can be used to resize the memory buffer of an existing
 ctypes object. The function takes the object as first argument, and the
Modified: python/branches/py3k/Doc/library/email-examples.rst
==============================================================================
--- python/branches/py3k/Doc/library/email-examples.rst	(original)
+++ python/branches/py3k/Doc/library/email-examples.rst	Tue Jun 2 00:42:33 2009
@@ -1,3 +1,5 @@
+.. _email-examples:
+
 :mod:`email`: Examples
 ----------------------
 
Modified: python/branches/py3k/Doc/library/exceptions.rst
==============================================================================
--- python/branches/py3k/Doc/library/exceptions.rst	(original)
+++ python/branches/py3k/Doc/library/exceptions.rst	Tue Jun 2 00:42:33 2009
@@ -73,9 +73,9 @@
 
 .. exception:: LookupError
 
- The base class for the exceptions that are raised when a key or index used on a
- mapping or sequence is invalid: :exc:`IndexError`, :exc:`KeyError`. This can be
- raised directly by :func:`sys.setdefaultencoding`.
+ The base class for the exceptions that are raised when a key or index used on
+ a mapping or sequence is invalid: :exc:`IndexError`, :exc:`KeyError`. This
+ can be raised directly by :func:`codecs.lookup`.
 
 
 .. exception:: EnvironmentError
Modified: python/branches/py3k/Doc/library/functions.rst
==============================================================================
--- python/branches/py3k/Doc/library/functions.rst	(original)
+++ python/branches/py3k/Doc/library/functions.rst	Tue Jun 2 00:42:33 2009
@@ -1209,7 +1209,7 @@
 >>> list(zipped)
 [(1, 4), (2, 5), (3, 6)]
 >>> x2, y2 = zip(*zip(x, y))
- >>> x == x2, y == y2
+ >>> x == list(x2) and y == list(y2)
 True
 
 
@@ -1272,7 +1272,7 @@
 names.
 
 If you simply want to import a module (potentially within a package) by name,
- you can get it from :data:`sys.modules`::
+ you can call :func:`__import__` and then look it up in :data:`sys.modules`::
 
 >>> import sys
 >>> name = 'foo.bar.baz'
Modified: python/branches/py3k/Doc/library/http.client.rst
==============================================================================
--- python/branches/py3k/Doc/library/http.client.rst	(original)
+++ python/branches/py3k/Doc/library/http.client.rst	Tue Jun 2 00:42:33 2009
@@ -384,6 +384,8 @@
 Set the debugging level (the amount of debugging output printed). The default
 debug level is ``0``, meaning no debugging output is printed.
 
+ .. versionadded:: 2.7
+
 
 .. method:: HTTPConnection.connect()
 
Modified: python/branches/py3k/Doc/library/os.rst
==============================================================================
--- python/branches/py3k/Doc/library/os.rst	(original)
+++ python/branches/py3k/Doc/library/os.rst	Tue Jun 2 00:42:33 2009
@@ -386,9 +386,9 @@
 .. note::
 
 This function is intended for low-level I/O and must be applied to a file
- descriptor as returned by :func:`open` or :func:`pipe`. To close a "file
+ descriptor as returned by :func:`os.open` or :func:`pipe`. To close a "file
 object" returned by the built-in function :func:`open` or by :func:`popen` or
- :func:`fdopen`, use its :meth:`close` method.
+ :func:`fdopen`, use its :meth:`~file.close` method.
 
 
 .. function:: closerange(fd_low, fd_high)
@@ -439,6 +439,9 @@
 Force write of file with filedescriptor *fd* to disk. Does not force update of
 metadata. Availability: Unix.
 
+ .. note::
+ This function is not available on MacOS.
+
 
 .. function:: fpathconf(fd, name)
 
@@ -514,8 +517,8 @@
 .. note::
 
 This function is intended for low-level I/O. For normal usage, use the built-in
- function :func:`open`, which returns a "file object" with :meth:`read` and
- :meth:`write` methods (and many more). To wrap a file descriptor in a "file
+ function :func:`open`, which returns a "file object" with :meth:`~file.read` and
+ :meth:`~file.write` methods (and many more). To wrap a file descriptor in a "file
 object", use :func:`fdopen`.
 
 
@@ -544,22 +547,22 @@
 .. note::
 
 This function is intended for low-level I/O and must be applied to a file
- descriptor as returned by :func:`open` or :func:`pipe`. To read a "file object"
+ descriptor as returned by :func:`os.open` or :func:`pipe`. To read a "file object"
 returned by the built-in function :func:`open` or by :func:`popen` or
- :func:`fdopen`, or :data:`sys.stdin`, use its :meth:`read` or :meth:`readline`
- methods.
+ :func:`fdopen`, or :data:`sys.stdin`, use its :meth:`~file.read` or
+ :meth:`~file.readline` methods.
 
 
 .. function:: tcgetpgrp(fd)
 
 Return the process group associated with the terminal given by *fd* (an open
- file descriptor as returned by :func:`open`). Availability: Unix.
+ file descriptor as returned by :func:`os.open`). Availability: Unix.
 
 
 .. function:: tcsetpgrp(fd, pg)
 
 Set the process group associated with the terminal given by *fd* (an open file
- descriptor as returned by :func:`open`) to *pg*. Availability: Unix.
+ descriptor as returned by :func:`os.open`) to *pg*. Availability: Unix.
 
 
 .. function:: ttyname(fd)
@@ -577,13 +580,13 @@
 .. note::
 
 This function is intended for low-level I/O and must be applied to a file
- descriptor as returned by :func:`open` or :func:`pipe`. To write a "file
+ descriptor as returned by :func:`os.open` or :func:`pipe`. To write a "file
 object" returned by the built-in function :func:`open` or by :func:`popen` or
- :func:`fdopen`, or :data:`sys.stdout` or :data:`sys.stderr`, use its :meth:`write`
- method.
+ :func:`fdopen`, or :data:`sys.stdout` or :data:`sys.stderr`, use its
+ :meth:`~file.write` method.
 
 The following constants are options for the *flags* parameter to the
-:func:`open` function. They can be combined using the bitwise OR operator
+:func:`~os.open` function. They can be combined using the bitwise OR operator
 ``|``. Some of them are not available on all platforms. For descriptions of
 their availability and use, consult the :manpage:`open(2)` manual page on Unix
 or `the MSDN <http://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx>` on Windows.
@@ -660,7 +663,7 @@
 .. note::
 
 Using :func:`access` to check if a user is authorized to e.g. open a file before
- actually doing so using :func:`open` creates a security hole, because the user
+ actually doing so using :func:`open` creates a security hole, because the user
 might exploit the short time interval between checking and opening the file to
 manipulate it.
 
Modified: python/branches/py3k/Doc/library/rlcompleter.rst
==============================================================================
--- python/branches/py3k/Doc/library/rlcompleter.rst	(original)
+++ python/branches/py3k/Doc/library/rlcompleter.rst	Tue Jun 2 00:42:33 2009
@@ -52,7 +52,7 @@
 
 .. method:: Completer.complete(text, state)
 
- Return the *state*th completion for *text*.
+ Return the *state*\ th completion for *text*.
 
 If called for *text* that doesn't include a period character (``'.'``), it will
 complete from names currently defined in :mod:`__main__`, :mod:`builtins` and
Modified: python/branches/py3k/Doc/library/smtplib.rst
==============================================================================
--- python/branches/py3k/Doc/library/smtplib.rst	(original)
+++ python/branches/py3k/Doc/library/smtplib.rst	Tue Jun 2 00:42:33 2009
@@ -364,3 +364,8 @@
 server.sendmail(fromaddr, toaddrs, msg)
 server.quit()
 
+.. note::
+
+ In general, you will want to use the :mod:`email` package's features to
+ construct an email message, which you can then convert to a string and send
+ via :meth:`sendmail`; see :ref:`email-examples`.
Modified: python/branches/py3k/Doc/library/subprocess.rst
==============================================================================
--- python/branches/py3k/Doc/library/subprocess.rst	(original)
+++ python/branches/py3k/Doc/library/subprocess.rst	Tue Jun 2 00:42:33 2009
@@ -34,9 +34,12 @@
 Arguments are:
 
 *args* should be a string, or a sequence of program arguments. The program
- to execute is normally the first item in the args sequence or the string if a
- string is given, but can be explicitly set by using the *executable*
- argument.
+ to execute is normally the first item in the args sequence or the string if
+ a string is given, but can be explicitly set by using the *executable*
+ argument. When *executable* is given, the first item in the args sequence
+ is still treated by most programs as the command name, which can then be
+ different from the actual executable name. On Unix, it becomes the display
+ name for the executing program in utilities such as :program:`ps`.
 
 On Unix, with *shell=False* (default): In this case, the Popen class uses
 :meth:`os.execvp` to execute the child program. *args* should normally be a
Modified: python/branches/py3k/Doc/reference/simple_stmts.rst
==============================================================================
--- python/branches/py3k/Doc/reference/simple_stmts.rst	(original)
+++ python/branches/py3k/Doc/reference/simple_stmts.rst	Tue Jun 2 00:42:33 2009
@@ -815,12 +815,8 @@
 imprt mod`` from within ``pkg.subpkg1`` you will import ``pkg.subpkg2.mod``.
 The specification for relative imports is contained within :pep:`328`.
 
-
-.. index:: builtin: __import__
-
-The built-in function :func:`__import__` is provided to support applications
-that determine which modules need to be loaded dynamically; refer to
-:ref:`built-in-funcs` for additional information.
+:func:`importlib.import_module` is provided to support applications that
+determine which modules need to be loaded dynamically.
 
 
 .. _future:
Modified: python/branches/py3k/Lib/gettext.py
==============================================================================
--- python/branches/py3k/Lib/gettext.py	(original)
+++ python/branches/py3k/Lib/gettext.py	Tue Jun 2 00:42:33 2009
@@ -415,7 +415,6 @@
 if fallback:
 return NullTranslations()
 raise IOError(ENOENT, 'No translation file found for domain', domain)
- # TBD: do we need to worry about the file pointer getting collected?
 # Avoid opening, reading, and parsing the .mo file after it's been done
 # once.
 result = None
@@ -423,7 +422,8 @@
 key = os.path.abspath(mofile)
 t = _translations.get(key)
 if t is None:
- t = _translations.setdefault(key, class_(open(mofile, 'rb')))
+ with open(mofile, 'rb') as fp:
+ t = _translations.setdefault(key, class_(fp))
 # Copy the translation object to allow setting fallbacks and
 # output charset. All other instance data is shared with the
 # cached object.
Modified: python/branches/py3k/Lib/idlelib/macosxSupport.py
==============================================================================
--- python/branches/py3k/Lib/idlelib/macosxSupport.py	(original)
+++ python/branches/py3k/Lib/idlelib/macosxSupport.py	Tue Jun 2 00:42:33 2009
@@ -88,6 +88,7 @@
 # on an EditorWindow instance that is then passed as the first
 # argument to ConfigDialog)
 root.instance_dict = flist.inversedict
+ root.instance_dict = flist.inversedict
 configDialog.ConfigDialog(root, 'Settings')
 
 
Modified: python/branches/py3k/Lib/logging/__init__.py
==============================================================================
--- python/branches/py3k/Lib/logging/__init__.py	(original)
+++ python/branches/py3k/Lib/logging/__init__.py	Tue Jun 2 00:42:33 2009
@@ -720,8 +720,12 @@
 """
 if raiseExceptions:
 ei = sys.exc_info()
- traceback.print_exception(ei[0], ei[1], ei[2], None, sys.stderr)
- del ei
+ try:
+ traceback.print_exception(ei[0], ei[1], ei[2], None, sys.stderr)
+ except IOError:
+ pass # see issue 5971
+ finally:
+ del ei
 
 class StreamHandler(Handler):
 """
Modified: python/branches/py3k/Lib/test/support.py
==============================================================================
--- python/branches/py3k/Lib/test/support.py	(original)
+++ python/branches/py3k/Lib/test/support.py	Tue Jun 2 00:42:33 2009
@@ -5,6 +5,7 @@
 
 import contextlib
 import errno
+import functools
 import socket
 import sys
 import os
@@ -933,6 +934,16 @@
 count += 1
 time.sleep(0.1)
 
+def reap_threads(func):
+ @functools.wraps(func)
+ def decorator(*args):
+ key = threading_setup()
+ try:
+ return func(*args)
+ finally:
+ threading_cleanup(*key)
+ return decorator
+
 def reap_children():
 """Use this function at the end of test_main() whenever sub-processes
 are started. This will help ensure that no extra children (zombies)
Modified: python/branches/py3k/Lib/test/test_hashlib.py
==============================================================================
--- python/branches/py3k/Lib/test/test_hashlib.py	(original)
+++ python/branches/py3k/Lib/test/test_hashlib.py	Tue Jun 2 00:42:33 2009
@@ -267,10 +267,9 @@
 
 self.assertEqual(expected_hash, hasher.hexdigest())
 
-
+ at support.reap_threads
 def test_main():
 support.run_unittest(HashLibTestCase)
 
-
 if __name__ == "__main__":
 test_main()
Modified: python/branches/py3k/Lib/test/test_os.py
==============================================================================
--- python/branches/py3k/Lib/test/test_os.py	(original)
+++ python/branches/py3k/Lib/test/test_os.py	Tue Jun 2 00:42:33 2009
@@ -35,9 +35,7 @@
 retries += 1
 if retries > 10:
 # XXX test skipped
- print("couldn't allocate two consecutive fds, "
- "skipping test_closerange", file=sys.stderr)
- return
+ self.skipTest("couldn't allocate two consecutive fds")
 first, second = second, os.dup(second)
 finally:
 os.close(second)
Modified: python/branches/py3k/Lib/test/test_unittest.py
==============================================================================
--- python/branches/py3k/Lib/test/test_unittest.py	(original)
+++ python/branches/py3k/Lib/test/test_unittest.py	Tue Jun 2 00:42:33 2009
@@ -3175,7 +3175,7 @@
 
 result = MockResult()
 test = TestableTest('testNothing')
- test._result = result
+ test._resultForDoCleanups = result
 
 exc1 = Exception('foo')
 exc2 = Exception('bar')
Modified: python/branches/py3k/Lib/unittest.py
==============================================================================
--- python/branches/py3k/Lib/unittest.py	(original)
+++ python/branches/py3k/Lib/unittest.py	Tue Jun 2 00:42:33 2009
@@ -353,7 +353,7 @@
 not have a method with the specified name.
 """
 self._testMethodName = methodName
- self._result = None
+ self._resultForDoCleanups = None
 try:
 testMethod = getattr(self, methodName)
 except AttributeError:
@@ -457,7 +457,7 @@
 if startTestRun is not None:
 startTestRun()
 
- self._result = result
+ self._resultForDoCleanups = result
 result.startTest(self)
 if getattr(self.__class__, "__unittest_skip__", False):
 # If the whole class was skipped.
@@ -511,7 +511,7 @@
 def doCleanups(self):
 """Execute all cleanup functions. Normally called for you after
 tearDown."""
- result = self._result
+ result = self._resultForDoCleanups
 ok = True
 while self._cleanups:
 function, args, kwargs = self._cleanups.pop(-1)
@@ -732,23 +732,32 @@
 if seq1 == seq2:
 return
 
+ seq1_repr = repr(seq1)
+ seq2_repr = repr(seq2)
+ if len(seq1_repr) > 30:
+ seq1_repr = seq1_repr[:30] + '...'
+ if len(seq2_repr) > 30:
+ seq2_repr = seq2_repr[:30] + '...'
+ elements = (seq_type_name.capitalize(), seq1_repr, seq2_repr)
+ differing = '%ss differ: %s != %s\n' % elements
+
 for i in range(min(len1, len2)):
 try:
 item1 = seq1[i]
 except (TypeError, IndexError, NotImplementedError):
- differing = ('Unable to index element %d of first %s\n' %
+ differing += ('\nUnable to index element %d of first %s\n' %
 (i, seq_type_name))
 break
 
 try:
 item2 = seq2[i]
 except (TypeError, IndexError, NotImplementedError):
- differing = ('Unable to index element %d of second %s\n' %
+ differing += ('\nUnable to index element %d of second %s\n' %
 (i, seq_type_name))
 break
 
 if item1 != item2:
- differing = ('First differing element %d:\n%s\n%s\n' %
+ differing += ('\nFirst differing element %d:\n%s\n%s\n' %
 (i, item1, item2))
 break
 else:
@@ -756,28 +765,26 @@
 type(seq1) != type(seq2)):
 # The sequences are the same, but have differing types.
 return
- # A catch-all message for handling arbitrary user-defined
- # sequences.
- differing = '%ss differ:\n' % seq_type_name.capitalize()
- if len1 > len2:
- differing = ('First %s contains %d additional '
- 'elements.\n' % (seq_type_name, len1 - len2))
- try:
- differing += ('First extra element %d:\n%s\n' %
- (len2, seq1[len2]))
- except (TypeError, IndexError, NotImplementedError):
- differing += ('Unable to index element %d '
- 'of first %s\n' % (len2, seq_type_name))
- elif len1 < len2:
- differing = ('Second %s contains %d additional '
- 'elements.\n' % (seq_type_name, len2 - len1))
- try:
- differing += ('First extra element %d:\n%s\n' %
- (len1, seq2[len1]))
- except (TypeError, IndexError, NotImplementedError):
- differing += ('Unable to index element %d '
- 'of second %s\n' % (len1, seq_type_name))
- standardMsg = differing + '\n'.join(difflib.ndiff(pprint.pformat(seq1).splitlines(),
+
+ if len1 > len2:
+ differing += ('\nFirst %s contains %d additional '
+ 'elements.\n' % (seq_type_name, len1 - len2))
+ try:
+ differing += ('First extra element %d:\n%s\n' %
+ (len2, seq1[len2]))
+ except (TypeError, IndexError, NotImplementedError):
+ differing += ('Unable to index element %d '
+ 'of first %s\n' % (len2, seq_type_name))
+ elif len1 < len2:
+ differing += ('\nSecond %s contains %d additional '
+ 'elements.\n' % (seq_type_name, len2 - len1))
+ try:
+ differing += ('First extra element %d:\n%s\n' %
+ (len1, seq2[len1]))
+ except (TypeError, IndexError, NotImplementedError):
+ differing += ('Unable to index element %d '
+ 'of second %s\n' % (len1, seq_type_name))
+ standardMsg = differing + '\n' + '\n'.join(difflib.ndiff(pprint.pformat(seq1).splitlines(),
 pprint.pformat(seq2).splitlines()))
 msg = self._formatMessage(msg, standardMsg)
 self.fail(msg)
Modified: python/branches/py3k/Lib/zipfile.py
==============================================================================
--- python/branches/py3k/Lib/zipfile.py	(original)
+++ python/branches/py3k/Lib/zipfile.py	Tue Jun 2 00:42:33 2009
@@ -1055,28 +1055,27 @@
 self.fp.write(zinfo.FileHeader())
 return
 
- fp = io.open(filename, "rb")
- # Must overwrite CRC and sizes with correct data later
- zinfo.CRC = CRC = 0
- zinfo.compress_size = compress_size = 0
- zinfo.file_size = file_size = 0
- self.fp.write(zinfo.FileHeader())
- if zinfo.compress_type == ZIP_DEFLATED:
- cmpr = zlib.compressobj(zlib.Z_DEFAULT_COMPRESSION,
- zlib.DEFLATED, -15)
- else:
- cmpr = None
- while 1:
- buf = fp.read(1024 * 8)
- if not buf:
- break
- file_size = file_size + len(buf)
- CRC = crc32(buf, CRC) & 0xffffffff
- if cmpr:
- buf = cmpr.compress(buf)
- compress_size = compress_size + len(buf)
- self.fp.write(buf)
- fp.close()
+ with open(filename, "rb") as fp:
+ # Must overwrite CRC and sizes with correct data later
+ zinfo.CRC = CRC = 0
+ zinfo.compress_size = compress_size = 0
+ zinfo.file_size = file_size = 0
+ self.fp.write(zinfo.FileHeader())
+ if zinfo.compress_type == ZIP_DEFLATED:
+ cmpr = zlib.compressobj(zlib.Z_DEFAULT_COMPRESSION,
+ zlib.DEFLATED, -15)
+ else:
+ cmpr = None
+ while 1:
+ buf = fp.read(1024 * 8)
+ if not buf:
+ break
+ file_size = file_size + len(buf)
+ CRC = crc32(buf, CRC) & 0xffffffff
+ if cmpr:
+ buf = cmpr.compress(buf)
+ compress_size = compress_size + len(buf)
+ self.fp.write(buf)
 if cmpr:
 buf = cmpr.flush()
 compress_size = compress_size + len(buf)
@@ -1400,9 +1399,8 @@
 tgtdir = os.path.dirname(tgt)
 if not os.path.exists(tgtdir):
 os.makedirs(tgtdir)
- fp = io.open(tgt, 'wb')
- fp.write(zf.read(path))
- fp.close()
+ with open(tgt, 'wb') as fp:
+ fp.write(zf.read(path))
 zf.close()
 
 elif args[0] == '-c':
Modified: python/branches/py3k/Tools/freeze/makeconfig.py
==============================================================================
--- python/branches/py3k/Tools/freeze/makeconfig.py	(original)
+++ python/branches/py3k/Tools/freeze/makeconfig.py	Tue Jun 2 00:42:33 2009
@@ -3,7 +3,7 @@
 
 # Write the config.c file
 
-never = ['marshal', '__main__', 'builtins', 'sys', 'exceptions']
+never = ['marshal', '__main__', 'builtins', 'sys', 'exceptions', '_warnings']
 
 def makeconfig(infp, outfp, modules, with_ifdef=0):
 m1 = re.compile('-- ADDMODULE MARKER 1 --')


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /