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_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 http://docs.python.org/library/tokenize.html.
Only integer literals are converted. Float literals are left alone.
Examples
>>> from __future__ import division >>> 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 : boolean, 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 : boolean 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, boolean, 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 : boolean
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 : boolean, 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 : boolean, optional, default=False
Loads the euler package in the LaTeX preamble for handwritten style fonts (http://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, 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. IfFalse
the printer will only print SymPy types.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().
scale : float, optional, default=1.0
Scale the LaTeX output when using the
png
orsvg
backends. Useful for high dpi screens.settings :
Any additional settings for the
latex
andpretty
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 [R517]. 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 [R518]. 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.See also
References