diff --git a/conservancy_beancount/reports/core.py b/conservancy_beancount/reports/core.py index 458f16faa920d633dc5d76b21f6bf8654d402351..c6023b9c2134a270d14b0b16b8cfaf9d24381bc0 100644 --- a/conservancy_beancount/reports/core.py +++ b/conservancy_beancount/reports/core.py @@ -113,7 +113,7 @@ class Balance(Mapping[str, data.Amount]): return self._all_amounts(operator.le, 0) def format(self, - fmt: str='#,#00.00 ¤¤', + fmt: Optional[str]='#,#00.00 ¤¤', sep: str=', ', empty: str="Zero balance", ) -> str: @@ -122,6 +122,9 @@ class Balance(Mapping[str, data.Amount]): If the balance is zero, returns ``empty``. Otherwise, returns a string with each amount in the balance formatted as ``fmt``, separated by ``sep``. + + If you set ``fmt`` to None, amounts will be formatted according to the + user's locale. The default format is Beancount's input format. """ amounts = [amount for amount in self.values() if amount.number] if not amounts: diff --git a/tests/test_reports_balance.py b/tests/test_reports_balance.py index 7913156940639c97d059d69c585b24c8fbfa7d4d..5855ba35049e5f59fb3f92d81db24a665282d081 100644 --- a/tests/test_reports_balance.py +++ b/tests/test_reports_balance.py @@ -22,6 +22,8 @@ import pytest from . import testutil +import babel.numbers + from conservancy_beancount.reports import core DEFAULT_STRINGS = [ @@ -191,6 +193,12 @@ def test_format_sep(sep): balance = core.Balance(amounts) assert balance.format(sep=sep) == expected +def test_format_none(): + amounts = testutil.balance_map(BRL=65000) + balance = core.Balance(amounts) + expected = babel.numbers.format_currency(65000, 'BRL') + assert balance.format(None) == expected + @pytest.mark.parametrize('empty', [ "N/A", "Zero",