decli
Minimal, easy-to-use, declarative cli tool
What it is and what it does
Decli is a thin declarative wrapper around Python's argparse library. Instead of writing imperative parser setup code with repeated add_argument() calls, you define your CLI structure as a nested dictionary—specifying prog name, description, arguments, subcommands, and argument groups—then pass it to the cli() function to get a ready-to-use parser. It accepts all standard argparse argument options (action, nargs, type, choices, help, metavar, dest, etc.) and adds support for argument grouping and a func parameter on subcommands to map commands to handler functions.
The package is designed for developers building larger applications with many arguments and subcommands who want their CLI definition to be more readable and maintainable than traditional argparse boilerplate. It has no external runtime dependencies and works with Python 3.9 through 3.13.
Use it for:
- Build a multi-command CLI tool (like git or docker) by defining subcommands and their handlers in a single data structure
- Rapidly prototype a command-line interface for a Python application without writing repetitive argparse setup code
- Organize related arguments into logical groups for clearer help output and better code readability
- Create a CLI where each subcommand maps to a specific function, keeping interface definition separate from business logic
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Decli wraps argparse to let you define command-line interfaces declaratively as Python dictionaries, supporting arguments, subcommands, and argument groups without repeated boilerplate.
Yes, if you are building a CLI-heavy application and prefer declarative, dictionary-based configuration over imperative argparse calls. The zero-dependency install and permissive license make it low-risk. However, note that maintenance is aging (last release 439 days ago), so do not expect active development or rapid fixes for edge cases.
Install
decli on PyPI
pip
pip install decliuv
uv add declipoetry
poetry add decliInstalling decli
Before you install
Low friction; pure Python wheel with no runtime dependencies. Maintenance status is aging (439 days since last release), so expect no active development or rapid bug fixes.
License in practice
MIT license is permissive; you can use, modify, and distribute decli freely in commercial or private projects with minimal restrictions.
Quickstart
from decli import cli
data = {
"prog": "myapp",
"description": "Process integers",
"arguments": [
{"name": "integers", "type": int, "nargs": "+"},
{"name": "--sum", "action": "store_true"}
]
}
parser = cli(data)
args = parser.parse_args()
Verify before relying
- Whether the package is actively maintained or in maintenance-only mode despite the aging status
- Real-world performance or scalability limits when handling very large numbers of arguments or deeply nested subcommands
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.9) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | aging — 439 days since the last release |
| First released | |
| Downloads | 3,907,358/month — #2,456 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: decli-0.6.3-py3-none-any.whl
Tags
More Utilities packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
charset-normalizerDetects and normalizes text encoding from…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
pluggyPluggy provides a plugin system that lets you…
permissive · top 100 on PyPI
PygmentsPygments is a syntax highlighter that colorizes…
permissive · top 100 on PyPI
sixSix provides utility functions to write Python…
permissive · top 100 on PyPI
argparse-dataclassBuilds command-line interfaces declaratively by…
permissive · top 5,000 on PyPI
python-tools-scriptsBuilds CLI tools by auto-discovering Python…
permissive · top 15,000 on PyPI
arghArgh turns plain Python functions into…
copyleft · top 5,000 on PyPI
simple-parsingTransforms argparse scripts into structured,…
permissive · top 5,000 on PyPI
clizeClize turns Python functions into command-line…
permissive · top 15,000 on PyPI
autocommandAutocommand converts a Python function into a…
copyleft · top 5,000 on PyPI
guacamoleGuacamole provides a framework for building…
copyleft · top 15,000 on PyPI
argparse-addonsProvides additional type validators and action…
permissive · top 5,000 on PyPI
placPlac generates command-line interfaces from…
permissive · top 5,000 on PyPI
typed-argument-parserA typed, modern replacement for Python's…
permissive · top 15,000 on PyPI