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/

-- 
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 visit 
https://groups.google.com/d/msgid/beancount/20241027052507.GA144348%40panya.cyrius.com.

Reply via email to