[GNC-dev] Python C++ bindings - Re: Python: About Wrapping SWIG Objects (GncNumeric)

c.holtermann at gmx.de c.holtermann at gmx.de
Mon Jun 8 12:24:38 EDT 2020


Hello,

I've picked my work from 2018 up again and made the QofSessionImpl c++ 
swig wrapping a PR (https://github.com/Gnucash/gnucash/pull/732).

This doesn't need to be final. It can be a basis for discussion of 
wrapping the c++ parts. As far as I have understood there is a process 
of moving the source from c to c++ and the python bindings need to take 
this step as well.

The PR adds a python submodule gnucash_core_cc which contains the c++ 
things to the existing gnucash_core_c c bindings.

gnucash_core_cc can be extended to other c++ parts - which ones would 
make sense?

regards,

Christoph Holtermann


Am 2018-08-23 21:01, schrieb c.holtermann at gmx.de:
> Am 2018-08-23 16:52, schrieb c.holtermann at gmx.de:
>> Am 2018-08-06 16:14, schrieb John Ralls:
>>>> On Aug 6, 2018, at 5:19 AM, c.holtermann at gmx.de wrote:
>>>> 
>>>> Am 2018-08-06 11:35, schrieb Geert Janssens:
>>>>> Op maandag 6 augustus 2018 05:32:27 CEST schreef John Ralls:
>>>>>> > On Aug 5, 2018, at 5:17 PM, c.holtermann at gmx.de wrote:
>>>>>> >
>>>>>> > Hello,
>>>>>> >
>>>>>> > after some time I get back to the gnucash python bindings.
>>>>>> >
>>>>>> > I worked on a str method for GncNumeric. It's in the example_script
>>>>>> > dir
>>>>>> > (https://github.com/Gnucash/gnucash/blob/maint/bindings/python/example_sc
>>>>>> > ripts/str_methods.py) I changed it to python3.
>>>>> I read at the beginning of this file you chose to implement it as 
>>>>> an example
>>>>> script which - if found useful - could be added to gnucash_core.
>>>>> You have my blessing to include it in gnucash_core :)
>>>>>> > Well I found it interesting to think these things through. Maybe someone
>>>>>> > can tell me about the mysterious "later on" in the cited comment. At this
>>>>>> > point I find it useful to have a way from the instance to the wrapping
>>>>>> > object through some kind of link as I suggested in the patch to
>>>>>> > function_class.
>>>>>> Christoph,
>>>>>> The person who wrote the first two lines of that, Mark Jenkins, 
>>>>>> was the
>>>>>> original source of the Python bindings. He was never a regular 
>>>>>> dev, he just
>>>>>> got 16 patches committed between 2007 and 2012, 10 of which 
>>>>>> touched the
>>>>>> python bindings. Your history with them is almost as long as 
>>>>>> his--in fact
>>>>>> you have *12* commits--and pretty much no one else has done 
>>>>>> anything
>>>>>> serious with them.
>>>>> Hopefully Mark is still around on the list to clarify.
>>>>>> In other words, if anyone knows, it’s you!
>>>>> True :)
>>>>>> Just to add some more confusion, there’s now a C++ class 
>>>>>> GncNumeric that
>>>>>> handles the actual implementation of many of the gnc_numeric.* 
>>>>>> functions. I
>>>>>> believe that SWIG can’t see it, only the C wrapper functions are 
>>>>>> exposed to
>>>>>> SWIG.
>>>>> It would be a very useful experiment to wrap the C++ GncNumeric 
>>>>> class directly
>>>>> rather than it's c wrapper gnc_numeric_xxx. Python doesn't need the 
>>>>> c
>>>>> compatibility layer it represents.
>>>>> Geert
>>>> 
>>>> Geert,
>>>> 
>>>> unfortunately your mail went to my spam folder for whatever reason. 
>>>> Trying to
>>>> do C++ bindings for python sounds very interesting. I'd like to try 
>>>> that when
>>>> I find the time for a simple example type. I don't know if 
>>>> GncNumeric would
>>>> be a good candidate. I'll have a look at it. Thanks for the blessing 
>>>> :-)
>>> 
>>> Python has its own rational numbers so the only thing the Python
>>> bindings need is a way to convert to-and-from that to GncNumeric for
>>> communicating with the rest of the GnuCash API.
>>> 
>>> I suggest QofSession as the first C++ class to play with SWIGing. 
>>> It’s
>>> fairly simple and using it is the first step in using the bindings.
>>> 
>>> Regards,
>>> John Ralls
>> 
>> Hello,
>> 
>> I've created an experimental branch in my fork of gnucash to create 
>> swig python
>> bindings for c++ files. As suggested I started with QofSessionImpl for 
>> which I
>> have created an example file to create a file and an account. I also 
>> included
>> GncNumeric. There's no example for that yet. It's very raw. I disabled
>> some errors.
>> It's more of a proof of concept but it's a step on the way.
>> https://github.com/c-holtermann/gnucash/tree/ch-python
>> 
>> regards,
>> 
>> Christoph Holtermann
>> _______________________________________________
>> gnucash-devel mailing list
>> gnucash-devel at gnucash.org
>> https://lists.gnucash.org/mailman/listinfo/gnucash-devel
> 
> Hello,
> 
> I've moved the python c++ specifics to a separate branch in my fork. It
> is https://github.com/c-holtermann/gnucash/tree/python-c%2B%2B.
> 
> regards,
> 
> Christoph Holtermann
> _______________________________________________
> gnucash-devel mailing list
> gnucash-devel at gnucash.org
> https://lists.gnucash.org/mailman/listinfo/gnucash-devel


More information about the gnucash-devel mailing list