A Python function has a code object __code__.
A sys.settrace trace frame has a f_code code object.
For those calls to the tracer that are functions, how can I get the function object (and its __annotation__ member)?
So far, by trial and error, I have:
if hasattr(frame.f_globals.get(frame.f_code.co_name),"__annotations__"):
This seems to work for functions, but not for class-member functions; worse, it confuses class-member functions with top-level functions of the same name.
(I'm on Python 3.2.3 (Xubuntu). I see that Python 3.3 inspect module has a signature function; will this return the annotation for a code object or does it too need a function object?)