data: Make Account.iter_accounts() argument optional.
This commit is contained in:
		
							parent
							
								
									6f1d01a3d4
								
							
						
					
					
						commit
						aaa26e9e61
					
				
					 2 changed files with 8 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -220,16 +220,19 @@ class Account(str):
 | 
			
		|||
                yield account
 | 
			
		||||
 | 
			
		||||
    @classmethod
 | 
			
		||||
    def iter_accounts(cls, s: str) -> Iterator['Account']:
 | 
			
		||||
    def iter_accounts(cls, s: Optional[str]=None) -> Iterator['Account']:
 | 
			
		||||
        """Iterate account objects by name or classification
 | 
			
		||||
 | 
			
		||||
        With no argument, returns an iterator of all known account names.
 | 
			
		||||
        If you pass in a root account name, or a valid account string, returns
 | 
			
		||||
        an iterator of all accounts under that account in the hierarchy.
 | 
			
		||||
        Otherwise, returns an iterator of all accounts with the given
 | 
			
		||||
        ``classification`` metadata.
 | 
			
		||||
        """
 | 
			
		||||
        if s is None:
 | 
			
		||||
            return (cls(acct) for acct in cls._meta_map)
 | 
			
		||||
        # We append a stub subaccount to match root accounts.
 | 
			
		||||
        if cls.is_account(f'{s}:Test'):
 | 
			
		||||
        elif cls.is_account(f'{s}:RootsOK'):
 | 
			
		||||
            return cls.iter_accounts_by_hierarchy(s)
 | 
			
		||||
        else:
 | 
			
		||||
            return cls.iter_accounts_by_classification(s)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -444,6 +444,8 @@ def test_iter_accounts_by_classification(asset_hierarchy, arg, expect_subaccts):
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
@pytest.mark.parametrize('arg,expect_subaccts', [
 | 
			
		||||
    (None, ['Bank:CD', 'Bank:Checking', 'Bank:Savings', 'Cash',
 | 
			
		||||
            'Investment:Commodities', 'Investment:Stocks']),
 | 
			
		||||
    ('Assets', ['Bank:CD', 'Bank:Checking', 'Bank:Savings', 'Cash',
 | 
			
		||||
                'Investment:Commodities', 'Investment:Stocks']),
 | 
			
		||||
    ('Assets:Bank', ['CD', 'Checking', 'Savings']),
 | 
			
		||||
| 
						 | 
				
			
			@ -454,7 +456,7 @@ def test_iter_accounts_by_classification(asset_hierarchy, arg, expect_subaccts):
 | 
			
		|||
    ('Unused classification', []),
 | 
			
		||||
])
 | 
			
		||||
def test_iter_accounts(asset_hierarchy, arg, expect_subaccts):
 | 
			
		||||
    if arg.startswith('Assets'):
 | 
			
		||||
    if arg and arg.startswith('Assets'):
 | 
			
		||||
        prefix = arg
 | 
			
		||||
    else:
 | 
			
		||||
        prefix = 'Assets'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue