Skip to main content

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 of python 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

slap.core.cli-0.3.1.tar.gz (12.6 kB view details)

Uploaded Source

Built Distribution

slap.core.cli-0.3.1-py3-none-any.whl (13.9 kB view details)

Uploaded Python 3

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

Hashes for slap.core.cli-0.3.1.tar.gz
Algorithm Hash digest
SHA256 fb31fd6b17250ac8fdd89cfa0c9522bb76c8ad4f512b4858eb0b69c176b9cca9
MD5 3a284ad65447708802d98860801c116c
BLAKE2b-256 d12f5ddc608714cc3ffadec02ac8d31dbec29cf42847a7baf0d8d50e9937fcb5

See more details on using hashes here.

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

Hashes for slap.core.cli-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 62a6029d1562d66099c11f5d3cf243d28d629dc92a49aedff3a87cc6bd9e05e9
MD5 13c32c4a6712fec95dfb6e50f6f863fd
BLAKE2b-256 b51c668e74f923149da18b914913ce3bc5c0c5fd99cf7a4a48c272ec352bbf3a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page