Light at the end of the Python tunnel?

6 views
Skip to first unread message

John Wiegley

unread,
Nov 14, 2009, 5:57:40 AM11/14/09
to ledge...@googlegroups.com
Consider this Python expression:

x = a.b.c

If a and b are expressions, Python will destroy the objects after the value of c is obtained. This is what kills me with Ledger, because the code looks like this:

for post in ledger.Journal("sample.dat").collect("-M assets"):

But I need the journal to stay alive for "post" to be meaningful. Well, it turns out that Boost.Python lets me force this to happen, which I wasn't doing previously:

.def("collect", py_collect, with_custodian_and_ward_postcall<0, 1>())

This statement says that the return value of collect now holds a refcount for the object that created it, so that the journal stays alive until the collection is deleted. With this change, the example works.

So, maybe the hope for Python isn't lost after all!

John

Reply all
Reply to author
Forward
0 new messages