Inada Naoki <songofaca...@gmail.com> added the comment:
> > The difference between eval_str=True and eval_str=ONLY_IF_STRINGIZED: > > def foo(a:int, b:"howdy howdy"): ... > > inspect.get_annotations(foo, eval_str=True) throws an exception. > inspect.get_annotations(foo, eval_str=ONLY_IF_STRINGIZED) returns {'a': int, > b: 'howdy howdy'} > > Type hints have a convention that string annotations are a "forward > declaration" and should be eval()uated. Annotations don't have such a > convention--a string is a legal annotation, and is not required to be valid > Python. > For such use case, ONLY_IF_STRINGIZED thorows an exception for `def foo(a: "howdy howdy")` anyway. In such cases, they should use `eval_str=False`, or `eval_str=True` *and* `return_str_when_eval_failed=True` option. ---------- _______________________________________ 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