Properly qualify methods inherited from classes in other modules.
Fix so that docother() doesn't blow up.
Eliminate man() function since doc() and man() did nearly the same thing.
Various other code cleanup and refactoring to reduce duplication.
Simplify and rewrite freshimport() so modules are always up to date,
even within packages (where reload() doesn't work).
Add finalization callback to the server (so that if the server fails to
start for some reason, the main thread isn't left hanging).
Steve Purcell [Thu, 12 Apr 2001 09:05:01 +0000 (09:05 +0000)]
- New fail*() methods, and comprehensive set of assert*() synonyms
- TestCase.failureException defines the exception that indicates a test failure
- Docstrings for TestLoader class
- Added exc_info() hack back in
Tim Peters [Thu, 12 Apr 2001 00:35:51 +0000 (00:35 +0000)]
Fix for SF bug #415514: "%#x" % 0 caused assertion failure/abort.
http://sourceforge.net/tracker/index.php?func=detail&aid=415514&group_id=5470&atid=105470
For short ints, Python defers to the platform C library to figure out what
%#x should do. The code asserted that the platform C returned a string
beginning with "0x". However, that's not true when-- and only when --the
*value* being formatted is 0. Changed the code to live with C's inconsistency
here. In the meantime, the problem does not arise if you format a long 0 (0L)
instead. However, that's because the code *we* wrote to do %#x conversions on
longs produces a leading "0x" regardless of value. That's probably wrong too:
we should drop leading "0x", for consistency with C, when (& only when) formatting
0L. So I changed the long formatting code to do that too.
Tim Peters [Thu, 12 Apr 2001 00:24:41 +0000 (00:24 +0000)]
Reverting the "unixware7" patch: atan2(0, 1) should be 0, regardless of
platform. If it returns pi on the unixware7 platform, they have a bug in
their libm atan2.
Barry Warsaw [Wed, 11 Apr 2001 20:23:24 +0000 (20:23 +0000)]
Bumping to version 4.0 since we now support only XEmacs 21.1 and Emacs
20.7, although not all of the compatibility code for older Emacsen has
been removed. Specifically, the old "make sure we have a current
custom.el library" stuff is removed, as is the hack-around for an
NTEmacs 19.34.6 make-temp-name bug.
Updated much of the Commentary section in the initial comments.
Much more importantly, I've integrated Ken Manheimer's pdbtrack stuff,
which is way cool. When enabled (as by default), this turns on the
overlay arrow when pdb is entered, either in the shell buffer or in
the *Python* buffer. Specifically:
(py-mode-map): Added C-c C-d to toggle pdb tracking.
(py-pdbtrack-do-tracking-p): New user customizable variable to control
whether overlay arrow tracking is enabled or not. This variable is
buffer local and is turned on by default.
(py-pdbtrack-minor-mode-string): The string that's added to the minor
mode alist when actually doing pdb overlay arrow tracking. User
customizable.
(py-pdbtrack-toggle-stack-tracking, turn-on-pdbtrack,
turn-off-pdbtrack): New commands to control pdb tracking.
(py-pdbtrack-is-tracking-p): Helper variable used to control the
display of py-pdbtrack-minor-mode-string. Set to true when the
overlay arrow is enabled, and false when it's disabled.
(py-pdbtrack-stack-entry-regexp, py-pdbtrack-input-prompt,
py-pdbtrack-track-range): Inherited from pdbtrack.el and renamed.
(py-pdbtrack-overlay-arrow, py-pdbtrack-track-stack-file): New
functions which actually do the tracking.
(py-shell): Add py-pdbtrack-track-stack-file to
comint-output-filter-functions.
Finally, add py-pdbtrack-track-stack-file to
comint-output-filter-functions at the file level. This and the
py-shell addition should ensure that pdb tracking is installed
regardless of the order of operation.
Also, add py-pdbtrack-minor-mode-string to minor-mode-alist.
Barry Warsaw [Wed, 11 Apr 2001 20:12:33 +0000 (20:12 +0000)]
Added some additional documentation describing how BabylMailbox
actually works (it returns a message containing the visible headers,
not the original headers). Doc change approved by Fred; closes SF bug
#412230.
Jeremy Hylton [Wed, 11 Apr 2001 13:52:29 +0000 (13:52 +0000)]
Fix exception handling for non-PyFunction objects, SF bug 414743.
Fix based on patch #414750 by Michael Hudson.
New functions get_func_name() and get_func_desc() return reasonable
names and descriptions for all objects. XXX Even objects that aren't
actually callable.
Fred Drake [Wed, 11 Apr 2001 04:38:34 +0000 (04:38 +0000)]
Based on a comment by Konrad Hinsen on python-list:
Change "EOF" to "end-of-file", on the premise that it is easier for
new programmers to understand (at least a little).
This does not attempt to explain "file or device attached to standard
input."
Include py_curses.h *after* defining _XOPEN_SOURCE_EXTENDED.
Michael Hudson suggested this fox for the Tru64 problem (SF bug
232597). It looks reasonable, it works on Tru64, and it doesn't beak
anything on Linux, so I say go for it.
Fred Drake [Tue, 10 Apr 2001 15:53:06 +0000 (15:53 +0000)]
Import the alltt package and wrap that environment in a similar way to
the way we handle verbatim, so that it picks up the same indentation and
minipage behavior.
When doing the quick test to see whether large files are supported,
catch IOError as well as OverflowError. I found that on Tru64 Unix
this was raised; probably because the OS (or libc) doesn't support
large files but the architecture is 64 bits!
When zlib can't be imported, zipfile raises RuntimeError, which causes
the test to be marked as failing rather than skipped. Add an explicit
"import zlib" to prevent this.
Fix synopsis() so it can handle binary module files.
Avoid ever using popen on Windows, since it's broken there.
Factor out the business of getting the summary line into splitdoc().
Use the modulename() routine in inspect.
Show all members of modules and classes rather than filtering on leading '_'.
Small typo and formtating fixes.
Don't show warnings when running "pydoc -k".
Tim Peters [Tue, 10 Apr 2001 05:02:52 +0000 (05:02 +0000)]
test_pickle works on sizeof(long)==8 boxes again.
pickle.py
The code implicitly assumed that all ints fit in 4 bytes, causing all
sorts of mischief (from nonsense results to corrupted pickles).
Repaired that.
marshal.c
The int marshaling code assumed that right shifts of signed longs
sign-extend. Repaired that.
Tim Peters [Tue, 10 Apr 2001 04:35:28 +0000 (04:35 +0000)]
Ack -- this module mixes tabs and spaces, and what appears to be a mix
of 2-space and 4-space indents. Whatever, when I saw the checkin diff it
was clear that what my editor thinks a tab means didn't match this module's
belief. Removed all the tabs from the lines I added and changed, left
everything else alone.
Tim Peters [Tue, 10 Apr 2001 04:22:00 +0000 (04:22 +0000)]
On a sizeof(long)==8 machine, ints in range(2**31, 2**32) were getting
pickled into the signed(!) 4-byte BININT format, so were getting unpickled
again as negative ints. Repaired that.
Added some minimal docs at the top about what I've learned about the pickle
format codes (little of which was obvious from staring at the code,
although that's partly because all the size-related bugs greatly obscured
the true intent of the code).
Happy side effect: because save_int() needed to grow a *proper* range
check in order to fix this bug, it can now use the more-efficient BININT1,
BININT2 and BININT formats when the long's value is small enough to fit
in a signed 4-byte int (before this, on a sizeof(long)==8 box it always
used the general INT format for negative ints).
test_cpickle works again on sizeof(long)==8 machines. test_pickle is
still busted big-time.
Tim Peters [Tue, 10 Apr 2001 03:41:41 +0000 (03:41 +0000)]
Test full range of native ints. This exposes two more binary pickle
bugs on sizeof(long)==8 machines. pickle.py has no idea what it's
doing with very large ints, and variously gets things right by accident,
computes nonsense, or generates corrupt pickles. cPickle fails on
cases 2**31 <= i < 2**32: since it *thinks* those are 4-byte ints
(the "high 4 bytes" are all zeroes), it stores them in the (signed!) BININT
format, so they get unpickled as negative values.
Append the revision number for each file to the output.
(Yes, this is a new feature right before the 2.1 release. No, I can't
imagine this would seriously break anybody's code. In fact, most
users of this script are probably *happy* to see this addition.)
Tim Peters [Tue, 10 Apr 2001 01:54:42 +0000 (01:54 +0000)]
Critical fix: if cPickle on a sizeof(long)==8 box is used to read a
binary pickle, and the latter contains a pickle of a negative Python
int i written on a sizeof(long)==4 box (and whether by cPickle or
pickle.py), it's read incorrectly as i + 2**32. The patch repairs that,
and allows test_cpickle.py (to which I added a relevant test case earlier
today) to work again on sizeof(long)==8 boxes.
There's another (at least one) sizeof(long)==8 binary pickle bug, but in
pickle.py instead. That bug is still there, and test_pickle.py doesn't
catch it yet (try pickling and unpickling, e.g., 1 << 46).
Make on Alpha Tru64 5.1 (as installed on the SF compile farm) doesn't
think that a command starting with '#' is a comment, so move the one
comment in such a position (in the rule for building $(LIBRARY)) to a
harmless position.
Tim Peters [Mon, 9 Apr 2001 20:07:05 +0000 (20:07 +0000)]
Pickles have a number of storage formats for various sizes and kinds of
integers, but the std tests don't exercise most of them. Repair that.
CAUTION: I expect this to fail on boxes with sizeof(long)==8, in the
part of test_cpickle (but not test_pickle) trying to do a binary mode
(not text mode) load of the embedded BINDATA pickle string. Once that
hypothesized failure is confirmed, I'll fix cPickle.c.
Steve Purcell [Mon, 9 Apr 2001 15:37:31 +0000 (15:37 +0000)]
* Remove exc_info() kludge -- it actually messed up the Jython output
* Fixed TestLoader.loadTestsFromName() for nested packages
* Corrected the command-line usage summary
fixing 408085 - redirect from https becomes http
Even though relative redirects are illegal, they are common
urllib treated every relative redirect as though it was to http,
even if the original was https://
As long as we're compensating for server bugs, might as well do
it properly.
Jeremy Hylton [Mon, 9 Apr 2001 13:57:32 +0000 (13:57 +0000)]
Add two arguments to Scope constructor, module scope and class name
Add mangling support
Add get_children() and add_child() methods to Scope
Skip nodes when If test is a false constant
Add test code that checks results against symtable module
Jeremy Hylton [Mon, 9 Apr 2001 04:27:12 +0000 (04:27 +0000)]
Fix "import as" (has always skipping the as name)
Fix com_NEWLINE() so that is accepts arguments, which occurs for lines like:
stmt; # note trailing semicolon
Add XXX about checking for assignment to list comps
Tim Peters [Sun, 8 Apr 2001 23:39:38 +0000 (23:39 +0000)]
Repair portability of sign extension when reading signed ints on boxes
where sizeof(long)==8. This *was* broken on boxes where signed right
shifts didn't sign-extend, but not elsewhere. Unfortunately, apart
from the Cray T3E I don't know of such a box, and Guido has so far
refused to buy me any Cray machines for home Python testing <wink>.
More immediately interesting would be if someone could please test
this on *any* sizeof(long)==8 box, to make sure I didn't break it.
Tim Peters [Sun, 8 Apr 2001 07:23:44 +0000 (07:23 +0000)]
Fix from the Madusa mailing list:
http://groups.yahoo.com/group/medusa/message/333
It's clear that Medusa should not be checking for an empty buffer
via "buf is ''". The patch merely changes "is" to "==". However,
there's a mystery here all the same: Python attempts to store null
strings uniquely, so it's unclear why "buf is ''" ever returned
false when buf actually was empty. *Some* string operations produce
non-unique null strings, e.g.
>>> "abc"*0 is "abc"*0
0
>>>
but they're rare, and I don't see any such operations in asynchat.