==================================================== 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()