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 (Sat, 09 May 2009) | 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 (Sat, 09 May 2009) | 1 line close file explicitly ........ r72526 | benjamin.peterson | 2009-05-09 21:29:00 -0500 (Sat, 09 May 2009) | 1 line make sure files are closed using the with statement ........ r72551 | benjamin.peterson | 2009-05-10 09:16:47 -0500 (Sun, 10 May 2009) | 1 line use isinstance ........ r72558 | benjamin.peterson | 2009-05-10 18:52:09 -0500 (Sun, 10 May 2009) | 1 line sys.setdefaultencoding() strikes me as a bad example ........ r72616 | benjamin.peterson | 2009-05-13 19:33:10 -0500 (Wed, 13 May 2009) | 1 line importlib.import_module is better these days ........ r72654 | benjamin.peterson | 2009-05-14 17:37:49 -0500 (Thu, 14 May 2009) | 1 line prevent refleaks from threads ........ r72655 | benjamin.peterson | 2009-05-14 17:40:34 -0500 (Thu, 14 May 2009) | 1 line a useful decorator for cleaning up threads ........ r72689 | benjamin.peterson | 2009-05-16 13:44:34 -0500 (Sat, 16 May 2009) | 1 line use skipTest() ........ r72745 | benjamin.peterson | 2009-05-17 09:16:29 -0500 (Sun, 17 May 2009) | 1 line ignore .rst files in sphinx its self ........ r72750 | benjamin.peterson | 2009-05-17 11:59:27 -0500 (Sun, 17 May 2009) | 1 line chop off slash ........ r72802 | georg.brandl | 2009-05-20 13:35:27 -0500 (Wed, 20 May 2009) | 1 line #6051: refer to email examples for better way to construct email messages. ........ r72812 | michael.foord | 2009-05-21 17:57:02 -0500 (Thu, 21 May 2009) | 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 (Fri, 22 May 2009) | 1 line #6084: fix example. ........ r72824 | georg.brandl | 2009-05-22 04:43:17 -0500 (Fri, 22 May 2009) | 1 line Fix references to file-related functions and methods (os.* vs file.*). ........ r72826 | georg.brandl | 2009-05-22 04:49:42 -0500 (Fri, 22 May 2009) | 1 line Fix confusing wording. ........ r72827 | georg.brandl | 2009-05-22 04:50:30 -0500 (Fri, 22 May 2009) | 1 line s/use/call/ ........ r72833 | georg.brandl | 2009-05-22 12:00:17 -0500 (Fri, 22 May 2009) | 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 (Sat, 23 May 2009) | 1 line remove mention of old ctypes version ........ r72890 | gregory.p.smith | 2009-05-24 13:00:13 -0500 (Sun, 24 May 2009) | 2 lines add a versionadded tag for set_tunnel ........ r72923 | michael.foord | 2009-05-25 15:36:56 -0500 (Mon, 25 May 2009) | 1 line Make assertSequenceEqual error messages less cryptic, particularly for nested sequences. ........ r72946 | ronald.oussoren | 2009-05-26 13:44:48 -0500 (Tue, 26 May 2009) | 2 lines Fixes issue 6110 ........ r73026 | r.david.murray | 2009-05-29 14:30:27 -0500 (Fri, 29 May 2009) | 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 (Fri, 29 May 2009) | 1 line no fdatasync on macos ........ r73045 | georg.brandl | 2009-05-30 02:26:04 -0500 (Sat, 30 May 2009) | 1 line #6146: fix markup bug. ........ r73047 | georg.brandl | 2009-05-30 05:33:23 -0500 (Sat, 30 May 2009) | 1 line Fix some more small markup problems. ........ r73065 | antoine.pitrou | 2009-05-30 16:39:25 -0500 (Sat, 30 May 2009) | 3 lines The test for #5330 wasn't correct. ........ r73068 | antoine.pitrou | 2009-05-30 16:45:40 -0500 (Sat, 30 May 2009) | 3 lines Update ACKS ........ r73069 | benjamin.peterson | 2009-05-30 19:42:42 -0500 (Sat, 30 May 2009) | 1 line fix signature ........
This commit is contained in:
parent
f11be75760
commit
fa0d703433
|
@ -137,7 +137,7 @@ Buffer related functions
|
|||
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
|
||||
|
|
|
@ -50,7 +50,7 @@ Sequence Protocol
|
|||
|
||||
.. 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 @@ Sequence Protocol
|
|||
|
||||
.. 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 @@ Sequence Protocol
|
|||
|
||||
.. 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 @@ Sequence Protocol
|
|||
|
||||
.. 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.
|
||||
|
|
|
@ -46,6 +46,9 @@ unused_docs = [
|
|||
'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'
|
||||
|
||||
|
|
|
@ -1207,8 +1207,7 @@ constructs a new Python object each time!
|
|||
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
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
.. _email-examples:
|
||||
|
||||
:mod:`email`: Examples
|
||||
----------------------
|
||||
|
||||
|
|
|
@ -73,9 +73,9 @@ The following exceptions are only used as base classes for other exceptions.
|
|||
|
||||
.. 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
|
||||
|
|
|
@ -1209,7 +1209,7 @@ are always available. They are listed here in alphabetical order.
|
|||
>>> 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 @@ are always available. They are listed here in alphabetical order.
|
|||
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'
|
||||
|
|
|
@ -384,6 +384,8 @@ HTTPConnection Objects
|
|||
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()
|
||||
|
||||
|
|
|
@ -386,9 +386,9 @@ by file descriptors.
|
|||
.. 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 @@ by file descriptors.
|
|||
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 @@ by file descriptors.
|
|||
.. 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 @@ by file descriptors.
|
|||
.. 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 @@ by file descriptors.
|
|||
.. 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 @@ Files and Directories
|
|||
.. 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.
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@ Completer objects have the following method:
|
|||
|
||||
.. 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
|
||||
|
|
|
@ -364,3 +364,8 @@ example doesn't do any processing of the :rfc:`822` headers. In particular, the
|
|||
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`.
|
||||
|
|
|
@ -34,9 +34,12 @@ This module defines one class called :class:`Popen`:
|
|||
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
|
||||
|
|
|
@ -815,12 +815,8 @@ then you will end up importing ``pkg.mod``. If you execute ``from ..subpkg2
|
|||
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:
|
||||
|
|
|
@ -415,7 +415,6 @@ def translation(domain, localedir=None, languages=None,
|
|||
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 @@ def translation(domain, localedir=None, languages=None,
|
|||
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.
|
||||
|
|
|
@ -88,6 +88,7 @@ def overrideRootMenu(root, flist):
|
|||
# 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')
|
||||
|
||||
|
||||
|
|
|
@ -720,8 +720,12 @@ class Handler(Filterer):
|
|||
"""
|
||||
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):
|
||||
"""
|
||||
|
|
|
@ -5,6 +5,7 @@ if __name__ != 'test.support':
|
|||
|
||||
import contextlib
|
||||
import errno
|
||||
import functools
|
||||
import socket
|
||||
import sys
|
||||
import os
|
||||
|
@ -933,6 +934,16 @@ def threading_cleanup(num_active, num_limbo):
|
|||
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)
|
||||
|
|
|
@ -267,10 +267,9 @@ class HashLibTestCase(unittest.TestCase):
|
|||
|
||||
self.assertEqual(expected_hash, hasher.hexdigest())
|
||||
|
||||
|
||||
@support.reap_threads
|
||||
def test_main():
|
||||
support.run_unittest(HashLibTestCase)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_main()
|
||||
|
|
|
@ -35,9 +35,7 @@ class FileTests(unittest.TestCase):
|
|||
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)
|
||||
|
|
|
@ -3175,7 +3175,7 @@ class TestCleanUp(TestCase):
|
|||
|
||||
result = MockResult()
|
||||
test = TestableTest('testNothing')
|
||||
test._result = result
|
||||
test._resultForDoCleanups = result
|
||||
|
||||
exc1 = Exception('foo')
|
||||
exc2 = Exception('bar')
|
||||
|
|
|
@ -353,7 +353,7 @@ class TestCase(object):
|
|||
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 @@ class TestCase(object):
|
|||
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 @@ class TestCase(object):
|
|||
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 @@ class TestCase(object):
|
|||
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 @@ class TestCase(object):
|
|||
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)
|
||||
|
|
|
@ -1055,28 +1055,27 @@ class ZipFile:
|
|||
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 @@ def main(args = None):
|
|||
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':
|
||||
|
|
|
@ -3,7 +3,7 @@ import re
|
|||
|
||||
# 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 --')
|
||||
|
|
Loading…
Reference in New Issue