Quick fix for taskoutput change bug in forloopblock (#323)
This commit is contained in:
@@ -232,6 +232,11 @@ class WorkflowRunContext:
|
|||||||
and isinstance(parameter.source, OutputParameter)
|
and isinstance(parameter.source, OutputParameter)
|
||||||
and parameter.source.key == output_parameter.key
|
and parameter.source.key == output_parameter.key
|
||||||
):
|
):
|
||||||
|
value = (
|
||||||
|
value["extracted_information"]
|
||||||
|
if isinstance(value, dict) and "extracted_information" in value
|
||||||
|
else value
|
||||||
|
)
|
||||||
if parameter.value:
|
if parameter.value:
|
||||||
LOG.warning(
|
LOG.warning(
|
||||||
f"Context parameter {parameter.key} already has a value, overwriting",
|
f"Context parameter {parameter.key} already has a value, overwriting",
|
||||||
|
|||||||
@@ -339,14 +339,25 @@ class ForLoopBlock(Block):
|
|||||||
return context_parameters
|
return context_parameters
|
||||||
|
|
||||||
def get_loop_over_parameter_values(self, workflow_run_context: WorkflowRunContext) -> list[Any]:
|
def get_loop_over_parameter_values(self, workflow_run_context: WorkflowRunContext) -> list[Any]:
|
||||||
if isinstance(self.loop_over, WorkflowParameter) or isinstance(self.loop_over, OutputParameter):
|
if isinstance(self.loop_over, WorkflowParameter):
|
||||||
parameter_value = workflow_run_context.get_value(self.loop_over.key)
|
parameter_value = workflow_run_context.get_value(self.loop_over.key)
|
||||||
|
elif isinstance(self.loop_over, OutputParameter):
|
||||||
|
# If the output parameter is for a TaskBlock, it will be a TaskOutput object. We need to extract the
|
||||||
|
# value from the TaskOutput object's extracted_information field.
|
||||||
|
output_parameter_value = workflow_run_context.get_value(self.loop_over.key)
|
||||||
|
if isinstance(output_parameter_value, dict) and "extracted_information" in output_parameter_value:
|
||||||
|
parameter_value = output_parameter_value["extracted_information"]
|
||||||
|
else:
|
||||||
|
parameter_value = output_parameter_value
|
||||||
elif isinstance(self.loop_over, ContextParameter):
|
elif isinstance(self.loop_over, ContextParameter):
|
||||||
parameter_value = self.loop_over.value
|
parameter_value = self.loop_over.value
|
||||||
if not parameter_value:
|
if not parameter_value:
|
||||||
source_parameter_value = workflow_run_context.get_value(self.loop_over.source.key)
|
source_parameter_value = workflow_run_context.get_value(self.loop_over.source.key)
|
||||||
if isinstance(source_parameter_value, dict):
|
if isinstance(source_parameter_value, dict):
|
||||||
parameter_value = source_parameter_value.get(self.loop_over.key)
|
if "extracted_information" in source_parameter_value:
|
||||||
|
parameter_value = source_parameter_value["extracted_information"].get(self.loop_over.key)
|
||||||
|
else:
|
||||||
|
parameter_value = source_parameter_value.get(self.loop_over.key)
|
||||||
else:
|
else:
|
||||||
raise ValueError("ContextParameter source value should be a dict")
|
raise ValueError("ContextParameter source value should be a dict")
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user