code: def iscomplete(self, atype=None, avalue=None):
          
          if self.variable_args_nb:
              return False
          if self.required_args == -1:
              self.required_args = 0
              for arg in self.args_definition:
                  if arg.get("required", False):
                      self.required_args += 1
          return (
              (not self.curarg or
               "extra_arg" not in self.curarg or
               ("valid_for" in self.curarg["extra_arg"] and
                atype and atype in self.curarg["extra_arg"]["type"] and
                avalue not in self.curarg["extra_arg"]["valid_for"])) and
              (self.rargs_cnt == self.required_args)
          )
docs: Check if the command is complete
  
          Check if all required arguments have been encountered. For
          commands that allow an undefined number of arguments, this
          method always returns False.
  
          :return: True if command is complete, False otherwise