Warning
This documentation is for an old version of IPython. You can find docs for newer versions here.
Analysis of text input into executable blocks.
The main class in this module, InputSplitter, is designed to break input from either interactive, line-by-line environments or block-based ones, into standalone blocks that can be executed by Python as ‘single’ statements (thus triggering sys.displayhook).
A companion, IPythonInputSplitter, provides the same functionality but with full support for the extended IPython syntax (magics, system calls, etc).
For more details, see the class docstring below.
One of the main jobs of the code in this file is to apply all syntax transformations that make up ‘the IPython language’, i.e. magics, shell escapes, etc. All transformations should be implemented as fully stateless entities, that simply take one line as their input and return a line. Internally for implementation purposes they may be a normal function or a callable object, but the only input they receive will be a single line and they should only return a line, without holding any data-dependent state between calls.
As an example, the EscapedTransformer is a class so we can more clearly group together the functionality of dispatching to individual functions based on the starting escape character, but the only method for public use is its call method.
Bases: object
An object that can accumulate lines of Python source before execution.
- This object is designed to be fed python source line-by-line, using
- push(). It will return on each push whether the currently pushed code could be executed already. In addition, it provides a method called push_accepts_more() that can be used to query whether more input can be pushed into a single interactive block.
This is a simple example of how an interactive terminal-based client can use this tool:
isp = InputSplitter() while isp.push_accepts_more(): indent = ' '*isp.indent_spaces prompt = '>>> ' + indent line = indent + raw_input(prompt) isp.push(line) print 'Input source was:
‘, isp.source_reset(),
Create a new InputSplitter instance.
Push one or more lines of input.
This stores the given lines and returns a status code indicating whether the code forms a complete Python block or not.
Any exceptions generated in compilation are swallowed, but if an exception was produced, the method returns True.
Parameters: | lines : string
|
---|---|
Returns: | is_complete : boolean
|
Return whether a block of interactive input can accept more input.
This method is meant to be used by line-oriented frontends, who need to guess whether a block is complete or not based solely on prior and current input lines. The InputSplitter considers it has a complete interactive block and will not accept more input when either:
If the current input produces a syntax error, this method immediately returns False but does not raise the syntax error exception, as typically clients will want to send invalid syntax to an execution backend which might convert the invalid syntax into valid Python via one of the dynamic IPython mechanisms.
Reset the input buffer and associated state.
Return the input source and perform a full reset.
Bases: IPython.core.inputsplitter.InputSplitter
An input splitter that recognizes all of IPython’s special syntax.
Push one or more lines of IPython input.
This stores the given lines and returns a status code indicating whether the code forms a complete Python block or not, after processing all input lines for special IPython syntax.
Any exceptions generated in compilation are swallowed, but if an exception was produced, the method returns True.
Parameters: | lines : string
|
---|---|
Returns: | is_complete : boolean
plus prior inputs) forms a complete Python execution block. Note that : this value is also stored as a private attribute (_is_complete), so it : can be queried at any time. : |
Reset the input buffer and associated state.
Return input and raw source and perform a full reset.
Process and translate a cell of input.
Quick access to all transformers.
Transformers, excluding logical line transformers if we’re in a Python line.
Return the number of initial spaces in a string.
Note that tabs are counted as a single space. For now, we do not support mixing of tabs and spaces in the user’s input.
Parameters: | s : string |
---|---|
Returns: | n : int |
Determine if the input source ends in a blank.
A blank is either a newline or a line consisting of whitespace.
Parameters: | src : string
|
---|
Determine if the input source ends in two blanks.
A blank is either a newline or a line consisting of whitespace.
Parameters: | src : string
|
---|
Remove all comments from input source.
Note: comments are NOT recognized inside of strings!
Parameters: | src : string
|
---|---|
Returns: | String with all Python comments removed. : |
Return the default standard input encoding.
If sys.stdin has no encoding, ‘ascii’ is returned.