| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- from sympy.printing.codeprinter import CodePrinter, PrintMethodNotImplementedError
- from sympy.core import symbols
- from sympy.core.symbol import Dummy
- from sympy.testing.pytest import raises
- from sympy import cos
- from sympy.utilities.lambdify import lambdify
- from math import cos as math_cos
- from sympy.printing.lambdarepr import LambdaPrinter
- def setup_test_printer(**kwargs):
- p = CodePrinter(settings=kwargs)
- p._not_supported = set()
- p._number_symbols = set()
- return p
- def test_print_Dummy():
- d = Dummy('d')
- p = setup_test_printer()
- assert p._print_Dummy(d) == "d_%i" % d.dummy_index
- def test_print_Symbol():
- x, y = symbols('x, if')
- p = setup_test_printer()
- assert p._print(x) == 'x'
- assert p._print(y) == 'if'
- p.reserved_words.update(['if'])
- assert p._print(y) == 'if_'
- p = setup_test_printer(error_on_reserved=True)
- p.reserved_words.update(['if'])
- with raises(ValueError):
- p._print(y)
- p = setup_test_printer(reserved_word_suffix='_He_Man')
- p.reserved_words.update(['if'])
- assert p._print(y) == 'if_He_Man'
- def test_lambdify_LaTeX_symbols_issue_23374():
- # Create symbols with Latex style names
- x1, x2 = symbols("x_{1} x_2")
- # Lambdify the function
- f1 = lambdify([x1, x2], cos(x1 ** 2 + x2 ** 2))
- # Test that the function works correctly (numerically)
- assert f1(1, 2) == math_cos(1 ** 2 + 2 ** 2)
- # Explicitly generate a custom printer to verify the naming convention
- p = LambdaPrinter()
- expr_str = p.doprint(cos(x1 ** 2 + x2 ** 2))
- assert 'x_1' in expr_str
- assert 'x_2' in expr_str
- def test_issue_15791():
- class CrashingCodePrinter(CodePrinter):
- def emptyPrinter(self, obj):
- raise NotImplementedError
- from sympy.matrices import (
- MutableSparseMatrix,
- ImmutableSparseMatrix,
- )
- c = CrashingCodePrinter()
- # these should not silently succeed
- with raises(PrintMethodNotImplementedError):
- c.doprint(ImmutableSparseMatrix(2, 2, {}))
- with raises(PrintMethodNotImplementedError):
- c.doprint(MutableSparseMatrix(2, 2, {}))
|