# 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.

## Authors

- 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.

  `__init__`()
  `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.

    Parameters: | 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.
    Returns: | The name of the cached code (as a string). Pass this as the filename argument to compilation, so that tracebacks are correctly hooked up.

  `compiler_flags`

    Flags currently active in the compilation process.

  `reset_compiler_flags`()

    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.

`IPython.core.compilerop.``check_linecache_ipython`(*args)

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