def METHOD_NAME(
    self, script, *, after=None, hold=False, pretend=False, flags=None, **kwargs
):
    r"""Submit a job script for execution to the scheduler.
    Parameters
    ----------
    script : str
        The job script submitted for execution.
    after : str
        Execute the submitted script after a job with this id has
        completed. (Default value = None)
    hold : bool
        Whether to hold the job upon submission. (Default value = False)
    pretend : bool
        If True, do not actually submit the script, but only simulate the
        submission. Can be used to test whether the submission would be
        successful. Please note: A successful "pretend" submission is not
        guaranteed to succeed. (Default value = False)
    flags : list
        Additional arguments to pass through to the scheduler submission
        command. (Default value = None)
    \*\*kwargs
        Additional keyword arguments (ignored).
    Returns
    -------
    bool
        True if the submission command succeeds (or in pretend mode).
    Raises
    ------
    :class:`~flow.errors.SubmitError`
        If the submission command fails.
    """
    if flags is None:
        flags = []
    elif isinstance(flags, str):
        flags = flags.split()
    submit_cmd = self.submit_cmd + flags
    if after is not None:
        submit_cmd.extend(["-w", '"done({})"'.format(after.split(".")[0])])
    if hold:
        submit_cmd += ["-H"]
    return _call_submit(submit_cmd, script, pretend)