Shared interface contracts for wt workflow packages
Project description
wt-contracts
Shared interface contracts for wt workflow packages.
Overview
wt-contracts provides type-safe interface definitions (Pydantic models + Protocols) that enable inter-package compatibility across the wt ecosystem. This package contains no implementation logic - only contracts that other packages depend on.
Purpose
The wt architecture separates serializable metadata (@register) from execution features (@task). To enable cross-environment discovery via CLI serialization boundary, we need shared contracts that all packages agree on:
- Registry Contract: JSON schema for wt-registry CLI output
- Task Execution Contract: Protocol defining task execution interface
- Generated CLI Contract: Standard CLI arguments for generated workflows
Package Contents
wt_contracts.registry
Pydantic models for wt-registry CLI output:
RegistryMetadata: Function metadata (title, description, tags, deprecation)RegistryEntry: Complete registry entry (metadata + schemas + import info)RegistryOutput: Top-level CLI output format
wt_contracts.task
Protocol for task execution interface:
TaskProtocol[P, R]: Generic protocol with methods like.partial(),.call(),.map()
wt_contracts.cli
Standard CLI contracts for generated workflows:
WorkflowCLIArgs: Standard CLI argumentsWorkflowCLIEnv: Standard environment variables
Installation
pip install wt-contracts
# or
uv add wt-contracts
Usage
from wt_contracts.registry import RegistryOutput, RegistryEntry
from wt_contracts.task import TaskProtocol
from wt_contracts.cli import WorkflowCLIArgs
# Deserialize registry CLI output
registry_data = RegistryOutput.model_validate_json(cli_output)
# Type-check task implementations
def my_task_wrapper(func: Callable[P, R]) -> TaskProtocol[P, R]:
...
Development
# Install dependencies (including dev dependencies)
cd wt/wt-contracts
# IMPORTANT: Use --group dev to install pytest, mypy, ruff, etc.
uv sync --group dev
# Run tests
uv run pytest
# Type check
uv run mypy src/
# Lint
uv run ruff check .
Note: This project uses [dependency-groups] instead of [project.optional-dependencies]. You must use --group dev to install dev dependencies. Running uv sync alone will only install production dependencies (pydantic).
Design Philosophy
- Minimal dependencies: Only pydantic (for validation)
- No implementation: Pure interface definitions
- Type-safe: Full mypy strict mode compliance
- Version stability: Breaking changes require major version bump
- Lightweight: Fast to install, minimal impact on dependency trees
Related Packages
wt-registry: Function registration with JSON schema generation (uses registry contracts)wt-task: Task decorator with execution features (implements task protocol)wt-compiler: Workflow compilation (uses all contracts for discovery + generation)wt-invokers: Workflow invocation (uses CLI contract)wt-runner: FastAPI workflow execution server (uses CLI contract)
License
BSD-3-Clause
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
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 wt_contracts-0.2.0.tar.gz.
File metadata
- Download URL: wt_contracts-0.2.0.tar.gz
- Upload date:
- Size: 77.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
79e91ab08b154e8fc88a24ae643e4290549f81c6c50883b180226adde1ae8a06
|
|
| MD5 |
7428abc3b6c18173dd66f22d797a58e7
|
|
| BLAKE2b-256 |
09356800c5574defaab821441236bd7a802e5f794d4debd31308c82f8d8a134b
|
File details
Details for the file wt_contracts-0.2.0-py3-none-any.whl.
File metadata
- Download URL: wt_contracts-0.2.0-py3-none-any.whl
- Upload date:
- Size: 12.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d35d7021ea44349beaa6bec489ea655c354d7f682b85c92b1cb44fb0c0e2853
|
|
| MD5 |
64cc2455061d0ddbb1fe62c44e1a26d1
|
|
| BLAKE2b-256 |
ffd4d576d458b962044472e91e7f34705592ea67ef3646d8fcb09f9b5dac8859
|