Ned Batchelder <[email protected]> added the comment:
This is the --trace output for some stacked decorators:
$ cat -n /tmp/decdec.py
1 def decorator1(f):
2 return f
3
4 def decorator2(f):
5 return f
6
7 def decorator3(f):
8 return f
9
10 @decorator1
11 @decorator2
12 @decorator3
13 def func():
14 print("hello")
15
16 func()
$ python3.7 -m trace --trace /tmp/decdec.py
--- modulename: decdec, funcname: <module>
decdec.py(1): def decorator1(f):
decdec.py(4): def decorator2(f):
decdec.py(7): def decorator3(f):
decdec.py(10): @decorator1
decdec.py(11): @decorator2
decdec.py(12): @decorator3
--- modulename: decdec, funcname: decorator3
decdec.py(8): return f
--- modulename: decdec, funcname: decorator2
decdec.py(5): return f
--- modulename: decdec, funcname: decorator1
decdec.py(2): return f
decdec.py(16): func()
--- modulename: decdec, funcname: func
decdec.py(14): print("hello")
hello
$ python3.8 -m trace --trace /tmp/decdec.py
--- modulename: decdec, funcname: <module>
decdec.py(1): def decorator1(f):
decdec.py(4): def decorator2(f):
decdec.py(7): def decorator3(f):
decdec.py(10): @decorator1
decdec.py(11): @decorator2
decdec.py(12): @decorator3
decdec.py(10): @decorator1
--- modulename: decdec, funcname: decorator3
decdec.py(8): return f
--- modulename: decdec, funcname: decorator2
decdec.py(5): return f
--- modulename: decdec, funcname: decorator1
decdec.py(2): return f
decdec.py(16): func()
--- modulename: decdec, funcname: func
decdec.py(14): print("hello")
hello
In Python3.8, "@decorator1" appears twice, as both the first and the last
decorator line traced. There's no conceptual reason to show that line twice.
I'd like to consider the stacked decorator case separately from the multi-line
function call case. Yes, they are consequences of the same change. One change
can have good effects and bad effects. We can do further work to eliminate the
bad effects.
----------
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue34876>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com