Fix issue #8573 (asyncore._strerror bug): fixed os.strerror typo; included NameError in the tuple of expected exception; added test case for asyncore._strerror.
........
Victor Stinner [Tue, 18 May 2010 17:17:23 +0000 (17:17 +0000)]
Issue #8513: os.get_exec_path() supports b'PATH' key and bytes value.
subprocess.Popen() and os._execvpe() support bytes program name. Add
os.supports_bytes_environ flag: True if the native OS type of the environment
is bytes (eg. False on Windows).
Lars Gustäbel [Mon, 17 May 2010 18:02:50 +0000 (18:02 +0000)]
Issue #8633: Support for POSIX.1-2008 binary pax headers.
tarfile is now able to read and write pax headers with a
"hdrcharset=BINARY" record. This record was introduced in
POSIX.1-2008 as a method to store unencoded binary strings that
cannot be translated to UTF-8. In practice, this is just a workaround
that allows a tar implementation to store filenames that do not
comply with the current filesystem encoding and thus cannot be
decoded correctly.
Additionally, tarfile works around a bug in current versions of GNU
tar: undecodable filenames are stored as-is in a pax header without a
"hdrcharset" record being added. Technically, these headers are
invalid, but tarfile manages to read them correctly anyway.
Jeffrey Yasskin [Mon, 17 May 2010 16:59:23 +0000 (16:59 +0000)]
Fix test_capi in !pydebug mode, where my original attempt segfaulted without
producing the expected error message. The test only tests what it's supposed
to test in pydebug mode though. Fixes issue 8726.
Victor Stinner [Mon, 17 May 2010 09:33:42 +0000 (09:33 +0000)]
Fix refleak in internal_print() introduced by myself in r81251
_PyUnicode_AsDefaultEncodedString() uses a magical PyUnicode attribute to
automatically destroy PyUnicode_EncodeUTF8() result when the unicode string is
destroyed.
Victor Stinner [Mon, 17 May 2010 08:58:51 +0000 (08:58 +0000)]
handle_system_exit() flushs files to warranty the output order
PyObject_Print() writes into the C object stderr, whereas PySys_WriteStderr()
writes into the Python object sys.stderr. Each object has its own buffer, so
call sys.stderr.flush() and fflush(stderr).
Victor Stinner [Mon, 17 May 2010 00:14:53 +0000 (00:14 +0000)]
test_os: cleanup test_internal_execvpe() and os._execvpe() mockup
* Replace os.defpath instead of os.get_exec_path() to test also
os.get_exec_path()
* Use contextlib.contextmanager, move the mockup outside the class, and
the mockup returns directly the call list object
* Use two different contexts for the two tests
* Use more revelant values and names
Clear the OpenSSL error queue each time an error is signalled.
When the error queue is not emptied, strange things can happen on the next SSL call, depending on the OpenSSL version.
........
Brett Cannon [Sat, 15 May 2010 22:53:24 +0000 (22:53 +0000)]
Make test_module_with_large_stack as an expected failure because of a change in
importlib that is causing it to fail. Work to fix it is being tracked in issue
8727.
Mark Dickinson [Sat, 15 May 2010 17:02:38 +0000 (17:02 +0000)]
Issue #8692: Improve performance of math.factorial:
(1) use a different algorithm that roughly halves the total number of
multiplications required and results in more balanced multiplications
(2) use a lookup table for small arguments
(3) fast accumulation of products in C integer arithmetic rather than
PyLong arithmetic when possible.
Typical speedup, from unscientific testing on a 64-bit laptop, is 4.5x
to 6.5x for arguments in the range 100 - 10000.
Patch by Daniel Stutzbach; extensive reviews by Alexander Belopolsky.
Victor Stinner [Sat, 15 May 2010 16:27:27 +0000 (16:27 +0000)]
Issue #8715: Create PyUnicode_EncodeFSDefault() function: Encode a Unicode
object to Py_FileSystemDefaultEncoding with the "surrogateescape" error
handler, return a bytes object. If Py_FileSystemDefaultEncoding is not set,
fall back to UTF-8.
Victor Stinner [Sat, 15 May 2010 12:27:16 +0000 (12:27 +0000)]
Issue #8610: Load file system codec at startup, and display a fatal error on
failure. Set the file system encoding to utf-8 (instead of None) if getting
the locale encoding failed, or if nl_langinfo(CODESET) function is missing.
* Add paragraph titles to c-api/unicode.rst.
* Fix PyUnicode_DecodeFSDefault*() comment: it now uses the "surrogateescape"
error handler (and not "replace")
* Remove "The function is intended to be used for paths and file names only
during bootstrapping process where the codecs are not set up." from
PyUnicode_FSConverter() comment: it is used after the bootstrapping and for
other purposes than file names
subprocess.Popen.__del__ referenced global objects, which is a no-no thanks to
interpreter shutdown semantics. Same issue goes for the methods that __del__
called. Now all the methods capture the global objects it needs as default
values to private parameters (could have stuck them on the class object itself,
but since the objects have nothing directly to do with the class that seemed
wrong).
There is no test as making one that works is hard. This patch was
verified against a consistently failing test in Mercurial's test suite, though,
so it has been tested in some regard.
Closes issue #5099. Thanks to Mary Stern for the bug report and Gabriel
Genellina for writing another patch for the same issue and attempting to write
a test.
........
test_site was failing under darwin for non-framework builds because a test was
assuming framework-specific site-packages directories were being used.
........
Jeffrey Yasskin [Thu, 13 May 2010 18:31:05 +0000 (18:31 +0000)]
Make PyErr_Occurred return NULL if there is no current thread. Previously it
would Py_FatalError, which called PyErr_Occurred, resulting in a semi-infinite
recursion.
Issue #8422, test_genericpath: skip the creation of a directory with an invalid
UTF name on Mac OS X because the OS deny it (the name have to be a valid UTF8
string).
Removed the assertion that dispatcher.connected attribute must be False after a single connect() call. Solaris and FreeBSD buildbots failures showed how connect() can succeed even in a single call. All bo failures should definitively be fixed now.
........
Issue #8672: Add a zlib test ensuring that an incomplete stream can be
handled by a decompressor object without errors (it returns incomplete
uncompressed data).
........
Brian Curtin [Tue, 11 May 2010 20:35:47 +0000 (20:35 +0000)]
#8575 - Update and reorganize some _winreg contents.
I've removed the hopeful note about a future higher-level module since
it's been in there for quite a long time and nothing of the sort has
come up. There are a few places where markup was added to cross-reference
other sections, and many of the external links have been removed and now
point to newly created sections containing previously undocumented
information.
The Value Types section was created and it's contents were taken from
a function-specific area, since it applies to more than just that
function. It fits in better with the other newly documented constants.