[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