# Miscellaneous¶

Miscellaneous stuff that doesn’t really fit anywhere else.

sympy.utilities.misc.debug(*args)[source]

Print *args if SYMPY_DEBUG is True, else do nothing.

sympy.utilities.misc.debug_decorator(func)[source]

If SYMPY_DEBUG is True, it will print a nice execution tree with arguments and results of all decorated functions, else do nothing.

sympy.utilities.misc.filldedent(s, w=70)[source]

Strips leading and trailing empty lines from a copy of $$s$$, then dedents, fills and returns it.

Empty line stripping serves to deal with docstrings like this one that start with a newline after the initial triple quote, inserting an empty line at the beginning of the string.

sympy.utilities.misc.find_executable(executable, path=None)[source]

Try to find ‘executable’ in the directories listed in ‘path’ (a string listing directories separated by ‘os.pathsep’; defaults to os.environ[‘PATH’]). Returns the complete filename or None if not found

sympy.utilities.misc.func_name(x, short=False)[source]

Return function name of $$x$$ (if defined) else the $$type(x)$$. If short is True and there is a shorter alias for the result, return the alias.

Examples

>>> from sympy.utilities.misc import func_name
>>> from sympy.abc import x
>>> func_name(x < 1)
'StrictLessThan'
>>> func_name(x < 1, short=True)
'Lt'

sympy.utilities.misc.rawlines(s)[source]

Return a cut-and-pastable string that, when printed, is equivalent to the input. The string returned is formatted so it can be indented nicely within tests; in some cases it is wrapped in the dedent function which has to be imported from textwrap.

Examples

Note: because there are characters in the examples below that need to be escaped because they are themselves within a triple quoted docstring, expressions below look more complicated than they would be if they were printed in an interpreter window.

>>> from sympy.utilities.misc import rawlines
>>> from sympy import TableForm
>>> s = str(TableForm([[1, 10]], headings=(None, ['a', 'bee'])))
>>> print(rawlines(s))
(
'a bee\n'
'-----\n'
'1 10 '
)
>>> print(rawlines('''this
... that'''))
dedent('''\
this
that''')

>>> print(rawlines('''this
... that
... '''))
dedent('''\
this
that
''')

>>> s = """this
... is a triple '''
... """
>>> print(rawlines(s))
dedent("""\
this
is a triple '''
""")

>>> print(rawlines('''this
... that
...     '''))
(
'this\n'
'that\n'
'    '
)

sympy.utilities.misc.replace(string, *reps)[source]

Return string with all keys in reps replaced with their corresponding values, longer strings first, irrespective of the order they are given. reps may be passed as tuples or a single mapping.

References

Examples

>>> from sympy.utilities.misc import replace
>>> replace('foo', {'oo': 'ar', 'f': 'b'})
'bar'
>>> replace("spamham sha", ("spam", "eggs"), ("sha","md5"))
'eggsham md5'


There is no guarantee that a unique answer will be obtained if keys in a mapping overlap (i.e. are the same length and have some identical sequence at the beginning/end):

>>> reps = [
...     ('ab', 'x'),
...     ('bc', 'y')]
>>> replace('abc', *reps) in ('xc', 'ay')
True

sympy.utilities.misc.translate(s, a, b=None, c=None)[source]

Return s where characters have been replaced or deleted.

Examples

>>> from sympy.utilities.misc import translate
>>> from sympy.core.compatibility import unichr
>>> abc = 'abc'
>>> translate(abc, None, 'a')
'bc'
>>> translate(abc, {'a': 'x'}, 'c')
'xb'
>>> translate(abc, {'abc': 'x', 'a': 'y'})
'x'

>>> translate('abcd', 'ac', 'AC', 'd')
'AbC'


There is no guarantee that a unique answer will be obtained if keys in a mapping overlap are the same length and have some identical sequences at the beginning/end:

>>> translate(abc, {'ab': 'x', 'bc': 'y'}) in ('xc', 'ay')
True


Syntax

translate(s, None, deletechars):
all characters in deletechars are deleted
translate(s, map [,deletechars]):
all characters in deletechars (if provided) are deleted then the replacements defined by map are made; if the keys of map are strings then the longer ones are handled first. Multicharacter deletions should have a value of ‘’.
translate(s, oldchars, newchars, deletechars)
all characters in deletechars are deleted then each character in oldchars is replaced with the corresponding character in newchars