The fastest, simplest way to create CLIs in Python
Project description
The fastest, simplest way to create a CLI in Python
cli-buddy
provides an ergonomic syntax for creating command-line interfaces in Python.
With cli-buddy
, 👇 this code snippet is all it takes to build a CLI.
from cli_buddy import CLI
class MyCLI(CLI):
arg: str
Under the hood, cli-buddy
is a pydantic-flavored wrapper around the built-in argparse
module.
Requirements
- Python 3.11+
Install
pip install cli-buddy
Usage
Use the CLI
class to define your CLI's arguments and options.
This code snippet...
# main.py
from cli_buddy import CLI
class TerminalTimer(CLI):
seconds: int
# boolean fields are automatically converted to flags
show_time: bool
... will produce the following CLI:
$ python main.py --help
usage: main.py [-h] seconds
positional arguments:
seconds
options:
-h, --help show this help message and exit
--show_time
A CLI class alone won't run anything, obviously. We need to define our behavior first.
Define your CLI's behavior
Either use your CLI instance however you like...
# main.py
...
cli = TerminalTimer()
for _ in range(cli.seconds):
print(_)
time.sleep(1)
... or just put your logic within the __call__()
method of your CLI class...
class TerminalTimer(CLI):
seconds: int
show_time: bool
def __call__(self):
for _ in range(self.seconds):
print(_)
time.sleep(1)
TerminalTimer() # That's it!
Give your arguments default values to convert arguments to flags.
The CLI
class will automatically convert arguments to flags if:
- they are assigned a default value,
- or if the field is a boolean.
For example, this...
class TerminalTimer(CLI):
seconds: int = 1
show_time: bool
... will produce the following CLI:
$ python main.py --help
usage: main.py [-h] [--seconds SECONDS] [--show_time]
options:
-h, --help show this help message and exit
--seconds SECONDS (default: 1)
--show_time
Use the Argument
class to further configure your CLI's arguments.
The Argument
function takes the same arguments as the built-in argparse.ArgumentParser.add_argument
function.
For example, this...
from cli_buddy import CLI, Argument
class TerminalTimer(CLI):
seconds: int = Argument(help="Number of seconds to wait")
show_time: bool = Argument("-t", help="Show seconds in terminal", action="store_true")
... will produce the following CLI:
$ python main.py --help
usage: main.py [-h] -t seconds
positional arguments:
seconds Number of seconds to wait
options:
-h, --help show this help message and exit
-t, --show_time Show seconds in terminal
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for cli_buddy-0.2.6-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 461fcf9b51b038fa84839588a7b54bc6bd782e66a31a8ebe8854b4495c7d6286 |
|
MD5 | ac8022c1a80478e8fb51cf0c8d41939a |
|
BLAKE2b-256 | fd22b24f698cc9b952695509484062f986b87cec77c4a9292e2c8dda37480ea4 |