Correct traceback for multiline chain of method calling

Peter Otten __peter__ at web.de
Sat Jul 10 03:20:08 EDT 2021


On 09/07/2021 17:29, Артем Комендантян wrote:
> Hello!
>> There is a code https://pastebin.com/0NLsHuLa.
> It has a multiline chain of method calling, when some method fails. In
> python3.7 it fails in a row which corresponds to the failing method, in
> python3.9 it corresponds to the very first line.
>> Another similar example is https://pastebin.com/2P9snnMn
> The error is on the first line for older pythons too.
>> I propose to have a line with the method name in traceback if this method
> fails.
>> I develop some library when it is very popular among users to declare some
> operations with such multiline chains. Also I want to keep correct
> traceback for each operation because the first line is not very informative
> when some method occurred more than once in this chain.
>> Can this improvement be done? Maybe anybody has any other suggestions on
> how to get the correct line in traceback right now?

If I understand you correctly there's hope; the upcoming Python 3.10 
will show the failing method call:
Python 3.10.0b3 (tags/v3.10.0b3:865714a, Jun 17 2021, 20:19:11) [MSC 
v.1929 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
class A:
 def chain(self): return self
 def fail(self): 1/0
(A()
 .chain()
 .chain()
 .fail()
 .chain()
 )
Traceback (most recent call last):
 File "<pyshell#9>", line 4, in <module>
 .fail()
 File "<pyshell#3>", line 3, in fail
 def fail(self): 1/0
ZeroDivisionError: division by zero


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /