[Python-Dev] Those import related syntax errors again...

Jeremy Hylton jeremy@alum.mit.edu
Wed, 21 Feb 2001 11:22:35 -0500 (EST)


I did a brief review of three Python projects to see how they use
import * and exec and to assess how much code will break in these
projects. 

Project    Python files   Lines of      import *   exec      illegal
                         Python code    in func   in func      exec
Python       1127          113443         4?       <57         0
Zope2         469           71370         0         15         1
PyXPCOM        26            2611         0          1         1
                  (excluding comment lines)

The numbers are a little rough for Python, because I think I've fixed
all the problems.  As I recall, there were four instances of import *
being using in a function.  I think two of those would still be
flagged as errors, while two would be allowed under the current rules
(only barred when the current func contains another that has free
variables). 

There is one illegal exec in Zope and one in PyXPCOM as Mark well
knows.  

That makes a total of 4 fixes in almost 200,000 lines of code.  These
fixes should be pretty easy.  The code won't compile until it's
fixed.  One could imagine many worse problems, like code that runs but
has a different meaning.  I should be able to fix the tracebacks so
they indicate the source of the problem more clearly.

I also realized that the exec rule is still too string.  If the exec
statement passes an explicit namespace -- "exec in foo" -- then there
shouldn't be any problem, because the executed code can't affect the
current namespace.  If this form is allowed, the exec errors in xpcom
and Zope disappear.

It would be instructive to hear if the data would look different if I
chose different projects.  Perhaps the particular examples I chose are
simply examples of excellent coding style by master programmers.

Jeremy