Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

exception in any query using get_account_sort_key when localizing account names #754

Open
azrdev opened this issue Apr 8, 2023 · 2 comments

Comments

@azrdev
Copy link

azrdev commented Apr 8, 2023

I noticed the "holdings" tab in my fava only shows me the exception quoted below, clicking on "Query" and boiling down a minimal working example blames get_account_sort_key in conjunction with renamed (top-level) accounts.

exception:

$ bean-query mwe.beancount 'SELECT account, account_sortkey(account) '
Traceback (most recent call last):
  File "/usr/lib/python3.10/cmd.py", line 214, in onecmd
    func = getattr(self, 'do_' + cmd)
AttributeError: 'BQLShell' object has no attribute 'do_SELECT'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.10/site-packages/beancount/query/shell.py", line 271, in run_parser
    self.dispatch(statement)
  File "/usr/lib/python3.10/site-packages/beancount/query/shell.py", line 251, in dispatch
    return method(statement)
  File "/usr/lib/python3.10/site-packages/beancount/query/shell.py", line 416, in on_Select
    rtypes, rrows = query_execute.execute_query(c_query,
  File "/usr/lib/python3.10/site-packages/beancount/query/query_execute.py", line 282, in execute_query
    values = [c_expr(context) for c_expr in c_target_exprs]
  File "/usr/lib/python3.10/site-packages/beancount/query/query_execute.py", line 282, in <listcomp>
    values = [c_expr(context) for c_expr in c_target_exprs]
  File "/usr/lib/python3.10/site-packages/beancount/query/query_env.py", line 421, in __call__
    index, name = account_types.get_account_sort_key(context.account_types, args[0])
  File "/usr/lib/python3.10/site-packages/beancount/core/account_types.py", line 46, in get_account_sort_key
    return (account_types.index(get_account_type(account_name)), account_name)
ValueError: tuple.index(x): x not in tuple

MWE:

option "title" "MWE"
option "operating_currency" "EUR"
1992-01-01 custom "fava-option" "language" "de"

* Bilanzkonten
option "name_assets" "Aktiva"
option "name_liabilities" "Verbindlichkeiten"
option "name_equity" "Passiva:Eigenkapital"
option "account_previous_balances" "Passiva:Eigenkapital:Eröffnungssaldo"
option "account_current_earnings" "Gewinn"  ; net income
option "account_previous_earnings" "Rücklagen"  ; retained earnings
* Erfolgskonten
option "name_income" "EK:Einnahmen"
option "name_expenses" "EK:Ausgaben"

1992-01-01 open Passiva:Eigenkapital:Eröffnungssaldo
1992-01-01 open Aktiva:Giro

2000-01-01 * ""
  Aktiva:Giro  1000 EUR
  Passiva:Eigenkapital:Eröffnungssaldo
@dnicolodi
Copy link
Collaborator

The issue is not the renamed root accounts, but the fact that the account names assigned to the root accounts are leaf accounts. Namely, these options are invalid:

option "name_equity" "Passiva:Eigenkapital"
option "name_income" "EK:Einnahmen"
option "name_expenses" "EK:Ausgaben"

There cannot be an account name separator : in the names of these accounts. It seems that the validator for these options does not catch this error.

@blais
Copy link
Member

blais commented Apr 8, 2023

+1
We should probably detect that and issue an appropriate error.
(Keep this ticket open until we do)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants