Skip to content

CLI

pd2af.cli

The pd2af command-line interface.

Functions:

Name Description
main

Parse argv (sys.argv by default) and run the named subcommand.

main

main(argv: list[str] | None = None) -> None

Parse argv (sys.argv by default) and run the named subcommand.

Expected input, compatibility and file-access failures are reported as a short message on stderr with a nonzero exit status; any other exception keeps its traceback, and library callers of :func:pd2af.transform still see the exception itself.

Source code in src/pd2af/cli.py
def main(argv: list[str] | None = None) -> None:
    """Parse ``argv`` (``sys.argv`` by default) and run the named subcommand.

    Expected input, compatibility and file-access failures are reported as a
    short message on stderr with a nonzero exit status; any other exception
    keeps its traceback, and library callers of :func:`pd2af.transform` still
    see the exception itself.
    """
    if argv is None:
        argv = sys.argv[1:]
    else:
        argv = list(argv)
    parser = argparse.ArgumentParser(
        prog="pd2af",
        description=(
            "Transform a process-description map (CellDesigner or SBGN-PD) "
            "into an activity-flow map."
        ),
    )
    parser.add_argument(
        "--version",
        action="version",
        version=importlib.metadata.version("pd2af"),
    )
    subparsers = parser.add_subparsers(dest="command", required=True)
    _add_transform_parser(subparsers)
    _add_list_modes_parser(subparsers)
    _add_list_groups_parser(subparsers)
    # Default to the transform subcommand when the first token isn't a known
    # subcommand or a help flag, so `pd2af map.xml` works like
    # `pd2af transform map.xml`.
    if not argv or (
        argv[0] not in subparsers.choices
        and argv[0] not in ("-h", "--help", "--version")
    ):
        argv = ["transform", *argv]
    args = parser.parse_args(argv)
    try:
        args.func(args)
    except (ValueError, OSError) as error:
        print(f"error: {error}", file=sys.stderr)
        sys.exit(1)