From b64098bbb613e44f2a8e1a0a32f25c3d4e1fd125 Mon Sep 17 00:00:00 2001 From: Frieda Huang <124417784+frieda-huang@users.noreply.github.com> Date: Mon, 9 Dec 2024 10:05:54 -0500 Subject: [PATCH] Fixed output_file not respecting system path (#1726) Co-authored-by: Brandon Hancock (bhancock_ai) <109994880+bhancockio@users.noreply.github.com> --- src/crewai/task.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/crewai/task.py b/src/crewai/task.py index af5b34c54..cedb73c09 100644 --- a/src/crewai/task.py +++ b/src/crewai/task.py @@ -1,6 +1,6 @@ import datetime import json -import os +from pathlib import Path import threading import uuid from concurrent.futures import Future @@ -393,12 +393,13 @@ class Task(BaseModel): if self.output_file is None: raise ValueError("output_file is not set.") - directory = os.path.dirname(self.output_file) # type: ignore # Value of type variable "AnyOrLiteralStr" of "dirname" cannot be "str | None" + resolved_path = Path(self.output_file).expanduser().resolve() + directory = resolved_path.parent - if directory and not os.path.exists(directory): - os.makedirs(directory) + if not directory.exists(): + directory.mkdir(parents=True, exist_ok=True) - with open(self.output_file, "w", encoding="utf-8") as file: + with resolved_path.open("w", encoding="utf-8") as file: if isinstance(result, dict): import json