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.

Reply via email to