Larry Hastings <la...@hastings.org> added the comment:

I think it gets a little murkier when we talk about *annotations* vs *type 
hints*.  Type hints have a defined meaning for a string: a string is a sort of 
forward declaration, and you eval() the string to get the real value.  (Or, 
not, if you're comfortable working with the stringized version of the type 
hint.)  So typing.get_type_hints() calls eval() on *every* annotation value of 
type str.

But inspect.get_annotations() can't be so opinionated.  If the user entered a 
string as their annotation, it should assume they want the string to show up in 
the annotations dict.  This is why I'm trying to be so smart with the 
"eval_str" default value heuristic.

The text in the docs about a "future version of Python" is pursuant to my vague 
"PEP 1212" idea, which would let get_annotations() determine or not whether the 
annotations were stringized by the compiler.  Or whatever we wind up deciding 
to do for Python 3.11--which, as you say, will hopefully disambiguate this 
question.

p.s. assuming you meant PEP 563, not PEP 573.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue43817>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to