from datmo.core.util.i18n import get as __
from datmo.cli.driver.parser import Parser
[docs]def get_datmo_parser():
parser = Parser(prog="datmo")
subparsers = parser.add_subparsers(title="commands", dest="command")
# Project
init_parser = subparsers.add_parser("init", help="initialize project")
init_parser.add_argument("--name", default=None)
init_parser.add_argument("--description", default=None)
version_parser = subparsers.add_parser("version", help="datmo version")
status_parser = subparsers.add_parser("status", help="project status")
cleanup_parser = subparsers.add_parser("cleanup", help="remove project")
# Session
session_parser = subparsers.add_parser("session", help="session module")
session_subcommand_parsers = session_parser.add_subparsers(
title="subcommands", dest="subcommand")
session_create = session_subcommand_parsers.add_parser(
"create", help="create session")
session_create.add_argument(
"--name", "-m", dest="name", default="", help="session name")
session_create.add_argument(
"--current",
dest="current",
action="store_false",
help="boolean if you want to switch to this session")
session_delete = session_subcommand_parsers.add_parser(
"delete", help="delete a session by id")
session_delete.add_argument(
"--name", dest="name", help="name of session to delete")
session_ls = session_subcommand_parsers.add_parser(
"ls", help="list sessions")
session_select = session_subcommand_parsers.add_parser(
"select", help="select a session")
session_select.add_argument(
"--name", dest="name", help="name of session to select")
# Snapshot
snapshot_parser = subparsers.add_parser(
"snapshot", description=__("argparser", "cli.snapshot.description"))
snapshot_subcommand_parsers = snapshot_parser.add_subparsers(
title="subcommands", dest="subcommand")
snapshot_create = snapshot_subcommand_parsers.add_parser(
"create",
description=__("argparser", "cli.snapshot.create.description"))
snapshot_create.add_argument(
"--message",
"-m",
dest="message",
default=None,
help="message to describe snapshot")
snapshot_create.add_argument(
"--label",
"-l",
dest="label",
default=None,
help="label snapshots with a category (e.g. best)")
snapshot_create.add_argument(
"--session-id",
dest="session_id",
default=None,
help="user given session id")
snapshot_create.add_argument(
"--task-id",
dest="task_id",
default=None,
help="specify task id to pull information from")
snapshot_create.add_argument(
"--code-id",
dest="code_id",
default=None,
help="code id from code object")
snapshot_create.add_argument(
"--commit-id",
dest="commit_id",
default=None,
help="commit id from source control")
snapshot_create.add_argument(
"--environment-id",
dest="environment_id",
default=None,
help="environment id from environment object")
snapshot_create.add_argument(
"--environment-def",
dest="environment_definition_filepath",
default=None,
type=str,
help=
"absolute filepath to environment definition file (e.g. /path/to/Dockerfile)"
)
snapshot_create.add_argument(
"--file-collection-id",
dest="file_collection_id",
default=None,
help="file collection id for file collection object")
snapshot_create.add_argument(
"--filepaths",
dest="filepaths",
default=None,
action="append",
help=
"absolute paths to files or folders to include within the files of the snapshot"
)
snapshot_create.add_argument(
"--config-filename",
dest="config_filename",
default=None,
help="filename to use to search for configuration JSON")
snapshot_create.add_argument(
"--config-filepath",
dest="config_filepath",
default=None,
help="absolute filepath to use to search for configuration JSON")
snapshot_create.add_argument(
"--stats-filename",
dest="stats_filename",
default=None,
help="filename to use to search for metrics JSON")
snapshot_create.add_argument(
"--stats-filepath",
dest="stats_filepath",
default=None,
help="absolute filepath to use to search for metrics JSON")
snapshot_delete = snapshot_subcommand_parsers.add_parser(
"delete", help="delete a snapshot by id")
snapshot_delete.add_argument(
"--id", dest="id", help="snapshot id to delete")
snapshot_ls = snapshot_subcommand_parsers.add_parser(
"ls", help="list snapshots")
snapshot_ls.add_argument(
"--session-id",
dest="session_id",
default=None,
help="session id to filter")
snapshot_ls.add_argument(
"--all",
"-a",
dest="details",
action="store_true",
help="show detailed snapshot information")
snapshot_checkout = snapshot_subcommand_parsers.add_parser(
"checkout", help="checkout a snapshot by id")
snapshot_checkout.add_argument("id", default=None, help="snapshot id")
snapshot_diff = snapshot_subcommand_parsers.add_parser(
"diff", help="view diff between 2 snapshots")
snapshot_diff.add_argument("id_1", default=None, help="snapshot id 1")
snapshot_diff.add_argument("id_2", default=None, help="snapshot id 2")
snapshot_inspect = snapshot_subcommand_parsers.add_parser(
"inspect", help="inspect a snapshot by id")
snapshot_inspect.add_argument("id", default=None, help="snapshot id")
# Task
task_parser = subparsers.add_parser("task", help="task module")
task_subcommand_parsers = task_parser.add_subparsers(
title="subcommands", dest="subcommand")
# Task run arguments
task_run = task_subcommand_parsers.add_parser("run", help="run task")
task_run.add_argument(
"--gpu",
dest="gpu",
action="store_true",
help="boolean if you want to run using GPUs")
task_run.add_argument(
"--ports",
"-p",
dest="ports",
default=None,
action="append",
type=str,
help="""
network port mapping during task (e.g. 8888:8888). Left is the host machine port and right
is the environment port available during a run.
""")
# run.add_argument("--data", nargs="*", dest="data", type=str, help="Path for data to be used during the Task")
task_run.add_argument(
"--environment-def",
dest="environment_definition_filepath",
default=None,
type=str,
help=
"absolute filepath to environment definition file (e.g. /path/to/Dockerfile)"
)
task_run.add_argument(
"--interactive",
dest="interactive",
action="store_true",
help="run the environment in interactive mode (keeps STDIN open)")
task_run.add_argument(
"cmd",
nargs="?",
default=None,
help="command to run within environment")
# Task list arguments
task_ls = task_subcommand_parsers.add_parser("ls", help="list tasks")
task_ls.add_argument(
"--session-id",
dest="session_id",
default=None,
nargs="?",
type=str,
help="pass in the session id to list the tasks in that session")
# Task stop arguments
task_stop = task_subcommand_parsers.add_parser("stop", help="stop tasks")
task_stop.add_argument(
"--id", dest="id", default=None, type=str, help="task id to stop")
task_stop.add_argument(
"--all",
"-a",
dest="all",
action="store_true",
help="stop all datmo tasks")
return parser