[Python-checkins] CVS: python/dist/src/Modules symtablemodule.c,1.1,1.2

Jeremy Hylton jhylton@users.sourceforge.net
Fri, 09 Feb 2001 14:22:20 -0800


Update of /cvsroot/python/python/dist/src/Modules
In directory usw-pr-cvs1:/tmp/cvs-serv13672/Modules

Modified Files:
	symtablemodule.c 
Log Message:
Relax the rules for using 'from ... import *' and exec in the presence
of nested functions.  Either is allowed in a function if it contains
no defs or lambdas or the defs and lambdas it contains have no free
variables.  If a function is itself nested and has free variables,
either is illegal.

Revise the symtable to use a PySymtableEntryObject, which holds all
the revelent information for a scope, rather than using a bunch of
st_cur_XXX pointers in the symtable struct.  The changes simplify the
internal management of the current symtable scope and of the stack.

Added new C source file: Python/symtable.c.  (Does the Windows build
process need to be updated?) 

As part of these changes, the initial _symtable module interface
introduced in 2.1a2 is replaced.  A dictionary of
PySymtableEntryObjects are returned.



Index: symtablemodule.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/symtablemodule.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** symtablemodule.c	2001/02/02 18:24:25	1.1
--- symtablemodule.c	2001/02/09 22:22:18	1.2
***************
*** 32,36 ****
  	if (st == NULL)
  		return NULL;
! 	t = Py_BuildValue("OO", st->st_symbols, st->st_scopes);
  	PySymtable_Free(st);
  	return t;
--- 32,36 ----
  	if (st == NULL)
  		return NULL;
! 	t = Py_BuildValue("O", st->st_symbols);
  	PySymtable_Free(st);
  	return t;