Skip to main content

cliss — Lightweight framework for building CLI applications

Python PyPI License Platform Ruff

Write type-annotated Python functions, get a full CLI — automatic --help, validation, async support, and zero dependencies.

🚀 Quick Start

pip install cliss                    # Python 3.10+
from cliss import Cliss

cli = Cliss(name="todo", description="Task manager", version="1.0.0")


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


@cli.command()
def list_all():
    """Show all tasks."""
    return "Nothing yet!"


cli()
$ 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 [COMMAND] [OPTIONS] [ARGS]...

Task manager

Commands:
  add           Add a task.
  list-all      Show all tasks.

Options:
  -V, --version Print version info and exit
  -h, --help    Print help

📋 Commands & Features

@cli.command() — Define commands from functions

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

@cli.argument() — Customize argument flags

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

@cli.argument("-v", "--verbose", help="Enable verbose output")
@cli.argument("-r", "--retries", type=int, help="Number of retries")
@cli.command()
def fetch(url: str, verbose: bool = False, retries: int = 3):
    """Download from URL"""
    return f"Fetched {url} (retries: {retries})"

Type → CLI mapping

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

Boolean flag behavior

Function signature Help display Usage
flag: bool --flag, --no-flag (required) --flag or --no-flag
flag: bool = False --flag (default: disabled) --flag enables, --no-flag also works
flag: bool = True --no-flag (default: enabled) --no-flag disables, --flag also works

Command groups

remote = cli.group("remote", "Manage remotes")


@remote.command()
def add(name: str, url: str):
    return f"Added remote {name}"

Async support

@cli.command()
async def fetch(url: str, retries: int = 3):
    return f"Fetched {url} (retries: {retries})"

🎨 CLI Configuration

cli = Cliss(
    name="myapp",  # Program name in help
    description="Does amazing things",  # Description in help
    version="2.0.0",  # Adds --version flag
    color=False,  # Disable ANSI colours
)
Option Description
name Program name in help
description Description in help
version Adds --version flag
usage Custom usage string
color Enable/disable ANSI colours (default: True)

Disable colours via environment

NO_COLOR=1 python myapp.py --help

📄 License & Acknowledgments

LGPLv3 License — Built with pure Python standard library:

Module Purpose
sys Argument parsing
asyncio Async command execution
inspect Signature introspection

Author: Fkernel653 Project: GitHubPyPI

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cliss-1.2.4.1.tar.gz (14.0 kB view details)

Uploaded Source

Built Distribution

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

cliss-1.2.4.1-py3-none-any.whl (18.0 kB view details)

Uploaded Python 3

File details

Details for the file cliss-1.2.4.1.tar.gz.

File metadata

  • Download URL: cliss-1.2.4.1.tar.gz
  • Upload date:
  • Size: 14.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","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 cliss-1.2.4.1.tar.gz
Algorithm Hash digest
SHA256 c7f3d1dcf7c06bde637d262e1c481ad084742882f457d3f8d9568ee0907e9a6f
MD5 ff52a794f4dd0e169acf670f86e17ae2
BLAKE2b-256 ea2e86f251895cd9d99f391775bcaee43461c2b369a054adbf3a4a9d540fa290

See more details on using hashes here.

File details

Details for the file cliss-1.2.4.1-py3-none-any.whl.

File metadata

  • Download URL: cliss-1.2.4.1-py3-none-any.whl
  • Upload date:
  • Size: 18.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","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 cliss-1.2.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9b81b517c3b73826db6d77e924bae9577c973b139c4973abd7b216e2a5e47fe6
MD5 58c53f92900b0dc203cb022157d0283a
BLAKE2b-256 0836424d9c3fed3b794e70ffd9d101d3750c507209228703be80ca46abad076d

See more details on using hashes here.

Release history Release notifications | RSS feed

1.2.4.2

2 files

This release

1.2.4.1 This release

2 files

1.2.4

2 files

1.2.3

2 files

1.2.2

2 files

1.2.1

2 files

1.2.0

2 files

1.1.9

2 files

1.1.8

2 files

1.1.7

2 files

1.1.6

2 files

1.1.5

2 files

1.1.4

2 files

1.1.3

2 files

1.1.2

2 files

1.1.1

2 files

1.1.0

2 files

1.0.3

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

0.8.2

2 files

0.8.1

2 files

0.8.0

2 files

0.7.8

2 files

0.7.7

2 files

0.7.6

2 files

0.7.5

2 files

0.7.3

2 files

0.7.2

2 files

0.7.1

2 files

0.7.0

2 files

0.6.6

2 files

0.6.5

2 files

0.6.4

2 files

0.6.3

2 files

0.6.2

2 files

0.6.1

2 files

0.6.0

2 files

0.5.3

2 files

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

0.4.0

2 files

0.3.9.9

2 files

0.3.9.8

2 files

0.3.9.7

2 files

0.3.9.6

2 files

0.3.9.5

2 files

0.3.9.4

2 files

0.3.9.3

2 files

0.3.9.2

2 files

0.3.9.1

2 files

0.3.9

2 files

0.3.8

2 files

0.3.7

2 files

0.3.6

2 files

0.3.5

2 files

0.3.4

2 files

0.3.3

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page