This is great, thanks for writing it! On Wed, Oct 5, 2022, 14:39 Archimedes Smith <[email protected]> wrote:
> Hi beancounters, > > One thing I have been wanting for long in beancount ecosystem is some > tooling to programmatically *edit* my ledger. For example: > > - Formatting > - Sort ledger entries, without losing formatting, comments, or > pushtag. > - Sort postings / meta. > - Format non-transactions and details (e.g. inside cost) that > bean-format doesn't do. > - Enforce formatting rules. > - Refactoring > - Rearrange my accounts based on narration / tags / comments. > - Optimize existing ledgers with plugins. > - Migrate some posting meta to the inline form by > autobean.narration > <https://github.com/SEIAROTg/autobean/tree/master/autobean/narration> > . > - Migrate my tedious stock split transactions to use the > single-line form by autobean.stock_split > > <https://github.com/SEIAROTg/autobean/tree/master/autobean/stock_split> > . > - Ease plugin usage by having automatic onboarding script that > inserts "plugin" directive and optimize existing ledger. > - Automatically migrate from v2 to v3 syntax. > - Automatically migrate from / to other bookkeeping systems. > - Importing > - Generate postings with total price (@@), which the official > models don't support. > - Let importers insert transactions directly to the right file, at > the right line. > - Let importers find and augment existing transactions. > - A receipt OCR importer may find the transaction previously > imported from the bank and add postings about what I bought. > - Automatically generate refund transaction in an editor extension. > > There are some existing ways doing editing: > > - Manual editing always works, but takes time. > - Plugin is great but sometimes I want to land the changes in the file. > - beancount.loader applies plugins, drops spacing, comments and > directives (pushtag). > - beancount.parser doesn't apply plugins, but also drops spacing, > comments and directives. > > As a solution to *all* above use cases, I've come up with > autobean.refactor > <https://github.com/SEIAROTg/autobean/tree/master/autobean/refactor>, > which is a pure Python library providing an ergonomic yet powerful > interface to edit beancount files. It's now 80% completed so I'm sharing it > here, though there are still some missing pieces (coming soon): > > - Documentation > - Performance improvements > - Support for out-of-line tags / links in transaction > > You can play with it here: > https://replit.com/@SEIAROTg/autobeanrefactor-example#main.py or check > out more examples in tests > <https://github.com/SEIAROTg/autobean/tree/master/autobean/refactor/tests> > . > > Anyone interested in this project? Any bug reports / suggestions would be > appreciated. > > Regards, > SEIAROTg > > -- > 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/5b92826f-3fba-4f0f-a47a-c9c9d77bfd4en%40googlegroups.com > <https://groups.google.com/d/msgid/beancount/5b92826f-3fba-4f0f-a47a-c9c9d77bfd4en%40googlegroups.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 on the web visit https://groups.google.com/d/msgid/beancount/CACGEkZt8Rr%3DkgnL50UouomTP4_Xpq7%3DWgv%3DC7OfwXoLgHdqpPg%40mail.gmail.com.
