[New-bugs-announce] [issue44414] from __future__ import annotations breaks profiler's handling of dataclasses
James Wilcox
report at bugs.python.org
Sun Jun 13 17:20:30 EDT 2021
New submission from James Wilcox <wilcoxjay at gmail.com>:
This program behaves differently when run under the profiler (either profile or cProfile) versus when run normally.
```
from __future__ import annotations # ***
import dataclasses
@dataclasses.dataclass
class C:
x: dataclasses.InitVar[int]
def __post_init__(self, x):
print(f'hello {x}')
C(0)
```
Save this as foo.py. Then
python foo.py
prints
hello 0
but
python -m profile foo.py
results in the traceback
```
Traceback (most recent call last):
File "/Users/jrw12/.pyenv/versions/3.9.5/lib/python3.9/runpy.py", line 197, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/Users/jrw12/.pyenv/versions/3.9.5/lib/python3.9/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/Users/jrw12/.pyenv/versions/3.9.5/lib/python3.9/profile.py", line 610, in <module>
main()
File "/Users/jrw12/.pyenv/versions/3.9.5/lib/python3.9/profile.py", line 599, in main
runctx(code, globs, None, options.outfile, options.sort)
File "/Users/jrw12/.pyenv/versions/3.9.5/lib/python3.9/profile.py", line 99, in runctx
return _Utils(Profile).runctx(statement, globals, locals, filename, sort)
File "/Users/jrw12/.pyenv/versions/3.9.5/lib/python3.9/profile.py", line 62, in runctx
prof.runctx(statement, globals, locals)
File "/Users/jrw12/.pyenv/versions/3.9.5/lib/python3.9/profile.py", line 422, in runctx
exec(cmd, globals, locals)
File "foo.py", line 11, in <module>
C(0)
File "<string>", line 4, in __init__
TypeError: __post_init__() missing 1 required positional argument: 'x'
```
A similar traceback occurs if using `-m cProfile` instead of `-m profile`.
No such traceback occurs if the `from future import __annotations__` is removed from the file.
Possibly related to #39442.
----------
components: Library (Lib)
messages: 395762
nosy: wilcoxjay
priority: normal
severity: normal
status: open
title: from __future__ import annotations breaks profiler's handling of dataclasses
type: behavior
versions: Python 3.9
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue44414>
_______________________________________
More information about the New-bugs-announce
mailing list