I create the following argument parser:
parser = argparse.ArgumentParser()
parser.add_argument('name')
parser.add_argument('script')
parser.add_argument('--src', nargs='?')
When running ./script.py the_name the_script --src my_script.py, all the arguments get their value "as expected".
Now, I add a remainder:
parser = argparse.ArgumentParser()
parser.add_argument('name')
parser.add_argument('script')
parser.add_argument('--src', nargs='?')
parser.add_argument('args', nargs=argparse.REMAINDER)
Now, running again ./script.py the_name the_script --src my_script.py, argument src suddenly becomes None.
However, running ./script.py --src my_script.py the_name the_script --arg1 arg2 xyz will set all arguments "as expected".
How can I achieve that my argument parser first wants to see the positional arguments name and script, then some known arguments like --src and then finally an arbitrary remainder?