Skip to content

Commit 06cba91

Browse files
committed
fixes in-place modification issue
1 parent af646c6 commit 06cba91

File tree

2 files changed

+25
-29
lines changed

2 files changed

+25
-29
lines changed

src/app/endpoints/query.py

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,23 +50,30 @@
5050
auth_dependency = get_auth_dependency()
5151

5252

53-
def _process_knowledge_search_content(
54-
tool_response: Any, metadata_map: dict[str, dict[str, Any]]
55-
) -> None:
56-
"""Process knowledge search tool response content for metadata."""
53+
def _process_knowledge_search_content(tool_response: Any) -> dict[str, dict[str, Any]]:
54+
"""Process knowledge search tool response content for metadata.
55+
56+
Args:
57+
tool_response: Tool response object containing content to parse
58+
59+
Returns:
60+
Dictionary mapping document_id to metadata dict
61+
"""
62+
metadata_map: dict[str, dict[str, Any]] = {}
63+
5764
# Guard against missing tool_response or content
5865
if not tool_response:
59-
return
66+
return metadata_map
6067

6168
content = getattr(tool_response, "content", None)
6269
if not content:
63-
return
70+
return metadata_map
6471

6572
# Ensure content is iterable
6673
try:
6774
iter(content)
6875
except TypeError:
69-
return
76+
return metadata_map
7077

7178
for text_content_item in content:
7279
# Skip items that lack a non-empty "text" attribute
@@ -83,6 +90,8 @@ def _process_knowledge_search_content(
8390
text[:200] + "..." if len(text) > 200 else text,
8491
)
8592

93+
return metadata_map
94+
8695

8796
def extract_referenced_documents_from_steps(
8897
steps: list[Any],
@@ -109,7 +118,8 @@ def extract_referenced_documents_from_steps(
109118
) != "knowledge_search" or not getattr(tool_response, "content", []):
110119
continue
111120

112-
_process_knowledge_search_content(tool_response, metadata_map)
121+
response_metadata = _process_knowledge_search_content(tool_response)
122+
metadata_map.update(response_metadata)
113123

114124
# Extract referenced documents from metadata with error handling
115125
referenced_documents = []

tests/unit/app/endpoints/test_query.py

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1601,9 +1601,7 @@ def test_process_knowledge_search_content_with_valid_metadata(mocker):
16011601
tool_response = mocker.Mock()
16021602
tool_response.content = [text_content_item]
16031603

1604-
metadata_map = {}
1605-
1606-
_process_knowledge_search_content(tool_response, metadata_map)
1604+
metadata_map = _process_knowledge_search_content(tool_response)
16071605

16081606
# Verify metadata was correctly parsed and added
16091607
assert "doc-1" in metadata_map
@@ -1626,9 +1624,7 @@ def test_process_knowledge_search_content_with_invalid_metadata_syntax_error(moc
16261624
tool_response = mocker.Mock()
16271625
tool_response.content = [text_content_item]
16281626

1629-
metadata_map = {}
1630-
1631-
_process_knowledge_search_content(tool_response, metadata_map)
1627+
metadata_map = _process_knowledge_search_content(tool_response)
16321628

16331629
# Verify metadata_map remains empty due to exception
16341630
assert len(metadata_map) == 0
@@ -1653,9 +1649,7 @@ def test_process_knowledge_search_content_with_invalid_metadata_value_error(mock
16531649
tool_response = mocker.Mock()
16541650
tool_response.content = [text_content_item]
16551651

1656-
metadata_map = {}
1657-
1658-
_process_knowledge_search_content(tool_response, metadata_map)
1652+
metadata_map = _process_knowledge_search_content(tool_response)
16591653

16601654
# Verify metadata_map remains empty due to exception
16611655
assert len(metadata_map) == 0
@@ -1680,9 +1674,7 @@ def test_process_knowledge_search_content_with_non_dict_metadata(mocker):
16801674
tool_response = mocker.Mock()
16811675
tool_response.content = [text_content_item]
16821676

1683-
metadata_map = {}
1684-
1685-
_process_knowledge_search_content(tool_response, metadata_map)
1677+
metadata_map = _process_knowledge_search_content(tool_response)
16861678

16871679
# Verify metadata_map remains empty (no document_id in string)
16881680
assert len(metadata_map) == 0
@@ -1703,9 +1695,7 @@ def test_process_knowledge_search_content_with_metadata_missing_document_id(mock
17031695
tool_response = mocker.Mock()
17041696
tool_response.content = [text_content_item]
17051697

1706-
metadata_map = {}
1707-
1708-
_process_knowledge_search_content(tool_response, metadata_map)
1698+
metadata_map = _process_knowledge_search_content(tool_response)
17091699

17101700
# Verify metadata_map remains empty since document_id is missing
17111701
assert len(metadata_map) == 0
@@ -1719,9 +1709,7 @@ def test_process_knowledge_search_content_with_no_text_attribute(mocker):
17191709
tool_response = mocker.Mock()
17201710
tool_response.content = [text_content_item]
17211711

1722-
metadata_map = {}
1723-
1724-
_process_knowledge_search_content(tool_response, metadata_map)
1712+
metadata_map = _process_knowledge_search_content(tool_response)
17251713

17261714
# Verify metadata_map remains empty since text attribute is missing
17271715
assert len(metadata_map) == 0
@@ -1733,9 +1721,7 @@ def test_process_knowledge_search_content_with_none_content(mocker):
17331721
tool_response = mocker.Mock()
17341722
tool_response.content = None
17351723

1736-
metadata_map = {}
1737-
1738-
_process_knowledge_search_content(tool_response, metadata_map)
1724+
metadata_map = _process_knowledge_search_content(tool_response)
17391725

17401726
# Verify metadata_map remains empty when content is None
17411727
assert len(metadata_map) == 0

0 commit comments

Comments
 (0)