Tim Peters [Mon, 22 Apr 2002 02:33:27 +0000 (02:33 +0000)]
Moving pymalloc along.
+ Redirect PyMem_{Del, DEL} to the object allocator's free() when
pymalloc is enabled. Needed so old extensions can continue to
mix PyObject_New with PyMem_DEL.
+ This implies that pgen needs to be able to see the PyObject_XYZ
declarations too. pgenheaders.h now includes Python.h. An
implication is that I expect obmalloc.o needs to get linked into
pgen on non-Windows boxes.
+ When PYMALLOC_DEBUG is defined, *all* Py memory API functions
now funnel through the debug allocator wrapper around pymalloc.
This is the default in a debug build.
+ That caused compile.c to fail: it indirectly mixed PyMem_Malloc
with raw platform free() in one place. This is verbotten.
Tim Peters [Sun, 21 Apr 2002 07:29:14 +0000 (07:29 +0000)]
Py_UniversalNewlineFread(): Many changes.
+ Continued looping until n bytes in the buffer have been filled, not
just when n bytes have been read from the file. This repairs the
bug that f.readlines() only sucked up the first 8192 bytes of the file
on Windows when universal newlines was enabled and f was opened in
U mode (see Python-Dev -- this was the ultimate cause of the
test_inspect.py failure).
+ Changed prototye to take a char* buffer (void* doesn't make much sense).
+ Squashed size_t vs int mismatches (in particular, besides the unsigned
vs signed distinction, size_t may be larger than int).
+ Gets out under all error conditions now (it's possible for fread() to
suffer an error even if it returns a number larger than 0 -- any
"short read" is an error or EOF condition).
Tim Peters [Sun, 21 Apr 2002 06:12:02 +0000 (06:12 +0000)]
Assorted code cleanups for readability. Greatly boosted the size of the
test data: this test fails on WIndows now if universal newlines are
enabled (which they aren't yet, by default). I don't know whether the
test will also fail on Linux now.
Tim Peters [Sun, 21 Apr 2002 04:44:11 +0000 (04:44 +0000)]
Hack around the "2.1.6 Blank lines" bug in a way that the TOC still
displays a recognizable section title (there are extra blanks at the
end of it now, due to the nested anchor, but that's fine).
Tim Peters [Sun, 21 Apr 2002 03:26:37 +0000 (03:26 +0000)]
PyUnicode_EncodeUTF8: squash compiler wng. The difference of two
pointers is a signed type. Changing "allocated" to a signed int makes
undetected overflow more likely, but there was no overflow detection
before either.
Tim Peters [Sun, 21 Apr 2002 02:01:01 +0000 (02:01 +0000)]
Give the Help viewer a font-size button. This isn't documented by MS,
but is documented by others on the web, and the defn of the magic flag
needed appears in MS's htmlhelp.h header file.
Tim Peters [Sat, 20 Apr 2002 21:34:34 +0000 (21:34 +0000)]
Move "everything left one": the TOC now shows each doc directory as a
distinct top-level node. Before they were all nested under an artificial
top-level node, uselessly chewing up horizontal space, and ensuring that
the only thing the user saw in the TOC upon opening the file was a single
collapsed top-level folder.
Tim Peters [Sat, 20 Apr 2002 20:26:26 +0000 (20:26 +0000)]
Stopped all warnings from the HTML Help Compiler, by generating proper
HTML (or, at least, proper in its view). The TOC file is now identical
to what the HTML compiler itself generates, except for whitespace and
a glitch identified below. The pretty-printing done by prechm.py is
pretty much destroyed for now; if you need it pretty-printed, just make
the Help Compiler save the files (it's got its own idea of pretty-
printing anyway).
Glitch: The title of Ref Man "2.1.6 Blank lines" shows up as a blank
for now. This is because the relevant entry in ref/index.html contains
nested anchors, and pychm really has no idea what to do with that. I
hacked it for now to avoid any error messages or worse insanity, and
filed a bug report against the docs.
Tim Peters [Sat, 20 Apr 2002 08:36:42 +0000 (08:36 +0000)]
Widespread: Used classes in a more natural way. Added convenience
methods to squash code duplication. Simplified several overly complex
chunks of logic. Built output strings more with string interpolation
instead of infix '+'. Added comments. Exploited recent Python features
(chiefly bool and augmented assignment).
Jeremy Hylton [Sat, 20 Apr 2002 04:46:55 +0000 (04:46 +0000)]
Fix SF bug #505315: Make free and cell vars show up consistently in locals().
PyFrame_FastToLocals() and PyFrame_LocalsToFast() had a return if
f_nlocals was 0. I think this was a holdover from the pre 2.1 days
when regular locals were the only kind of local variables.
The change makes it possible to use a free variable in eval or exec if
it the variable is also used elsewhere in the same block, which is
what the documentation says.
Tim Peters [Sat, 20 Apr 2002 03:25:02 +0000 (03:25 +0000)]
Replaced the fiddly 5-tuples with a new Book convenience class, allowing
to reference fields via names instead of meaningless little integers.
This turned up one case where the wrong little integer was being used,
in informative progress output. Fixed that too.
Jeremy Hylton [Fri, 19 Apr 2002 22:56:37 +0000 (22:56 +0000)]
Fix com_arglist() and update grammar fragment.
SF bug #522264 reported by Evelyn Mitchell.
The code included a comment about "STAR STAR" which was translated
into the code as the bogus attribute token.STARSTAR. This name never
caused an attribute error because it was never retrieved. The code
was based on an old version of the grammar that specified kwargs as
two tokens ('*' '*'). I checked as far back as 2.1 and didn't find
this production.
The fix is simple, because token.DOUBLESTAR is the only token
allowed. Also update the grammar fragment in com_arglist().
XXX I'll bet lots of other grammar fragments in comments are out of
date, probably in this module and in compile.c.
Tim Peters [Fri, 19 Apr 2002 18:41:46 +0000 (18:41 +0000)]
Added a stop-list to reduce the size of the full text search index. Fred,
populate the "stop_list" triple-quoted string with your favorite handful
of stop words.
Tim Peters [Fri, 19 Apr 2002 16:46:43 +0000 (16:46 +0000)]
+ Changed TOC to folder-tree style.
+ Increased size of the window the user sees the first time.
+ Arranged for the display to remember its last size and position.
+ Added a Favorites (bookmarks) tab.
+ Added the "Advanced Search" decorations.
Tim Peters [Fri, 19 Apr 2002 16:09:26 +0000 (16:09 +0000)]
Generates inputs to the Microsoft Help Compiler, which creates compiled
HTML help files (.chm). Obtained from Robin Dunn's packaging of the
2.2 docs at <http://alldunn.com/python/>, obtained in turn from
Hernán Martínez Foffani's original work at
<http://www.orgmf.com.ar/condor/pytstuff.html>.
Jack Jansen [Fri, 19 Apr 2002 14:29:47 +0000 (14:29 +0000)]
Oops: we used PyMem_DEL() to clean up objects, and that's a problem since
pymalloc, apparently. Fixed, but this means all bgen-generated modules will
have to be re-generated.
I hope (and expect) that the pymalloc fixes aren't bugfix candidates, because
if they are this is one too.
Fred Drake [Fri, 19 Apr 2002 04:04:57 +0000 (04:04 +0000)]
Clean up the use of version numbers in filenames; always use an "abstract"
version number, and explain what it is at the top of the chapter.
This closes SF bug #225003.
Tim Peters [Thu, 18 Apr 2002 22:25:03 +0000 (22:25 +0000)]
_PyObject_DebugMallocStats(): Added some potentially expensive internal
consistency checks, enabled only in a debug (Py_DEBUG) build. Note that
this never gets called automatically unless PYMALLOC_DEBUG is #define'd
too, and the envar PYTHONMALLOCSTATS exists.
Tim Peters [Thu, 18 Apr 2002 04:30:18 +0000 (04:30 +0000)]
SF bug 544733: Cygwin test_mmap fix for Python 2.2.1
Close a file before trying to unlink it, and apparently Cygwin needs
writes to an mmap'ed file to get flushed before they're visible.
Bugfix candidate, but I think only for the 2.2 line (it's testing
features that I think were new in 2.2).
Change type_get_doc (the get function for __doc__) to look in tp_dict
more often, and if it finds a descriptor in tp_dict, to call it (with
a NULL instance). This means you can add a __doc__ descriptor to a
new-style class that returns instance docs when called on an instance,
and class docs when called on a class -- or the same docs in either
case, but lazily computed.
I'll also check this into the 2.2 maintenance branch.
Change type_get_doc (the get function for __doc__) to look in tp_dict
more often, and if it finds a descriptor in tp_dict, to call it (with
a NULL instance). This means you can add a __doc__ descriptor to a
new-style class that returns instance docs when called on an instance,
and class docs when called on a class -- or the same docs in either
case, but lazily computed.
I'll also check this into the 2.2 maintenance branch.
Patch #531901 by Mark W. Alexander: adds a new distutils packager
base class (in bdist_packager) and two subclasses which make use
of this base class: bdist_pkgtool (for Solaris) and bdist_sdux (for
HP-UX).
Fred Drake [Wed, 17 Apr 2002 01:40:56 +0000 (01:40 +0000)]
Changed last remaining use of "./" to "index.html" when referring to the
index file for the top-level directory. This makes it easier to use an
unpacked version of the documentation via file: URLs.
This closes SF bug #541257.
Tim Peters [Tue, 16 Apr 2002 20:48:01 +0000 (20:48 +0000)]
Windows installer: disabled Wise's "delete in-use files" uninstall
option. It was the cause of at least one way UNWISE.EXE could vanish
(install a python; uninstall it; install it again; reboot the machine;
abracadabra the uinstaller is gone).
Fred Drake [Tue, 16 Apr 2002 19:27:23 +0000 (19:27 +0000)]
Added docstrings to the Profile class.
Avoid adding Python wrappers around the underlying C profiler if possible;
the extra layer of calls can lead to confusion in interpreting the logs.
PyNumber_InPlaceMultiply insisted on calling sq_inplace_repeat if it
existed, even if nb_inplace_multiply also existed and the arguments
weren't right for sq_inplace_repeat. Change this to only use
sq_inplace_repeat if nb_inplace_multiply isn't defined.
Thomas Heller [Tue, 16 Apr 2002 15:04:56 +0000 (15:04 +0000)]
Replace the simpleminded string.find with a re.search looking only for
full words. Before that, something like 'PyObject_Call' was missed
because 'PyObject_CallFunction' was found.
Tim Peters [Tue, 16 Apr 2002 02:08:51 +0000 (02:08 +0000)]
Apparently 3 of the tests here rely on trailing whitespace and/or hard
tab characters, so reverting the whitespace normalization. Barry,
please repair this.
Tim Peters [Tue, 16 Apr 2002 01:33:59 +0000 (01:33 +0000)]
resetwarnings(): change the docstring to reflect what the code
actually does. Note that the description in the Library Reference
manual is already accurate.
Tim Peters [Mon, 15 Apr 2002 23:56:04 +0000 (23:56 +0000)]
I expect test_univnewlines to be skipped on Windows. I expect this
because it *is* skipped. I'm not entirely sure it should be skipped, but
figuring that out would take actual thought <wink>.
Barry Warsaw [Mon, 15 Apr 2002 22:14:06 +0000 (22:14 +0000)]
test_main(): Added this so the test can actually get run under the
regrtest framework. Keep the original standalone-unittest
scaffolding (i.e. suite() and __main__).
Barry Warsaw [Mon, 15 Apr 2002 22:00:25 +0000 (22:00 +0000)]
parseaddr(): Don't use rfc822.parseaddr() because this now implies a
double call to AddressList.getaddrlist(), and /that/ always returns an
empty list for the second and subsequent calls.
Instead, instantiate an AddressList directly, and get the parsed
addresses out of the addresslist attribute.
Fred Drake [Mon, 15 Apr 2002 20:51:19 +0000 (20:51 +0000)]
Add documentation for PyObject_Call().
Note that PyObject_Size() is a synonym for PyObject_Length().
This closes SF patch #544330 (contributed by Thomas Heller).