google/python-fire

Only plain literals should be parsed

Open

#97 aperta il 12 ott 2017

Vedi su GitHub
 (9 commenti) (0 reazioni) (0 assegnatari)Python (1418 fork)batch import
bughelp wanted

Metriche repository

Star
 (26.214 star)
Metriche merge PR
 (Nessuna PR mergiata in 30 g)

Descrizione

@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:

  1. Accept the existing behaviour.
  2. Always parse the whole argument as a string by doing raise ValueError in ``fire.parser._LiteralEval`
  3. Parse only the sub expressions as strings

For 2. and 3. I think these would be the valid types from the ast module.

  • Str
  • Name (converted to Str)
  • Num
  • List
  • Tuple
  • Dict
  • Set
  • UnaryOp

Guida contributor