Here, expand as desired:
#!/usr/bin/env python3 """Example processing postings using petl. """ from beancount import loader from beancount.core import data import argparse import itertools import petl petl.config.look_style = "minimal" petl.config.failonerror = True HEADER = ["txn", "posting", "date", "account", "units", "cost"] def rows(entries): for txn in data.filter_txns(entries): for posting in txn.postings: yield (txn, posting, txn.date, posting.account, posting.units, posting.cost) def main(): parser = argparse.ArgumentParser(description=__doc__.strip()) parser.add_argument("filename", help="Ledger filename") args = parser.parse_args() entries, errors, options_map = loader.load_file(args.filename) table = petl.wrap(itertools.chain([HEADER], rows(entries))) print(table.cut(["date", "account", "units"]).lookallstr()) if __name__ == "__main__": main() On Sat, May 20, 2023 at 5:50 PM Martin Blais <bl...@furius.ca> wrote: > There isn't one but if needed I can probably make you one in short order. > > On Sat, May 20, 2023 at 5:31 PM Stefano Zacchiroli <z...@upsilon.cc> > wrote: > >> On Sat, May 20, 2023 at 04:57:44PM -0400, Martin Blais wrote: >> > (Note that you could build a little Python script and use petl to >> achieve >> > this in ~20LOC or something.) >> >> Is there an existing mapping from Beancount data to Petl that I'm >> missing? >> >> I'm aware of Petl usage for importing data into Beancount, which makes a >> lot of sense, because you usually have tabular data before ingesting >> into Beancount. But I'm not aware of any bridge between Beancount >> (presumably and more specifically: the tabular data model on which BQL >> evaluate queries) and Petl. Would love to hear about it. >> >> Cheers >> -- >> Stefano Zacchiroli . z...@upsilon.cc . https://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 /\|^|/\ >> https://twitter.com/zacchiro . https://mastodon.xyz/@zacchiro '" 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 beancount+unsubscr...@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/beancount/20230520213125.q3j7mvfhks3q7pwd%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 beancount+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/CAK21%2BhMNSw2LODCLASqo-ZZfwFfZh99wTzorw%3D9m6aRuU-iFkg%40mail.gmail.com.