CNCF Serverless Workflow Python v1.0
A Python 3 library for parsing, validating, and executing workflows defined in the CNCF Serverless Workflow v1.0 specification. Supports all state types (OperationState, ForEachState, SwitchState, SubflowState, ParallelState, EndState, EventState, DelayState, InjectState), JQ-based data filtering, events, retries, and authentication. Optimized for agentic workflows with LLM-friendly design.
Features
- Parse and Validate: Validates YAML/JSON workflows against the v1.0 schema, enforcing
transitionorend: truefor non-EndStatetypes, collecting all errors. - Execute Workflows: Handles all state types, including event-driven, delay, and data injection.
- JQ Integration: Supports JQ for
stateDataFilter,arguments, andinputCollection. - LLM-Friendly: Structured comments (e.g.,
# MANDATORY Transition) and comprehensive error reporting for LLM generation. - Testing: Pytest suite for validation of multiple error cases.
Installation
- Clone the repository:
git clone https://github.com/rvergis/cncf-serverless-workflow-python-v1.git cd cncf-serverless-workflow-python-v1 - Install dependencies:
pip install pyyaml jq jsonschema pytest - Install as a package:
pip install .
Usage
- Save your workflow (
workflow.yaml) and schema (workflow_schema.yaml). - Validate and execute:
from cncf_serverless_workflow.workflow_validator import load_yaml, validate_workflow from cncf_serverless_workflow.workflowengine import execute_workflow schema = load_yaml("workflow_schema.yaml") workflow = load_yaml("workflow_example.yaml") result = validate_workflow(workflow, schema) if result["status"] == "valid": final_state = execute_workflow(workflow) print(json.dumps(final_state, indent=2)) else: print(json.dumps(result["message"], indent=2))
- Example output for
workflow_example.yaml:{ "context": { "ParallelStartOutput": { "items": [{"value": 60}, {"value": 30}, {"value": 45}], "value": 60, "Branch1Output": 62, "Branch2Output": "Processed: 2" }, "ForEachStateOutput": { "results": [ {"method2": "Processed: 10"}, {"method3": [31, 32]}, {"method3": [46, 47]} ] }, "SwitchStateOutput": {"value": 60}, "OperationStateOutput": { "initOperation": {"value": 70}, "method1": 72, "method2": "Processed: Seq2: 72", "method3": ["Processed: Seq2: 72", "Processed: Seq2: 73"], "method4": {"key": "Processed: Seq2: 72"} } } }
LLM Integration
To generate valid workflows:
- Provide
workflow_example.yamlas a one-shot example. - Use prompt: “Generate a state with
transition(to ParallelStart, ForEachState, etc.) orend: trueaftertype, optionalstateDataFilter, anddataOutput.” - Validate with
workflow_validator.py, retrying up to 3 times with errors: “Regenerate fixing: {errors}.” - Example error:
["State 'GetAllObjectIds' missing mandatory transition or end: true"].
Testing
Run tests to validate workflows:
pytest test_workflow_validator.py
Project Structure
workflowengine.py: Executes workflows.workflow_validator.py: Validates workflows, collecting all errors.test_workflow_validator.py: Pytest suite for multiple error cases.workflow_schema.yaml: Full CNCF v1.0 schema.workflow_example.yaml: Example workflow with LLM-friendly comments.
Contributing
- Fork the repository.
- Create a feature branch (
git checkout -b feature/your-feature). - Commit changes (
git commit -m "Add your feature"). - Push to the branch (
git push origin feature/your-feature). - Open a pull request.
License
MIT License. See LICENSE.
Acknowledgments
- Built on CNCF Serverless Workflow v1.0.
- Inspired by
serverlessworkflow/sdk-python(v0.8).
Metadata
Release files for cncf-serverless-workflow 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cncf_serverless_workflow-0.1.2.tar.gz | 13.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cncf_serverless_workflow-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 29.4 kB
Release files / cncf_serverless_workflow-0.1.2.tar.gz
| Download URL | cncf_serverless_workflow-0.1.2.tar.gz |
|---|---|
| Size | 13.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a4926ae4331585e2f0e12c93d51431d0726f5879b4f021ff423d0de07acaf87c
|
|
BLAKE2b-256 checksum How to use checksums |
25be85cb368e2ccd0975d1f02e717cd80df5544b4e4865a535f83c2eaab00d59
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / cncf_serverless_workflow-0.1.2-py3-none-any.whl
| Download URL | cncf_serverless_workflow-0.1.2-py3-none-any.whl |
|---|---|
| Size | 16.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
23c8519ebf922c32cfdb3fca194d5a4808b34800dbe38c2d0d47b7956167d957
|
|
BLAKE2b-256 checksum How to use checksums |
8fe2f1bc73c7f1daeec320e9e5de4845224e5dc75f2c581e1c77cef5821aab0d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|