This documentation covers IPython versions 6.0 and higher. Beginning with version 6.0, IPython stopped supporting compatibility with Python versions lower than 3.3 including all versions of Python 2.7.

If you are looking for an IPython version compatible with Python 2.7, please use the IPython 5.x LTS release and refer to its documentation (LTS is the long term support release).

Module: core.compilerop

Compiler tools with improved interactive support.

Provides compilation machinery similar to codeop, but with caching support so we can provide interactive tracebacks.


  • Robert Kern
  • Fernando Perez
  • Thomas Kluyver

1 Class

class IPython.core.compilerop.CachingCompiler

Bases: codeop.Compile

A compiler that caches code compiled from interactive statements.


Initialize self. See help(type(self)) for accurate signature.

ast_parse(source, filename='<unknown>', symbol='exec')

Parse code to an AST with the current compiler flags active.

Arguments are exactly the same as ast.parse (in the standard library), and are passed to the built-in compile function.

cache(code, number=0)

Make a name for a block of code, and cache the code.

  • code (str) – The Python source code to cache.
  • number (int) – A number which forms part of the code’s name. Used for the execution counter.

  • The name of the cached code (as a string). Pass this as the filename
  • argument to compilation, so that tracebacks are correctly hooked up.


Flags currently active in the compilation process.


Reset compiler flags to default state.

2 Functions

IPython.core.compilerop.code_name(code, number=0)

Compute a (probably) unique name for code for caching.

This now expects code to be unicode.


Call linecache.checkcache() safely protecting our cached values.