[Kde-bindings] A new attempt on PyKDE5 binding generation

Scott Kitterman kde at kitterman.com
Sun Mar 27 14:45:13 UTC 2016


On Saturday, March 26, 2016 10:30:18 PM Shaheed Haque wrote:
> Hi all,
> 
> I've given up on trying to get the twine2 PyKDE bindings generator
> working [1] because not only is the code there broken, but it seems a
> Sysiphusian task to maintain a C++ parser. Instead, a few evenings
> with clang 3.9 have yielded what I hope is the basis of a way forward:
> about 800 lines of Python code [2] which can already create 684 .sip
> files [3].
> 
> What I hope is important about the new tool is that it is documented,
> and has a rule-driven approach to adding the SIP annotations which
> should ensure that the bindings are easier to maintain once we
> actually get them working.
> 
> The current status is:
> 
>     #1 I have not tried to actually run the SIP compiler :-).
> 
>     #2 I have not checked whether the tool is failing to process some
> .h files (i.e. I have not checked whether I have all the relevant .h
> headers, or whether the new tool is failing on some .h files).
> 
>     #3 I have toyed with, but not mounted a full attack on, the SIP
> annotations problem (see below)
> 
>     #4 I have not tried to map the KDE5 module naming scheme to
> anything in Python.
> 
>     #5 No integration with CMake and the rest of the KDE build system.
> 
> On the annotations problem, looking at PyKDE4 as my guide, I frankly
> don't understand when to use /Transfer/ instead of /TransferThis/, or
> why some references parameters have a /In/ and others a /Out/ or
> whatever. If anybody can actually explain, that would be great. In any
> event, I am hopeful that the structure of the rules engine [4] will
> make this tractable, but I'd really prefer not to blindly match what I
> see in PyKDE4!!!

This is great.  I did take a run at using twine2 and never got anywhere with 
it either.

Due to the Kf5, Plasma, Applications split, I would strongly recommend not 
calling what you're doing PyKDE5 as KDE5 is not a thing.  I'd suggest starting 
with binding the Kf5 modules and calling that PyKf5.  

Scott K


More information about the Kde-bindings mailing list