code: def keyword_only(func):
      
      @wraps(func)
      def wrapper(self, *args, **kwargs):
          if len(args) > 0:
              raise TypeError("Method %s forces keyword arguments." % func.__name__)
          self._input_kwargs = kwargs
          return func(self, **kwargs)
      return wrapper
docs: A decorator that forces keyword arguments in the wrapped method
      and saves actual input keyword arguments in `_input_kwargs`.
  
      .. note:: Should only be used to wrap a method where first arg is `self`