entry.tags is supposed to be a set. If not set, an empty set. I reuse a constant in the codebase (see EMPTY_SET).
TBH I'm not 100% sure what your question is. On Sat, Feb 18, 2017 at 5:04 AM, <stalbansrfctreasu...@gmail.com> wrote: > 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, p.w.ha...@gmail.com 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 beancount+unsubscr...@googlegroups.com. > To post to this group, send email to beancount@googlegroups.com. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/beancount/68c72034-53d7-4f1c-91f2-3a66ec32aaab%40googlegroups.com > <https://groups.google.com/d/msgid/beancount/68c72034-53d7-4f1c-91f2-3a66ec32aaab%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- 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 post to this group, send email to beancount@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/CAK21%2BhMKO4mZus_9u1F_svSBc_PV2-oNeW5e4u%2BnGTW%2BjypcAA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.