Changeset - 7cd569be7b52
[Not reviewed]
0 3 0
Brett Smith - 4 years ago 2020-03-19 14:23:55
brettcsmith@brettcsmith.org
data.Account: Add is_income method.
3 files changed with 17 insertions and 1 deletions:
0 comments (0 inline, 0 general)
conservancy_beancount/data.py
Show inline comments
...
 
@@ -35,6 +35,9 @@ from .beancount_types import (
 
class Account(str):
 
    SEP = bc_account.sep
 

	
 
    def is_income(self) -> bool:
 
        return self.is_under('Income:', 'UnearnedIncome:') is not None
 

	
 
    def is_real_asset(self) -> bool:
 
        return bool(
 
            self.is_under('Assets:')
conservancy_beancount/plugin/meta_income_type.py
Show inline comments
...
 
@@ -43,7 +43,7 @@ class MetaIncomeType(core._NormalizePostingMetadataHook):
 
    }
 

	
 
    def _run_on_post(self, txn: Transaction, post: data.Posting) -> bool:
 
        return post.account.is_under('Income:', 'UnearnedIncome:') is not None
 
        return post.account.is_income()
 

	
 
    def _default_value(self, txn: Transaction, post: data.Posting) -> MetaValueEnum:
 
        try:
tests/test_data_account.py
Show inline comments
...
 
@@ -45,6 +45,19 @@ def test_is_under_multi_arg(acct_name, expected):
 
        expected += ':'
 
    assert data.Account(acct_name).is_under('Income:', 'UnearnedIncome:') == expected
 

	
 
@pytest.mark.parametrize('acct_name,expected', [
 
    ('Accrued:AccountsReceivable', False),
 
    ('Assets:Cash', False),
 
    ('Expenses:General', False),
 
    ('Income:Donations', True),
 
    ('Income:Sales', True),
 
    ('Income:Other', True),
 
    ('Liabilities:CreditCard', False),
 
    ('UnearnedIncome:MatchPledges', True),
 
])
 
def test_is_income(acct_name, expected):
 
    assert data.Account(acct_name).is_income() == expected
 

	
 
@pytest.mark.parametrize('acct_name,expected', [
 
    ('Accrued:AccountsPayable', False),
 
    ('Accrued:AccountsReceivable', False),
0 comments (0 inline, 0 general)