Guido van Rossum <gu...@python.org> added the comment:
When PEP 585 was discussed and implemented we did not expect people to care as much about runtime types as they did. I already explained that making list['Node'] incorporate a ForwardRef instance is unrealistic (we'd have to reimplement ForwardRef in C first). It might be possible to change get_type_hints() to recognize strings, and deprecate ForwardRef altogether. But I suspect that that would break something else, since ForwardRef is documented (I had intended it to remain an internal detail but somehow it got exposed, I don't recall why). Please stop asking why the decision was made (it sounds rather passive-aggressive to me) and start explaining the problem you are having in a way that we can actually start thinking about a solution. I have boiled down the original example to a slightly simpler one (dataclasses are a red herring): >>> from typing import get_type_hints, List >>> class N: ... c1: list["N"] ... c2: List["N"] ... >>> N.__annotations__ {'c1': list['N'], 'c2': typing.List[ForwardRef('N')]} >>> get_type_hints(N) {'c1': list['N'], 'c2': typing.List[__main__.N]} The key problem here is that the annotation list['N'] is not expanded to list[N]. What can we do to make get_type_hint() produce list[N] instead here? ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue41370> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com