Jack Jansen [Sat, 12 May 2001 21:31:34 +0000 (21:31 +0000)]
Be more sensible about when to use TARGET_API_MAC_OS8 in stead of !TARGET_API_MAC_CARBON. This should greatly facilitate porting stuff to OSX in its MachO/BSD incarnation.
Guido van Rossum [Sat, 12 May 2001 12:18:10 +0000 (12:18 +0000)]
Move the action of loading the configuration to the IdleConf module
rather than the idle.py script. This has advantages and
disadvantages; the biggest advantage being that we can more easily
have an alternative main program.
Tim Peters [Fri, 11 May 2001 21:51:48 +0000 (21:51 +0000)]
Variant of patch #423262: Change module attribute get & set
Allow module getattr and setattr to exploit string interning, via the
previously null module object tp_getattro and tp_setattro slots. Yields
a very nice speedup for things like random.random and os.path etc.
Fred Drake [Fri, 11 May 2001 20:12:26 +0000 (20:12 +0000)]
Fix a minor style consistency issue.
When getting a string buffer for a string we just created, use
PyString_AS_STRING() instead of PyString_AsString() to avoid the
call overhead and extra type check.
Jeremy Hylton [Fri, 11 May 2001 14:48:41 +0000 (14:48 +0000)]
Variant of SF patch 423181
For rich comparisons, use instance_getattr2() when possible to avoid
the expense of setting an AttributeError. Also intern the name_op[]
table and use the interned strings rather than creating a new string
and interning it each time through.
Fred Drake [Fri, 11 May 2001 01:08:13 +0000 (01:08 +0000)]
Replace "\begin{classdesc}{SomeClass}{\unspecified}" with
"\begin{classdesc*}{SomeClass}" -- the rendering of \unspecified was
identical to \moreargs, so this helps clarify things just a little.
Fred Drake [Fri, 11 May 2001 01:00:30 +0000 (01:00 +0000)]
Define a new environment, classdesc*, which can be used to document a
class without providing any information about the constructor. This
should be used for classes which only exist to act as containers rather
than as factories for instances.
Tim Peters [Thu, 10 May 2001 21:45:19 +0000 (21:45 +0000)]
Restore dicts' tp_compare slot, and change dict_richcompare to say it
doesn't know how to do LE, LT, GE, GT. dict_richcompare can't do the
latter any faster than dict_compare can. More importantly, for
cmp(dict1, dict2), Python *first* tries rich compares with EQ, LT, and
GT one at a time, even if the tp_compare slot is defined, and
dict_richcompare called dict_compare for the latter two because
it couldn't do them itself. The result was a lot of wasted calls to
dict_compare. Now dict_richcompare gives up at once the times Python
calls it with LT and GT from try_rich_to_3way_compare(), and dict_compare
is called only once (when Python gets around to trying the tp_compare
slot).
Continued mystery: despite that this cut the number of calls to
dict_compare approximately in half in test_mutants.py, the latter still
runs amazingly slowly. Running under the debugger doesn't show excessive
activity in the dict comparison code anymore, so I'm guessing the culprit
is somewhere else -- but where? Perhaps in the element (key/value)
comparison code? We clearly spend a lot of time figuring out how to
compare things.
Tim Peters [Thu, 10 May 2001 20:18:30 +0000 (20:18 +0000)]
Make test_mutants stronger by also adding random keys during comparisons.
A Mystery: test_mutants ran amazingly slowly even before dictobject.c
"got fixed". I don't have a clue as to why. dict comparison was and
remains linear-time in the size of the dicts, and test_mutants only tries
100 dict pairs, of size averaging just 50. So "it should" run in less than
an eyeblink; but it takes at least a second on this 800MHz box.
Tim Peters [Thu, 10 May 2001 20:03:04 +0000 (20:03 +0000)]
Change test_mmap.py to use test_support.TESTFN instead of hardcoded "foo",
and wrap the body in try/finally to ensure TESTFN gets cleaned up no
matter what.
Fred Drake [Thu, 10 May 2001 15:05:03 +0000 (15:05 +0000)]
Remove all mentions of the strop module -- it has been pronounced Evil.
(The string "strop" is found in the rexec documentation, but that should
not be changed until strop is actually removed or rexec no longer allows
it.)
Tim Peters [Thu, 10 May 2001 08:32:44 +0000 (08:32 +0000)]
SF bug #422121 Insecurities in dict comparison.
Fixed a half dozen ways in which general dict comparison could crash
Python (even cause Win98SE to reboot) in the presence of kay and/or
value comparison routines that mutate the dict during dict comparison.
Bugfix candidate.
Tim Peters [Thu, 10 May 2001 01:23:39 +0000 (01:23 +0000)]
Guido has Spoken. Restore strop.replace()'s treatment of a 0 count as
meaning infinity -- but at least warn about it in the code! I pissed
away a couple hours on this today, and don't wish the same on the next
in line.
Bugfix candidate.
Tim Peters [Thu, 10 May 2001 00:59:45 +0000 (00:59 +0000)]
The strop module and test_strop.py believe replace() with a 0 count
means "replace everything". But the string module, string.replace()
amd test_string.py believe a 0 count means "replace nothing".
"Nothing" wins, strop loses.
Bugfix candidate.
Tim Peters [Thu, 10 May 2001 00:32:57 +0000 (00:32 +0000)]
Heh. I need a break. After this: stropmodule & stringobject were more
out of synch than I realized, and I managed to break replace's "count"
argument when it was 0. All is well again. Maybe.
Bugfix candidate.
Tim Peters [Thu, 10 May 2001 00:05:33 +0000 (00:05 +0000)]
Fudge. stropmodule and stringobject both had copies of the buggy
mymemXXX stuff, and they were already out of synch. Fix the remaining
bugs in both and get them back in synch.
Bugfix release candidate.
Tim Peters [Wed, 9 May 2001 23:00:26 +0000 (23:00 +0000)]
SF bug #422088: [OSF1 alpha] string.replace().
Platform blew up on "123".replace("123", ""). Michael Hudson pinned the
blame on platform malloc(0) returning NULL.
This is a candidate for all bugfix releases.
Fred Drake [Wed, 9 May 2001 21:02:02 +0000 (21:02 +0000)]
Modify to allow file objects wherever file descriptors are needed.
This closes SF bug #231328.
Added all constants needed to use the functions defined in this module
that are not defined elsewhere (the O_* symbols are available in the
os module). No additonal modules are needed to use this now.
Fred Drake [Wed, 9 May 2001 20:14:09 +0000 (20:14 +0000)]
fdconv(): Do not second guess the error condition returned by
PyObject_AsFileDescriptor() -- it does the same thing everywhere, so
use it the same way everyone else does so that exceptions are
consistent. This means we have less code here, and we do not need to
resort to hackish ways of getting the Python-visible function name to
fdconv().
Fred Drake [Wed, 9 May 2001 19:57:37 +0000 (19:57 +0000)]
Itamar Shtull-Trauring <python@itamarst.org>:
Updates zipfile.ZipFile docs to mention the fact that you can create a
ZipFile instance from an arbitrary file-like object.
Fred Drake [Wed, 9 May 2001 19:11:33 +0000 (19:11 +0000)]
Three uses of makesockaddr() used sockaddr buffers that had not be cleared;
this could cause invalid paths to be returned for AF_UNIX sockets on some
platforms (including FreeBSD 4.2-RELEASE), appearantly because there is
no assurance that the address will be nul-terminated when filled in by the
kernel.
PySocketSock_recvfrom(): Use PyString_AS_STRING() to get the data pointer
of a string we create ourselves; there is no need for the extra type
check from PyString_AsString().
Fred Drake [Wed, 9 May 2001 17:53:06 +0000 (17:53 +0000)]
Only import termio.h on OSF, and add a comment about why it is needed there.
This header does not exist on all Unix flavors; FreeBSD in particular does
not include it.
Fred Drake [Wed, 9 May 2001 04:03:16 +0000 (04:03 +0000)]
Job.build_html(): Be more robust in ensuring about.html exists; copying
the right HTML file to the name about.html is needed even if the
--numeric option was not given -- some other name may have been
assigned due to some non-determinism in the algorithm use to perform
name allocation. ;-(
This closes the "About..." portion of SF bug #420216.
Fred Drake [Wed, 9 May 2001 03:49:48 +0000 (03:49 +0000)]
There is no IMAP class in the imaplib module; the class is IMAP4.
There is no imap module; refer to imaplib instead, since it exists.
Move the "See Also:" section in front of the sub-sections, for
consistency with other portions of the library reference.
This closes the library reference portion of SF bug #420216.
Tim Peters [Wed, 9 May 2001 00:24:55 +0000 (00:24 +0000)]
My change to string_item() left an extra reference to each 1-character
interned string created by "string"[i]. Since they're immortal anyway,
this was hard to notice, but it was still wrong <wink>.
Tim Peters [Tue, 8 May 2001 22:33:50 +0000 (22:33 +0000)]
Intern 1-character strings as soon as they're created. As-is, they aren't
interned when created, so the cached versions generally aren't ever
interned. With the patch, the
Py_INCREF(t);
*p = t;
Py_DECREF(s);
return;
indirection block in PyString_InternInPlace() is never executed during a
full run of the test suite, but was executed very many times before. So
I'm trading more work when creating one-character strings for doing less
work later. Note that the "more work" here can happen at most 256 times
per program run, so it's trivial. The same reasoning accounts for the
patch's simplification of string_item (the new version can call
PyString_FromStringAndSize() no more than 256 times per run, so there's
no point to inlining that stuff -- if we were serious about saving time
here, we'd pre-initialize the characters vector so that no runtime testing
at all was needed!).
Tim Peters [Tue, 8 May 2001 15:19:57 +0000 (15:19 +0000)]
SF bug #422177: Results from .pyc differs from .py
Store floats and doubles to full precision in marshal.
Test that floats read from .pyc/.pyo closely match those read from .py.
Declare PyFloat_AsString() in floatobject header file.
Add new PyFloat_AsReprString() API function.
Document the functions declared in floatobject.h.
Fred Drake [Tue, 8 May 2001 05:37:52 +0000 (05:37 +0000)]
Michael Hudson <mwh21@cam.ac.uk>:
Documentation update to reflect changes to the termios module (noting
that the termios functions can take a file object as well as a file
descriptor).
This closes the documentation portion of SF patch #417081.
Tim Peters [Tue, 8 May 2001 04:38:29 +0000 (04:38 +0000)]
SF patch #421922: Implement rich comparison for dicts.
d1 == d2 and d1 != d2 now work even if the keys and values in d1 and d2
don't support comparisons other than ==, and testing dicts for equality
is faster now (especially when inequality obtains).
Jeremy Hylton [Tue, 8 May 2001 04:20:52 +0000 (04:20 +0000)]
Fix several bugs and add two features.
Assertion error message had typos in arguments to string format.
.cover files for modules in packages are now put in the right place.
The code that generate .cover files seemed to prepend a "./" to many
absolute paths, causing them to fail. The code now checks explicitly
for absolute paths and leaves them alone.
In trace/coverage code, recover from case where module has no __name__
attribute, when e.g. it is executed by PyRun_String(). In this case,
assign modulename to None and hope for the best. There isn't anywhere
to write out coverage data for this code anyway.
Also, replace several sys.stderr.writes with print >> sys.stderr.
New features:
-C/--coverdir dir: Generate .cover files in specified directory
instead of in the directory where the .py file is.
-s: Print a short summary of files coverred (# lines, % coverage,
name)
Tim Peters [Tue, 8 May 2001 03:58:01 +0000 (03:58 +0000)]
This is a test showing SF bug 422177. It won't trigger until I check in
another change (to test_import.py, which simply imports the new file). I'm
checking this piece in now, though, to make it easier to distribute a patch
for x-platform checking.
Tim Peters [Mon, 7 May 2001 20:53:51 +0000 (20:53 +0000)]
SF bug #422108 - Error in rich comparisons.
2.1.1 bugfix candidate too.
Fix a bad (albeit unlikely) return value in try_rich_to_3way_compare().
Also document do_cmp()'s return values.