ipgraph.txt
61 lines
| 1.7 KiB
| text/plain
|
TextLexer
Brian Granger
|
r2288 | ==================================================== | ||
Notes on code execution in :class:`InteractiveShell` | ||||
==================================================== | ||||
Overview | ||||
======== | ||||
This section contains information and notes about the code execution | ||||
system in :class:`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 :class:`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() | ||||
Brian Granger
|
r2524 | |||