I haven't found any good Beancount v3 upgrade documentation, so I
start collecting some notes. Maybe this can be put into Google Docs
and improved upon.
# Changes in v3
* Several tools were split into separate projects:
* [beanquery](
https://github.com/beancount/beanquery/): lightweight SQL query tool.
* [beangulp](
https://github.com/beancount/beangulp): import framework for beancount. This is the evolution of beancount's `beancount.ingest`.
* [beancount2ledger](
https://github.com/beancount/beancount2ledger): converter from beancount to ledger.
* bean-report was deprecated in beancount v2 and has been removed in beancount v3.
* [beanquery](
https://github.com/beancount/beanquery/) is the preferred way to query beancount data.
* [Fava](
https://github.com/beancount/fava) is a web UI to interact with beancount journals.
* The beancount syntax has been made more flexible:
* Currencies
* Single-character currency names are now supported
* A leading slash is now allowed (e.g. `/FOO`)
* The limitation for currency names to be 24 characters long has been dropped
* Flags
* Any of the A-Z characters are now valid flags
# Notes about beancount tools
## beangulp
* beangulp is compatible with beancount v2 and v3
* The upgrade to beangulp requires a number of changes from beancount's `beancount.ingest` framework:
* bean-extract no longer exists as a standalone script. You can [convert your config file to a callable script](
https://github.com/beancount/beangulp/issues/127), as demonstrated in [import.py](
https://github.com/beancount/beangulp/blob/master/examples/import.py). Call with `--help` to see arguments.
* Importers have to migrate from the `beancount.ingest` namespace to the `beangulp` namespace
* Look at [beangulp examples](
https://github.com/beancount/beangulp/tree/master/examples) and [docstests](
https://github.com/beancount/beangulp/tree/master/beangulp/tests) for some examples
* Optionally, importers can be moved from the old `beangulp.ImporterProtocol` interface to the new `beangulp.Importer` interface, which allows to implement some new features.
## beanquery
* beanquery is compatible with beancount v2 and v3
* beanquery has a lot of improvements over the older bean-query in beancount v2. Documentation is being worked on (Daniele, is there something to link to; or "look at source code" for now?)
* The [query history moved](
https://github.com/beancount/beanquery/issues/207) from `~/.bean-shell-history` to `~/.config/beanquery/history`. If you want to preserve your query history, please move the file.
## Fava
* Fava is not compatible with beancount v3. This is [currently being worked on](
https://github.com/beancount/fava/pull/1859).
## beancount2ledger
* Currently not tested with v3.
# Upgrade considerations
* The beancount syntax has become more permissive rather than more restrictive, so no changes to beancount journals should be required.
* beangulp and beanquery are compatible with both v2 and v3, so you can migrate to these tools before switching to v3.
* There is no drop-in replacement for `bean-report`. Please migrate to beanquery and the BQL query language.
--
Martin Michlmayr
https://www.cyrius.com/