google / google/python-fire

feature request: tell fire to stop parsing argument and pass the remaining unparsed args to function

Open
#403 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

**Feature Description**

I am working on a tool to wrap some existed command line tools to make them easier to use (like auto install, inject argument automatically, etc). And I hope that I can have a way to tell Fire to stop parsing after encount some specific command.

**Example**
Here are some real world examples like `poetry run python3 ./my-scripts.py` or `conda run -n my-env python3 ./my-scripts.py`

Without this feature I can only put everything else as string, just like what `-c` option of `bash` does, e.g. `bash -c "echo 'hello world'" `, which could still work, but the user have to type extra string quote and dealing with escaping in some cases.

I am not sure if it is possbile to provide some decorator to archive this, for example

```python
class Conda:
def __init__(verbose=False):
...

@fire.decorators.SkipParse
def run(self, *argv):
print(argv)

fire.Fire(Conda)
```

And when running with `python fake-conda.py --verbose run which -a python3`, the output should be `('which', '-a', 'python3')`

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.