Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions chk/infrastructure/symbol_table.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,24 @@ def handle(
if variables:
cls.handle_composite(variable_doc, variables)

@classmethod
def handle_variable_doc(
cls,
variables: Variables,
variable_doc: dict,
) -> None:
"""Handles variable handling

Args:
variable_doc: VariableDocument to add values to
variables: VersionedDocument of document data
"""

cls.handle_absolute(variables, variable_doc)

if variables:
cls.handle_composite(variables, variable_doc)

@classmethod
def handle_absolute(cls, variable_doc: Variables, document: dict) -> None:
"""Handles absolute variables and values from document
Expand Down
26 changes: 20 additions & 6 deletions chk/modules/workflow/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from collections import abc
from collections.abc import Callable

import icecream
from pydantic import BaseModel, ConfigDict, Field

from chk.infrastructure.document import (
Expand Down Expand Up @@ -113,6 +114,17 @@ def set_step_template(cls, variables: Variables) -> None:
# @TODO implement data set functionality with validation for variables
variables[WorkflowConfigNode.NODE.value] = []

@classmethod
def process_task_variables_template(cls, task: dict, variables: Variables):
"""process task.variables template"""

if "variables" in task:
doc = task["variables"]
loc_vars = Variables(variables.data)

VariableTableManager.handle_variable_doc(loc_vars, doc)
task["variables"] = {key: value for key, value in loc_vars.items() if key in doc.keys()}

@classmethod
def process_task_template(
cls, document: WorkflowDocument, variables: Variables
Expand All @@ -135,19 +147,21 @@ def process_task_template(
raise RuntimeError("`tasks.*.item` should be map.")

# replace values in tasks
task_d_: dict = replace_value(task, variables.data)
debug(task_d_)
task_repl = {key: value for key, value in task.items() if key in {"name"}}
task = task | replace_value(task_repl, variables.data)

cls.process_task_variables_template(task, variables)

task_o_ = ChkwareTaskSupport.make_task(
task_d_, **dict(base_file_path=base_fpath)
task, **dict(base_file_path=base_fpath)
)

exctx_args = {"variables": json.dumps(task_o_.variables)}
execute_args = {"variables": json.dumps(task_o_.variables)}

if isinstance(task_o_, ChkwareValidateTask):
exctx_args["arguments"] = task_o_.arguments.model_dump_json()
execute_args["arguments"] = task_o_.arguments.model_dump_json()

execution_ctx = ExecuteContext({"dump": True, "format": True}, exctx_args)
execution_ctx = ExecuteContext({"dump": True, "format": True}, execute_args)
debug(execution_ctx)

task_fn = None
Expand Down
2 changes: 1 addition & 1 deletion tests/modules/workflow/wf_module_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def test_execute_pass_args(
execute(file_ctx, execution_ctx)

captured = capsys.readouterr()
assert "======" in captured.out
assert "------" in captured.out

class TestWorkflowCall:
"""TestWorkflowCall"""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ variables:
tasks:
- name: Fetch some content from URL
uses: fetch
file: "./<% group %>-usd-request.chk"
file: "./coinstats-usd-request.chk"
variables:
convertCurrency: <% currency %>

- name: Validate the content is okay
uses: validate
file: "./<% group %>-usd-validate.chk"
file: "./coinstats-usd-validate.chk"
variables:
vdata: <% _steps.0._response %>

Expand Down
Loading