docs: def make_context_aware(func, numargs):
      """
      Check if given function has no more arguments than given. If so, wrap it
      into another function that takes extra argument and drops it.
      Used to support user providing callback functions that are not context aware.
      """
      try:
          if inspect.ismethod(func):
              arg_count = len(inspect.getargspec(func).args) - 1
          elif inspect.isfunction(func):
              arg_count = len(inspect.getargspec(func).args)
          elif inspect.isclass(func):
              arg_count = len(inspect.getargspec(func.__init__).args) - 1
          else:
              arg_count = len(inspect.getargspec(func.__call__).args) - 1
      except TypeError:
          arg_count = numargs
  
      if arg_count <= numargs:
          def normalized(*args):
              return func(*args[:-1])
  
          return normalized
  
      return func