Title: from __future__ import annotations breaks profiler's handling of dataclasses
Type: behavior Stage:
Components: Library (Lib) Versions: Python 3.9
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: Jelle Zijlstra, wilcoxjay
Priority: normal Keywords:

Created on 2021-06-13 21:20 by wilcoxjay, last changed 2021-06-14 04:51 by Jelle Zijlstra.

Messages (1)
msg395762 - (view) Author: James Wilcox (wilcoxjay) Date: 2021-06-13 21:20
This program behaves differently when run under the profiler (either profile or cProfile) versus when run normally.

from __future__ import annotations  # ***
import dataclasses

class C:
    x: dataclasses.InitVar[int]

    def __post_init__(self, x):
        print(f'hello {x}')


Save this as Then



    hello 0


    python -m profile

results in the traceback

Traceback (most recent call last):
  File "/Users/jrw12/.pyenv/versions/3.9.5/lib/python3.9/", 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/", line 87, in _run_code
    exec(code, run_globals)
  File "/Users/jrw12/.pyenv/versions/3.9.5/lib/python3.9/", line 610, in <module>
  File "/Users/jrw12/.pyenv/versions/3.9.5/lib/python3.9/", line 599, in main
    runctx(code, globs, None, options.outfile, options.sort)
  File "/Users/jrw12/.pyenv/versions/3.9.5/lib/python3.9/", line 99, in runctx
    return _Utils(Profile).runctx(statement, globals, locals, filename, sort)
  File "/Users/jrw12/.pyenv/versions/3.9.5/lib/python3.9/", line 62, in runctx
    prof.runctx(statement, globals, locals)
  File "/Users/jrw12/.pyenv/versions/3.9.5/lib/python3.9/", line 422, in runctx
    exec(cmd, globals, locals)
  File "", line 11, in <module>
  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.
Date User Action Args
2021-06-14 04:51:07Jelle Zijlstrasetnosy: + Jelle Zijlstra
2021-06-13 21:20:30wilcoxjaycreate