code: def add_args_kwargs(func):
      
  
      @wraps(func)
      def wrapper(*args, **kwargs):
  
          props = argspec(func)
  
          # if 'args' not in props:
          if isinstance(props[1], type(None)):
  
              args = args[:len(props[0])]
  
          if ((not isinstance(props[2], type(None))) or
                  (not isinstance(props[3], type(None)))):
  
              return func(*args, **kwargs)
  
          else:
  
              return func(*args)
  
      return wrapper
docs: Add Args and Kwargs
  
      This wrapper adds support for additional arguments and keyword arguments to
      any callable function
  
      Parameters
      ----------
      func : function
          Callable function
  
      Returns
      -------
      function wrapper