google / google/python-fire

Using `--help` with `file.Fire()` usage incorrectly prints imports and variables

オープン
#220 コメント 2 件 リアクション 1 件 担当者 0 名 GitHub で見る
enhancement
主要言語
Python
スター
28.2k
フォーク
1.5k
PR マージ指標
30日以内にマージされた PR はありません

説明

When running `--help` against a program like the following, I expect a single `my_func` command but instead I get `my_func`, `fire`, `logging`, `GREETING_MSG`, and `logger`. I would like to be able to ignore python module imports and local variables by default.

```python
import fire
import logging

GREETING_MSG = "Hello"

logger = logging.get_logger()

def _my_internal_hidden_func():
# This is correctly ignored
pass

def my_func():
logger.info(f"{GREETING_MSG}, world")

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

For the simple example above, the obvious resolution is to use a different method of invoking `Fire()` but for my actual use case, there are over 40 functions in the file I want to expose. For internal functions, I can hide these simply be preceeding the name with underscore, but I don't see any similar way of suppressing the imports and variable definitions.

I'd propose resolving this in one of two ways:
(1) Add some kind of heuristic to the default fire.Fire() invocation to ignore imports and variables
(2) Add some type of flags and/or lambda function support so the code consuming Fire can customize this logic without having to create and directly pass a custom dictionary of all functions.

Is anything like this already in progress, and/or would something along these lines be accepted as a pull request?

Thanks!

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。