[Python-Dev] Postponed annotations break inspection of dataclasses
Raymond Hettinger
raymond.hettinger at gmail.com
Mon Sep 24 02:23:47 EDT 2018
> On Sep 22, 2018, at 1:38 PM, Yury Selivanov <yselivanov.ml at gmail.com> wrote:
>
> On Sat, Sep 22, 2018 at 3:11 PM Guido van Rossum <guido at python.org> wrote:
> [..]
>> Still, I wonder if there's a tweak possible of the globals and locals used when exec()'ing the function definitions in dataclasses.py, so that get_type_hints() gets the right globals for this use case.
>>
>> It's really tough to be at the intersection of three PEPs...
>
> If it's possible to fix exec() to accept any Mapping (not just dicts),
> then we can create a proxy mapping for "Dataclass.__init__.__module__"
> module and everything would work as expected
FWIW, the locals() dict for exec() already accepts any mapping (not just dicts):
>>> class M:
def __getitem__(self, key):
return key.upper()
def __setitem__(self, key, value):
print(f'{key!r}: {value!r}')
>>> exec('a=b', globals(), M())
'a': 'B'
Raymond
More information about the Python-Dev
mailing list