Thanks!

Putting that together with what others are saying suggests that I'm finally
on the right track, with two types of plugin. The original type (which I
had hoped would be all that was needed) operating on fully booked
transactions and other directives. But the other type we do in fact seem to
need, operating on raw directives before validation.

In limabean these use different data structures, and up until now the raw
transactions from the parser haven't been available to user-defined code.
I'm going to allow that soon, but it's quite a bit change alas.

On Thu, 5 Mar 2026, 2:12 am Martin Blais, <[email protected]> wrote:

> TL;DR but did you see this?
>
> https://docs.google.com/document/d/1qPdNXaz5zuDQ8M9uoZFyyFis7hA0G55BEfhWhrVBsfc/edit?tab=t.0#heading=h.axs6y16wohk9
>
> On Mon, Mar 2, 2026 at 5:00 PM 'Simon Guest' via Beancount <
> [email protected]> wrote:
>
>> A limabean issue <https://github.com/tesujimath/limabean/issues/46> has
>> raised a question about how plugins should work, and highlighted that my
>> approach in limabean differs from the historical behaviour
>> <https://beancount.github.io/docs/beancount_scripting_plugins.html#load-pipeline>
>> .
>>
>> It comes down to, what are plugins for, actually?
>>
>> The specific plugin which initiated the discussion was zerosum
>> <https://github.com/redstreet/beancount_reds_plugins/tree/main/beancount_reds_plugins/zerosum>.
>> Currently it is not possible to run such a plugin in limabean because
>> limabean plugins run after the booking process has completed, and until
>> such a plugin has run the beanfile is invalid.
>>
>> My first instinct was, well, fix the beanfile!  That particular plugin
>> seems to be a mitigation for an import process which doesn't pair
>> transactions between accounts, in contrast to limabean-harvest
>> <https://github.com/tesujimath/limabean-harvest> for example, which
>> handles transaction pairing across accounts on import
>> <https://github.com/tesujimath/limabean-harvest/blob/main/clj/doc/10-features.md#transaction-pairing>
>> .
>>
>> My proposed mitigation for what I am calling such breakage (sorry) in
>> beanfiles would be to run user-defined functions over the beanfile whose
>> final output would be a fixed-up beanfile which passes validation.
>>
>> I understand there is legacy behaviour here.  But the vNext document has
>> some interesting plugin-related discussion
>> <https://beancount.github.io/docs/beancount_v3.html#intermediate-parsed-data-vs-final-list-of-directives>,
>> which says:
>>
>>
>>
>> *Furthermore, there may be two types of plugins: a plugin that runs on
>> the uninterpolated, unbooked output of the parser, and a plugin that runs
>> on the resolved and booked stream. This would allow more creative use of
>> partial input that might be invalid under the limitations of interpolation
>> and booking.Updates:- We could convert the plugin system to one that runs
>> at booking/interpolation time.*
>>
>> I am interested to understand other scenarios which would illuminate
>> design choices here.
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Beancount" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To view this discussion visit
>> https://groups.google.com/d/msgid/beancount/CAFhGSbuECVFGk_mrSuhE9u-LWiS-%2BzTs0EjTsHt5vTOCKg8YQw%40mail.gmail.com
>> <https://groups.google.com/d/msgid/beancount/CAFhGSbuECVFGk_mrSuhE9u-LWiS-%2BzTs0EjTsHt5vTOCKg8YQw%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
> --
> You received this message because you are subscribed to the Google Groups
> "Beancount" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion visit
> https://groups.google.com/d/msgid/beancount/CAK21%2BhMhcY9rBUr5vvUgjByGycOp2Dz1OxMCiNghT8TQVC5a-Q%40mail.gmail.com
> <https://groups.google.com/d/msgid/beancount/CAK21%2BhMhcY9rBUr5vvUgjByGycOp2Dz1OxMCiNghT8TQVC5a-Q%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"Beancount" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/beancount/CAFhGSbs57jf8rrS79QdDMy_pCi0mxq-s1cM5bHSTq5MZ2bw3OA%40mail.gmail.com.

Reply via email to