code: def _make_args(args_list, session, fw_props):
      
      args = []
      kwargs = {}
  
      for arg_token in args_list:
          idx = _find_assignment(arg_token)
          if idx != -1:
              # Assignment
              key = arg_token[:idx]
              value = arg_token[idx + 1 :]
              kwargs[key] = value
          else:
              # Direct argument
              args.append(arg_token)
  
      # Prepare the dictionary of variables
      variables = collections.defaultdict(str)
      variables.update(fw_props)
      variables.update(session.variables)
  
      # Replace variables
      args = [_ArgTemplate(arg).safe_substitute(variables) for arg in args]
      kwargs = {
          key: _ArgTemplate(value).safe_substitute(variables)
          for key, value in kwargs.items()
      }
      return args, kwargs
docs: Converts the given list of arguments into a list (args) and a
      dictionary (kwargs).
      All arguments with an assignment are put into kwargs, others in args.
  
      :param args_list: The list of arguments to be treated
      :param session: The current shell session
      :return: The (arg_token, kwargs) tuple.