From 280e9103a102ca7c8778e37f6b33441aaa8b306a Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Sat, 9 May 2026 02:43:30 +0000 Subject: [PATCH] fix(tools): tighten _is_base_file return type to TypeGuard[FileInput] Mypy could not infer that BaseFile values are valid FileInput entries. Using TypeGuard[FileInput] makes the type narrowing explicit. --- lib/crewai/src/crewai/utilities/tool_files.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/crewai/src/crewai/utilities/tool_files.py b/lib/crewai/src/crewai/utilities/tool_files.py index 4ab0f53ea..622fda9b8 100644 --- a/lib/crewai/src/crewai/utilities/tool_files.py +++ b/lib/crewai/src/crewai/utilities/tool_files.py @@ -13,15 +13,19 @@ from __future__ import annotations from collections.abc import Mapping, Sequence from pathlib import Path -from typing import TYPE_CHECKING, Any +from typing import TYPE_CHECKING, Any, TypeGuard if TYPE_CHECKING: from crewai_files import BaseFile, FileInput -def _is_base_file(value: Any) -> bool: - """Return True if ``value`` is a ``crewai_files.BaseFile`` subclass instance.""" +def _is_base_file(value: Any) -> TypeGuard[FileInput]: + """Return True if ``value`` is a ``crewai_files.BaseFile`` subclass instance. + + ``FileInput`` is the union of all concrete ``BaseFile`` subclasses, so any + ``BaseFile`` instance is by definition a ``FileInput``. + """ try: from crewai_files import BaseFile except ImportError: