# Sympy symbol to Symbolics.jl Num: adding a rule

**URL:** <https://discourse.julialang.org/t/sympy-symbol-to-symbolics-jl-num-adding-a-rule/102915>\
**Category:** General Usage\
**Tags:** question\
**Created:** [August 17, 2023, 4:03pm UTC](https://discourse.julialang.org/t/sympy-symbol-to-symbolics-jl-num-adding-a-rule/102915 "2023-08-17T16:03:49Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![jClugstor](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jclugstor/32/32689_2.png) [@jClugstor](https://discourse.julialang.org/u/jClugstor)\
**Post date:** [August 17, 2023, 4:03pm UTC](https://discourse.julialang.org/t/sympy-symbol-to-symbolics-jl-num-adding-a-rule/102915/1 "2023-08-17T16:03:49Z")

</div>

I’m trying to convert a Sympy symbol into a Symbolics.jl Num type. When I use `pyconvert_add_rule` to add the rule, and then try to convert it using `pyconvert`, it says that it can’t convert the sympy symbol to a Symbolics `Num`. The function that I wrote to handle the conversion does what it’s supposed to, it’s just that it seems that adding the rule did not work.

```julia
using PythonCall
using Symbolics
using CondaPkg

CondaPkg.add("sympy")

sp = pyimport("sympy")

sympt = sp.Symbol("t")

typeof(Symbolics.variable(Symbol(pyconvert(Symbol,sympt.name))))

function pysym_to_Num(::Type{Symbolics.Num}, x::Py)
    PythonCall.pyconvert_return(Symbolics.variable(Symbol(pyconvert(Symbol,sympt.name))))
end

convertedt = pysym_to_Num(Symbolics.Num, sympt)

PythonCall.pyconvert_add_rule("sympy:Symbol",Symbolics.Num, pysym_to_Num)

PythonCall.pyconvert(Symbolics.Num, sympt)

```

---

<div class="post-metadata">

**Author:** ![jClugstor](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jclugstor/32/32689_2.png) [@jClugstor](https://discourse.julialang.org/u/jClugstor)\
**Post date:** [August 17, 2023, 5:43pm UTC](https://discourse.julialang.org/t/sympy-symbol-to-symbolics-jl-num-adding-a-rule/102915/2 "2023-08-17T17:43:17Z")

</div>

So I had a stupid typo, and I thought that fixing it might help, but it did not. Here is the new function.

```julia
function pysym_to_Num(::Type{Symbolics.Num}, x::Py)
    if !pyisinstance(x,sp.Symbol)
        pyconvert_unconverted()
    end
    PythonCall.pyconvert_return(Symbolics.variable(Symbol(pyconvert(Symbol,x.name))))
end

```

---

<div class="post-metadata">

**Author:** ![jClugstor](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jclugstor/32/32689_2.png) [@jClugstor](https://discourse.julialang.org/u/jClugstor)\
**Post date:** [August 18, 2023, 4:53pm UTC](https://discourse.julialang.org/t/sympy-symbol-to-symbolics-jl-num-adding-a-rule/102915/3 "2023-08-18T16:53:58Z")

</div>

The issue was not using the full name of the sympy symbol. It needs to be `pyconvert_add_rule("sympy.core.symbol:Symbol",Symbolics.Num,pysym_to_Num)`

I swear I thought I tried that before, maybe I was doing `pyconvert_add_rule("sympy:core.symbol.Symbol",Symbolics.Num,pysym_to_Num)` instead though.
