skillfed

decli

Minimal, easy-to-use, declarative cli tool

decli v0.6.3 3.9M downloads/30d#2,456 on PyPI
Permissive license MIT AGING released

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 decli

uv

uv add decli

poetry

poetry add decli

Installing 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

License :: OSI Approved :: MIT LicenseProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.9

Tags

declarative cli argument parserargparse wrapper dictionarycommand line interface buildercli tool from dictsubcommand argument parserminimal cli frameworkargparse declarative
cli-builderargparse-wrapperdeclarative-config

More Utilities packages