Python bindings: patch, documentation, examples

Geert Janssens janssens-geert at telenet.be
Mon Jan 13 11:52:10 EST 2014


On Monday 13 January 2014 08:16:17 David Osguthorpe wrote:
> I am using the python bindings - in fact was just going to see about
> getting some patches to update the bindings.
> 
> Just updated to 2.6.0 - looks as though some functions that used to
> exist no longer exist in the Account class so need to be removed from
> gnucash_business.py
> 
> Ive noticed that the python bindings are not very "pythonic" - I have
> some updates which improve this eg  account lookup used to require
> testing that the swig instance was None - this got updated somewhere
> between 2.4 and 2.6 so now the python class returns None - the
> "pythonic" way seems to me is to raise exception - which is what one
> of my updates does
> 
> So I was going to  email this list to see what is going on with the
> bindings and how such improvements could be added.
> 
> Such updates will fail existing python code - such as the examples -
> although Ive found other cases where existing changes means some of
> the example python code no longer works
> 
> David

There is no formal python-bindings maintainer but I do welcome and apply submitted 
improvements. So if you have fixes please do file an enhancement request in bugzilla [1] and 
attach your patches to it.

John's reply does raise a valid issue with the python bindings: they are not easily portable to OS 
X and Windows and currently disabled on these platforms. That's why gnucash is not 
implementing any core functionality directly in python and patches in that direction will most 
likely be refused.

Having said I do consider the python bindings a useful and powerful feature that can help 
integrate gnucash in other workflows, automate repetitive tasks, simplify complex steps and so 
on.

In short: gnucash should not depend on python due to porting difficulties, but I support the idea 
of well developed python bindings as a tool for personal customisation (albeit exclusively on a 
limited set of platforms).

Specifically to your suggestions: regarding returning "None" vs raising an exception, I have no 
opinion. I don't use python enough myself to know what would be the most typical python way 
of doing things.

Ideally if you implement changes that break the examples, please include code that fixes the 
examples as well. They're about the only documentation that exists for the python bindings 
and it would be very confusing if they stopped working.

I'm looking forward to your patches.

Geert

[1] http://wiki.gnucash.org/wiki/Bugzilla


More information about the gnucash-devel mailing list