Interactive

Helper module for setting up interactive SymPy sessions.

Session

Tools for setting up interactive sessions.

sympy.interactive.session.enable_automatic_int_sympification(shell)[source]

Allow IPython to automatically convert integer literals to Integer.

sympy.interactive.session.enable_automatic_symbols(shell)[source]

Allow IPython to automatically create symbols (isympy -a).

sympy.interactive.session.init_ipython_session(
shell=None,
argv=[],
auto_symbols=False,
auto_int_to_Integer=False,
)[source]

Construct new IPython session.

sympy.interactive.session.init_python_session()[source]

Construct new Python session.

sympy.interactive.session.init_session(
ipython=None,
pretty_print=True,
order=None,
use_unicode=None,
use_latex=None,
quiet=False,
auto_symbols=False,
auto_int_to_Integer=False,
str_printer=None,
pretty_printer=None,
latex_printer=None,
argv=[],
)[source]

Initialize an embedded IPython or Python session. The IPython session is initiated with the –pylab option, without the numpy imports, so that matplotlib plotting can be interactive.

Parameters:

pretty_print: boolean

If True, use pretty_print to stringify; if False, use sstrrepr to stringify.

order: string or None

There are a few different settings for this parameter: lex (default), which is lexographic order; grlex, which is graded lexographic order; grevlex, which is reversed graded lexographic order; old, which is used for compatibility reasons and for long expressions; None, which sets it to lex.

use_unicode: boolean or None

If True, use unicode characters; if False, do not use unicode characters.

use_latex: boolean or None

If True, use latex rendering if IPython GUI’s; if False, do not use latex rendering.

quiet: boolean

If True, init_session will not print messages regarding its status; if False, init_session will print messages regarding its status.

auto_symbols: boolean

If True, IPython will automatically create symbols for you. If False, it will not. The default is False.

auto_int_to_Integer: boolean

If True, IPython will automatically wrap int literals with Integer, so that things like 1/2 give Rational(1, 2). If False, it will not. The default is False.

ipython: boolean or None

If True, printing will initialize for an IPython console; if False, printing will initialize for a normal console; The default is None, which automatically determines whether we are in an ipython instance or not.

str_printer: function, optional, default=None

A custom string printer function. This should mimic sympy.printing.sstrrepr().

pretty_printer: function, optional, default=None

A custom pretty printer. This should mimic sympy.printing.pretty().

latex_printer: function, optional, default=None

A custom LaTeX printer. This should mimic sympy.printing.latex() This should mimic sympy.printing.latex().

argv: list of arguments for IPython

See sympy.bin.isympy for options that can be used to initialize IPython.

Examples

>>> from sympy import init_session, Symbol, sin, sqrt
>>> sin(x) 
NameError: name 'x' is not defined
>>> init_session() 
>>> sin(x) 
sin(x)
>>> sqrt(5) 
  ___
\/ 5
>>> init_session(pretty_print=False) 
>>> sqrt(5) 
sqrt(5)
>>> y + x + y**2 + x**2 
x**2 + x + y**2 + y
>>> init_session(order='grlex') 
>>> y + x + y**2 + x**2 
x**2 + y**2 + x + y
>>> init_session(order='grevlex') 
>>> y * x**2 + x * y**2 
x**2*y + x*y**2
>>> init_session(order='old') 
>>> x**2 + y**2 + x + y 
x + y + x**2 + y**2
>>> theta = Symbol('theta') 
>>> theta 
theta
>>> init_session(use_unicode=True) 
>>> theta 
θ

See also

sympy.interactive.printing.init_printing

for examples and the rest of the parameters.

sympy.interactive.session.int_to_Integer(s)[source]

Wrap integer literals with Integer.

This is based on the decistmt example from https://docs.python.org/3/library/tokenize.html.

Only integer literals are converted. Float literals are left alone.

Examples

>>> from sympy import Integer # noqa: F401
>>> from sympy.interactive.session import int_to_Integer
>>> s = '1.2 + 1/2 - 0x12 + a1'
>>> int_to_Integer(s)
'1.2 +Integer (1 )/Integer (2 )-Integer (0x12 )+a1 '
>>> s = 'print (1/2)'
>>> int_to_Integer(s)
'print (Integer (1 )/Integer (2 ))'
>>> exec(s)
0.5
>>> exec(int_to_Integer(s))
1/2

Printing

Tools for setting up printing in interactive sessions.

sympy.interactive.printing.init_printing(
pretty_print=True,
order=None,
use_unicode=None,
use_latex=None,
wrap_line=None,
num_columns=None,
no_global=False,
ip=None,
euler=False,
forecolor=None,
backcolor='Transparent',
fontsize='10pt',
latex_mode='plain',
print_builtin=True,
str_printer=None,
pretty_printer=None,
latex_printer=None,
scale=1.0,
**settings,
)[source]

Initializes pretty-printer depending on the environment.

Parameters:

pretty_print : bool, default=True

If True, use pretty_print() to stringify or the provided pretty printer; if False, use sstrrepr() to stringify or the provided string printer.

order : string or None, default=’lex’

There are a few different settings for this parameter: 'lex' (default), which is lexographic order; 'grlex', which is graded lexographic order; 'grevlex', which is reversed graded lexographic order; 'old', which is used for compatibility reasons and for long expressions; None, which sets it to lex.

use_unicode : bool or None, default=None

If True, use unicode characters; if False, do not use unicode characters; if None, make a guess based on the environment.

use_latex : string, bool, or None, default=None

If True, use default LaTeX rendering in GUI interfaces (png and mathjax); if False, do not use LaTeX rendering; if None, make a guess based on the environment; if 'png', enable LaTeX rendering with an external LaTeX compiler, falling back to matplotlib if external compilation fails; if 'matplotlib', enable LaTeX rendering with matplotlib; if 'mathjax', enable LaTeX text generation, for example MathJax rendering in IPython notebook or text rendering in LaTeX documents; if 'svg', enable LaTeX rendering with an external latex compiler, no fallback

wrap_line : bool

If True, lines will wrap at the end; if False, they will not wrap but continue as one line. This is only relevant if pretty_print is True.

num_columns : int or None, default=None

If int, number of columns before wrapping is set to num_columns; if None, number of columns before wrapping is set to terminal width. This is only relevant if pretty_print is True.

no_global : bool, default=False

If True, the settings become system wide; if False, use just for this console/session.

ip : An interactive console

This can either be an instance of IPython, or a class that derives from code.InteractiveConsole.

euler : bool, optional, default=False

Loads the euler package in the LaTeX preamble for handwritten style fonts (https://www.ctan.org/pkg/euler).

forecolor : string or None, optional, default=None

DVI setting for foreground color. None means that either 'Black', 'White', or 'Gray' will be selected based on a guess of the IPython terminal color setting. See notes.

backcolor : string, optional, default=’Transparent’

DVI setting for background color. See notes.

fontsize : string or int, optional, default=’10pt’

A font size to pass to the LaTeX documentclass function in the preamble. Note that the options are limited by the documentclass. Consider using scale instead.

latex_mode : string, optional, default=’plain’

The mode used in the LaTeX printer. Can be one of: {'inline'|'plain'|'equation'|'equation*'}.

print_builtin : boolean, optional, default=True

If True then floats and integers will be printed. If False the printer will only print SymPy types.

str_printer : function, optional, default=None

A custom string printer function. This should mimic sstrrepr().

pretty_printer : function, optional, default=None

A custom pretty printer. This should mimic pretty().

latex_printer : function, optional, default=None

A custom LaTeX printer. This should mimic latex().

scale : float, optional, default=1.0

Scale the LaTeX output when using the 'png' or 'svg' backends. Useful for high dpi screens.

settings :

Any additional settings for the latex and pretty commands can be used to fine-tune the output.

Examples

>>> from sympy.interactive import init_printing
>>> from sympy import Symbol, sqrt
>>> from sympy.abc import x, y
>>> sqrt(5)
sqrt(5)
>>> init_printing(pretty_print=True) 
>>> sqrt(5) 
  ___
\/ 5
>>> theta = Symbol('theta') 
>>> init_printing(use_unicode=True) 
>>> theta 
\u03b8
>>> init_printing(use_unicode=False) 
>>> theta 
theta
>>> init_printing(order='lex') 
>>> str(y + x + y**2 + x**2) 
x**2 + x + y**2 + y
>>> init_printing(order='grlex') 
>>> str(y + x + y**2 + x**2) 
x**2 + x + y**2 + y
>>> init_printing(order='grevlex') 
>>> str(y * x**2 + x * y**2) 
x**2*y + x*y**2
>>> init_printing(order='old') 
>>> str(x**2 + y**2 + x + y) 
x**2 + x + y**2 + y
>>> init_printing(num_columns=10) 
>>> x**2 + x + y**2 + y 
x + y +
x**2 + y**2

Notes

The foreground and background colors can be selected when using 'png' or 'svg' LaTeX rendering. Note that before the init_printing command is executed, the LaTeX rendering is handled by the IPython console and not SymPy.

The colors can be selected among the 68 standard colors known to dvips, for a list see [R596]. In addition, the background color can be set to 'Transparent' (which is the default value).

When using the 'Auto' foreground color, the guess is based on the colors variable in the IPython console, see [R597]. Hence, if that variable is set correctly in your IPython console, there is a high chance that the output will be readable, although manual settings may be needed.

References