IPython Documentation

Table Of Contents

Previous topic

The magic commands subsystem

Next topic

IPython Qt interface

This Page

Notes on code execution in InteractiveShell

Overview

This section contains information and notes about the code execution system in InteractiveShell. This system needs to be refactored and we are keeping notes about this process here.

Current design

Here is a script that shows the relationships between the various methods in InteractiveShell that manage code execution:

import networkx as nx
import matplotlib.pyplot as plt

exec_init_cmd = 'exec_init_cmd'
interact = 'interact'
runlines = 'runlines'
runsource = 'runsource'
runcode = 'runcode'
push_line = 'push_line'
mainloop = 'mainloop'
embed_mainloop = 'embed_mainloop'
ri = 'raw_input'
prefilter = 'prefilter'

g = nx.DiGraph()

g.add_node(exec_init_cmd)
g.add_node(interact)
g.add_node(runlines)
g.add_node(runsource)
g.add_node(push_line)
g.add_node(mainloop)
g.add_node(embed_mainloop)
g.add_node(ri)
g.add_node(prefilter)

g.add_edge(exec_init_cmd, push_line)
g.add_edge(exec_init_cmd, prefilter)
g.add_edge(mainloop, exec_init_cmd)
g.add_edge(mainloop, interact)
g.add_edge(embed_mainloop, interact)
g.add_edge(interact, ri)
g.add_edge(interact, push_line)
g.add_edge(push_line, runsource)
g.add_edge(runlines, push_line)
g.add_edge(runlines, prefilter)
g.add_edge(runsource, runcode)
g.add_edge(ri, prefilter)

nx.draw_spectral(g, node_size=100, alpha=0.6, node_color='r',
                 font_size=10, node_shape='o')
plt.show()