Skip to main content

Write type-safe and elegant CLIs with a clear separation of concerns.

Project description

PyPI version Build Status codecov Code style: black mypy license



💡 write type-safe and elegant CLIs with a clear separation of concerns.

Features

  • Argument parsing based on type annotation (including runtime validation).
  • Support for many common types.
  • Clear separation of concern between argument parsing and business logic.
  • Support for super-low-latency shell auto-completions.
  • Great for writing sub-command CLIs.
  • Very lightweight.
  • No dependencies.
  • Fully typed itself, no extra type stubs required.
  • Offers both a high-level and a low-level API. The high-level API generally requires less code to write, is fully based on type annotations, and is the preferred way for writing new CLIs. The low-level API is mainly a low-effort migration path for incorporating type-safety into existing CLIs based on argparse.

Install

$ pip install typed-argparse

The only requirement is a modern Python (3.8+).

Basic Usage

import typed_argparse as tap


# 1. Argument definition
class Args(tap.TypedArgs):
    my_arg: str = tap.arg(help="some help")
    number_a: int = tap.arg(default=42, help="some help")
    number_b: Optional[int] = tap.arg(help="some help")
    verbose: bool = tap.arg(help="some help")
    names: List[str] = tap.arg(help="some help")


# 2. Business logic
def runner(args: Args):
    print(f"Running my app with args:\n{args}")


# 3. Bind argument definition + business logic & run
def main() -> None:
    tap.Parser(Args).bind(runner).run()

Documentation

See full documentation.

Changes

See change log.

License

This project is licensed under the terms of the MIT license.

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

typed-argparse-0.3.1.tar.gz (18.4 kB view details)

Uploaded Source

Built Distribution

typed_argparse-0.3.1-py3-none-any.whl (19.7 kB view details)

Uploaded Python 3

File details

Details for the file typed-argparse-0.3.1.tar.gz.

File metadata

  • Download URL: typed-argparse-0.3.1.tar.gz
  • Upload date:
  • Size: 18.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for typed-argparse-0.3.1.tar.gz
Algorithm Hash digest
SHA256 3aac61caa50206e080d09a00c3fe552bc4e642739beaef89f5f8c1131b5d5afe
MD5 0bcc508912a4f3bf513e7bc323514c31
BLAKE2b-256 18742608ef98de41cd82743be47185048db93b4ff1bc59714666145de4376a1a

See more details on using hashes here.

File details

Details for the file typed_argparse-0.3.1-py3-none-any.whl.

File metadata

File hashes

Hashes for typed_argparse-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1fbbc3c6adde19aa04edafebd8a7efccab4ddd403d03ec68172cc20b237bbaa7
MD5 ed8fe6952c7864d3ed8f4a856fbe2e82
BLAKE2b-256 53862217b32ee0f421ebf57df7ff898638eedfe2288aa6710dba2bca0607b689

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