google / google/python-fire

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

Open
#220 2 comments 1 reaction 0 assignees View on GitHub
enhancement
Dominant language
Python
Stars
28.2k
Forks
1.5k
PR merge metrics
No merged PRs in 30d

Description

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!

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.