@whitequark i had an idea... and yup
while True:
match args:
case [ '--foo', foo, *args ]:
print('foo', foo)
case [ '--baz', *args ]:
print('baz')
case [ '--', *args ]:
break
case [ arg, *args ] if arg.startswith('-'):
print('Unrecognized', arg)
raise RuntimeError() # FIXME
# This can't be case _:
# Otherwise previous case overwrites args
case args:
break