Reflection
**********

PyObject *PyEval_GetBuiltins(void)
    *Return value: Borrowed reference.** Part of the Stable ABI.*

   Return a dictionary of the builtins in the current execution frame,
   or the interpreter of the thread state if no frame is currently
   executing.

PyObject *PyEval_GetLocals(void)
    *Return value: Borrowed reference.** Part of the Stable ABI.*

   Return a dictionary of the local variables in the current execution
   frame, or "NULL" if no frame is currently executing.

PyObject *PyEval_GetGlobals(void)
    *Return value: Borrowed reference.** Part of the Stable ABI.*

   Return a dictionary of the global variables in the current
   execution frame, or "NULL" if no frame is currently executing.

PyFrameObject *PyEval_GetFrame(void)
    *Return value: Borrowed reference.** Part of the Stable ABI.*

   Return the current thread state’s frame, which is "NULL" if no
   frame is currently executing.

   See also "PyThreadState_GetFrame()".

const char *PyEval_GetFuncName(PyObject *func)
    * Part of the Stable ABI.*

   Return the name of *func* if it is a function, class or instance
   object, else the name of *func*s type.

const char *PyEval_GetFuncDesc(PyObject *func)
    * Part of the Stable ABI.*

   Return a description string, depending on the type of *func*.
   Return values include “()” for functions and methods, “
   constructor”, “ instance”, and “ object”.  Concatenated with the
   result of "PyEval_GetFuncName()", the result will be a description
   of *func*.
