Clak
Clak (Command Line avec Klass) is a Python library for building command-line
interfaces with a class-based API on top of standard argparse. Nested
commands, arguments, and optional batteries (views, logging, config, completion)
stay close to what you already know from the stdlib.
Full docs: mrjk.github.io/python-clak · PyPI: mrjk.clak
Features
- Class-based CLI — define apps with
Parser,Argument, andCommand; no new DSL - Argparse-native — same argument syntax as
add_argument()/ subparsers - Nested commands — git-like trees with inheritance and a command overview in
--help - Optional components — views, logging, XDG config, shell-completion script generation
- Light core; extras only when you need them (
colors,config,markdown,rst)
Requirements
- Python 3.10–3.14 (declared
>=3.10,<4.0; CI and local matrix cover 3.10–3.14) argparse(stdlib)
Developer setup and the version matrix: Development setup.
Install
pip install mrjk.clak
# Or with your project manager
poetry add mrjk.clak
pdm add mrjk.clak
uv add mrjk.clak
Optional:
pip install 'mrjk.clak[colors]' # coloredlogs for LoggingOptMixin
pip install 'mrjk.clak[config]' # PyYAML for YAML config / --format yaml
pip install 'mrjk.clak[markdown]' # rich for MarkdownView and colored --help
pip install 'mrjk.clak[rst]' # docutils for RstView
Quick start
from clak import Argument, Command, Parser
class ShowCommand(Parser):
"""Show something."""
target = Argument("--target", "-t", help="Target to show")
format = Argument(
"--format", choices=["json", "text"], help="Output format"
)
def cli_run(self, target=None, format=None, **_):
print(f"show target={target} format={format}")
class MainApp(Parser):
"""Demo application."""
debug = Argument("--debug", action="store_true", help="Enable debug mode")
config = Argument("--config", "-c", help="Config file path")
show = Command(ShowCommand, help="Show something")
# Instantiating the root parser parses argv and runs the matching command.
if __name__ == "__main__":
MainApp()
$ python demo.py --help
usage: demo.py [-h] [--debug] [--config CONFIG] {show} ...
Key concepts
Arguments
class MyCommand(Parser):
verbose = Argument("-v", "--verbose", action="store_true", help="Verbose")
Nested commands
Command binds a child Parser (aliases: SubParser, SubCommand, Cmd):
class MainApp(Parser):
status = Command(StatusCommand, help="Show status")
Optional components
| Component | Mixin / class | Docs |
|---|---|---|
| Tables / structured output | ListViewMixin, ShowViewMixin, PprintViewMixin |
Views |
Colored --help |
default (Rich extra, TTY) | Colored help |
Logging + -v |
LoggingOptMixin |
Logging |
| XDG paths + config file | XDGConfigMixin |
Config |
| Shell completion scripts | CompCmdRender |
Completion |
Learn more
- Installation and Quickstart
- Guides under
docs// the site Guides tab - Pasteable AI context: primer · reference
- Runnable examples in
examples/ - Planned work: Roadmap
Contributing
Bug reports, questions, and PRs are welcome. See the contribution guidelines
in the documentation (or CONTRIBUTING.md).
License
GPL v3.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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 mrjk_clak-0.6.0.tar.gz.
File metadata
- Download URL: mrjk_clak-0.6.0.tar.gz
- Upload date:
- Size: 84.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
poetry/2.1.4 CPython/3.12.3 Linux/6.17.0-1022-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc0aa69e64808e0d66dc553b2134e4cc975f37ecc9ae8db8b2a3a34493c0f30c
|
|
| MD5 |
ac9f254f6f373b08789681bc55b19e85
|
|
| BLAKE2b-256 |
fa10b3b756bb8669b5d4024b8e79a5dc45c426a544c320ae963032a70a27855e
|
File details
Details for the file mrjk_clak-0.6.0-py3-none-any.whl.
File metadata
- Download URL: mrjk_clak-0.6.0-py3-none-any.whl
- Upload date:
- Size: 103.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
poetry/2.1.4 CPython/3.12.3 Linux/6.17.0-1022-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd2ea23d470d57ec1900fad73708332f4161843f6b62114116551602c874c4e6
|
|
| MD5 |
9e41f06669463c8640fb93e569d5900e
|
|
| BLAKE2b-256 |
7ca787f0e284f3cd6eb5b1afe5309d6cc16b21661b9ac4a44214805138cefc08
|