google / google/python-fire

Allow choices restriction

Open
#384 8 comments 22 reactions 0 assignees View on GitHub
enhancement
Dominant language
Python
Stars
28.2k
Forks
1.5k
PR merge metrics
No merged PRs in 30d

Description

Hello, and thank you for this great CLI!
Recently I get to a situation when I would like to restrict the options for a given argument similar to build-in `argparse` does with its option `choices` (see docs: https://docs.python.org/3/library/argparse.html#choices). Then I was checking Fire docs but could not find anything similar to it...
Checking alternative CLI packages I found a way that is quite simple but still elegant and would well fit the Fire style. It is leveraging python `Enum` class:
```py
from enum import Enum
import fire

class Direction(str, Enum):
up = "up"
down = "down"
left = "left"
right = "right"

def main(move: Direction = Direction.left):
print(f"Moving in given direction: {move.value}")

if __name__ == "__main__":
fire.Fire(main)
```
For clarification, the example above is borrowed and adjusted from [Typer/enum](https://typer.tiangolo.com/tutorial/parameter-types/enum/)

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.