Attention: A few things merged to 'default' this week change (simplify) the
API and may also require you to make changes to your input file.
2015-07-12
- Changed how web & report rendering code renders numbers so that it uses
the
DisplayContext inferred from the numbers in the input file. Numbers in
the
reports were previously using the default precision and that led to all
sorts of inconsistencies. The numbers are now rendered using the most
common
precision which has been seen in the input files. (This work had been
planned for a while, as part of converting everything to use the
DisplayContext. Next up will be converting the shell's rendering
routines.)
2015-07-11
- WARNING: API CHANGES AHEAD. If you wrote plugins, you will need to
remove
the 'entry' parameter to constructors of Posting().
I removed the Posting.entry back-reference of Postings to their owning
Transaction objects. This makes programmatically creating our data
structures much more straight-forward and avoids us having to run
pirouettes
around which object to create first. It also removes all manners of
"fixing
up" transactions and removes one ultimatley unnecessary degree of
freedom
from plugins outputs: we don't have to check that the plugins generate
objects with correct back-references. It also makes the documentation
simpler: I won't have to explain backreferences and how to deal with
them.
Finally, it avoids the circular reference which could potentially make
Python's GC do some work for no other reason.
This happened because it occurred to me that the only really important
place
where back-references were used were in the beancount.core.realization
code,
and that in the RealAccount objects I could easily replace the Posting
instances in lists of "postings or entries" into a new tuple object
"TxnPosting" that contains a reference to the parent transaction and a
reference to the posting. This voids the need for a back-reference, and
makes the API really straightforward.
- WARNING: USER-LEVEL CHANGES FOLLOW. I repatriated the following optional
plugins to the beancount.plugins package, so that all the plugins are
in the
same place:
beancount.ops.auto_accounts -> beancount.plugins.auto_accounts
beancount.ops.implicit_prices -> beancount.plugins.implicit_prices
This is so that the "beancount.ops" package contains only plugins run by
default (non-optional), and so that the "beancount.plugins" only
contains
optional plugins the user must provide.
In doing so, I also made the "implicit_prices" plugin NOT INCLUDED BY
DEFAULT. This plugin creates automatically Price directives for all
Postings
which have a @ <price> annotation, thus feeding those prices into the
price
database. If you want to keep this behaviour -- and you probably should
--
you need to add the following in your input file:
plugin "beancount.plugins.implicit_prices"
(I'm considering moving move of the default plugins to be optional, in
particular, beancount.ops.documents, not sure yet.)
Changes prior to that are here:
https://bitbucket.org/blais/beancount/src/tip/CHANGES?at=default
--
---
You received this message because you are subscribed to the Google Groups
"Ledger" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.