Le lundi 2 mars 2026 à 17:00:03 UTC-5, Simon Guest a écrit :A limabean issue has raised a question about how plugins should work, and highlighted that my approach in limabean differs from the historical behaviour.
It comes down to, what are plugins for, actually?
The specific plugin which initiated the discussion was 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 for example, which handles transaction pairing across accounts on import.
FWIW, the issue that zerosum addresses isn’t about mitigating pairing deficiencies at import. Its purpose is to support asynchronous imports of the two sides of a transaction and to accurately represent transfers that are temporarily “in flight.”
Financial institutions differ in how up-to-date their transaction feeds are, and in practice users often import some accounts frequently while updating others only periodically. As a result, asynchronous imports are often unavoidable. In the U.S., transfers also do not settle instantly, which can complicate synchronization with an institution’s transaction sequence and balance assertions. One alternative is to reconcile and rewrite the existing ledger once the second side of a transfer arrives, but that approach carries its own trade-offs rather than being a clearly superior solution.
Anyway, I digress. Other plugins like opengroup, and possibly rename_accounts and effective_date need to run early in the proccess. Not to mention homecooked plugins.
One of the plugin I rely on is ira_contribs.py (actually my own spin of it, adapted for Canadian tax-deferred and tax-free accounts).. [...]
So maybe you've made transaction pairing first-class citizen in limabean-harvest, but current beancount plugins can get pretty creative and you're going definitely have breakage if you change when plugins run. My personal 2 cents: the community is small already, so I would be careful to not introduce new not-retrocompatible ways of doing things.
--
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 beancount+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/beancount/ba1553b5-0e2a-4c20-80be-d64d14c83c58n%40googlegroups.com.
--
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 beancount+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/beancount/CAFhGSbuECVFGk_mrSuhE9u-LWiS-%2BzTs0EjTsHt5vTOCKg8YQw%40mail.gmail.com.
in practice users often import some accounts frequently while updating others only periodically
in practice users often import some accounts frequently while updating others only periodically
This is the main use case for me personally. For most accounts, I only update them when I'm send a statement. That means I'll update one bank on the 1st (they have fast computers?), another bank on the 5th, my credit card statement always comes on the 25th, etc. I've also done international wire transfers between my accounts which can (depending on the countries and correspondent banks involved) can take anywhere from 6 hours to 6 days.I'm fine with that "eventual consistency" approach and I think most users probably are. If I do an international wire transfer for a house deposit, it is in some sense accurate to treat that as my net worth dropping by several hundred thousand dollars until it eventually arrives in another account. After all, I have seen wire transfers go astray (wrong instructions, bank mistakes, etc) so it isn't really "mine" until it reappears. But it also feels like making things far too complicated in the name of chasing perfect fidelity.
Agree. For me it’s less about fidelity and more about practicality. If I force a transaction to appear earlier or later than when the bank records it, the running balances no longer line up with the bank’s statements, and balance assertions start failing, and troubleshooting becomes messy.
That said, I'm definitely sympathetic to the thought that this is such a common use case it (along with the similar but slightly different effective_date plugin) is functionality that probably ought to be a core part of an accounting system, instead of the current (nearly universal, not just in beancount) fiction that transactions are instantaneous and nothing is ever pending.
Agree. The Vnext doc already mentions these ideas, and they’re quite close to the ones you listed above, but in my view they could still benefit from another round of design iteration.
a few home-baked plugins that just work well for my workflow (controlling tags and metadata from a master list, promoting a posting level metadata "tag" to a transaction level proper tag, and adding descriptions to matched zerosum transactions so I know which account the transfer is with).
Zerosum can add links for you, if that helps.
To view this discussion visit https://groups.google.com/d/msgid/beancount/CAK21%2BhMhcY9rBUr5vvUgjByGycOp2Dz1OxMCiNghT8TQVC5a-Q%40mail.gmail.com.