Patch by Ping (SF bug 415879, Exception.__init__() causes segfault):
Calling an unbound method on a C extension class without providing
an instance can yield a segfault. Try "Exception.__init__()" or
"ValueError.__init__()".
This is a simple fix. The error-reporting bits in call_method
mistakenly treat the misleadingly-named variable "func" as a
function, when in fact it is a method.
If we let get_func_name take care of the work, all is fine.
Make force-loading optional; don't force-load in interactive mode.
Make synopsis() load modules as '__temp__' so they don't clobber anything.
Change "constants" section to "data" section.
Don't show __builtins__ or __doc__ in "data" section.
For Bob Weiner: don't boldface text in Emacs shells or dumb terminals.
Remove Helper.__repr__ (it really belongs in site.py, and should be guarded by a check for len(inspect.stack) <= 2).
Martin v. Löwis [Fri, 13 Apr 2001 08:09:50 +0000 (08:09 +0000)]
Patch #415777: new grouping strategy.
fixes bug #414940, and redoes the fix for #129417 in a different way.
It also fixes a number of other problems with locale-specific formatting:
If there is leading or trailing spaces, then no grouping should be applied
in the spaces, and the total length of the string should not be changed
due to grouping.
Also added test case which works only if the en_US locale is available.
Fred Drake [Fri, 13 Apr 2001 05:13:55 +0000 (05:13 +0000)]
Update the helper scripts that push development docs to SourceForge;
this version avoids having to build a separate authenticated connection
to push the update-docs.sh script to SF.
Fred Drake [Thu, 12 Apr 2001 22:07:27 +0000 (22:07 +0000)]
_synthesize(): Helper function: when the users passes a specific
value for the 'using' parameter of the get() function
or the BROWSER environment variable, if the thing
passed in is a path (as seems to be the case with KDE)
instead of a short name, examine the available
controllers to see if we can synthesize one based on a
pre-registered controller that shares the same base
name.
get(): If the user specifies a browser we don't know about, use
_synthesize() to attempt to create a usable controller.
Some small adjustments were needed in some of the browser classes to
support this.
Jeremy Hylton [Thu, 12 Apr 2001 21:04:43 +0000 (21:04 +0000)]
Use new _implicitNameOp() to generate name op code for list comprehensions.
Always emit a SET_LINENO 0 at the beginning of the module. The
builtin compiler does this, and it's much easier to compare bytecode
generated by the two compilers if they both do.
Move the SET_LINENO inside the FOR_LOOP block for list
comprehensions. Also for compat. with builtin compiler.
Fred Drake [Thu, 12 Apr 2001 20:26:49 +0000 (20:26 +0000)]
Added warning that FancyURLopener prompts the user on the terminal when
basic authentication is needed.
Added documentation for FancyURLopener.prompt_user_passwd(), explaining
that subclasses should provide more appropriate behavior for the hosting
environment.
Jeremy Hylton [Thu, 12 Apr 2001 20:21:39 +0000 (20:21 +0000)]
pyassem.py:
Fix annoying bugs in flow graph layout code. In some cases the
implicit control transfers weren't honored. In other cases,
JUMP_FORWARD instructions jumped backwards.
Remove unused arg from nextBlock().
pycodegen.py
Add optional force kwarg to set_lineno() that will emit a
SET_LINENO even if it is the same as the previous lineno.
Use explicit LOAD_FAST and STORE_FAST to access list comp implicit
variables. (The symbol table doesn't know about them.)
Tim Peters [Thu, 12 Apr 2001 18:38:48 +0000 (18:38 +0000)]
Bug 415514 reported that e.g.
"%#x" % 0
blew up, at heart because C sprintf supplies a base marker if and only if
the value is not 0. I then fixed that, by tolerating C's inconsistency
when it does %#x, and taking away that *Python* produced 0x0 when
formatting 0L (the "long" flavor of 0) under %#x itself. But after talking
with Guido, we agreed it would be better to supply 0x for the short int
case too, despite that it's inconsistent with C, because C is inconsistent
with itself and with Python's hex(0) (plus, while "%#x" % 0 didn't work
before, "%#x" % 0L *did*, and returned "0x0"). Similarly for %#X conversion.
Fred Drake [Thu, 12 Apr 2001 16:47:17 +0000 (16:47 +0000)]
Convert several \seetext references to \seerfc and \seetitle versions.
These format somewhat better and include more semantic information in the
source.
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.