On Tue, Aug 27, 2019, at 06:17, Martin Blais wrote: > On Tue, Aug 27, 2019 at 3:16 AM <[email protected]> wrote: >> Hi, >> >> I've recently migrated to Beancount from Ledger. I'm really happy with it so >> far. :) >> >> One issue I've had is around transaction ordering across files. (To be >> clear, this is not at all a criticism of Beancount relative to Ledger; the >> plugin I'm trying to write wouldn't be possible in Ledger for a dozen >> reasons.) >> >> I mostly keep one file per "physical" account (e.g. one file for my Vanguard >> 401k). I also have a "budget" file that keeps transactions I use for >> envelope budgeting. Some of the budget transactions are logically linked >> with a debit to my checking account; in effect, money is divided up the >> instant it arrives. >> >> I'm trying to implement a plugin that ensures that my various budget >> accounts never drop below zero. However, if I'm reading the code correctly, >> transactions are sorted based on their date, type, and line number -- but >> not based on filename, and not based on anything that a plugin is supposed >> to be able to control. >> >> My questions are: >> >> 1. Is there a reason for this particular sorting order? It seems odd that >> line number would be used without filename -- it means that the order of two >> transactions could be changed by adding a lot of whitespace to one file, or >> by adding/removing metadata tags. (I tested this out, and confirmed that >> whitespace does have this effect.) > > Hmm, I think it's an oversight. Sorting should be stable. I should add the > filename to the sort key. > https://bitbucket.org/blais/beancount/src/fe747dea5ce9eddfb4910b9edfdec1134f0a6c85/beancount/core/data.py#lines-581 > > >> 2. More generally, are there any recommended patterns for imposing partial >> orders on transactions in different files? I know that I could put >> everything in one file, but I'd rather not; it's much easier for me to read >> and write (and make bulk changes to) my files if they're split up as they >> are now. > > I think the absolute filename should disambiguate it enouhg. > > >> >> >> Note that addressing #1 (e.g. by changing the sort key to include filename >> before lineno) would not fully address my use case, since I want to >> interleave transactions between different files. > > I don't understand this. They would be sorted by date, but within each date, > sorted by file, and then by line number. > (You're not supposed to rely on ordering within a day, Beancount does not > provide guarantees on ordering that way, just stable ordering.)
I guess I was too tired last night to think about this properly. :) I updated my plugin so that it only checks balances at day boundaries, and now it works perfectly. Thanks for your help! :) > > > > >> >> Thanks! >> ~ aleksandra (pronouns: she/her) >> >> >> -- >> 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 on the web visit >> https://groups.google.com/d/msgid/beancount/2c8b10d2-12e6-4170-829b-de5a0bb269c8%40googlegroups.com >> >> <https://groups.google.com/d/msgid/beancount/2c8b10d2-12e6-4170-829b-de5a0bb269c8%40googlegroups.com?utm_medium=email&utm_source=footer>. > > -- > You received this message because you are subscribed to a topic in the > Google Groups "Beancount" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/beancount/gFbCDBZ1dt4/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/beancount/CAK21%2BhMwP2CEvMPhuZhbWZofNKCH_4ef%2BBSDM-auJ9TxcW3H5w%40mail.gmail.com > > <https://groups.google.com/d/msgid/beancount/CAK21%2BhMwP2CEvMPhuZhbWZofNKCH_4ef%2BBSDM-auJ9TxcW3H5w%40mail.gmail.com?utm_medium=email&utm_source=footer>. -- Aleksandra Culver (pronouns: she/her) [email protected] -- 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 on the web visit https://groups.google.com/d/msgid/beancount/ff3fba65-1106-49bc-abd0-5d94f3717cae%40www.fastmail.com.
