##// END OF EJS Templates
Moved system info into its own utility, so we can use in in test suite too.
Moved system info into its own utility, so we can use in in test suite too.

File last commit:

r2288:3832d344
r2495:38afbf73
Show More
ipgraph.txt
59 lines | 1.7 KiB | text/plain | TextLexer
====================================================
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()