Write type-safe and elegant CLIs with a clear separation of concerns.
Project description
💡 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
Release history Release notifications | RSS feed
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)
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3aac61caa50206e080d09a00c3fe552bc4e642739beaef89f5f8c1131b5d5afe |
|
MD5 | 0bcc508912a4f3bf513e7bc323514c31 |
|
BLAKE2b-256 | 18742608ef98de41cd82743be47185048db93b4ff1bc59714666145de4376a1a |
File details
Details for the file typed_argparse-0.3.1-py3-none-any.whl
.
File metadata
- Download URL: typed_argparse-0.3.1-py3-none-any.whl
- Upload date:
- Size: 19.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1fbbc3c6adde19aa04edafebd8a7efccab4ddd403d03ec68172cc20b237bbaa7 |
|
MD5 | ed8fe6952c7864d3ed8f4a856fbe2e82 |
|
BLAKE2b-256 | 53862217b32ee0f421ebf57df7ff898638eedfe2288aa6710dba2bca0607b689 |