code: def takes_kwargs(obj) -> bool:
      
      if inspect.isclass(obj):
          signature = inspect.signature(obj.__init__)
      elif inspect.ismethod(obj) or inspect.isfunction(obj):
          signature = inspect.signature(obj)
      else:
          raise ConfigurationError(f"object {obj} is not callable")
      return bool(any([p.kind == inspect.Parameter.VAR_KEYWORD  # type: ignore
                       for p in signature.parameters.values()]))
docs: Checks whether a provided object takes in any positional arguments.
      Similar to takes_arg, we do this for both the __init__ function of
      the class or a function / method
      Otherwise, we raise an error