On 05/09/2014 06:37 PM, David Osguthorpe wrote:
On Thu, May 08, 2014 at 11:47:34PM -0700, mshapiro wrote:
David Osguthorpe wrote
I have a very hacky implementation in gnucash to call python from guile
and
return results to guile - I found existing libraries to do both
(no updates to gnucash required - just a user prototype.scm file)
Can you post what libraries you used, where you got them, how to use them
and your prototype.scm file.  Also, any pointers to useful documentation for
using the Python bindings would be greatly appreciated.  I am primarily
interested (at the moment) in accessing budgeting information and future
transactions, as well as accounts, since I would like to do more forecasting
than the standard reports provide.

it is really hacky - and I still had crashes when attempting to create real 
reports
so its very, very alpha
but if you wish to pursue it here are the details
I have the feeling that I will be better off to just write a standalone python script. This is not really a problem. A program to do forecasting can be done outside gnucash just fine. Except that I still need to find a way to access the future transactions and the budget information. I haven't seen either of these in any of the example reports for the python bindings. Does anyone know of any info on how to use the python bindings to access these?
note this does not use any of the python bindings - as far as I can tell they 
only work for
non-gui standalone scripts - well its the only Ive used them
- you would write a script to access your gnucash database (xml or SQL) and use 
any python
modules to format the data for a new report completely outside of gnucash
for the moment I would say you would be better just writing command line scripts
using the python bindings to generate HTML or whatever reports

here are some details

1. you need pyguile - a module for calling guile version of scheme from python
- unfortunately the available source has not been udpated for years so needed 
quite
a bit of patching to build (I run under macports on OSX mainly)
- one patch I did have to add was the ability to return so called SCM (scheme) 
objects
back to guile

2. you need schemepy - which has a module for calling python from guile version 
of scheme
- again the available source has not been udpated for years so needed
some patching to get running

Then you have the prototype.scm (simply not bothered to change name) which sets 
up
to call python where you could write your report.


My initial goal was to write reports in python - Im primarily writing in this 
now
and although I had tried scheme for a multiple stock price scatter plot report 
every time I went
back trying to re-think in scheme was a pain
I tried to write my report in scheme, and I can't really say that I failed. Just that I never got it finished. I took the Balance Sheet , the Budget Report and the Future Transactions Report and tried to put them together. I was able to successfully combine all of the required options so that they can be input on a singe screen. Then it simply runs the Balance Sheet. If I could figure out how to access the future transactions and budgeting data and update the accounts on the Balance Sheet before displaying them then I would be all set. But, so far, I have not been able to wrap my head around that much scheme. As a co-worker says of LISP (he uses it in AutoCad) I find myself Lost In Stupid Parenthesis. It makes my head hurt.
The major problem I ran across is that when analysing the GUI report system in 
gnucash
I discovered it was not done in pure gtk but some of the gui is actually 
written in scheme
by calling gtk gunctions via swig wrapped functions involving gtk
- to directly call python reports would need re-writing most of this GUI scheme 
stuff using
the python gtk library - not difficult but seemed like a lot of work
I had hoped to find a report function where I could plugin in a call to python 
so could then
do the report in python (python has the ctypes module which allows calling C 
functions
in  arbitrary C shared libraries such as gnucash uses) - pygtk allows direct 
use of gtk functions
in python
I did this around 2.4.7 and am looking to review it now at 2.6.3

from that analysis as far as I could tell the final report result is an html 
text string which is
written to a file - again these components using scheme coding


If you really want the files let me know
Yes. If you can post the files, or links to them, then I will have them if I decide to try and go down that route. If not, well, it won't hurt to have them and maybe it can help someone else.
as you have discovered there isnt much documentation of the python bindings
Yes. If I had proper documentation then I would have just written the standalone report and been done with it. As it stands, I have no actual proof that the bindings will give me access to the budgeting and future transactions. That may never have been included in them, but since no one actually seems to have documented what is, or is not, included (let alone how to use it) it makes it kind of difficult.

Marc

_______________________________________________
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel

Reply via email to