Fred Drake [Tue, 29 Jan 2002 14:54:18 +0000 (14:54 +0000)]
Revise cheeseshop example so that the order of the keyword output is
completely determined by the example; dict insertion order and the string
hash algorithm no longer affect the output.
This fixes SF bug #509281.
It's merge time! (well, this is the last one for the moment)
Backport gvanrossum's checkin of revision 2.236:
A tentative fix for SF bug #503837 (Roeland Rengelink):
type.__module__ problems (again?)
This simply initializes the __module__ local in a class statement from
the __name__ global. I'm not 100% sure that this is the correct fix,
although it usually does the right thing. The problem is that if the
class statement executes in a custom namespace, the __name__ global
may be taken from __builtins__, in which case it would have the value
__builtin__, or it may not exist at all (if the custom namespace also
has a custom __builtins__), in which case the class statement will
fail.
Nevertheless, unless someone finds a better solution, this is a 2.2.1
bugfix too.
_parsebody(): When adding subparts to a multipart container, make sure
that the first subpart added makes the payload a list object.
Otherwise, a multipart/* with only one subpart will not have the
proper structure.
There's no need for typechecks on the second and third argument of
new.instancemethod() -- the instancemethod object is now a perfectly
general container.
This fixes SF bug ##503091 (Pedro Rodriquez): new.instancemethod fails
for new classes
There's no need for typechecks on the second and third argument of
new.instancemethod() -- the instancemethod object is now a perfectly
general container.
This fixes SF bug ##503091 (Pedro Rodriquez): new.instancemethod fails
for new classes
Fred Drake [Sat, 5 Jan 2002 17:22:20 +0000 (17:22 +0000)]
Time2Internaldate(): Call isinstance() once for each of the type tests
instead of possibly twice by using a sequence of types to check for.
Add a message to the ValueError that can be raised.
Thread.__bootstrap(): ignore exceptions in the self.__delete() call in
the finally clause. An exception here could happen when a daemon
thread exits after the threading module has already been trashed by
the import finalization, and there's not much of a point in trying to
insist doing the cleanup in that stage.
This should fix SF bug ##497111: active_limbo_lock error at program
exit.
Backport gvanrossum's checkin of revisions
copy.py, 1.23 & test_descr.py, 1.114:
Fix for SF bug ##497426: can't deepcopy recursive new objects
deepcopy(), _reconstruct(): pass the memo to the other function, so
that recursive data structures built out of new-style objects may be
deeply copied correctly.
_reduce(): Avoid infinite recursion in the pickler when self.__class__
doesn't have the _HEAPTYPE flag set, e.g. for time.struct_time and
posix.stat_result.
This fixes the immediate symptoms of SF bug #496873 (cPickle /
time.struct_time loop), replacing the infinite loop with an exception.
eval_frame(): Under -Qnew, INPLACE_DIVIDE wasn't getting handed off to
INPLACE_TRUE_DIVIDE (like BINARY_DIVIDE was getting handed off to
BINARY_TRUE_DIVIDE).
Fred Drake [Fri, 28 Dec 2001 04:37:37 +0000 (04:37 +0000)]
Added index entries similar to some recommended by Skip, and used the word
"interpolation" in the text, to make the string formatting material easier to
find.
This closes SF bug #487165.
Fred Drake [Fri, 28 Dec 2001 04:36:14 +0000 (04:36 +0000)]
Make this do the right thing with entries which start with the percent sign,
in response to Skip's comments in SF bug #487165.
Make use of string methods instead of string module functions in most places.
Add (and make the default) a way to collapse symbol entries into a single
"Symbols" section in the generated index. This is similar to what makeindex
does, but does not include entries beginning with an underscore.
Fred Drake [Fri, 28 Dec 2001 04:31:36 +0000 (04:31 +0000)]
Fix wrongly-named formal parameters in three places: begin_y was used twice
instead of begin_y and begin_x for derwin(), subpad(), and subwin().
Reported for derwin() by Eric Huss.
Added class annotations for the window methods so they would be properly
described in the index.
Fred Drake [Thu, 20 Dec 2001 17:13:09 +0000 (17:13 +0000)]
Re-commit Ping's patch to the cgi and cgitb documentation, using the
right version this time. Thanks, Ping!
(This was from SF patch #494582, "\index -> \indexii" version.)
Barry Warsaw [Thu, 20 Dec 2001 16:37:27 +0000 (16:37 +0000)]
test_parseaddr_empty(): New test for assuring that
Utils.parseaddr('<>') -- i.e. on an empty address, returns the empty
string. Built on rfc822, this used to return None.
Guido van Rossum [Thu, 20 Dec 2001 15:54:48 +0000 (15:54 +0000)]
SF patch #495358 (Artur Zaprzala): rfc822.AddressList and "<>" address
rfc822.AddressList incorrectly handles empty address.
"<>" is converted to None and should be "".
AddressList.__str__() fails on None.
I got an email with such an address and my program
failed processing it.
Example:
>>> import rfc822
>>> rfc822.AddressList("<>").addresslist
[('', None)]
>>> str(rfc822.AddressList("<>"))
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "/usr/lib/python2.1/rfc822.py", line 753, in __str__
return ", ".join(map(dump_address_pair,
self.addresslist))
TypeError: sequence item 0: expected string, None found
[His solution: in the internal routine AddrlistClass.getrouteaddr(),
initialize adlist to "".]
Tim Peters [Wed, 19 Dec 2001 19:05:01 +0000 (19:05 +0000)]
SF bug #495021: Crash calling os.stat with a trailing backslash
Patch from Mark Hammond, plus code rearrangement and comments from me.
posix_do_stat(): Windows-specific code could try to free() stack
memory in some cases when a path ending with a forward or backward slash
was passed to os.stat().
Guido van Rossum [Wed, 19 Dec 2001 16:56:54 +0000 (16:56 +0000)]
save(): Fix for SF bug #494904: Cannot pickle a class with a
metaclass, reported by Dan Parisien.
Objects that are instances of custom metaclasses, i.e. whose ob_type
is a subclass of PyType_Type, should be pickled the same as new-style
classes (objects whose ob_type is PyType_Type). This can't be done
through the existing dispatch switches, and the __reduce__ trick
doesn't work for these, since it finds the unbound __reduce__ for
instances of the class (inherited from PyBaseObject_Type). So check
explicitly using PyType_IsSubtype().
Guido van Rossum [Wed, 19 Dec 2001 16:55:02 +0000 (16:55 +0000)]
Pickler.save(): Fix for SF bug #494904: Cannot pickle a class with a
metaclass, reported by Dan Parisien.
Objects that are instances of custom metaclasses, i.e. whose class is
a subclass of 'type', should be pickled the same as new-style classes
(objects whose class is 'type'). This can't be done through a
dispatch table entry, and the __reduce__ trick doesn't work for these,
since it finds the unbound __reduce__ for instances of the class
(inherited from 'object'). So check explicitly using issubclass().
Jack Jansen [Wed, 19 Dec 2001 09:24:40 +0000 (09:24 +0000)]
When running regen for the plat directories we should use the BUILDEXT
extension, not the EXT one, as regen uses the python binary in the build
directory. Fixes #493959.
Tim Peters [Wed, 19 Dec 2001 04:41:35 +0000 (04:41 +0000)]
SF bug #494738: binascii_b2a_base64 overwrites memory.
binascii_b2a_base64(): We didn't allocate enough buffer space for very
short inputs (e.g., a 1-byte input can produce a 5-byte output, but we
only allocated 2 bytes). I expect that malloc overheads absorbed the
overrun in practice, but computing a correct upper bound is a very simple
change.
Tim Peters [Wed, 19 Dec 2001 04:11:07 +0000 (04:11 +0000)]
SF bug #494668: PUSH() should assert-fail on overflow.
eval_frame(): Added asserts to the top of the eval loop, to verify
that the eval stack pointer is in bounds, plus some comments.
Tim Peters [Tue, 18 Dec 2001 22:32:40 +0000 (22:32 +0000)]
TemporaryFileWrapper: cache the value of os.unlink for use by __del__,
to prevent mysterious errors at shutdown due to "os.unlink" turning into
"None.unlink".
Guido van Rossum [Tue, 18 Dec 2001 22:22:25 +0000 (22:22 +0000)]
Move the helper class _closedsocket *into* the _socketobject class.
This way, when a socket object is deleted after the socket module has
already been zapped by module shutdown, we don't get annoying warnings
about exceptions in __del__ methods.
Thomas Heller [Tue, 18 Dec 2001 20:13:40 +0000 (20:13 +0000)]
Second part of fix for bug [#483982] Python 2.2b2 bdist_wininst
crashes.
If no external zip-utility is found, the archive is created by the
zipfile module, which behaves different now than in 2.1: if the
zip-file is created in the root directory if the distribution, it will
contain an (empty) version of itself.
This triggered the above bug - so it's better to create the zip-file
far away in the TMP directory.