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


--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to