Extension of `argparse` to provide fast and customizable argument parsing.
Project description
slap.core.cli
Extension of argparse
to provide fast and customizable argument parsing.
Features
- Minimal API; interact mostly with
argparse
or type hints - Fast; because
argparse
is fast - Completion; built-in support
Usage (Command API)
import argparse
from typing import Any, Optional
from slap.core.cli import CliApp, Command
from slap.core.cli.completion import CompletionCommand
class HelloCommand(Command):
""" say hello to someone """
def init_parser(self, parser: argparse.ArgumentParser) -> None:
parser.add_argument("name")
def execute(self, args: Any) -> Optional[int]:
print(f"Hello, {args.name}!")
app = CliApp("minimal", "0.1.0")
app.add_command("hello", HelloCommand())
app.add_command("completion", CompletionCommand())
app.run()
Gives you the following CLI:
$ python examples/minimal.py
usage: minimal [-h] [-v] [--version] [{hello,completion}] ...
positional arguments:
{hello,completion} the subcommand to execute
... arguments for the subcommand
options:
-h, --help show this help message and exit
-v, --verbose increase the verbosity level
--version show program's version number and exit
subcommands:
hello say hello to someone
completion completion backend for bash
On Completion
You can run
python examples/minimal.py completion --bash
to get the code that should be run in your shell to enable completion features. However, you will need to make command available as a first-order command in your shell for completion to work (e.g.minimal
instead ofpython examples/minimal.py
).
Usage (Typed API)
from slap.core.cli.typed import Argument, Option, TypedArgsBase, subcommand
from typing import Annotated
class SayHelloArgs(TypedArgsBase):
name: Annotated[str, Argument()]
greeting: str
version: Annotated[None, Option(version="1.0.0", short_name="V")]
args = SayHelloArgs.parse()
print(args)
Gives you the following CLI:
usage: test.py [-h] [--greeting GREETING] [--version] name
positional arguments:
name
options:
-h, --help show this help message and exit
--greeting GREETING
--version, -V show program's version number and exit
And running it gives:
$ python test.py John --greeting Hello
SayHelloArgs(name='John', greeting='Hello', version=None)
Note: Completion is currently not supported for the typed API.
Compatibility
Requires Python 3.7 or higher.
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
File details
Details for the file slap.core.cli-0.3.1.tar.gz
.
File metadata
- Download URL: slap.core.cli-0.3.1.tar.gz
- Upload date:
- Size: 12.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.64.0 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fb31fd6b17250ac8fdd89cfa0c9522bb76c8ad4f512b4858eb0b69c176b9cca9 |
|
MD5 | 3a284ad65447708802d98860801c116c |
|
BLAKE2b-256 | d12f5ddc608714cc3ffadec02ac8d31dbec29cf42847a7baf0d8d50e9937fcb5 |
File details
Details for the file slap.core.cli-0.3.1-py3-none-any.whl
.
File metadata
- Download URL: slap.core.cli-0.3.1-py3-none-any.whl
- Upload date:
- Size: 13.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.64.0 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 62a6029d1562d66099c11f5d3cf243d28d629dc92a49aedff3a87cc6bd9e05e9 |
|
MD5 | 13c32c4a6712fec95dfb6e50f6f863fd |
|
BLAKE2b-256 | b51c668e74f923149da18b914913ce3bc5c0c5fd99cf7a4a48c272ec352bbf3a |