Loco SDK
Official SDK for building Loco workflow plugins.
Installation
For Plugin Development
# Using pip
pip install loco-sdk
# Using uv (recommended)
uv pip install loco-sdk
For SDK Development
# Clone repository
cd packages/loco-sdk
# Install with dev dependencies using uv
uv venv
source .venv/bin/activate # or .venv\Scripts\activate on Windows
uv pip install -e ".[dev]"
# Or with pip
pip install -e ".[dev]"
Quick Start
from loco_sdk import NodePlugin
class MyNode(NodePlugin):
"""My custom node."""
async def execute(self, inputs: dict, context: dict) -> dict:
"""
Execute node logic.
Args:
inputs: Node input values
context: Workflow execution context with auth, sys_vars, etc.
Returns:
Output values dictionary
"""
# Get authentication if needed
auth = context.get("auth")
if auth:
headers = auth.get_header()
# Use headers for API calls
# Process inputs
result = do_something(inputs)
# Return outputs
return {"result": result}
Authentication Helper
The SDK provides AuthContext to easily work with credentials:
from loco_sdk import NodePlugin, AuthContext
class MyNode(NodePlugin):
async def execute(self, inputs: dict, context: dict) -> dict:
# Wrap auth dict with helper
auth = AuthContext(context.get("auth"))
# Get Authorization header
headers = auth.get_header()
# Returns: {"Authorization": "Bearer <token>"}
# Check token expiry
if auth.is_expired():
raise AuthenticationError("Token expired")
# Access properties
provider = auth.provider # e.g., "google"
scopes = auth.scopes # OAuth scopes
# Use in API calls
response = await client.get(url, headers=headers)
return {"data": response.json()}
Features
- NodePlugin Base Class: Simple interface for workflow nodes
- AuthContext Helper: Easy OAuth2/API key authentication
- Type Safety: Full Pydantic schema support (coming soon)
- Manifest Loading: Parse plugin.yaml files (coming soon)
- Testing: Comprehensive test suite with pytest
Development
See DEVELOPMENT.md for detailed development guide.
Quick Setup
# Install dependencies
make install
# Install pre-commit hooks (optional)
pip install pre-commit
pre-commit install
Quick Commands
Use the Makefile for common tasks:
# Show all available commands
make help
# Run tests with coverage
make test
# Format code
make format
# Lint code
make lint
# Type check
make type-check
# Run all quality checks
make quality
# Build package
make build
# Clean build artifacts
make clean
Or use commands directly:
# Run tests
pytest --cov=loco_sdk --cov-report=html -v
# Format code
black src tests
# Lint code
ruff check src tests
# Type check
mypy src
CI/CD
This project uses GitHub Actions for CI/CD:
- CI Pipeline: Runs tests, linting, type checking on every push/PR
- Publish Pipeline: Automatically publishes to PyPI on releases
- Dependabot: Keeps dependencies up to date
See .github/workflows/README.md for details.
Documentation
See docs/ for detailed guides (coming soon).
Version
0.1.0
Release files for loco-sdk 0.2.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| loco_sdk-0.2.7.tar.gz | 36.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| loco_sdk-0.2.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 67.3 kB
Release files / loco_sdk-0.2.7.tar.gz
| Download URL | loco_sdk-0.2.7.tar.gz |
|---|---|
| Size | 36.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
17fc16285be3d85b240f06df552ea84ba3a3a631a61db60a436f0a0cbec99a20
|
|
BLAKE2b-256 checksum How to use checksums |
a04ea06ca5568ad3bc05837fe46174096d327635940bc57cdf94397ff3cb0c43
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / loco_sdk-0.2.7-py3-none-any.whl
| Download URL | loco_sdk-0.2.7-py3-none-any.whl |
|---|---|
| Size | 30.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
48f2d974db59680717dbdd057d164610a23f1fe9509aacba9a1165abc884de44
|
|
BLAKE2b-256 checksum How to use checksums |
c4c1ff3b7e710fa26eee6c03178aa2e224f9558a914bbccbbd5182c9e57973e4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|