IPython Backend for the Sage Rich Output System#

This module defines the IPython backends for sage.repl.rich_output.

class sage.repl.rich_output.backend_ipython.BackendIPython#

Bases: BackendBase

Common base for the IPython UIs

EXAMPLES:

sage: from sage.repl.rich_output.backend_ipython import BackendIPython
sage: BackendIPython()._repr_()
Traceback (most recent call last):
...
NotImplementedError: derived classes must implement this method
display_immediately(plain_text, rich_output)#

Show output immediately.

This method is similar to the rich output displayhook(), except that it can be invoked at any time.

INPUT:

Same as displayhook().

OUTPUT:

This method does not return anything.

EXAMPLES:

sage: from sage.repl.rich_output.output_basic import OutputPlainText
sage: plain_text = OutputPlainText.example()
sage: from sage.repl.rich_output.backend_ipython import BackendIPythonNotebook
sage: backend = BackendIPythonNotebook()
sage: _ = backend.display_immediately(plain_text, plain_text)
Example plain text output
install(**kwds)#

Switch the Sage rich output to the IPython backend

INPUT:

  • shell – keyword argument. The IPython shell.

No tests since switching away from the doctest rich output backend will break the doctests.

EXAMPLES:

sage: from sage.repl.interpreter import get_test_shell
sage: from sage.repl.rich_output.backend_ipython import BackendIPython
sage: backend = BackendIPython()
sage: shell = get_test_shell()
sage: backend.install(shell=shell)
sage: shell.run_cell('1+1')
2
set_underscore_variable(obj)#

Set the _ builtin variable.

Since IPython handles the history itself, this does nothing.

INPUT:

  • obj – anything.

EXAMPLES:

sage: from sage.repl.interpreter import get_test_shell
sage: from sage.repl.rich_output.backend_ipython import BackendIPython
sage: backend = BackendIPython()
sage: backend.set_underscore_variable(123)
sage: _
0
class sage.repl.rich_output.backend_ipython.BackendIPythonCommandline#

Bases: BackendIPython

Backend for the IPython Command Line

EXAMPLES:

sage: from sage.repl.rich_output.backend_ipython import BackendIPythonCommandline
sage: BackendIPythonCommandline()
IPython command line
default_preferences()#

Return the backend’s display preferences

The default for the commandline is to not plot graphs since the launching of an external viewer is considered too disruptive.

OUTPUT:

Instance of DisplayPreferences.

EXAMPLES:

sage: from sage.repl.rich_output.backend_ipython import BackendIPythonCommandline
sage: backend = BackendIPythonCommandline()
sage: backend.default_preferences()
Display preferences:
* align_latex is not specified
* graphics is not specified
* supplemental_plot = never
* text is not specified
display_immediately(plain_text, rich_output)#

Show output without going back to the command line prompt.

This method is similar to the rich output displayhook(), except that it can be invoked at any time. On the Sage command line it launches viewers just like displayhook().

INPUT:

Same as displayhook().

OUTPUT:

This method does not return anything.

EXAMPLES:

sage: from sage.repl.rich_output.output_basic import OutputPlainText
sage: plain_text = OutputPlainText.example()
sage: from sage.repl.rich_output.backend_ipython import BackendIPythonCommandline
sage: backend = BackendIPythonCommandline()
sage: backend.display_immediately(plain_text, plain_text)
Example plain text output
displayhook(plain_text, rich_output)#

Backend implementation of the displayhook

INPUT:

  • plain_text – instance of OutputPlainText. The plain text version of the output.

  • rich_output – instance of an output container class (subclass of OutputBase). Guaranteed to be one of the output containers returned from supported_output(), possibly the same as plain_text.

OUTPUT:

The IPython commandline display hook returns the IPython display data, a pair of dictionaries. The first dictionary contains mime types as keys and the respective output as value. The second dictionary is metadata.

EXAMPLES:

sage: from sage.repl.rich_output.output_basic import OutputPlainText
sage: plain_text = OutputPlainText.example()
sage: from sage.repl.rich_output.backend_ipython import BackendIPythonCommandline
sage: backend = BackendIPythonCommandline()
sage: backend.displayhook(plain_text, plain_text)
({'text/plain': 'Example plain text output'}, {})
is_in_terminal()#

Test whether the UI is meant to run in a terminal

See sage.repl.rich_output.display_manager.DisplayManager.is_in_terminal() for details.

OUTPUT:

True for the IPython commandline.

EXAMPLES:

sage: from sage.repl.rich_output.backend_ipython import BackendIPythonCommandline
sage: backend = BackendIPythonCommandline()
sage: backend.is_in_terminal()
True
launch_jmol(output_jmol, plain_text)#

Launch the stand-alone jmol viewer

INPUT:

  • output_jmolOutputSceneJmol. The scene to launch Jmol with.

  • plain_text – string. The plain text representation.

OUTPUT:

String. Human-readable message indicating that the viewer was launched.

EXAMPLES:

sage: from sage.repl.rich_output.backend_ipython import BackendIPythonCommandline
sage: backend = BackendIPythonCommandline()
sage: from sage.repl.rich_output.output_graphics3d import OutputSceneJmol
sage: backend.launch_jmol(OutputSceneJmol.example(), 'Graphics3d object')   # needs sage.plot
'Launched jmol viewer for Graphics3d object'
launch_viewer(image_file, plain_text)#

Launch external viewer for the graphics file.

INPUT:

  • image_file – string. File name of the image file.

  • plain_text – string. The plain text representation of the image file.

OUTPUT:

String. Human-readable message indicating whether the viewer was launched successfully.

EXAMPLES:

sage: from sage.repl.rich_output.backend_ipython import BackendIPythonCommandline
sage: backend = BackendIPythonCommandline()
sage: backend.launch_viewer('/path/to/foo.bar', 'Graphics object')
'Launched bar viewer for Graphics object'
supported_output()#

Return the outputs that are supported by the IPython commandline backend.

OUTPUT:

Iterable of output container classes, that is, subclass of OutputBase). The order is ignored.

EXAMPLES:

sage: from sage.repl.rich_output.backend_ipython import BackendIPythonCommandline
sage: backend = BackendIPythonCommandline()
sage: supp = backend.supported_output();  supp     # random output
set([<class 'sage.repl.rich_output.output_graphics.OutputImageGif'>,
     ...,
     <class 'sage.repl.rich_output.output_graphics.OutputImagePng'>])
sage: from sage.repl.rich_output.output_basic import OutputLatex
sage: OutputLatex in supp
True
threejs_offline_scripts()#

Three.js script for the IPython command line

OUTPUT:

String containing script tag

EXAMPLES:

sage: # needs threejs
sage: from sage.repl.rich_output.backend_ipython import BackendIPythonCommandline
sage: backend = BackendIPythonCommandline()
sage: backend.threejs_offline_scripts()
'...<script ...</script>...'
class sage.repl.rich_output.backend_ipython.BackendIPythonNotebook#

Bases: BackendIPython

Backend for the IPython Notebook

EXAMPLES:

sage: from sage.repl.rich_output.backend_ipython import BackendIPythonNotebook
sage: BackendIPythonNotebook()
IPython notebook
displayhook(plain_text, rich_output)#

Backend implementation of the displayhook

INPUT:

  • plain_text – instance of OutputPlainText. The plain text version of the output.

  • rich_output – instance of an output container class (subclass of OutputBase). Guaranteed to be one of the output containers returned from supported_output(), possibly the same as plain_text.

OUTPUT:

The IPython notebook display hook returns the IPython display data, a pair of dictionaries. The first dictionary contains mime types as keys and the respective output as value. The second dictionary is metadata.

EXAMPLES:

sage: from sage.repl.rich_output.output_basic import OutputPlainText
sage: plain_text = OutputPlainText.example()
sage: from sage.repl.rich_output.backend_ipython import BackendIPythonNotebook
sage: backend = BackendIPythonNotebook()
sage: backend.displayhook(plain_text, plain_text)
({'text/plain': 'Example plain text output'}, {})
supported_output()#

Return the outputs that are supported by the IPython notebook backend.

OUTPUT:

Iterable of output container classes, that is, subclass of OutputBase). The order is ignored.

EXAMPLES:

sage: from sage.repl.rich_output.backend_ipython import BackendIPythonNotebook
sage: backend = BackendIPythonNotebook()
sage: supp = backend.supported_output();  supp     # random output
set([<class 'sage.repl.rich_output.output_graphics.OutputPlainText'>,
     ...,
     <class 'sage.repl.rich_output.output_graphics.OutputImagePdf'>])
sage: from sage.repl.rich_output.output_basic import OutputLatex
sage: OutputLatex in supp
True
sage: from sage.repl.rich_output.output_graphics import OutputImageGif
sage: OutputImageGif in supp
True
threejs_offline_scripts()#

Three.js script for the IPython notebook

OUTPUT:

String containing script tag

EXAMPLES:

sage: from sage.repl.rich_output.backend_ipython import BackendIPythonNotebook
sage: backend = BackendIPythonNotebook()
sage: backend.threejs_offline_scripts()                                     # needs sage.plot
'...<script src="/nbextensions/threejs-sage/r.../three.min.js...<\/script>...'