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,
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=[],
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,
Initializes pretty-printer depending on the environment.
- Parameters:
pretty_print : bool, default=True
If
True
, usepretty_print()
to stringify or the provided pretty printer; ifFalse
, usesstrrepr()
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; ifFalse
, do not use unicode characters; ifNone
, 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); ifFalse
, do not use LaTeX rendering; ifNone
, 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 fallbackwrap_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; ifNone
, number of columns before wrapping is set to terminal width. This is only relevant ifpretty_print
isTrue
.no_global : bool, default=False
If
True
, the settings become system wide; ifFalse
, 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. IfFalse
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
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 theinit_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 thecolors
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.See also
References