CodeExecutionResponse with data: none
Self Checks
- [X] This is only for bug report, if you would like to ask a question, please head to Discussions.
- [X] I have searched for existing issues search for existing issues, including closed ones.
- [X] I confirm that I am using English to submit this report (我已阅读并同意 Language Policy).
- [X] Please do not modify this template :) and fill in all the required fields.
Dify version
0.6.8
Cloud or Self Hosted
Self Hosted (Source)
Steps to reproduce
When testing the code execution node in a workflow locally using local code startup, I got "1 validation error for CodeExecutionResponse data none is not an allowed value (type=type_error.none.not_allowed)" when testing the python sample function.
Setting data: Optional[Data] = Data() for the class CodeExecutionResponse(BaseModel) fixes this, but don't know if it's a valid fix?
✔️ Expected Behavior
Unsure.
❌ Actual Behavior
1 validation error for CodeExecutionResponse data none is not an allowed value (type=type_error.none.not_allowed)
The error "1 validation error for CodeExecutionResponse data none is not an allowed value (type=type_error.none.not_allowed)" indicates that the data field in the CodeExecutionResponse class cannot be None.
Your fix of setting data: Optional[Data] = Data() resolves the error, but a more appropriate solution would be to ensure that the data field is properly initialized and validated according to the expected schema.
Here is a recommended approach:
- Ensure that the
datafield in theCodeExecutionResponseclass is properly defined and initialized. - Validate the
datafield to ensure it meets the required criteria.
Here is an example of how you might define the CodeExecutionResponse class:
from pydantic import BaseModel
from typing import Optional
class Data(BaseModel):
stdout: Optional[str] = None
error: Optional[str] = None
class CodeExecutionResponse(BaseModel):
data: Optional[Data] = Data() # Initialize with a default valid Data instance
class Config:
validate_assignment = True
This ensures that the data field is always initialized with a valid Data instance, avoiding the none is not an allowed value error. If the Data class has required fields that need to be initialized, you should provide appropriate default values for those fields as well [1].
Additionally, you can refer to the integration tests provided in the Dify codebase, such as test_execute_code and test_execute_code_output_validator, to understand how the CodeNode and its configurations are validated and executed [2].
Details
About Dosu This response is meant to be useful and save you time. It is not meant to be a precise solution, but rather a starting point for your own research.
Help me be more useful! Please leave a 👍 if this is helpful and 👎 if it is irrelevant.
To continue the conversation, mention @dosu.