Only plain literals should be parsed
@dbieber correctly pointed out in #95 that there is a more general problem with the parsing code. This is a follow up issue to that issue which only dealt with the most common case of a single argument.
Here are some cases demonstrating
$ python3 -c "import fire.parser as p; v = p.DefaultParseValue('[1+1]'); print(type(v), v)" <class 'list'> [2] $ python3 -c "import fire.parser as p; v = p.DefaultParseValue('{key: 1+1}'); print(type(v), v)" <class 'dict'> {'key': 2}
Some options are:
- Accept the existing behaviour.
- Always parse the whole argument as a string by doing
raise ValueErrorin ``fire.parser._LiteralEval` - Parse only the sub expressions as strings
For 2. and 3. I think these would be the valid types from the ast module.
StrName(converted toStr)NumListTupleDictSetUnaryOp