Skip to navigation

nemo_gym.cli.main

View as Markdown

Module Contents

Classes

NameDescription
Command-
Flag-
_GymArgumentParserArgumentParser that appends a difflib “did you mean?” hint to invalid-choice errors.

Functions

NameDescription
_accepts_json-
_add_leaf-
_asset_selectorA --<flag> NAME selector that resolves the named asset to a config and adds it to +config_paths.
_bool_flagA --name store_true flag that maps to the Hydra override +<hydra_key>=true when set.
_comma_list_flagA --name "A,B" flag that maps to the Hydra override +<hydra_key>=["A","B"]
_csv_list_flagA comma-separated CLI value translated to a Hydra list override.
_dataset_download-
_dataset_init-
_dataset_publishgym dataset publish --harbor TARGET --output DIR: plain Harbor task folders, checked by Harbor’s own loader.
_dataset_pullgym dataset pull TARGET: fetch a Harbor dataset into environments/harbor/ without preparing or running it.
_dataset_upload-
_dataset_validate-
_describe_validation_errorsSplit a pydantic ValidationError into dotted paths of missing fields and path (reason) strings for
_dev_comparegym dev compare OLD NEW: the paths and quoted options reach the command verbatim (as gym eval run passes
_env_init-
_env_test-
_eval_export-
_eval_health_check-
_eval_resubmit-
_eval_run-
_eval_status-
_eval_submit-
_extra_roots_from_search_dirPrepend --search-dir roots to NEMO_GYM_EXTRA_ROOTS for the duration of the command, then restore.
_handle_pydantic_validation_error-
_has_override-
_is_positional_hydra_override-
_limit_fraction_or_noneA run-health limit: a fraction in [0, 1], or none (any case) for no limit.
_list_benchmarksList the benchmark view of the unified workload catalog.
_merge_config_pathsCoalesce all +config_paths=[...] tokens (from —config and asset selectors) into one (Hydra rejects dupes).
_parsed_onboarding_name-
_raise_keyboard_interrupt_on_sigtermMake SIGTERM unwind like Ctrl-C, so a stopped recovery stops its login-host reader and closes its connection.
_register_init_target-
_register_reward_direction-
_reject_scratch_namespace_additions-
_searchgym search [<type>] <query>: dispatch to the chosen type’s listing command (default environments),
_split_comma_separated-
_translate_agent_type--agent-type picks the harness to compose, which is already fixed once the servers are up.
_translate_init_target-
_value_flagA --name VALUE flag that maps to the Hydra override +<hydra_key>=VALUE (omitted when unset).
build_parser-
dispatch-
main-

Data

AGENT_TYPE

ALLOW_UNSUPPORTED_PAIRING

BENCHMARK

CATALOG_KIND

COMMANDS

CONFIG

ENVIRONMENT

EXCLUDE_TASKS

EXPORTER

GROUPS

IGNORE_INPUT_CONTAINING

INIT_TARGET

JSON

MODEL

MODEL_API_KEY

MODEL_TYPE

MODEL_URL

NAME

ONBOARDING_NAME

ONLY_TASKS

RESOURCES_SERVER

RESOURCES_SERVER_CONFIG

REWARD_DIRECTION

REWARD_RANGE

SANDBOX

SEARCH_DIR

SEARCH_TERMS

STORAGE

TASK_TARGET

VERSION_TARGET

_SEARCHABLE_TYPES

__getattr__

logger

API

class nemo_gym.cli.main.Command(
target: str | collections.abc.Callable[[argparse.Namespace, list[str]], None],
summary: str | None = None,
flags: tuple[nemo_gym.cli.main.Flag, ...] = tuple()
)
Dataclass
flags
tuple[Flag, ...] = field(default_factory=tuple)
summary
str | None = None
target
str | Callable[[argparse.Namespace, list[str]], None]
class nemo_gym.cli.main.Flag(
register: collections.abc.Callable[[argparse.ArgumentParser], None],
translate_to_hydra: collections.abc.Callable[[argparse.Namespace], list[str]] = lambda args: []
)
Dataclass
register
Callable[[argparse.ArgumentParser], None]
translate_to_hydra
Callable[[argparse.Namespace], list[str]] = lambda args: []
class nemo_gym.cli.main._GymArgumentParser()

Bases: ArgumentParser

ArgumentParser that appends a difflib “did you mean?” hint to invalid-choice errors.

Covers mistyped commands/groups and bad —flag choices (e.g. —storage), since argparse validates all of them as choices against the registry baked into the parser.

nemo_gym.cli.main._GymArgumentParser.error(
message: str
) -> None
nemo_gym.cli.main._accepts_json(
parser: argparse.ArgumentParser
) -> bool
nemo_gym.cli.main._add_leaf(
subparsers: argparse._SubParsersAction,
name: str,
) -> None
nemo_gym.cli.main._asset_selector(
flag: str,
repeatable: bool = False

A --<flag> NAME selector that resolves the named asset to a config and adds it to +config_paths.

Repeatable selectors accumulate, composing several components the way --config does.

nemo_gym.cli.main._bool_flag(
name: str,
hydra_key: str,
flag_help: str

A --name store_true flag that maps to the Hydra override +<hydra_key>=true when set.

nemo_gym.cli.main._comma_list_flag(
name: str,
hydra_key: str,
flag_help: str,
metavar: str

A --name "A,B" flag that maps to the Hydra override +<hydra_key>=["A","B"]

nemo_gym.cli.main._csv_list_flag(
name: str,
hydra_key: str,
flag_help: str

A comma-separated CLI value translated to a Hydra list override.

nemo_gym.cli.main._dataset_download(
args: argparse.Namespace,
overrides: list[str]
) -> None
nemo_gym.cli.main._dataset_init(
args: argparse.Namespace,
overrides: list[str]
) -> None
nemo_gym.cli.main._dataset_publish(
args: argparse.Namespace,
overrides: list[str]
) -> None

gym dataset publish --harbor TARGET --output DIR: plain Harbor task folders, checked by Harbor’s own loader.

nemo_gym.cli.main._dataset_pull(
args: argparse.Namespace,
overrides: list[str]
) -> None

gym dataset pull TARGET: fetch a Harbor dataset into environments/harbor/ without preparing or running it.

nemo_gym.cli.main._dataset_upload(
args: argparse.Namespace,
overrides: list[str]
) -> None
nemo_gym.cli.main._dataset_validate(
args: argparse.Namespace,
overrides: list[str]
) -> None
nemo_gym.cli.main._describe_validation_errors(
exc
) -> tuple[list[str], list[str]]

Split a pydantic ValidationError into dotted paths of missing fields and path (reason) strings for every other failure, so each CLI error path renders schema mistakes the same way.

nemo_gym.cli.main._dev_compare(
args: argparse.Namespace,
overrides: list[str]
) -> None

gym dev compare OLD NEW: the paths and quoted options reach the command verbatim (as gym eval run passes its TARGET) rather than through Hydra’s override grammar, which mangles non-ASCII and backslashes. The root gym --json toggle switches stdout to the JSON summary; --json PATH after the subcommand writes it to a file.

nemo_gym.cli.main._env_init(
args: argparse.Namespace,
overrides: list[str]
) -> None
nemo_gym.cli.main._env_test(
args: argparse.Namespace,
overrides: list[str]
) -> None
nemo_gym.cli.main._eval_export(
args: argparse.Namespace,
overrides: list[str]
) -> None
nemo_gym.cli.main._eval_health_check(
args: argparse.Namespace,
overrides: list[str]
) -> None
nemo_gym.cli.main._eval_resubmit(
args: argparse.Namespace,
overrides: list[str]
) -> None
nemo_gym.cli.main._eval_run(
args: argparse.Namespace,
overrides: list[str]
) -> None
nemo_gym.cli.main._eval_status(
args: argparse.Namespace,
overrides: list[str]
) -> None
nemo_gym.cli.main._eval_submit(
args: argparse.Namespace,
overrides: list[str]
) -> None
nemo_gym.cli.main._extra_roots_from_search_dir(
search_dirs: list[str] | None
)

Prepend --search-dir roots to NEMO_GYM_EXTRA_ROOTS for the duration of the command, then restore.

Setting the env var lets the roots reach every resolver (discovery, the —<component> selectors, deep config/prompt/rollout resolution) and inherit into spawned server subprocesses. The original value is restored (or the var unset) on exit so main() leaves no global side effect. (sys.path is augmented with the new roots for plugin prepare.py imports and left as-is on exit.)

nemo_gym.cli.main._handle_pydantic_validation_error(
exc,
parser: argparse.ArgumentParser
) -> None
nemo_gym.cli.main._has_override(
overrides: list[str],
key: str
) -> bool
nemo_gym.cli.main._is_positional_hydra_override(
token: str
) -> bool
nemo_gym.cli.main._limit_fraction_or_none(
value: str
) -> float | None

A run-health limit: a fraction in [0, 1], or none (any case) for no limit.

nemo_gym.cli.main._list_benchmarks(
_args: argparse.Namespace,
overrides: list[str]
) -> None

List the benchmark view of the unified workload catalog.

nemo_gym.cli.main._merge_config_paths(
overrides: list[str]
) -> list[str]

Coalesce all +config_paths=[...] tokens (from —config and asset selectors) into one (Hydra rejects dupes).

nemo_gym.cli.main._parsed_onboarding_name(
args: argparse.Namespace
) -> str | None
nemo_gym.cli.main._raise_keyboard_interrupt_on_sigterm() -> None

Make SIGTERM unwind like Ctrl-C, so a stopped recovery stops its login-host reader and closes its connection.

nemo_gym.cli.main._register_init_target(
parser: argparse.ArgumentParser
) -> None
nemo_gym.cli.main._register_reward_direction(
parser: argparse.ArgumentParser
) -> None
nemo_gym.cli.main._reject_scratch_namespace_additions(
overrides: list[str]
) -> None
nemo_gym.cli.main._search(
args: argparse.Namespace,
overrides: list[str]
) -> None

gym search [<type>] <query>: dispatch to the chosen type’s listing command (default environments), which filters itself to the query config key already in overrides.

nemo_gym.cli.main._split_comma_separated(
value: str
) -> list[str]
nemo_gym.cli.main._translate_agent_type(
args: argparse.Namespace
) -> list[str]

--agent-type picks the harness to compose, which is already fixed once the servers are up.

nemo_gym.cli.main._translate_init_target(
args: argparse.Namespace
) -> list[str]
nemo_gym.cli.main._value_flag(
name: str,
hydra_key: str,
flag_help: str,
aliases: tuple[str, ...] = (),
choices: tuple[str, ...] | None = None,
quote: bool = False

A --name VALUE flag that maps to the Hydra override +<hydra_key>=VALUE (omitted when unset).

quote=True passes VALUE as a literal string (see _hydra_quote), for filenames and free text.

nemo_gym.cli.main.build_parser() -> argparse.ArgumentParser
nemo_gym.cli.main.dispatch(
target: str,
overrides: list[str]
) -> None
nemo_gym.cli.main.main() -> None
nemo_gym.cli.main.AGENT_TYPE = Flag(register=(lambda p: p.add_argument('--agent-type', metavar='NAME', help='Ag...
nemo_gym.cli.main.ALLOW_UNSUPPORTED_PAIRING = _bool_flag('allow-unsupported-pairing', 'allow_unsupported_pairing', "Run even i...
nemo_gym.cli.main.BENCHMARK = _asset_selector('benchmark', repeatable=True)
nemo_gym.cli.main.CATALOG_KIND = _value_flag('kind', 'catalog_kind', 'Workload kind.', choices=('environment', 'b...
nemo_gym.cli.main.COMMANDS = {'list benchmarks': Command(target=_list_benchmarks, summary='List or inspect av...
nemo_gym.cli.main.CONFIG = Flag(register=(lambda p: p.add_argument('--config', action='append', metavar='PA...
nemo_gym.cli.main.ENVIRONMENT = _asset_selector('environment', repeatable=True)
nemo_gym.cli.main.EXCLUDE_TASKS = Flag(register=(lambda p: p.add_argument('--exclude-tasks', metavar='PATTERNS', h...
nemo_gym.cli.main.EXPORTER = Flag(register=(lambda p: p.add_argument('exporter', nargs='?', metavar='EXPORTER...
nemo_gym.cli.main.GROUPS = {'list': 'List available components (benchmarks, environments, agents, models, r...
nemo_gym.cli.main.IGNORE_INPUT_CONTAINING = Flag(register=(lambda p: p.add_argument('--ignore-input-containing', action='app...
nemo_gym.cli.main.INIT_TARGET = Flag(register=_register_init_target, translate_to_hydra=_translate_init_target)
nemo_gym.cli.main.JSON = Flag(register=(lambda p: p.add_argument('--json', action='store_true', default=(...
nemo_gym.cli.main.MODEL = _value_flag('model', 'policy_model_name', 'Model name, HF id, or local checkpoin...
nemo_gym.cli.main.MODEL_API_KEY = _value_flag('model-api-key', 'policy_api_key', 'Model server API key.')
nemo_gym.cli.main.MODEL_TYPE = _asset_selector('model-type')
nemo_gym.cli.main.MODEL_URL = _value_flag('model-url', 'policy_base_url', 'Model server base URL.')
nemo_gym.cli.main.NAME = Flag(register=(lambda p: p.add_argument('name', nargs='?', metavar='NAME', help=...
nemo_gym.cli.main.ONBOARDING_NAME = Flag(register=(lambda p: p.add_argument('onboarding_name', nargs='?', metavar='N...
nemo_gym.cli.main.ONLY_TASKS = Flag(register=(lambda p: p.add_argument('--only-tasks', metavar='PATTERNS', help...
nemo_gym.cli.main.RESOURCES_SERVER = Flag(register=(lambda p: p.add_argument('--resources-server', metavar='NAME', he...
nemo_gym.cli.main.RESOURCES_SERVER_CONFIG = _asset_selector('resources-server', repeatable=True)
nemo_gym.cli.main.REWARD_DIRECTION = Flag(register=_register_reward_direction, translate_to_hydra=(lambda args: [f'+h...
nemo_gym.cli.main.REWARD_RANGE = Flag(register=(lambda p: p.add_argument('--reward-range', nargs=2, type=float, m...
nemo_gym.cli.main.SANDBOX = Flag(register=(lambda p: p.add_argument('--sandbox', metavar='PROVIDER', help='S...
nemo_gym.cli.main.SEARCH_DIR = Flag(register=(lambda p: p.add_argument('--search-dir', action='append', metavar...
nemo_gym.cli.main.SEARCH_TERMS = Flag(register=(lambda p: (p.add_argument('component_type', nargs='?', choices=(l...
nemo_gym.cli.main.STORAGE = Flag(register=(lambda p: p.add_argument('--storage', choices=('hf', 'gitlab'), d...
nemo_gym.cli.main.TASK_TARGET = Flag(register=(lambda p: p.add_argument('target', nargs='?', metavar='TARGET', h...
nemo_gym.cli.main.VERSION_TARGET = 'nemo_gym.cli.general:version'
nemo_gym.cli.main._SEARCHABLE_TYPES = {'benchmarks': 'nemo_gym.cli.eval:list_benchmarks', 'environments': 'nemo_gym.cl...
nemo_gym.cli.main.__getattr__ = moved_names_getattr(__name__)
nemo_gym.cli.main.logger = logging.getLogger(__name__)