Guido van Rossum [Fri, 23 Mar 2001 04:01:07 +0000 (04:01 +0000)]
Fix memory leak with SyntaxError. (The DECREF was originally hidden
inside a piece of code that was deemed reduntant; the DECREF was
unfortunately *not* redundant!)
Ka-Ping Yee [Fri, 23 Mar 2001 02:46:52 +0000 (02:46 +0000)]
Add sys.excepthook.
Update docstring and library reference section on 'sys' module.
New API PyErr_Display, just for displaying errors, called by excepthook.
Uncaught exceptions now call sys.excepthook; if that fails, we fall back
to calling PyErr_Display directly.
Also comes with sys.__excepthook__ and sys.__displayhook__.
Ka-Ping Yee [Fri, 23 Mar 2001 00:12:53 +0000 (00:12 +0000)]
Fixes for various issues reported and discovered since Python 9:
Factor description of import errors into DocImportError.__str__.
Add "docother" and "fail" methods to Doc class.
Factor formatting of constants into "docother".
Increase max string repr limit to 100 characters.
Factor page generation into HTMLDoc.page.
Handle aliasing of names (objects appearing under an attribute
name different from their intrinsic __name__) by passing the
attribute name into each doc* method.
Handle methods at top level of modules (e.g. in random).
Try to do reloading efficiently.
Important fixes still to do:
Module reloading is broken by the unfortunate property that
failed imports leave an incomplete module in sys. Still
need to think of a good solution.
Can't document modules in the current directory, due to the
other unfortunate property that sys.path gets '.' when
you run 'python' but it gets the script directory when
you run a script. Need to ponder to find a solution.
The synopsis() routine does not work on .so modules.
Aliases cause duplicate copies of documentation to appear.
This is easy to fix, just more work.
Classes appear as their intrinsic name, not their attribute name,
in the class hierarchy. This should be fixed.
Inherited methods should be listed in class descriptions.
Guido van Rossum [Thu, 22 Mar 2001 21:59:20 +0000 (21:59 +0000)]
This is SF patch #405952, by Anthony Baxter:
cmd.py uses raw_input(); eats SIGCLD:
I discovered a rather nasty side effect of the standard cmd.py
library today. If it's sitting inside raw_input(), any SIGCLDs that
get sent to your application get silently eaten and ignored. I'm
assuming that this is something that readline is thoughtfully doing
for me.
This patch adds an instance attr that allows the user to select to
not use raw_input(), but instead use sys.stdin.readline()
[Changed slightly to catch EOFError only for raw_input().]
Fred Drake [Thu, 22 Mar 2001 18:26:47 +0000 (18:26 +0000)]
A small change to the C API for weakly-referencable types: Such types
must now initialize the extra field used by the weak-ref machinery to
NULL themselves, to avoid having to require PyObject_INIT() to check
if the type supports weak references and do it there. This causes less
work to be done for all objects (the type object does not need to be
consulted to check for the Py_TPFLAGS_HAVE_WEAKREFS bit).
Fred Drake [Thu, 22 Mar 2001 18:05:30 +0000 (18:05 +0000)]
Inform the cycle-detector that the a weakref object no longer needs to be
tracked as soon as it is clear; this can decrease the number of roots for
the cycle detector sooner rather than later in applications which hold on
to weak references beyond the time of the invalidation.
Fred Drake [Thu, 22 Mar 2001 17:52:17 +0000 (17:52 +0000)]
Make cPickle use the recently-added PyInstance_NewRaw() API to create
instance objects without calling the constructor. This is the same as
the new.instance() function.
Guido van Rossum [Thu, 22 Mar 2001 17:37:52 +0000 (17:37 +0000)]
Make this IDLE version 0.8. (We have to skip 0.7 because that was a
CNRI release in a corner of the basement of a government building on a
planet circling Aldebaran.)
Fred Drake [Thu, 22 Mar 2001 16:30:17 +0000 (16:30 +0000)]
Be more clear about the specific rules for supporting the cyclic GC in an
extension object. Also included an example showing exactly what needs to
be done and nothing else.
Thomas Wouters [Thu, 22 Mar 2001 14:50:24 +0000 (14:50 +0000)]
Allow the process of reading back what we wrote to a pty to transform
linefeeds into carriagereturn-linefeeds (which is apparently what IRIX
does.) Also add some comments, an extra test and reorganize it a bit.
Add 'platforms' and 'keywords' attributes to the DistributionMetadata class,
along with options to print them.
Add a finalize_options() method to Distribution to do final processing
on the platform and keyword attributes
Add DistributionMetadata.write_pkg_info() method to write a PKG-INFO file
into the release tree.
Jeremy Hylton [Thu, 22 Mar 2001 02:47:58 +0000 (02:47 +0000)]
Extend support for from __future__ import nested_scopes
If a module has a future statement enabling nested scopes, they are
also enable for the exec statement and the functions compile() and
execfile() if they occur in the module.
If Python is run with the -i option, which enters interactive mode
after executing a script, and the script it runs enables nested
scopes, they are also enabled in interactive mode.
XXX The use of -i with -c "from __future__ import nested_scopes" is
not supported. What's the point?
To support these changes, many function variants have been added to
pythonrun.c. All the variants names end with Flags and they take an
extra PyCompilerFlags * argument. It is possible that this complexity
will be eliminated in a future version of the interpreter in which
nested scopes are not optional.
Neil Schemenauer [Thu, 22 Mar 2001 00:32:32 +0000 (00:32 +0000)]
- Remove WITH makefile variable. Its not used for anything.
- Add CONFIG_ARGS variable and use it to re-run configure rather than
using config.status. This prevents an infinite loop if configure
dies while re-configuring.
Tim Peters [Wed, 21 Mar 2001 23:07:59 +0000 (23:07 +0000)]
Changed doctest to run tests in alphabetic order of name.
This makes verbose-mode output easier to dig thru, and removes an accidental
dependence on the order of dict.items() (made visible by recent changes to
dictobject.c).
Fred Drake [Wed, 21 Mar 2001 22:15:01 +0000 (22:15 +0000)]
Integrated an expanded version of some text from Neil Schemenauer about
supporting cyclic garbage collection. (This is not all of it, but I'm
taking a break!)
Tim Peters [Wed, 21 Mar 2001 19:23:56 +0000 (19:23 +0000)]
Make PyDict_Next safe to use for loops that merely modify the values
associated with existing dict keys.
This is a variant of part of Michael Hudson's patch #409864 "lazy fix for
Pings bizarre scoping crash".
Guido van Rossum [Wed, 21 Mar 2001 19:17:22 +0000 (19:17 +0000)]
Use PyObject_IsInstance() to check whether the first argument to an
unbound method is of the right type. Hopefully this solves SF patch
#409355 (Meta-class inheritance problem); I have no easy way to test.
Guido van Rossum [Wed, 21 Mar 2001 18:40:58 +0000 (18:40 +0000)]
Move the code implementing isinstance() and issubclass() to new C
APIs, PyObject_IsInstance() and PyObject_IsSubclass() -- both
returning an int, or -1 for errors.
Jeremy Hylton [Wed, 21 Mar 2001 16:43:47 +0000 (16:43 +0000)]
Fix PyFrame_FastToLocals() and counterpart to deal with cells and
frees. Note there doesn't seem to be any way to test LocalsToFast(),
because the instructions that trigger it are illegal in nested scopes
with free variables.
Fix allocation strategy for cells that are also formal parameters.
Instead of emitting LOAD_FAST / STORE_DEREF pairs for each parameter,
have the argument handling code in eval_code2() do the right thing.
A side-effect of this change is that cell variables that are also
arguments are listed at the front of co_cellvars in the order they
appear in the argument list.
Martin v. Löwis [Wed, 21 Mar 2001 07:44:53 +0000 (07:44 +0000)]
Remove Tix detection from Tkinter part; lib-tk/Tix attempts to load Tix
by requiring it. Also remove commentary from Setup.dist about commenting
in and out stuff.
Guido van Rossum [Tue, 20 Mar 2001 20:43:34 +0000 (20:43 +0000)]
Lawrence Hudson, SF #401702: Modify co_filename in frozen programs
This patch was developed primarily to reduce the size of the
frozen binary. It is particularly useful when freezing for 'small'
platforms, such as Palm OS, where you really want to save that
last miserable byte.
A limitation of this patch is that it does not provide any feedback
about the replacements being made. As the path matching
is case-sensitive this may lead to unexpected behaviour for DOS
and Windows people, eg
> freeze.py -r C:\Python\Lib\=py\ goats.py
should probably be:
> freeze.py -r c:\python\lib\=py\ goats.py
Guido van Rossum [Tue, 20 Mar 2001 12:41:34 +0000 (12:41 +0000)]
SF patch #408326 by Robin Thomas: slice objects comparable, not
hashable
This patch changes the behavior of slice objects in the following
manner:
- Slice objects are now comparable with other slice objects as though
they were logically tuples of (start,stop,step). The tuple is not
created in the comparison function, but the comparison behavior is
logically equivalent.
- Slice objects are not hashable. With the above change to being
comparable, slice objects now cannot be used as keys in dictionaries.
[I've edited the patch for style. Note that this fixes the problem
that dict[i:j] seemed to work but was meaningless. --GvR]
Jeremy Hylton [Tue, 20 Mar 2001 00:25:43 +0000 (00:25 +0000)]
Fixup handling of free variables in methods when the class scope also
has a binding for the name. The fix is in two places:
- in symtable_update_free_vars, ignore a global stmt in a class scope
- in symtable_load_symbols, add extra handling for names that are
defined at class scope and free in a method
Jeremy Hylton [Mon, 19 Mar 2001 20:42:11 +0000 (20:42 +0000)]
Add test for a list comprehension that is nested in the left-hand part
of another list comp. This caused crashes reported as SF bugs 409230
and 407800.
Note that the new tests are in a function so that the name lookup code
isn't affected by how many *other* list comprehensions are in the same
scope.
Tim Peters [Mon, 19 Mar 2001 19:19:45 +0000 (19:19 +0000)]
When building the installer, prompt for the location of the system directory
on the current machine. Wise doesn't seem to know this itself, and it
varies across Windows flavors.