Skip to content

Q: how to make Python <==> d call in both ways? any example with PyD and autowrap? #314

Description

@mw66

https://forum.dlang.org/post/amisorwzyfhsxocdnqdu@forum.dlang.org

Hi,

I know with PyD, D can call Python, and with autowrap, Python can call a D .dll, I'm just wondering if someone can show an example that Python <==> d can call both ways? esp. show passing D objects to Python and then call its member function there, and vice versa.

I tried a simple example:

// in D
import pyd.pyd, pyd.embedded;

void foo(PydObject bar) {
  writeln(bar.baz());   // call PydObject's method on the D side
}


// in Python
import libDdll
libDdll.foo(pyBarObj)

The result seem working; but the dub build issues error message, even though the .so was able to be built.

libDdll ~main: building configuration "python39"...

ERROR! Autowrap could not wrap aggregate `pyd.pydobject.PydObject` for Python


ERROR! Autowrap could not wrap aggregate `deimos.python.object.PyTypeObject` for Python


ERROR! Autowrap could not wrap aggregate `deimos.python.methodobject.PyMethodDef` for Python


ERROR! Autowrap could not wrap aggregate `deimos.python.structmember.PyMemberDef` for Python


ERROR! Autowrap could not wrap aggregate `deimos.python.descrobject.PyGetSetDef` for Python

Linking...
To force a rebuild of up-to-date targets, run again with --force.

I'm wondering if these ERROR messages are actually error, since the .so can be built, and the running result seems fine.

If they are not actually real errors, can we either change them to warnings, or even completely remove them? This only cause some confusion to the user.

And we can document this usage: i.e passing Python object to D, and call its Python method on the D side.

Thanks.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions