# This file was auto generated by Styx.
# Do not edit this file directly.

import typing
import pathlib
from styxdefs import *
import dataclasses

PNGAPPEND_METADATA = Metadata(
    id="4411b6d37915e58f561527f34913fc3b997e325e.boutiques",
    name="pngappend",
    package="fsl",
    container_image_tag="mcin/fsl:6.0.5",
)


class PngappendOutputs(typing.NamedTuple):
    """
    Output object returned when calling `pngappend(...)`.
    """
    root: OutputPathType
    """Output root folder. This is the root folder for all outputs."""


def pngappend(
    input_files_and_options: list[str],
    output_file: InputPathType,
    runner: Runner | None = None,
) -> PngappendOutputs:
    """
    Append PNG files horizontally and/or vertically into a new PNG (or GIF) file.
    
    Author: Unknown
    
    Args:
        input_files_and_options: List of input files and options for appending\
            (e.g., file1.png +3 file2.png -2 file3.png).
        output_file: Output file (e.g., output.png or output.gif).
        runner: Command runner.
    Returns:
        NamedTuple of outputs (described in `PngappendOutputs`).
    """
    runner = runner or get_global_runner()
    execution = runner.start_execution(PNGAPPEND_METADATA)
    cargs = []
    cargs.append("pngappend")
    cargs.extend(input_files_and_options)
    cargs.append(execution.input_file(output_file))
    ret = PngappendOutputs(
        root=execution.output_file("."),
    )
    execution.run(cargs)
    return ret


__all__ = [
    "PNGAPPEND_METADATA",
    "PngappendOutputs",
    "pngappend",
]
