# How to wrap a sympy function as a sage function ?

Inspired by a recent question :

`import`

ing a function from sympy allows *apparently* to use a sympy function in sage:

```
sage: import sympy
sage: from sympy import sympify, sin as ssin
sage: ssin(sympify(a+b))
sin(a + b)
```

But this is purely cosmetic : this result does not have the methods of a Sage symbolic expression:

```
sage: ssin(sympify(a+b)).trig_expand()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-15-859c8e851702> in <module>()
----> 1 ssin(sympify(a+b)).trig_expand()
AttributeError: 'sin' object has no attribute 'trig_expand'
sage: ssin(sympify(a+b)).operator()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-16-d52ecf6bce28> in <module>()
----> 1 ssin(sympify(a+b)).operator()
AttributeError: 'sin' object has no attribute 'operator'
```

In fact, this is a sympy object :

```
sage: type(ssin(sympify(a+b)))
sin
```

whereas:

```
sage: type(sin(a+b))
<class 'sage.symbolic.expression.Expression'>
```

So, my question is :how toi create a Sage function that :

translates all its argument to the relevant sympy types

calls somehow the sympy functin on these arguments

translates back the result to Sage ?

This is done for some Sage functions, implemented by Maxima or sympy, in the Sage library. Is it possible to make this "lightly" *at run time* in some Sage source code without having to recompile the Sage library ?