Shared interfaces and base classes for Qodalis CLI command processors — zero framework dependencies
Project description
qodalis-cli-server-abstractions
Shared interfaces and base classes for building Qodalis CLI command processors in Python. Zero framework dependencies — install this package when writing plugins, without pulling in FastAPI, uvicorn, or websockets.
Install
pip install qodalis-cli-server-abstractions
Quick Start
Create a custom command processor by subclassing CliCommandProcessor:
from qodalis_cli_server_abstractions import (
CliCommandProcessor,
CliProcessCommand,
CliCommandParameterDescriptor,
)
class GreetCommandProcessor(CliCommandProcessor):
@property
def command(self) -> str:
return "greet"
@property
def description(self) -> str:
return "Greets a user by name"
@property
def parameters(self):
return [
CliCommandParameterDescriptor("--name", "Name to greet", required=True),
]
async def handle_async(self, command: CliProcessCommand) -> str:
name = command.args.get("name", "World")
return f"Hello, {name}!"
Then register the processor with the server package. See qodalis-cli-server for server setup.
API Reference
Abstract Base Classes
| Class | Description |
|---|---|
ICliCommandProcessor |
Abstract base defining the processor contract: command, description, author, parameters, sub-processors, and handle_async() |
CliCommandProcessor |
Convenience subclass of ICliCommandProcessor with sensible defaults |
Protocols
| Protocol | Description |
|---|---|
ICliCommandAuthor |
Author metadata: name and email (runtime-checkable) |
ICliCommandParameterDescriptor |
Parameter declaration: name, type, required, aliases, default value (runtime-checkable) |
Data Classes
| Class | Description |
|---|---|
CliProcessCommand |
Parsed command input: command, value, args, chain_commands, raw_command, data |
CliCommandAuthor |
Simple implementation of ICliCommandAuthor |
CliCommandParameterDescriptor |
Simple implementation of ICliCommandParameterDescriptor |
Constants
| Constant | Description |
|---|---|
DEFAULT_LIBRARY_AUTHOR |
Default CliCommandAuthor instance used when no author is specified |
ICliCommandProcessor Properties
| Property | Type | Default | Description |
|---|---|---|---|
command |
str |
(abstract) | The command name users type to invoke this processor |
description |
str |
(abstract) | Human-readable description shown in help |
author |
ICliCommandAuthor |
DEFAULT_LIBRARY_AUTHOR |
Author metadata |
version |
str |
"1.0.0" |
Processor version |
api_version |
int |
1 |
Minimum API version this processor targets |
allow_unlisted_commands |
bool | None |
None |
Accept sub-commands not in processors list |
value_required |
bool | None |
None |
Whether a positional value argument is required |
processors |
list | None |
None |
Nested sub-command processors |
parameters |
list | None |
None |
Declared parameters for autocompletion and validation |
handle_async(command) |
method | (abstract) | Execute the command, return result string |
License
MIT
Project details
Release history Release notifications | RSS feed
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 qodalis_cli_server_abstractions-1.0.0b5.tar.gz.
File metadata
- Download URL: qodalis_cli_server_abstractions-1.0.0b5.tar.gz
- Upload date:
- Size: 8.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5b58995170ad8e18f898063a297254949dd09ce7f2efdd8c115461fc0be1c94f
|
|
| MD5 |
a6de6508cced818c115cba831a38f73a
|
|
| BLAKE2b-256 |
b67d0d9b7145949951814bb9732e0a554351aef24095784fd9763518b6060e45
|
File details
Details for the file qodalis_cli_server_abstractions-1.0.0b5-py3-none-any.whl.
File metadata
- Download URL: qodalis_cli_server_abstractions-1.0.0b5-py3-none-any.whl
- Upload date:
- Size: 15.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4eda967f42d0c29d4433966e1880f166b2092954bd53f34e88378804281c331b
|
|
| MD5 |
c7b3e22c424766a2717c163fbcd07a74
|
|
| BLAKE2b-256 |
1ea76351500ec818b3629faf227c0e8c5462e46e9d29ad11516cfbd1732b0b4b
|