From 3bf531189f7473a62441ea92a1efcba3700d4387 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Sun, 9 Feb 2025 19:33:54 +0000 Subject: [PATCH] fix: Update type hints in TaskOutput and CrewOutput to match BaseModel Co-Authored-By: Joe Moura --- src/crewai/crews/crew_output.py | 11 ++++------- src/crewai/tasks/task_output.py | 9 +++------ 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/src/crewai/crews/crew_output.py b/src/crewai/crews/crew_output.py index 125766a0b..f14badf53 100644 --- a/src/crewai/crews/crew_output.py +++ b/src/crewai/crews/crew_output.py @@ -1,5 +1,5 @@ import json -from typing import Any, Callable, Dict, Optional, Set, Union +from typing import Any, Callable, Dict, Optional, Union, AbstractSet, Mapping from pydantic import BaseModel, Field from typing_extensions import Literal @@ -8,9 +8,6 @@ from crewai.tasks.output_format import OutputFormat from crewai.tasks.task_output import TaskOutput from crewai.types.usage_metrics import UsageMetrics -# Type definition for include/exclude parameters -IncEx = Union[Set[int], Set[str], Dict[int, Any], Dict[str, Any]] - class CrewOutput(BaseModel): """Class that represents the result of a crew.""" @@ -25,7 +22,7 @@ class CrewOutput(BaseModel): tasks_output: list[TaskOutput] = Field( description="Output of each task", default=[] ) - token_usage: UsageMetrics = Field(description="Processed token summary", default={}) + token_usage: UsageMetrics = Field(description="Processed token summary", default_factory=dict) def model_json(self) -> str: """Get the JSON representation of the output.""" @@ -39,8 +36,8 @@ class CrewOutput(BaseModel): self, *, indent: Optional[int] = None, - include: Optional[IncEx] = None, - exclude: Optional[IncEx] = None, + include: Optional[Union[AbstractSet[int], AbstractSet[str], Mapping[int, Any], Mapping[str, Any]]] = None, + exclude: Optional[Union[AbstractSet[int], AbstractSet[str], Mapping[int, Any], Mapping[str, Any]]] = None, context: Optional[Any] = None, by_alias: bool = False, exclude_unset: bool = False, diff --git a/src/crewai/tasks/task_output.py b/src/crewai/tasks/task_output.py index 39017c5be..b0fb84c55 100644 --- a/src/crewai/tasks/task_output.py +++ b/src/crewai/tasks/task_output.py @@ -1,14 +1,11 @@ import json -from typing import Any, Callable, Dict, Optional, Set, Union +from typing import Any, Callable, Dict, Optional, Union, AbstractSet, Mapping from pydantic import BaseModel, Field, model_validator from typing_extensions import Literal from crewai.tasks.output_format import OutputFormat -# Type definition for include/exclude parameters -IncEx = Union[Set[int], Set[str], Dict[int, Any], Dict[str, Any]] - class TaskOutput(BaseModel): """Class that represents the result of a task.""" @@ -54,8 +51,8 @@ class TaskOutput(BaseModel): self, *, indent: Optional[int] = None, - include: Optional[IncEx] = None, - exclude: Optional[IncEx] = None, + include: Optional[Union[AbstractSet[int], AbstractSet[str], Mapping[int, Any], Mapping[str, Any]]] = None, + exclude: Optional[Union[AbstractSet[int], AbstractSet[str], Mapping[int, Any], Mapping[str, Any]]] = None, context: Optional[Any] = None, by_alias: bool = False, exclude_unset: bool = False,