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.

Reply via email to