[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