Commit Graph

16260 Commits

Author SHA1 Message Date
Jeremy Hylton 4588c78faf PEP 227 implementation
New tests cases for nested scopes.
2001-01-25 20:11:23 +00:00
Jeremy Hylton 5e2d0764cd In subst_vars(), change the name of the argument from str to s to
prevent binding for str from masking use of builtin str in nested
function.

(This is the only case I found in the standard library where a local
shadows a global or builtin.  There may be others, but the regression
test doesn't catch them.)
2001-01-25 20:10:32 +00:00
Jeremy Hylton a39414b15c PEP 227 implementation
Track changes to new opcodes.  Add hasfree list that applies to all
ops that use the closure.
2001-01-25 20:08:47 +00:00
Jeremy Hylton 903f654ac9 PEP 227 implementation
Track changes to PyFrame_New() and PyFuntion_New().
2001-01-25 20:07:56 +00:00
Neil Schemenauer f65e500594 Make module objects from Setup depend on Python.h headers. 2001-01-25 20:07:50 +00:00
Jeremy Hylton 64949cb753 PEP 227 implementation
The majority of the changes are in the compiler.  The mainloop changes
primarily to implement the new opcodes and to pass a function's
closure to eval_code2().  Frames and functions got new slots to hold
the closure.

Include/compile.h
    Add co_freevars and co_cellvars slots to code objects.
    Update PyCode_New() to take freevars and cellvars as arguments
Include/funcobject.h
    Add func_closure slot to function objects.
    Add GetClosure()/SetClosure() functions (and corresponding
    macros) for getting at the closure.
Include/frameobject.h
    PyFrame_New() now takes a closure.
Include/opcode.h
    Add four new opcodes: MAKE_CLOSURE, LOAD_CLOSURE, LOAD_DEREF,
    STORE_DEREF.
    Remove comment about old requirement for opcodes to fit in 7
    bits.
compile.c
    Implement changes to code objects for co_freevars and co_cellvars.

    Modify symbol table to use st_cur_name (string object for the name
    of the current scope) and st_cur_children (list of nested blocks).
    Also define st_nested, which might more properly be called
    st_cur_nested.  Add several DEF_XXX flags to track def-use
    information for free variables.

    New or modified functions of note:
    com_make_closure(struct compiling *, PyCodeObject *)
        Emit LOAD_CLOSURE opcodes as needed to pass cells for free
        variables into nested scope.
    com_addop_varname(struct compiling *, int, char *)
        Emits opcodes for LOAD_DEREF and STORE_DEREF.
    get_ref_type(struct compiling *, char *name)
        Return NAME_CLOSURE if ref type is FREE or CELL
    symtable_load_symbols(struct compiling *)
        Decides what variables are cell or free based on def-use info.
        Can now raise SyntaxError if nested scopes are mixed with
        exec or from blah import *.
    make_scope_info(PyObject *, PyObject *, int, int)
        Helper functions for symtable scope stack.
    symtable_update_free_vars(struct symtable *)
        After a code block has been analyzed, it must check each of
        its children for free variables that are not defined in the
        block.  If a variable is free in a child and not defined in
        the parent, then it is defined by block the enclosing the
        current one or it is a global.  This does the right logic.
    symtable_add_use() is now a macro for symtable_add_def()
    symtable_assign(struct symtable *, node *)
        Use goto instead of for (;;)

    Fixed bug in symtable where name of keyword argument in function
    call was treated as assignment in the scope of the call site. Ex:
        def f():
            g(a=2) # a was considered a local of f

ceval.c
    eval_code2() now take one more argument, a closure.
    Implement LOAD_CLOSURE, LOAD_DEREF, STORE_DEREF, MAKE_CLOSURE>

    Also: When name error occurs for global variable, report that the
    name was global in the error mesage.

Objects/frameobject.c
    Initialize f_closure to be a tuple containing space for cellvars
    and freevars.  f_closure is NULL if neither are present.
Objects/funcobject.c
    Add support for func_closure.
Python/import.c
    Change the magic number.
Python/marshal.c
    Track changes to code objects.
2001-01-25 20:06:59 +00:00
Jeremy Hylton fbd849f201 PEP 227 implementation
A cell contains a reference to a single PyObject.  It could be
implemented as a mutable, one-element sequence, but the separate type
has less overhead.
2001-01-25 20:04:14 +00:00
Jack Jansen c34a5ade0a ucnhash module has gone, xreadlines module added. 2001-01-25 18:31:16 +00:00
Fred Drake 8863460490 Add bzip2 archives back to the set of generated archives; we had way too
many reasonable requests to keep them around.

Bump version number.
2001-01-25 17:32:51 +00:00
Fred Drake 29052482d1 Removed references to Python 1.5.3; that was a "tentative" number I used
in the docs to indicate the next version before we decided on 1.6.

Adjusted winsound.Beep() description slightly as well.
2001-01-25 17:29:18 +00:00
Fred Drake cf069da57d Update link to LaTeX2HTML web site. 2001-01-25 17:25:28 +00:00
Jeremy Hylton 92e9f29aec add extra tests to verify that co_varnames is being set up properly
also normalize checks for syntax errors and delete commented out
definition of verify.
2001-01-25 17:03:37 +00:00
Jeremy Hylton a6ebc4841d Fix bug reported by Ka-Ping Yee: The compiler botched parsing function
parameters that contained both anonymous tuples and *arg or **arg. Ex:
def f(a, (b, c), *d): pass

Fix the symtable_params() to generate names in the right order for
co_varnames slot of code object.  Consider *arg and **arg before the
"complex" names introduced by anonymous tuples.
2001-01-25 17:01:49 +00:00
Jack Jansen 41eb3c7dc5 ucnhash module has gone. 2001-01-25 16:28:34 +00:00
Jack Jansen 4ff2fe7ee1 ucnhash module has gone, xreadlines module added. 2001-01-25 16:28:00 +00:00
Skip Montanaro 03d9014992 added a few more __all__ lists
test___all__.py: fail silently in check_all if the module can't be imported
2001-01-25 15:29:22 +00:00
Skip Montanaro 438bb94789 fail more completely by deleting dbhash from sys.modules if bsddb can't be
loaded - prevents second import later from succeeding spuriously - mostly of
use in regression tests where the module might get imported more than once
2001-01-25 13:47:00 +00:00
Sjoerd Mullender 82e00d6350 Let's keep things portable to non GCC compilers, please.
You can only use mult-line strings in C if each line ends in \.
2001-01-25 10:10:39 +00:00
Tim Peters 517ce23183 Clarify winsound.beep docs, in response to c.l.py beep brouhahalet. 2001-01-25 09:33:48 +00:00
Tim Peters d52269bfd0 Fix bugs introduced by rewrite (in particular, time-based initialization
got broken).  Also added new method .jumpahead(N).  This finally gives us
a semi-decent answer to how Python's RNGs can be used safely and efficiently
in multithreaded programs (although it requires the user to use the new
machinery!).
2001-01-25 06:23:18 +00:00
Tim Peters d7b5e88e8e Reworked random.py so that it no longer depends on, and offers all the
functionality of, whrandom.py.  Also closes all the "XXX" todos in
random.py.  New frequently-requested functions/methods getstate() and
setstate().  All exported functions are now bound methods of a hidden
instance.  Killed all unintended exports.  Updated the docs.
FRED:  The more I fiddle the docs, the less I understand the exact
intended use of the \var, \code, \method tags.  Please review critically.
GUIDO:  See email.  I updated NEWS as if whrandom were deprecated; I
think it should be.
2001-01-25 03:36:26 +00:00
Barry Warsaw 83125775e0 A \begin{funcdesc} was closed with an \end{methoddesc}. 2001-01-25 00:39:16 +00:00
Barry Warsaw 21f37e1b88 Fixed a bug where \& was needed. 2001-01-25 00:38:15 +00:00
Barry Warsaw 8ee1a4bdeb Provide a much better (and complete!) description of the lockf()
function, based on an eyeballing of the code.
2001-01-25 00:36:54 +00:00
Barry Warsaw bd3dc1f0cb lockf_doc: a much better description of the lockf() function, based on
an eyeballing of the code.
2001-01-25 00:20:13 +00:00
Tim Peters 902446a28d Supply long-missing docs for random.seed(). Extensive rewrite of module
intro docs.
*************** Fred:  check my LaTeX!  Also, the docs for whrandom should
*************** be moved into Obsolete Modules.
2001-01-24 23:06:53 +00:00
Guido van Rossum d1f06b9b2f Check the Py_TPFLAGS_HAVE_RICHCOMPARE flag before using the
tp_richcompare field!  (Hopefully this will make Python 2.1 binary
compatible with certain Zope extensions. :-)
2001-01-24 22:14:43 +00:00
Guido van Rossum bacca54b59 Add a flag to indicate the presence of the tp_richcompare field, and
add it to the default flags.
2001-01-24 22:13:48 +00:00
Guido van Rossum 42756df91c Fix the test output, now that escapes in repr() of string and Unicode
are different (Ping didn't test this).
2001-01-24 21:49:57 +00:00
Guido van Rossum 0fc8b74fc5 Fix the test output, now that escapes in repr() of string and Unicode
are different (Ping couldn't test this).
2001-01-24 21:46:18 +00:00
Guido van Rossum 05bbb9a8fb The array type was missing the Py_TPFLAGS_DEFAULT initializer for the
tp_flags.  This will become important when I introduce
Py_TPFLAGS_HAVE_RICHCOMPARE (as I should have!).
2001-01-24 21:44:21 +00:00
Andrew M. Kuchling d305f515f9 New asynchat.py from Sam Rushing: this foregoes using the regex module
to find the prefix of strings, thus removing a warning, and simply
   uses straightforward string slicing.
2001-01-24 21:10:55 +00:00
Fred Drake 9368a12011 Fix an obvious usage nit I should have caught myself on the previous
change to this file.  Thanks, /F!
2001-01-24 18:19:40 +00:00
Neil Schemenauer 3f52da5b02 Update the build instructions for flat makefile. 2001-01-24 17:49:59 +00:00
Neil Schemenauer d32c2495bd The usual. 2001-01-24 17:25:28 +00:00
Neil Schemenauer 55f0cf3379 - build now happens in toplevel directory, add subdir paths to filenames
- change EXE to EXTEXT, there is an autoconf macro for it
- use PROG_INSTALL macro rather than always using install-sh
- add option to disable signal module (simplifies the makefile)
- create subdirs for object files (when building out of src dir)
- don't generate subdir makefiles
- generate "boot" makefile
2001-01-24 17:24:33 +00:00
Ka-Ping Yee fa004ad36c Show '\011', '\012', and '\015' as '\t', '\n', '\r' in strings.
Switch from octal escapes to hex escapes for other nonprintable characters.
2001-01-24 17:19:08 +00:00
Neil Schemenauer 726b78ecb8 Patch from Andrew to properly set module source directory. 2001-01-24 17:18:21 +00:00
Neil Schemenauer 84d14baf94 There is no more Modules/Makefile, use toplevel Makefile. 2001-01-24 17:17:20 +00:00
Neil Schemenauer d32a337cf3 Changes for flat makefile. Building of modules happens from toplevel
directory.  Modify meaning of -s option to specify the Modules directory.
Add -l option to specify library source directory when building extension
modules.  Perhaps these names should be switched to avoid breaking old
code.  Add -c compiler option to when emitting rules to build object files.
2001-01-24 17:16:22 +00:00
Neil Schemenauer 6cf0702a79 Build now happens in toplevel directory, not Modules. Don't monkey with
VPATH.
2001-01-24 17:13:11 +00:00
Neil Schemenauer 85515ad979 Flat makefile based on toplevel Makefile.in and makefiles in build
subdirectories.  Those other makefiles will go away eventually.
2001-01-24 17:11:43 +00:00
Fred Drake 0bbaa515a1 Remove evil "sec:" prefix from some \label markups; this is bad for
filenames on Windows (& Mac?) platforms.
2001-01-24 16:39:35 +00:00
Fred Drake b1b6a11b28 AttributeList --> NamedNodeMap
Since there is no such thing as an AttributeList, don't say "attributes"
is one.
2001-01-24 16:17:15 +00:00
Jack Jansen c4abd00457 Got rid of extraneous Modues:TE in the search path. 2001-01-24 16:09:59 +00:00
Jack Jansen 48d11c133a Waste and scrap now sort-of work for Carbon. Scrap is mostly empty, and waste uses a mixture between Waste 2.0 and Waste 1.3. 2001-01-24 16:07:31 +00:00
Jack Jansen 4a4adf4293 Recognize {compiler} and {project} prefixes to pathnames and output the correct XML. 2001-01-24 16:04:50 +00:00
Jack Jansen 7b3cc1f9c3 Regenerated (and manually massaged for PutScrap) so it can be byuilt both for Carbon and Classic. The Carbon module is rather empty, though, for now. 2001-01-24 16:04:01 +00:00
Jack Jansen 5396feb3bb Quick (manual) fix to make the module compile with Waste 2.0. TBD later. 2001-01-24 16:03:05 +00:00
Jack Jansen 8c98266a7d Waste and scrap now sort-of work for Carbon. Scrap is mostly empty, and waste uses a mixture between Waste 2.0 and Waste 1.3. 2001-01-24 16:02:07 +00:00