situations are handled now: a multipart/* containing no payload
(i.e. never set), and a multipart/* containing a scalar payload
(i.e. Message.add_payload() having been called exactly once, not
passing in a sequence object).
_make_boundary(): Fixed bogus cut-n-paste error (self as first arg).
I will merge these changes into the standalone email package and
Python 2.3 separately.
multipart/mixed message with no attachments.
test_one_part_in_a_multipart(): A test for the layout of a
multipart/mixed message with a single attachment.
test_seq_parts_in_a_multipart(): A test for the layout of a
multipart/mixed message with a single attachment that happens to be a
sequence of length one.
These tests ensure no regressions on the fix for SF bug #531966.
I will merge these into the standalone email package and Python 2.3
trunk separately.
The proper fix is not quite what was submitted; it's really better to
take the class of the object passed rather than calling PyMethod_New
with NULL pointer args, because that can then cause other core dumps
later.
I also added a testcase for the fix to classmethods() in test_descr.py.
I'll apply this to 2.3 too.
Bring tempfile.py up to date from the trunk. There have been three
checkins (all by Tim):
SF bug #509805 tempfile.gettempdir not threadsafe
This is an ancient race when multiple threads call gettempdir() (or
anything relying on it) for the first time.
Fixed x-platform via the Big Hammer of rearranging the code to serialize
the first calls. Subsequent calls are as fast as before.
Note that the Python test suite can't provoke this bug: it requires
setting up multiple threads making the very first calls into tempfile,
but the test suite uses tempfile several times before getting to
test_threadedtempfile.
Bugfix candidate.
[and]
New TemporaryFile implementation for Windows: this doesn't need a
TemproraryFileWrapper wrapper anymore, and should be immune from the
problem that a temp file inherited by a spawned process caused an
attempt to close the temp file in the spawning process to blow
up (the unlink in TemporaryFileWrapper.close() blew up with a
"Permission denied" error because, despite that the temp file got
closed in the spawning process, the spawned process still had it open
by virtue of C-level file descriptor inheritance). In context,
that bug took days to figure out <wink/sigh>.
[and]
Thanks to Detlef Lannert for pointing out a typo in the code that
uses _DummyMutex on platforms without threads.
The first and third of these are pretty clearly bugfixes; I think the
second is too.
backport montanaro's checkin of
revision 1.24 of calendar.py
make _localized_name instances work more like the tuples they replaced. In
particular, negative indexes work and they are limited by the actual length
of the names they represent (weekday and month names). This closes bug
#503202.
[and then]
Corrected _localized_name.__getitem__ based on code in patch 503202 (which I
thought was just a bug report, so didn't notice - doh!). This handles
slicing, which v 1.23 didn't.
revision 1.121 of test_descr.py
"Fix" for SF bug #520644: __slots__ are not pickled.
As promised in my response to the bug report, I'm not really fixing
it; in fact, one could argule over what the proper fix should do.
Instead, I'm adding a little magic that raises TypeError if you try to
pickle an instance of a class that has __slots__ but doesn't define or
override __getstate__. This is done by adding a bozo __getstate__
that always raises TypeError.
Bugfix candidate (also the checkin to typeobject.c, of course).