Skip to content

Commit 3cfd348

Browse files
Python: Update _provider.py (#2548)
* Update _provider.py * Update test_mem0_context_provider.py * Update test_mem0_context_provider.py Ruff linting fixes * Update test_mem0_context_provider.py --------- Co-authored-by: Dmytro Struk <13853051+dmytrostruk@users.noreply.github.com>
1 parent a81279d commit 3cfd348

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

python/packages/mem0/agent_framework_mem0/_provider.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,10 @@ async def invoking(self, messages: ChatMessage | MutableSequence[ChatMessage], *
146146
messages_list = [messages] if isinstance(messages, ChatMessage) else list(messages)
147147
input_text = "\n".join(msg.text for msg in messages_list if msg and msg.text and msg.text.strip())
148148

149+
# Validate input text is not empty before searching (possible for function approval responses)
150+
if not input_text.strip():
151+
return Context(messages=None)
152+
149153
search_response: MemorySearchResponse_v1_1 | MemorySearchResponse_v2 = await self.mem0_client.search( # type: ignore[misc]
150154
query=input_text,
151155
user_id=self.user_id,

python/packages/mem0/tests/test_mem0_context_provider.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,32 @@ async def test_model_invoking_no_memories_returns_none_instructions(self, mock_m
406406
assert isinstance(context, Context)
407407
assert not context.messages
408408

409+
async def test_model_invoking_function_approval_response_returns_none_instructions(
410+
self, mock_mem0_client: AsyncMock
411+
) -> None:
412+
"""Test invoking with function approval response content messages returns context with None instructions."""
413+
from agent_framework import FunctionApprovalResponseContent, FunctionCallContent
414+
415+
provider = Mem0Provider(user_id="user123", mem0_client=mock_mem0_client)
416+
function_call = FunctionCallContent(call_id="1", name="test_func", arguments='{"arg1": "value1"}')
417+
message = ChatMessage(
418+
role=Role.USER,
419+
contents=[
420+
FunctionApprovalResponseContent(
421+
id="approval_1",
422+
function_call=function_call,
423+
approved=True,
424+
)
425+
],
426+
)
427+
428+
mock_mem0_client.search.return_value = []
429+
430+
context = await provider.invoking(message)
431+
432+
assert isinstance(context, Context)
433+
assert not context.messages
434+
409435
async def test_model_invoking_filters_empty_message_text(self, mock_mem0_client: AsyncMock) -> None:
410436
"""Test that empty message text is filtered out from query."""
411437
provider = Mem0Provider(user_id="user123", mem0_client=mock_mem0_client)

0 commit comments

Comments
 (0)