💡 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.
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
|