Éric Araujo [Sun, 9 Oct 2011 05:11:19 +0000 (07:11 +0200)]
Fix distutils’ check and register Unicode handling (#13114).
The check command was fixed by Kirill Kuzminykh.
The register command was using StringIO.getvalue, which uses “''.join”
and thus coerces to str using the default encoding (ASCII), so I changed
the code to use one extra intermediary list and correctly encode to
UTF-8.
Issue #13070: Fix a crash when a TextIOWrapper caught in a reference cycle
would be finalized after the reference to its underlying BufferedRWPair's
writer got cleared by the GC.
Éric Araujo [Wed, 5 Oct 2011 00:34:28 +0000 (02:34 +0200)]
Fix markup used in the documentation of sys.prefix and sys.exec_prefix.
- Using the file role with {placeholders} is IMO clearer than fake
Python code.
- The fact that sys.version[:3] gives '2.7' is a CPython detail and
should not be advertised (see #9442), even if some stdlib modules
currently rely on that detail.
Antoine Pitrou [Tue, 4 Oct 2011 07:34:48 +0000 (09:34 +0200)]
Issue #7689: Allow pickling of dynamically created classes when their
metaclass is registered with copyreg. Patch by Nicolas M. Thiéry and
Craig Citro.
Victor Stinner [Fri, 23 Sep 2011 17:37:03 +0000 (19:37 +0200)]
Issue #7732: Fix a crash on importing a module if a directory has the same name
than a Python module (e.g. "__init__.py"): don't close the file twice.
PyFile_FromFile() does also close the file if PyString_FromString() failed. It
did already close the file on fill_file_fields() error (e.g. if the file is a
directory).
Issue #12981: test_multiprocessing: catch ImportError when importing
multiprocessing.reduction, which may not be available (e.g. if the OS doesn't
support FD passing over Unix domain sockets).
Victor Stinner [Thu, 15 Sep 2011 17:45:53 +0000 (19:45 +0200)]
Fix the import machinery if there is an error on sys.path or sys.meta_path
find_module() now raises a RuntimeError, instead of ImportError, on an error on
sys.path or sys.meta_path because load_package() and import_submodule() returns
None and clear the exception if a ImportError occurred.
I have tests to add in this file and it’s always nice to start from a
clean base. I’ve also changed a test that used to write an invalid
config file ('[global]command_packages = etc.' on one line), but the
test passes before and after this change, so either it magically works
or the test is poorly written. Sigh.
merge from 3.2. Fix closes Issue11155 - Correct the multiprocessing.Queue.put's arg (replace 'item' with 'obj') in the docs. Patch by Westley Martínez.
Lars Gustäbel [Mon, 5 Sep 2011 15:04:18 +0000 (17:04 +0200)]
Issue #12841: Fix tarfile extraction of non-existent uids/gids.
tarfile unnecessarily checked the existence of numerical user and group ids on
extraction. If one of them did not exist the respective id of the current user
(i.e. root) was used for the file and ownership information was lost. (Patch
by Sebastien Luttringer)
Nadeem Vawda [Sun, 28 Aug 2011 09:23:57 +0000 (11:23 +0200)]
Issue #12839: Fix crash in zlib module due to version mismatch.
If the version of zlib used to compile the zlib module is incompatible
with the one that is actually linked in, then calls into zlib will fail.
This can leave attributes of the z_stream uninitialized, so we must take
care to avoid segfaulting by trying to use an invalid pointer.
Éric Araujo [Thu, 25 Aug 2011 23:56:15 +0000 (01:56 +0200)]
Refactor helpers for compiling the xx module in distutils tests.
I need to copy the xxmodule.c file in other tests, so I moved the
support code to distutils.tests.support and improved it:
- don’t skip when run from the Lib/distutils/tests directory
- use proper skip machinery instead of custom print/return/test suite
fiddling.
I also took out the fixup_build_ext function, which is needed for tests
to pass on Unix shared builds and Windows debug builds.
Finally, I cleaned up a few things:
- don’t remove directories in tearDown when the parent class’ tearDown
has already registered the directories for removal
- simplify restoration of sys.path
- remove a few unused names found by pyflakes.