mosquito / argclass

A wrapper around the standard argparse module that allows you to describe argument parsers declaratively
Apache License 2.0
12 stars 3 forks source link

Invalid handling of multiple (nargs) arguments #17

Closed alvassin closed 1 year ago

alvassin commented 1 year ago
import os
import argclass

class Parser(argclass.Parser):
    token: list[str] = argclass.Argument(type=str, nargs='*')

parser = Parser(auto_env_var_prefix='APP_')
parser.parse_args(['--token', 'token1'])
print(parser.token)  # [token1], ok

parser.parse_args(['--token=token1', '--token=token2'])
print(parser.token)  # [token2], not ok

parser.parse_args(['--token', 'token1', '--token', 'token2'])
print(parser.token)  # [token2], not ok

os.environ['APP_TOKEN'] = '["token1","token2"]'
parser.parse_args()
print(parser.token)  # [token1,token2] ok

# ValueError: malformed node or string on line 1: <ast.Name object at 0x100be1180>
os.environ['APP_TOKEN'] = 'token1'
parser.parse_args()  # not ok
mosquito commented 1 year ago

The argparse module use the --arg val1 val2 for nargs