Fixed (in v2). https://github.com/beancount/beancount/commit/628acbfa42d6c0f3b2cd47bd0eae44b4f8b4b0db
On Sun, Dec 13, 2020 at 6:45 PM Martin Blais <[email protected]> wrote: > That's indeed not consistent behavior and ought to be fixed. > I filed a ticket to look into it, ideally we'd want to get the same > behavior. > https://github.com/beancount/beancount/issues/588 > > > > On Tue, Dec 8, 2020 at 8:55 PM James Cook <[email protected]> wrote: > >> I've noticed that sometimes when plugin code triggers a runtime error, I >> don't get a stack trace. Here's a made-up minimal-ish example: >> >> from beancount.core import amount, data, number >> __plugins__ = ("foo",) >> def foo(entries, _options): >> return [data.Transaction( >> flag = "*", >> payee = None, >> narration = "", >> tags = "", >> links = set(), >> postings = [data.Posting("Equity:Foo", >> amount.Amount(number.D("10"), "CAD") + "X", None, None, None, None)] >> )], () >> >> If I run bean-check on a file that imports that plugin, I just get this >> output: >> >> falsifian angel beancount $ PYTHONPATH=./plugins bean-check >> main.beancount >> <load>:0: Error importing "foo": can only concatenate tuple (not >> "str") to tuple >> >> On the other hand, if I replace the body of foo() with 'raise >> BaseException("error")', I get a nice stack trace: >> >> falsifian angel beancount $ PYTHONPATH=./plugins bean-check >> main.beancount >> Traceback (most recent call last): >> File "/home/falsifian/.local/bin/bean-check", line 11, in <module> >> load_entry_point('beancount==2.3.3', 'console_scripts', >> 'bean-check')() >> File >> "/home/falsifian/.local/lib/python3.8/site-packages/beancount/scripts/check.py", >> line 49, in main >> entries, errors, _ = loader.load_file( >> File >> "/home/falsifian/.local/lib/python3.8/site-packages/beancount/loader.py", >> line 89, in load_file >> entries, errors, options_map = _load_file( >> File >> "/home/falsifian/.local/lib/python3.8/site-packages/beancount/loader.py", >> line 214, in wrapped >> result = function(toplevel_filename, *args, **kw) >> File >> "/home/falsifian/.local/lib/python3.8/site-packages/beancount/loader.py", >> line 255, in _uncached_loa >> d_file >> return _load([(filename, True)], *args, **kw) >> File >> "/home/falsifian/.local/lib/python3.8/site-packages/beancount/loader.py", >> line 510, in _load >> entries, errors = run_transformations(entries, parse_errors, >> options_map, >> File >> "/home/falsifian/.local/lib/python3.8/site-packages/beancount/loader.py", >> line 588, in run_transform >> ations >> entries, plugin_errors = callback(entries, options_map) >> File >> "/home/falsifian/w/colin_and_james/accounting/beancount/plugins/foo.py", >> line 4, in foo >> raise BaseException("error") >> BaseException: error >> >> Why does that happen? Is there a way I can get a stack trace more >> consistently? It would help me debug. >> >> James >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Beancount" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/beancount/CAHpmPODhKOoEiPOLoMcMCWKyjF9BJjzVECZegXbhMn7SmCEu4Q%40mail.gmail.com >> <https://groups.google.com/d/msgid/beancount/CAHpmPODhKOoEiPOLoMcMCWKyjF9BJjzVECZegXbhMn7SmCEu4Q%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> > -- You received this message because you are subscribed to the Google Groups "Beancount" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/CAK21%2BhOHUguWyx%2BGsuApp2MJVGHrVSWZBru0BfA2CPUhG8m2rA%40mail.gmail.com.
