Important

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.

Authors

  • Robert Kern

  • Fernando Perez

  • Thomas Kluyver

1 Class

class IPython.core.compilerop.CachingCompiler

Bases: 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(transformed_code, number=0, raw_code=None)

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

Parameters:
  • transformed_code (str) – The executable Python source code to cache and compile.

  • number (int) – A number which forms part of the code’s name. Used for the execution counter.

  • raw_code (str) – The raw code before transformation, if None, set to transformed_code.

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.

property compiler_flags

Flags currently active in the compilation process.

format_code_name(name)

Return a user-friendly label and name for a code block.

Parameters:

name (str) – The name for the code block returned from get_code_name

Return type:

A (label, name) pair that can be used in tracebacks, or None if the default formatting should be used.

get_code_name(raw_code, transformed_code, number)

Compute filename given the code, and the cell number.

Parameters:
  • raw_code (str) – The raw cell code.

  • transformed_code (str) – The executable Python source code to cache and compile.

  • number (int) – A number which forms part of the code’s name. Used for the execution counter.

Return type:

The computed filename.

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)

Deprecated since IPython 8.6. Call linecache.checkcache() directly.

It was already not necessary to call this function directly. If no CachingCompiler had been created, this function would fail badly. If an instance had been created, this function would’ve been monkeypatched into place.

As of IPython 8.6, the monkeypatching has gone away entirely. But there were still internal callers of this function, so maybe external callers also existed?