Skip to content

Commit 12dfd21

Browse files
committed
add error if stage is not the first arg
1 parent 438f29f commit 12dfd21

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

src/lightning/pytorch/cli.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,7 @@ def __init__(
380380

381381
main_kwargs, subparser_kwargs = self._setup_parser_kwargs(self.parser_kwargs)
382382
self.setup_parser(run, main_kwargs, subparser_kwargs)
383-
self.parse_arguments(self.parser, args)
383+
self.parse_arguments(self.parser, args, run)
384384

385385
self.subcommand = self.config["subcommand"] if run else None
386386

@@ -520,14 +520,19 @@ def link_optimizers_and_lr_schedulers(parser: LightningArgumentParser) -> None:
520520
add_class_path = _add_class_path_generator(class_type)
521521
parser.link_arguments(key, link_to, compute_fn=add_class_path)
522522

523-
def parse_arguments(self, parser: LightningArgumentParser, args: ArgsType) -> None:
523+
def parse_arguments(self, parser: LightningArgumentParser, args: ArgsType, run: bool) -> None:
524524
"""Parses command line arguments and stores it in ``self.config``."""
525525
if args is not None and len(sys.argv) > 1:
526526
rank_zero_warn(
527527
"LightningCLI's args parameter is intended to run from within Python like if it were from the command "
528528
"line. To prevent mistakes it is not recommended to provide both args and command line arguments, got: "
529529
f"sys.argv[1:]={sys.argv[1:]}, args={args}."
530530
)
531+
if args is None and run and len(sys.argv) > 1 and sys.argv[1] not in self.subcommands():
532+
raise ValueError(
533+
"When `LightningCLI(run=True)` is used (default), you need to provide a subcommand as the first"
534+
f" argument. For example: `python {sys.argv[0]} fit ...`"
535+
)
531536
if isinstance(args, (dict, Namespace)):
532537
self.config = parser.parse_object(args)
533538
else:

0 commit comments

Comments
 (0)