Skip to main content

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


Download files

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

Source Distribution

qodalis_cli_server_abstractions-1.0.0b5.tar.gz (8.2 kB view details)

Uploaded Source

Built Distribution

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

File details

Details for the file qodalis_cli_server_abstractions-1.0.0b5.tar.gz.

File metadata

File hashes

Hashes for qodalis_cli_server_abstractions-1.0.0b5.tar.gz
Algorithm Hash digest
SHA256 5b58995170ad8e18f898063a297254949dd09ce7f2efdd8c115461fc0be1c94f
MD5 a6de6508cced818c115cba831a38f73a
BLAKE2b-256 b67d0d9b7145949951814bb9732e0a554351aef24095784fd9763518b6060e45

See more details on using hashes here.

File details

Details for the file qodalis_cli_server_abstractions-1.0.0b5-py3-none-any.whl.

File metadata

File hashes

Hashes for qodalis_cli_server_abstractions-1.0.0b5-py3-none-any.whl
Algorithm Hash digest
SHA256 4eda967f42d0c29d4433966e1880f166b2092954bd53f34e88378804281c331b
MD5 c7b3e22c424766a2717c163fbcd07a74
BLAKE2b-256 1ea76351500ec818b3629faf227c0e8c5462e46e9d29ad11516cfbd1732b0b4b

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