On 10/21/21 5:42 PM, Damian Shaw wrote:
Sorry for the naive question but why doesn't "TYPE_CHECKING" work under PEP 649?

I think I've seen others mention this but as the code object isn't executed until inspected then if you are just using annotations for type hints it should work fine?

Yes, it works fine in that case.


Is the use case wanting to use annotations for type hints and real time inspection but you also don't want to import the objects at run time?

If that's really such a strong use cause couldn't PEP 649 be modified to return a repr of the code object when it gets a NameError? Either by attaching it to the NameError exception or as part of a ForwardRef style object if that's how PEP 649 ends up getting implemented?

That's the use case.

Your proposal is one of several suggesting that type annotations are special enough to break the rules.  I don't like this idea.  But you'll be pleased to know there are a lot of folks in the "suppress the NameError" faction, including Guido (IIUC).

See also this PR against co_annotations, proposing returning a new AnnotationName object when evaluating the annotations raises a NameError.

https://github.com/larryhastings/co_annotations/pull/3


Cheers,


/arry