### Navigation

- index
- modules |
- next |
- previous |
- home|
- search|
- documentation »
- IPython developer’s guide »

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

### Navigation

- index
- modules |
- next |
- previous |
- home|
- search|
- documentation »
- IPython developer’s guide »