mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-05-02 15:52:34 +00:00
Fix task configuration with None context parameter in YAML
Fixes #3696 When context: None is specified in YAML, yaml.safe_load() converts it to the string 'None' instead of Python's None object. The code was attempting to iterate over this string character by character, causing KeyError: 'N' when trying to look up task names. Changes: - Added isinstance(context_list, list) check in crew_base.py before iterating context_list to handle YAML's conversion of None to string - Added test case test_task_with_none_context_from_yaml to verify tasks can be configured with context: None without errors - Added test YAML configurations in tests/config_none_context/ to reproduce and verify the fix The fix ensures that only actual list values are processed, allowing None and other non-list values to pass through without causing errors. Co-Authored-By: João <joao@crewai.com>
This commit is contained in:
@@ -260,9 +260,10 @@ def CrewBase(cls: T) -> T: # noqa: N802
|
||||
output_pydantic_functions: dict[str, Callable],
|
||||
) -> None:
|
||||
if context_list := task_info.get("context"):
|
||||
self.tasks_config[task_name]["context"] = [
|
||||
tasks[context_task_name]() for context_task_name in context_list
|
||||
]
|
||||
if isinstance(context_list, list):
|
||||
self.tasks_config[task_name]["context"] = [
|
||||
tasks[context_task_name]() for context_task_name in context_list
|
||||
]
|
||||
|
||||
if tools := task_info.get("tools"):
|
||||
self.tasks_config[task_name]["tools"] = [
|
||||
|
||||
Reference in New Issue
Block a user