diff --git a/src/crewai/project/crew_base.py b/src/crewai/project/crew_base.py index 44871f6a0..b21853c47 100644 --- a/src/crewai/project/crew_base.py +++ b/src/crewai/project/crew_base.py @@ -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"] = [ diff --git a/tests/config_none_context/agents.yaml b/tests/config_none_context/agents.yaml new file mode 100644 index 000000000..cf3401e9c --- /dev/null +++ b/tests/config_none_context/agents.yaml @@ -0,0 +1,5 @@ +test_agent: + role: Test Agent + goal: Test goal + backstory: Test backstory + verbose: true diff --git a/tests/config_none_context/tasks.yaml b/tests/config_none_context/tasks.yaml new file mode 100644 index 000000000..a282a08a7 --- /dev/null +++ b/tests/config_none_context/tasks.yaml @@ -0,0 +1,11 @@ +task_with_none_context: + description: A test task with None context + expected_output: Some output + agent: test_agent + context: None + +task_with_valid_context: + description: A test task with valid context + expected_output: Some output + agent: test_agent + context: [task_with_none_context] diff --git a/tests/test_project.py b/tests/test_project.py index c6708d92f..a6ee5bb90 100644 --- a/tests/test_project.py +++ b/tests/test_project.py @@ -287,3 +287,38 @@ def test_internal_crew_with_mcp(): adapter_mock.assert_called_once_with( {"host": "localhost", "port": 8000}, connect_timeout=120 ) + + +def test_task_with_none_context_from_yaml(): + @CrewBase + class CrewWithNoneContext: + agents_config = "config_none_context/agents.yaml" + tasks_config = "config_none_context/tasks.yaml" + + agents: list[BaseAgent] + tasks: list[Task] + + @agent + def test_agent(self): + return Agent(config=self.agents_config["test_agent"]) + + @task + def task_with_none_context(self): + return Task(config=self.tasks_config["task_with_none_context"]) + + @task + def task_with_valid_context(self): + return Task(config=self.tasks_config["task_with_valid_context"]) + + @crew + def crew(self): + return Crew(agents=self.agents, tasks=self.tasks, verbose=True) + + crew_instance = CrewWithNoneContext() + + task_none = crew_instance.task_with_none_context() + assert task_none is not None + + task_valid = crew_instance.task_with_valid_context() + assert task_valid.context is not None + assert len(task_valid.context) == 1