Skip to content

Comments

fix overrides dropped when --multirun flag appears between them#3133

Open
Mr-Neutr0n wants to merge 1 commit intofacebookresearch:mainfrom
Mr-Neutr0n:fix-multirun-override-ordering
Open

fix overrides dropped when --multirun flag appears between them#3133
Mr-Neutr0n wants to merge 1 commit intofacebookresearch:mainfrom
Mr-Neutr0n:fix-multirun-override-ordering

Conversation

@Mr-Neutr0n
Copy link

When --multirun (or any optional flag) is placed between override arguments on the command line, argparse only sees the overrides before the flag and rejects the rest as unrecognized. For example:

python app.py task=1 --multirun db=mysql
# error: unrecognized arguments: db=mysql

This happens because nargs="*" positional args stop consuming tokens as soon as argparse encounters an optional flag. The overrides after the flag never get picked up.

Fixed by switching from parse_args() to parse_known_args() and merging any remaining tokens back into the overrides list. All orderings now work:

python app.py --multirun task=1 db=mysql    # works (already worked)
python app.py task=1 db=mysql --multirun    # works (already worked)
python app.py task=1 --multirun db=mysql    # works (was broken)

Fixes #3053

argparse's nargs='*' positional stops consuming tokens when it
hits an optional flag mid-sequence. so 'task=1 --multirun db=mysql'
would only see task=1 as an override and reject db=mysql.

switch to parse_known_args and merge leftover tokens back into the
overrides list. flag ordering no longer matters.

fixes facebookresearch#3053
@meta-cla meta-cla bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Feb 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] --multirun yields error on specific command line flag ordering

1 participant