def METHOD_NAME(self):
    """
    Handles logic for converting pydantic classes into valid argument strings.
    This should set arg standards for all integrations and should generally not
    be overridden. If the need to override comes up, consider updating this method
    instead.
    :return: string of the full CLI command
    """
    args_dict = self.run_args.dict()
    args_string_list = []
    for key, value in args_dict.items():
        key = "--" + key
        key = key.replace("_", "-") if self.dashed_keywords else key
        # Handles bool type args (e.g. --do-train)
        if isinstance(value, bool):
            if value:
                args_string_list.append(key)
        elif isinstance(value, List):
            if len(value) < 2:
                raise ValueError(
                    "List arguments must have more one entry. "
                    f"Received {key}:{value}"
                )
            # Handles args that are both bool and value based (see evolve in yolov5)
            if isinstance(value[0], bool):
                if value[0]:
                    args_string_list.extend([key, str(value[1])])
            # Handles args that have multiple values after the keyword.
            # e.g. --freeze-layers 0 10 15
            else:
                args_string_list.append(key)
                args_string_list.extend(map(str, value))
        # Handles the most straightforward case of keyword followed by value
        # e.g. --epochs 30
        else:
            if value is None:
                continue
            args_string_list.extend([key, str(value)])
    pre_args = self.pre_args.split(" ") if self.pre_args else []
    return pre_args + [self.command_stub] + args_string_list