feat: add dataflow publication contracts and workflow webui

This commit is contained in:
2026-07-28 13:47:50 +02:00
parent 8b1910b5b7
commit baa2143a26
9 changed files with 311 additions and 8 deletions

View File

@@ -0,0 +1,76 @@
from __future__ import annotations
import unittest
from govoplan_core.core.dataflows import (
CAPABILITY_DATAFLOW_RUN_LIFECYCLE,
DataflowRunDescriptor,
DataflowRunLifecycleProvider,
dataflow_run_lifecycle,
)
from govoplan_core.core.modules import ModuleContext, ModuleManifest
from govoplan_core.core.registry import PlatformRegistry
class _Provider:
def start_run(self, session, principal, *, request):
del session, principal
return DataflowRunDescriptor(
ref="dataflow-run:1",
pipeline_ref=request.pipeline_ref,
revision=request.revision,
status="succeeded",
definition_hash="abc",
executor_version="test",
)
def get_run(self, session, principal, *, run_ref):
del session, principal
if run_ref != "dataflow-run:1":
return None
return DataflowRunDescriptor(
ref=run_ref,
pipeline_ref="pipeline:1",
revision=1,
status="succeeded",
definition_hash="abc",
executor_version="test",
)
def cancel_run(self, session, principal, *, run_ref):
del session, principal
return DataflowRunDescriptor(
ref=run_ref,
pipeline_ref="pipeline:1",
revision=1,
status="cancelled",
definition_hash="abc",
executor_version="test",
)
class DataflowContractTests(unittest.TestCase):
def test_run_lifecycle_is_runtime_checkable_and_resolved(self) -> None:
provider = _Provider()
self.assertIsInstance(provider, DataflowRunLifecycleProvider)
registry = PlatformRegistry()
registry.register(
ModuleManifest(
id="dataflow_contract_test",
name="Dataflow contract test",
version="test",
capability_factories={
CAPABILITY_DATAFLOW_RUN_LIFECYCLE: lambda context: provider,
},
)
)
registry.configure_capability_context(
ModuleContext(registry=registry, settings=object())
)
self.assertIs(provider, dataflow_run_lifecycle(registry))
self.assertIsNone(dataflow_run_lifecycle(PlatformRegistry()))
if __name__ == "__main__":
unittest.main()