Handle ContextParameter while creating workflow from yaml (#172)
This commit is contained in:
@@ -35,6 +35,7 @@ from skyvern.forge.sdk.workflow.models.block import (
|
|||||||
)
|
)
|
||||||
from skyvern.forge.sdk.workflow.models.parameter import (
|
from skyvern.forge.sdk.workflow.models.parameter import (
|
||||||
AWSSecretParameter,
|
AWSSecretParameter,
|
||||||
|
ContextParameter,
|
||||||
OutputParameter,
|
OutputParameter,
|
||||||
Parameter,
|
Parameter,
|
||||||
ParameterType,
|
ParameterType,
|
||||||
@@ -653,6 +654,10 @@ class WorkflowService:
|
|||||||
# Create parameters from the request
|
# Create parameters from the request
|
||||||
parameters = {}
|
parameters = {}
|
||||||
duplicate_parameter_keys = set()
|
duplicate_parameter_keys = set()
|
||||||
|
|
||||||
|
# We're going to process context parameters after other parameters since they depend on the other parameters
|
||||||
|
context_parameter_yamls = []
|
||||||
|
|
||||||
for parameter in request.workflow_definition.parameters:
|
for parameter in request.workflow_definition.parameters:
|
||||||
if parameter.key in parameters:
|
if parameter.key in parameters:
|
||||||
LOG.error(f"Duplicate parameter key {parameter.key}")
|
LOG.error(f"Duplicate parameter key {parameter.key}")
|
||||||
@@ -689,6 +694,21 @@ class WorkflowService:
|
|||||||
key=parameter.key,
|
key=parameter.key,
|
||||||
description=parameter.description,
|
description=parameter.description,
|
||||||
)
|
)
|
||||||
|
elif parameter.parameter_type == ParameterType.CONTEXT:
|
||||||
|
context_parameter_yamls.append(parameter)
|
||||||
|
else:
|
||||||
|
LOG.error(f"Invalid parameter type {parameter.parameter_type}")
|
||||||
|
|
||||||
|
# Now we can process the context parameters since all other parameters have been created
|
||||||
|
for context_parameter in context_parameter_yamls:
|
||||||
|
parameters[context_parameter.key] = ContextParameter(
|
||||||
|
key=context_parameter.key,
|
||||||
|
description=context_parameter.description,
|
||||||
|
source=parameters[context_parameter.source_workflow_parameter_key],
|
||||||
|
# Context parameters don't have a default value, the value always depends on the source parameter
|
||||||
|
value=None,
|
||||||
|
)
|
||||||
|
|
||||||
if duplicate_parameter_keys:
|
if duplicate_parameter_keys:
|
||||||
raise WorkflowDefinitionHasDuplicateParameterKeys(duplicate_keys=duplicate_parameter_keys)
|
raise WorkflowDefinitionHasDuplicateParameterKeys(duplicate_keys=duplicate_parameter_keys)
|
||||||
# Create blocks from the request
|
# Create blocks from the request
|
||||||
|
|||||||
Reference in New Issue
Block a user