Skip to content

Python callback to a Julia function? #474

Open
@orenbenkiki

Description

@orenbenkiki

If I have a Julia function which takes a callback (artificial example here):

function caller(callback, arg_vector)
    callback(arg_vector)
    return nothing
end

outer_vector = [0]
caller(outer_vector) do inner_vector 
    inner_vector[1] = 1
end
@assert outer_vector[1] == 1

And I'd like to call it from Python - it seems not possible to do so? Ideally:

outer_vector = np.array([0])
with jl.MyModule.caller(outer_vector) as inner_vector:
    inner_vector[0] = 1
assert outer_vector[0] == 1

I have a Julia package that uses callbacks for various functions (for example, initializing arrays), and I'm trying to wrap it with a Python interface. Being able to zero-copy pass around numpy arrays is a godsend, but it seems that callbacks of the above type are not supported. Looking at the code I see the tests for "callback" are empty...

Is there some manual workaround I could use in my code instead of direct support for the above? Any way at all, as long as I can bury the boilerplate code in my Python wrappers so the end user can use the with statement.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions