google/python-fire

Only plain literals should be parsed

オープン

#97 opened on 2017/10/12

 (9 件のコメント) (0 件のリアクション) (0 人の担当者)Python (1,418 件のフォーク)batch import
bughelp wanted

Repository metrics

Stars
 (26,214 個のスター)
PR merge metrics
 (PR metrics pending)

説明

@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

コントリビューターガイド