|
@@ -11,15 +11,6 @@ from core.workflow.nodes.base_node import BaseNode
|
|
|
from core.workflow.nodes.code.entities import CodeNodeData
|
|
|
from models.workflow import WorkflowNodeExecutionStatus
|
|
|
|
|
|
-MAX_NUMBER = dify_config.CODE_MAX_NUMBER
|
|
|
-MIN_NUMBER = dify_config.CODE_MIN_NUMBER
|
|
|
-MAX_PRECISION = dify_config.CODE_MAX_PRECISION
|
|
|
-MAX_DEPTH = dify_config.CODE_MAX_DEPTH
|
|
|
-MAX_STRING_LENGTH = dify_config.CODE_MAX_STRING_LENGTH
|
|
|
-MAX_STRING_ARRAY_LENGTH = dify_config.CODE_MAX_STRING_ARRAY_LENGTH
|
|
|
-MAX_OBJECT_ARRAY_LENGTH = dify_config.CODE_MAX_OBJECT_ARRAY_LENGTH
|
|
|
-MAX_NUMBER_ARRAY_LENGTH = dify_config.CODE_MAX_NUMBER_ARRAY_LENGTH
|
|
|
-
|
|
|
|
|
|
class CodeNode(BaseNode):
|
|
|
_node_data_cls = CodeNodeData
|
|
@@ -97,8 +88,9 @@ class CodeNode(BaseNode):
|
|
|
else:
|
|
|
raise ValueError(f"Output variable `{variable}` must be a string")
|
|
|
|
|
|
- if len(value) > MAX_STRING_LENGTH:
|
|
|
- raise ValueError(f'The length of output variable `{variable}` must be less than {MAX_STRING_LENGTH} characters')
|
|
|
+ if len(value) > dify_config.CODE_MAX_STRING_ARRAY_LENGTH:
|
|
|
+ raise ValueError(f'The length of output variable `{variable}` must be'
|
|
|
+ f' less than {dify_config.CODE_MAX_STRING_ARRAY_LENGTH} characters')
|
|
|
|
|
|
return value.replace('\x00', '')
|
|
|
|
|
@@ -115,13 +107,15 @@ class CodeNode(BaseNode):
|
|
|
else:
|
|
|
raise ValueError(f"Output variable `{variable}` must be a number")
|
|
|
|
|
|
- if value > MAX_NUMBER or value < MIN_NUMBER:
|
|
|
- raise ValueError(f'Output variable `{variable}` is out of range, it must be between {MIN_NUMBER} and {MAX_NUMBER}.')
|
|
|
+ if value > dify_config.CODE_MAX_NUMBER or value < dify_config.CODE_MIN_NUMBER:
|
|
|
+ raise ValueError(f'Output variable `{variable}` is out of range,'
|
|
|
+ f' it must be between {dify_config.CODE_MIN_NUMBER} and {dify_config.CODE_MAX_NUMBER}.')
|
|
|
|
|
|
if isinstance(value, float):
|
|
|
# raise error if precision is too high
|
|
|
- if len(str(value).split('.')[1]) > MAX_PRECISION:
|
|
|
- raise ValueError(f'Output variable `{variable}` has too high precision, it must be less than {MAX_PRECISION} digits.')
|
|
|
+ if len(str(value).split('.')[1]) > dify_config.CODE_MAX_PRECISION:
|
|
|
+ raise ValueError(f'Output variable `{variable}` has too high precision,'
|
|
|
+ f' it must be less than {dify_config.CODE_MAX_PRECISION} digits.')
|
|
|
|
|
|
return value
|
|
|
|
|
@@ -134,8 +128,8 @@ class CodeNode(BaseNode):
|
|
|
:param output_schema: output schema
|
|
|
:return:
|
|
|
"""
|
|
|
- if depth > MAX_DEPTH:
|
|
|
- raise ValueError("Depth limit reached, object too deep.")
|
|
|
+ if depth > dify_config.CODE_MAX_DEPTH:
|
|
|
+ raise ValueError(f"Depth limit ${dify_config.CODE_MAX_DEPTH} reached, object too deep.")
|
|
|
|
|
|
transformed_result = {}
|
|
|
if output_schema is None:
|
|
@@ -235,9 +229,10 @@ class CodeNode(BaseNode):
|
|
|
f'Output {prefix}{dot}{output_name} is not an array, got {type(result.get(output_name))} instead.'
|
|
|
)
|
|
|
else:
|
|
|
- if len(result[output_name]) > MAX_NUMBER_ARRAY_LENGTH:
|
|
|
+ if len(result[output_name]) > dify_config.CODE_MAX_NUMBER_ARRAY_LENGTH:
|
|
|
raise ValueError(
|
|
|
- f'The length of output variable `{prefix}{dot}{output_name}` must be less than {MAX_NUMBER_ARRAY_LENGTH} elements.'
|
|
|
+ f'The length of output variable `{prefix}{dot}{output_name}` must be'
|
|
|
+ f' less than {dify_config.CODE_MAX_NUMBER_ARRAY_LENGTH} elements.'
|
|
|
)
|
|
|
|
|
|
transformed_result[output_name] = [
|
|
@@ -257,9 +252,10 @@ class CodeNode(BaseNode):
|
|
|
f'Output {prefix}{dot}{output_name} is not an array, got {type(result.get(output_name))} instead.'
|
|
|
)
|
|
|
else:
|
|
|
- if len(result[output_name]) > MAX_STRING_ARRAY_LENGTH:
|
|
|
+ if len(result[output_name]) > dify_config.CODE_MAX_STRING_ARRAY_LENGTH:
|
|
|
raise ValueError(
|
|
|
- f'The length of output variable `{prefix}{dot}{output_name}` must be less than {MAX_STRING_ARRAY_LENGTH} elements.'
|
|
|
+ f'The length of output variable `{prefix}{dot}{output_name}` must be'
|
|
|
+ f' less than {dify_config.CODE_MAX_STRING_ARRAY_LENGTH} elements.'
|
|
|
)
|
|
|
|
|
|
transformed_result[output_name] = [
|
|
@@ -279,9 +275,10 @@ class CodeNode(BaseNode):
|
|
|
f'Output {prefix}{dot}{output_name} is not an array, got {type(result.get(output_name))} instead.'
|
|
|
)
|
|
|
else:
|
|
|
- if len(result[output_name]) > MAX_OBJECT_ARRAY_LENGTH:
|
|
|
+ if len(result[output_name]) > dify_config.CODE_MAX_OBJECT_ARRAY_LENGTH:
|
|
|
raise ValueError(
|
|
|
- f'The length of output variable `{prefix}{dot}{output_name}` must be less than {MAX_OBJECT_ARRAY_LENGTH} elements.'
|
|
|
+ f'The length of output variable `{prefix}{dot}{output_name}` must be'
|
|
|
+ f' less than {dify_config.CODE_MAX_OBJECT_ARRAY_LENGTH} elements.'
|
|
|
)
|
|
|
|
|
|
for i, value in enumerate(result[output_name]):
|