--- sympy-sympy-1.6.2/sympy/printing/tests/test_theanocode.py.orig 2020-08-07 09:17:07.000000000 -0600 +++ sympy-sympy-1.6.2/sympy/printing/tests/test_theanocode.py 2020-11-26 07:36:24.900389599 -0700 @@ -350,7 +350,7 @@ def test_theano_function_scalar(): f = theano_function_(inputs, outputs, dims=in_dims, scalar=scalar) # Check the theano_function attribute is set whether wrapped or not - assert isinstance(f.theano_function, theano.compile.function_module.Function) + assert isinstance(f.theano_function, theano.compile.function.types.Function) # Feed in inputs of the appropriate size and get outputs in_values = [ --- sympy-sympy-1.6.2/sympy/printing/theanocode.py.orig 2020-08-07 09:17:07.000000000 -0600 +++ sympy-sympy-1.6.2/sympy/printing/theanocode.py 2020-11-26 07:35:55.667441366 -0700 @@ -442,7 +442,7 @@ def theano_function(inputs, outputs, sca function will return a list of arrays. See description of the ``squeeze`` argument above for the behavior when a single output is passed in a list. The returned object will either be an instance of - ``theano.compile.function_module.Function`` or a Python wrapper + ``theano.compile.function.types.Function`` or a Python wrapper function around one. In both cases, the returned value will have a ``theano_function`` attribute which points to the return value of ``theano.function``.