google / google/python-fire

Do not execute anything if command line is invalid, and make it the default behavior

未关闭
#264 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Python
星标
28.2k
派生
1.5k
PR 合并指标
30 天内没有已合并 PR

描述

I know a similar issue has been mentioned in #222 (which should have been labelled as Duplicated rather than a misleadingly Closed) , #226, and its root cause was well-explained in #168.

It is still worth to point out that, this issue can be much more easier to hit, thus much more severe than those somewhat contrived scenarios described in #222 and #168 (which was triggered by mismatching default parameters and/or typo).

```python
# This is part of an CRUD app
def add(name):
print("Record %s has been added into database" % name)

if __name__ == "__main__":
fire.Fire()
```

My end user (or me) could easily run it with `$python my_app.py add John Doe` (forgot to add quotation marks) and then a record `"John"` would have been added into database while the end user saw a command-line error. At that point, it is not just about issuing the right command, the end user need to clean up the messed-up database.

Although a decorator workaround was mentioned in #168, do you think it is better to do it the other way around, i.e. make such "strict mode" (#226) the default behavior, and let developer to chain commands if they really want to? I bet not many developer know and anticipate the command chaining behavior.

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。