docs: def _prepare_errcheck():
      """
      This function sets the errcheck attribute of all ctypes wrapped functions
      to evaluate the _exc_info_from_callback global variable and re-raise any
      exceptions that might have been raised in callbacks.
      It also modifies all callback types to automatically wrap the function
      using the _callback_exception_decorator.
      """
      def errcheck(result, *args):
          global _exc_info_from_callback
          if _exc_info_from_callback is not None:
              exc = _exc_info_from_callback
              _exc_info_from_callback = None
              _reraise(exc[1], exc[2])
          return result
  
      for symbol in dir(_glfw):
          if symbol.startswith('glfw'):
              getattr(_glfw, symbol).errcheck = errcheck
  
      _globals = globals()
      for symbol in _globals:
          if symbol.startswith('_GLFW') and symbol.endswith('fun'):
              def wrapper_cfunctype(func, cfunctype=_globals[symbol]):
                  return cfunctype(_callback_exception_decorator(func))
              _globals[symbol] = wrapper_cfunctype