Skip to main content

Write type-annotated Python functions, get a CLI with argparse's native `--help` — no magic, no bloat. Flat commands only, synchronous execution

Project description

argss — Stupidly Simple CLI builder (sync-only, no groups)

Python PyPI License Platform Ruff

argss is a lightweight fork of arg-kiss — stripped down to the essentials.

Write type-annotated Python functions, get a CLI with argparse's native --help — no magic, no bloat. Flat commands only, synchronous execution.

🎯 Why argss?

Feature arg-kiss argss
@cli.command()
@cli.argument()
Type inference
Boolean flags
Global arguments
Command groups
Async support
color parameter (Python 3.14+ coloured help)
Dependencies none none

Use argss when you want:

  • Minimal code footprint
  • No asyncio overhead
  • Flat command structure (no sub-subcommands)
  • Faster import time (~30% faster than arg-kiss)

🚀 Quick Start

pip install argss
from argss import Argss

app = Argss(name="todo", description="Task manager")

@app.command()
def add(task: str, priority: int = 1, done: bool = False):
    """Add a task."""
    status = "✓" if done else "○"
    print(f"[{status}] {task} (priority: {priority})")

@app.command()
def list_all():
    """Show all tasks."""
    print("Nothing yet!")

app()
$ python todo.py add "Buy milk" --priority 2
[] Buy milk (priority: 2)

$ python todo.py list-all
Nothing yet!

$ python todo.py --help
usage: todo [-h] {add,list-all} ...

Task manager

positional arguments:
  {add,list-all}
    add           Add a task.
    list-all      Show all tasks.

options:
  -h, --help      show this help message and exit

📋 Commands & Features

@app.command() — Define commands from functions

@app.command()
def fetch(url: str, retries: int = 3):
    """Download from URL with retries"""
    print(f"Fetched {url} (retries: {retries})")

@app.argument() — Customize argument flags

Use @app.argument() above @app.command() to customize flags, help text, and behavior for individual parameters.

@app.argument("-u", "--user", help="Username")
@app.argument(
    ["-p", "--port", {"help": "Port number", "type": int, "default": 8080}],
    ["--ssl", {"help": "Enable SSL", "action": "store_true"}]
)
@app.command()
def connect(user: str, port: int = 8080, ssl: bool = False):
    """Connect to server"""
    print(f"Connecting as {user} on port {port} (SSL: {ssl})")

Type → CLI mapping

Function signature CLI argument
name: str Positional name
count: int = 1 --count 1
verbose: bool = False --verbose / --no-verbose
mode: str | None = None --mode MODE

Global arguments (apply to all commands)

app.add_global_argument("--verbose", "-v", action="store_true", help="Verbose output")
app.add_global_argument("--config", "-c", type=str, help="Config file path")

@app.command()
def deploy(environment: str):
    """Deploy to environment."""
    # Global arguments available in parsed namespace
    pass

🎨 CLI Configuration

app = Argss(
    name="myapp",                       # Program name (default: None)
    description="Does amazing things",  # Description in help (default: None)
    version="2.0.0",                    # Adds --version flag (default: None)
)
Option Description
name Program name in help (default: None)
description Description in help (default: None)
version Adds --version flag (default: None)

📄 License & Acknowledgments

MIT License — Built with Python standard library:

Module Purpose
argparse CLI parsing engine
inspect Signature introspection

Forked from: arg-kiss by Fkernel653

argss author: Fkernel653

Project: GitHubPyPI

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

argss-0.1.8.tar.gz (7.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

argss-0.1.8-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file argss-0.1.8.tar.gz.

File metadata

  • Download URL: argss-0.1.8.tar.gz
  • Upload date:
  • Size: 7.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.22 {"installer":{"name":"uv","version":"0.11.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for argss-0.1.8.tar.gz
Algorithm Hash digest
SHA256 f571fcccfcf9ad40b7b784fd2a74e1a70d73d7d7b0ad5941cc476007659de547
MD5 23cb73e017ed1ad7e7954185da1ad73c
BLAKE2b-256 6aaa81dc5844e0ab510447c3e2a3ac31eaf131fef2c657386f9fdf3fc885baf5

See more details on using hashes here.

File details

Details for the file argss-0.1.8-py3-none-any.whl.

File metadata

  • Download URL: argss-0.1.8-py3-none-any.whl
  • Upload date:
  • Size: 8.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.22 {"installer":{"name":"uv","version":"0.11.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for argss-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 c16fea5a5abd68adaf51806bb5105b0dde4da555903c945b66768f6aa2ff5454
MD5 8a2d4bd89ce8f383e38c833e4bde6aea
BLAKE2b-256 12fb2cc1429b42ac1984ccb51fbf922d9973c86cebcf7ad91f9183a30b2a1086

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page