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.0b3.tar.gz (5.7 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.0b3.tar.gz.

File metadata

File hashes

Hashes for qodalis_cli_server_abstractions-1.0.0b3.tar.gz
Algorithm Hash digest
SHA256 4484b459cf36d6b66fb38cca04c4a3e455adebcac4b3580c1a3fd78d68c29cac
MD5 8169117330ab2e224db4e068b78f0e08
BLAKE2b-256 4af632593275de2f118cc2d9a213d6ea9388fed6ccb9e888d5909735887ee27d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qodalis_cli_server_abstractions-1.0.0b3-py3-none-any.whl
Algorithm Hash digest
SHA256 024c9ba56fd79e00e8cb38d1bbddf18e4e538c29db2c07e094d2d88ed98a103d
MD5 8af85653bbb8a28fc740a046d8d9657f
BLAKE2b-256 933110eab7dcc2683832e7b958e0cf810a814e61678ea048ebec74d031b7543e

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