Here, just for you: https://github.com/beancount/beanlabs/blob/master/beanlabs/scripts/scan.py#L38
On Sat, Nov 27, 2021 at 10:35 AM Martin Blais <[email protected]> wrote: > Check out what I do in this script: > > https://github.com/beancount/beanlabs/blob/master/beanlabs/compensation/net-worth-over-time.py#L223 > > It could be made nicer, an iterator could be created that yields the state > at a given list of timestamps, so all the aggregation would be abstracted > away. > > > > On Sat, Nov 27, 2021 at 5:10 AM Stefano Zacchiroli <[email protected]> > wrote: > >> On Fri, Nov 26, 2021 at 09:08:18AM -0500, Martin Blais wrote: >> > >> https://github.com/beancount/beancount/blob/master/beancount/ops/summarize.py#L589 >> >> Thanks a lot Martin, I didn't know about >> beancount.ops.summarize.balance_by_accounts(), and now that I know it >> helped me simplify some code I had around. >> >> While I'm at it, the code in question compute the average daily balance >> in a given account for a given year and currency (which matters for >> fiscal reasons in Italy, don't ask...). The core of it looks like this: >> >> # XXX naive approach: we re-calculate realizations from the beginning >> of the ledger >> # to each day in the target year. It is acceptably fast, so we didn't >> bother making >> # it more efficient than this (for now). >> for day in tqdm(list(year_days(year))): >> inventory = balance_by_account(entries, date=day)[0][account] >> amount = inventory.get_currency_units(currency) >> balances.append(amount.number) >> >> As per comment, it is good enough (takes ~20 seconds on my main ledger), >> but it's not great. What would be the best way/internal API to implement >> this "right", i.e., with a running balance that is updated with daily >> batches of entries? >> >> TIA, >> Cheers >> -- >> Stefano Zacchiroli . [email protected] . upsilon.cc/zack _. ^ ._ >> Full professor of Computer Science o o o \/|V|\/ >> Télécom Paris, Polytechnic Institute of Paris o o o </> <\> >> Co-founder & CTO Software Heritage o o o o /\|^|/\ >> Former Debian Project Leader & OSI Board Director '" V "' >> >> -- >> 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/20211127101046.tw5yy4x6b4ooxvmp%40upsilon.cc >> . >> > -- 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/CAK21%2BhMVC7C57ghyWyQwa0oHf6Q4eZP2CG60R3JkhiurxuYk_g%40mail.gmail.com.
