JuliaPy / JuliaPy/PythonCall.jl

Inconsistency implicit type conversion

Aperta
#536 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
bug
Lingua principale
Julia
Stelle
1.1k
Fork
86
Merge medio
1g 22h
PR unite (30g)
3

Descrizione

**Affects:** Both PythonCall and JuliaCall

**Describe the bug**
I am encountering inconsistent behavior with implicit type conversion when calling a Python function from Julia within a Python file. Specifically, I have observed that the variable 'global_res' is of type 'Julia Float64', whereas res is of type 'Py'. I expected both to be of the same type—Julia Float64—since they are both ultimately handled on the Julia side, where I assumed implicit conversion would occur uniformly. Here is the problematic code segment:
```
from juliacall import Main as jl

jl.seval("""
using PythonCall
""")

jl.global_res = 0

def my_test(x):
jl.global_res = x+1
return x+1

jl.test_pyexec_fn = my_test

jl.seval("""
function jl_add(x::Float64)
res = test_pyexec_fn(x)
println("typeof res:",typeof(res)) #typeof res:Py
println("typeof global_res:",typeof(global_res)) #typeof global_res:Float64
return res
end
""")

x = jl.jl_add(2.0)
```

**Your system**
Information about my system:
- The operating system: Linux
- The versions:
- Julia:1.10.3,
- Python:3.9.19,
- juliacall: 0.9.21,
- PythonCall v0.9.20

Thank you so much in advance!

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.