diff --git a/pyproject.toml b/pyproject.toml index d85c43c93..45cb0debc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,6 +13,7 @@ dependencies = [ "openai>=1.13.3", "litellm==1.60.2", "instructor>=1.3.3", + "typing_extensions>=4.0.0", # Text Processing "pdfplumber>=0.11.4", "regex>=2024.9.11", diff --git a/src/crewai/memory/external/external_memory.py b/src/crewai/memory/external/external_memory.py index 4ecf3d065..51ec8718e 100644 --- a/src/crewai/memory/external/external_memory.py +++ b/src/crewai/memory/external/external_memory.py @@ -1,4 +1,9 @@ -from typing import TYPE_CHECKING, Any, Dict, Optional, Self +import sys +if sys.version_info < (3, 11): + from typing_extensions import Self + from typing import TYPE_CHECKING, Any, Dict, Optional +else: + from typing import TYPE_CHECKING, Any, Dict, Optional, Self from crewai.memory.external.external_memory_item import ExternalMemoryItem from crewai.memory.memory import Memory diff --git a/src/crewai/memory/memory.py b/src/crewai/memory/memory.py index ba8c10a29..bd746b698 100644 --- a/src/crewai/memory/memory.py +++ b/src/crewai/memory/memory.py @@ -1,4 +1,9 @@ -from typing import Any, Dict, List, Optional, Self +import sys +if sys.version_info < (3, 11): + from typing_extensions import Self + from typing import Any, Dict, List, Optional +else: + from typing import Any, Dict, List, Optional, Self from pydantic import BaseModel diff --git a/tests/imports_test.py b/tests/imports_test.py index 0715e3c50..1761cd3c8 100644 --- a/tests/imports_test.py +++ b/tests/imports_test.py @@ -13,3 +13,14 @@ def test_crew_output_import(): from crewai import CrewOutput assert CrewOutput is not None + + +def test_memory_imports(): + """Test that memory imports work correctly across Python versions.""" + import importlib + importlib.import_module("crewai.memory.memory") + importlib.import_module("crewai.memory.external.external_memory") + + from crewai.memory.memory import Memory + + assert hasattr(Memory, "set_crew")