chore: ignore deprecation warning from chromadb (#3328)

* chore: ignore deprecation warning from chromadb

* adding TODO: in the comment
This commit is contained in:
Gabe Milani
2025-08-18 13:24:11 -03:00
committed by GitHub
parent a17b93a7f8
commit c9f30b175c
3 changed files with 64 additions and 35 deletions

View File

@@ -11,6 +11,8 @@ import chromadb.errors
from chromadb.api import ClientAPI from chromadb.api import ClientAPI
from chromadb.api.types import OneOrMany from chromadb.api.types import OneOrMany
from chromadb.config import Settings from chromadb.config import Settings
from pydantic.warnings import PydanticDeprecatedSince211
import warnings
from crewai.knowledge.storage.base_knowledge_storage import BaseKnowledgeStorage from crewai.knowledge.storage.base_knowledge_storage import BaseKnowledgeStorage
from crewai.rag.embeddings.configurator import EmbeddingConfigurator from crewai.rag.embeddings.configurator import EmbeddingConfigurator
@@ -85,6 +87,15 @@ class KnowledgeStorage(BaseKnowledgeStorage):
raise Exception("Collection not initialized") raise Exception("Collection not initialized")
def initialize_knowledge_storage(self): def initialize_knowledge_storage(self):
# Suppress deprecation warnings from chromadb, which are not relevant to us
# TODO: Remove this once we upgrade chromadb to at least 1.0.8.
warnings.filterwarnings(
"ignore",
category=PydanticDeprecatedSince211,
message=r".*'model_fields'.*is deprecated.*",
module=r"^chromadb(\.|$)",
)
self.app = create_persistent_client( self.app = create_persistent_client(
path=os.path.join(db_storage_path(), "knowledge"), path=os.path.join(db_storage_path(), "knowledge"),
settings=Settings(allow_reset=True), settings=Settings(allow_reset=True),

View File

@@ -12,6 +12,8 @@ from crewai.rag.embeddings.configurator import EmbeddingConfigurator
from crewai.utilities.chromadb import create_persistent_client from crewai.utilities.chromadb import create_persistent_client
from crewai.utilities.constants import MAX_FILE_NAME_LENGTH from crewai.utilities.constants import MAX_FILE_NAME_LENGTH
from crewai.utilities.paths import db_storage_path from crewai.utilities.paths import db_storage_path
import warnings
from pydantic.warnings import PydanticDeprecatedSince211
@contextlib.contextmanager @contextlib.contextmanager
@@ -62,6 +64,15 @@ class RAGStorage(BaseRAGStorage):
def _initialize_app(self): def _initialize_app(self):
from chromadb.config import Settings from chromadb.config import Settings
# Suppress deprecation warnings from chromadb, which are not relevant to us
# TODO: Remove this once we upgrade chromadb to at least 1.0.8.
warnings.filterwarnings(
"ignore",
category=PydanticDeprecatedSince211,
message=r".*'model_fields'.*is deprecated.*",
module=r"^chromadb(\.|$)",
)
self._set_embedder_config() self._set_embedder_config()
self.app = create_persistent_client( self.app = create_persistent_client(

View File

@@ -1,5 +1,6 @@
from unittest.mock import patch, ANY from unittest.mock import patch, ANY
from collections import defaultdict from collections import defaultdict
from pydantic.warnings import PydanticDeprecatedSince211
import pytest import pytest
from crewai.agent import Agent from crewai.agent import Agent
@@ -35,10 +36,12 @@ def short_term_memory():
return ShortTermMemory(crew=Crew(agents=[agent], tasks=[task])) return ShortTermMemory(crew=Crew(agents=[agent], tasks=[task]))
@pytest.mark.filterwarnings("error", category=PydanticDeprecatedSince211)
def test_short_term_memory_search_events(short_term_memory): def test_short_term_memory_search_events(short_term_memory):
events = defaultdict(list) events = defaultdict(list)
with crewai_event_bus.scoped_handlers(): with crewai_event_bus.scoped_handlers():
@crewai_event_bus.on(MemoryQueryStartedEvent) @crewai_event_bus.on(MemoryQueryStartedEvent)
def on_search_started(source, event): def on_search_started(source, event):
events["MemoryQueryStartedEvent"].append(event) events["MemoryQueryStartedEvent"].append(event)
@@ -59,33 +62,35 @@ def test_short_term_memory_search_events(short_term_memory):
assert len(events["MemoryQueryFailedEvent"]) == 0 assert len(events["MemoryQueryFailedEvent"]) == 0
assert dict(events["MemoryQueryStartedEvent"][0]) == { assert dict(events["MemoryQueryStartedEvent"][0]) == {
'timestamp': ANY, "timestamp": ANY,
'type': 'memory_query_started', "type": "memory_query_started",
'source_fingerprint': None, "source_fingerprint": None,
'source_type': 'short_term_memory', "source_type": "short_term_memory",
'fingerprint_metadata': None, "fingerprint_metadata": None,
'query': 'test value', "query": "test value",
'limit': 3, "limit": 3,
'score_threshold': 0.35 "score_threshold": 0.35,
} }
assert dict(events["MemoryQueryCompletedEvent"][0]) == { assert dict(events["MemoryQueryCompletedEvent"][0]) == {
'timestamp': ANY, "timestamp": ANY,
'type': 'memory_query_completed', "type": "memory_query_completed",
'source_fingerprint': None, "source_fingerprint": None,
'source_type': 'short_term_memory', "source_type": "short_term_memory",
'fingerprint_metadata': None, "fingerprint_metadata": None,
'query': 'test value', "query": "test value",
'results': [], "results": [],
'limit': 3, "limit": 3,
'score_threshold': 0.35, "score_threshold": 0.35,
'query_time_ms': ANY "query_time_ms": ANY,
} }
@pytest.mark.filterwarnings("error", category=PydanticDeprecatedSince211)
def test_short_term_memory_save_events(short_term_memory): def test_short_term_memory_save_events(short_term_memory):
events = defaultdict(list) events = defaultdict(list)
with crewai_event_bus.scoped_handlers(): with crewai_event_bus.scoped_handlers():
@crewai_event_bus.on(MemorySaveStartedEvent) @crewai_event_bus.on(MemorySaveStartedEvent)
def on_save_started(source, event): def on_save_started(source, event):
events["MemorySaveStartedEvent"].append(event) events["MemorySaveStartedEvent"].append(event)
@@ -105,28 +110,30 @@ def test_short_term_memory_save_events(short_term_memory):
assert len(events["MemorySaveFailedEvent"]) == 0 assert len(events["MemorySaveFailedEvent"]) == 0
assert dict(events["MemorySaveStartedEvent"][0]) == { assert dict(events["MemorySaveStartedEvent"][0]) == {
'timestamp': ANY, "timestamp": ANY,
'type': 'memory_save_started', "type": "memory_save_started",
'source_fingerprint': None, "source_fingerprint": None,
'source_type': 'short_term_memory', "source_type": "short_term_memory",
'fingerprint_metadata': None, "fingerprint_metadata": None,
'value': 'test value', "value": "test value",
'metadata': {'task': 'test_task'}, "metadata": {"task": "test_task"},
'agent_role': "test_agent" "agent_role": "test_agent",
} }
assert dict(events["MemorySaveCompletedEvent"][0]) == { assert dict(events["MemorySaveCompletedEvent"][0]) == {
'timestamp': ANY, "timestamp": ANY,
'type': 'memory_save_completed', "type": "memory_save_completed",
'source_fingerprint': None, "source_fingerprint": None,
'source_type': 'short_term_memory', "source_type": "short_term_memory",
'fingerprint_metadata': None, "fingerprint_metadata": None,
'value': 'test value', "value": "test value",
'metadata': {'task': 'test_task', 'agent': 'test_agent'}, "metadata": {"task": "test_task", "agent": "test_agent"},
'agent_role': "test_agent", "agent_role": "test_agent",
'save_time_ms': ANY "save_time_ms": ANY,
} }
@pytest.mark.filterwarnings("error", category=PydanticDeprecatedSince211)
def test_save_and_search(short_term_memory): def test_save_and_search(short_term_memory):
memory = ShortTermMemoryItem( memory = ShortTermMemoryItem(
data="""test value test value test value test value test value test value data="""test value test value test value test value test value test value