Now it works.
This can flag cash accounts, but is now configurable to flag any
transaction what contains any of the listed accounts.
I still don't understand how this works, or what type an empty tag set
is.... (tagset or set()) | set((tagged,))
Sample header in journal file:
plugin "beancount.plugins.auto_accounts"
plugin "tagaccount" "{
'accounts': {
'Assets:Cash:RBS',
'Assets:Cash:MinisFloat',
'Assets:Cash:NatWest' },
'tag': 'cash'
}"
Code:
"""
For example, a possible configuration could be:
plugin "tagaccount`" "{
'accounts': {
'Assets:Cash:Bank',
'Assets:Cash:Float' },
'tag': 'CASH'
}"
"""
__author__ = 'Paul Hamshere'
from beancount.core import data
from beancount.core import account_types
__plugins__ = ['tagaccount']
def tagaccount(entries, options_map, config):
"""
Args:
entries: a list of entry instances
options_map: a dict of options parsed from the file
config: A configuration string, which is intended to be a Python dict
Returns:
A tuple of entries and errors.
"""
# Parse and extract configuration values.
config_obj = eval(config, {}, {})
if not isinstance(config_obj, dict):
raise RuntimeError("Invalid plugin configuration: should be a single
dict.")
accounts = config_obj.pop('accounts', {})
tagged = config_obj.pop('tag',{})
new_entries = []
for entry in entries:
if isinstance(entry, data.Transaction):
orig_entry = entry
for posting in entry.postings:
if (posting.account in accounts):
tagset = entry.tags
tagset = (tagset or set()) | set((tagged,))
entry = entry._replace(tags=tagset)
new_entries.append(entry)
return new_entries, []
Code completely adapted from the example plugin.
Regards
Paul
On Friday, 17 February 2017 19:12:41 UTC, [email protected] wrote:
> Oops my error should have put
>
> entries = entries._replace.....
>
> Paul
>
>
--
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 post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/beancount/68c72034-53d7-4f1c-91f2-3a66ec32aaab%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.