Moved plugins to their own repo

This commit is contained in:
David Duran Rosich
2026-07-19 12:24:59 +02:00
commit a864345529
5 changed files with 526 additions and 0 deletions

41
optional_balance.py Normal file
View File

@@ -0,0 +1,41 @@
#!/usr/bin/env python3
from beancount.core import data
from beancount.core import account
from beancount.core import getters
from beancount.core import amount
from beancount.core import account_types
from beancount.core import realization
from beancount.core.number import D
from beancount.parser import options
import re
__plugins__ = ('optional_balance_plugin',)
def optional_balance_plugin(entries, options_map, config):
try:
match_enabled = re.compile(config)
except Exception as e:
print(f"exception {e}")
return entries, [e]
errors = []
new_entries = []
for entry in entries:
if isinstance(entry, data.Custom):
if entry.type == "optional-balance":
try:
assert(len(entry.values) == 4)
type, acc, units, curr = entry.values
if not match_enabled.match(type.value):
continue
v = amount.Amount(number=D(units.value), currency=curr.value)
entry = data.Balance(meta=entry.meta, date=entry.date, account=acc.value, amount=v, tolerance=None, diff_amount=None)
except Exception as e:
print(f"exception {e}")
errors.append(e)
new_entries.append(entry)
return new_entries, errors