Slide 21
Slide 21 text
Behind the Scenes
def compile(self, viewcode_str, filename):
viewcode = compile(viewcode_str, filename, 'exec')
viewglobals = {}
for stmt in compiler.parse(viewcode_str).node:
# if ...
elif isinstance(stmt, From):
fromlist = [x[0] for x in stmt.names]
mod = __import__(stmt.modname, {}, {}, fromlist)
for name, asname in stmt.names:
if name == '*':
for asname in getattr(mod, '__all__', dir(mod)):
viewglobals[asname] = getattr(mod, asname)
else:
if asname is None:
asname = name
viewglobals[asname] = getattr(mod, name)
return viewcode, viewglobals