Skip to content

Commit a9a418b

Browse files
DeanChensjcopybara-github
authored andcommitted
fix: Remove distructive validation
Co-authored-by: Shangjie Chen <deanchen@google.com> PiperOrigin-RevId: 835466120
1 parent 2e1f730 commit a9a418b

File tree

2 files changed

+0
-144
lines changed

2 files changed

+0
-144
lines changed

src/google/adk/agents/base_agent.py

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -563,46 +563,6 @@ def validate_name(cls, value: str):
563563
)
564564
return value
565565

566-
@field_validator('sub_agents', mode='after')
567-
@classmethod
568-
def validate_sub_agents_unique_names(
569-
cls, value: list[BaseAgent]
570-
) -> list[BaseAgent]:
571-
"""Validates that all sub-agents have unique names.
572-
573-
Args:
574-
value: The list of sub-agents to validate.
575-
576-
Returns:
577-
The validated list of sub-agents.
578-
579-
Raises:
580-
ValueError: If duplicate sub-agent names are found.
581-
"""
582-
if not value:
583-
return value
584-
585-
seen_names: set[str] = set()
586-
duplicates: set[str] = set()
587-
588-
for sub_agent in value:
589-
name = sub_agent.name
590-
if name in seen_names:
591-
duplicates.add(name)
592-
else:
593-
seen_names.add(name)
594-
595-
if duplicates:
596-
duplicate_names_str = ', '.join(
597-
f'`{name}`' for name in sorted(duplicates)
598-
)
599-
raise ValueError(
600-
f'Found duplicate sub-agent names: {duplicate_names_str}. '
601-
'All sub-agents must have unique names.'
602-
)
603-
604-
return value
605-
606566
def __set_parent_agent_for_sub_agents(self) -> BaseAgent:
607567
for sub_agent in self.sub_agents:
608568
if sub_agent.parent_agent is not None:

tests/unittests/agents/test_base_agent.py

Lines changed: 0 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -854,110 +854,6 @@ def test_set_parent_agent_for_sub_agent_twice(
854854
)
855855

856856

857-
def test_validate_sub_agents_unique_names_single_duplicate(
858-
request: pytest.FixtureRequest,
859-
):
860-
"""Test that duplicate sub-agent names raise ValueError."""
861-
duplicate_name = f'{request.function.__name__}_duplicate_agent'
862-
sub_agent_1 = _TestingAgent(name=duplicate_name)
863-
sub_agent_2 = _TestingAgent(name=duplicate_name)
864-
865-
with pytest.raises(ValueError, match='Found duplicate sub-agent names'):
866-
_ = _TestingAgent(
867-
name=f'{request.function.__name__}_parent',
868-
sub_agents=[sub_agent_1, sub_agent_2],
869-
)
870-
871-
872-
def test_validate_sub_agents_unique_names_multiple_duplicates(
873-
request: pytest.FixtureRequest,
874-
):
875-
"""Test that multiple duplicate sub-agent names are all reported."""
876-
duplicate_name_1 = f'{request.function.__name__}_duplicate_1'
877-
duplicate_name_2 = f'{request.function.__name__}_duplicate_2'
878-
879-
sub_agents = [
880-
_TestingAgent(name=duplicate_name_1),
881-
_TestingAgent(name=f'{request.function.__name__}_unique'),
882-
_TestingAgent(name=duplicate_name_1), # First duplicate
883-
_TestingAgent(name=duplicate_name_2),
884-
_TestingAgent(name=duplicate_name_2), # Second duplicate
885-
]
886-
887-
with pytest.raises(ValueError) as exc_info:
888-
_ = _TestingAgent(
889-
name=f'{request.function.__name__}_parent',
890-
sub_agents=sub_agents,
891-
)
892-
893-
error_message = str(exc_info.value)
894-
# Verify each duplicate name appears exactly once in the error message
895-
assert error_message.count(duplicate_name_1) == 1
896-
assert error_message.count(duplicate_name_2) == 1
897-
# Verify both duplicate names are present
898-
assert duplicate_name_1 in error_message
899-
assert duplicate_name_2 in error_message
900-
901-
902-
def test_validate_sub_agents_unique_names_triple_duplicate(
903-
request: pytest.FixtureRequest,
904-
):
905-
"""Test that a name appearing three times is reported only once."""
906-
duplicate_name = f'{request.function.__name__}_triple_duplicate'
907-
908-
sub_agents = [
909-
_TestingAgent(name=duplicate_name),
910-
_TestingAgent(name=f'{request.function.__name__}_unique'),
911-
_TestingAgent(name=duplicate_name), # Second occurrence
912-
_TestingAgent(name=duplicate_name), # Third occurrence
913-
]
914-
915-
with pytest.raises(ValueError) as exc_info:
916-
_ = _TestingAgent(
917-
name=f'{request.function.__name__}_parent',
918-
sub_agents=sub_agents,
919-
)
920-
921-
error_message = str(exc_info.value)
922-
# Verify the duplicate name appears exactly once in the error message
923-
# (not three times even though it appears three times in the list)
924-
assert error_message.count(duplicate_name) == 1
925-
assert duplicate_name in error_message
926-
927-
928-
def test_validate_sub_agents_unique_names_no_duplicates(
929-
request: pytest.FixtureRequest,
930-
):
931-
"""Test that unique sub-agent names pass validation."""
932-
sub_agents = [
933-
_TestingAgent(name=f'{request.function.__name__}_sub_agent_1'),
934-
_TestingAgent(name=f'{request.function.__name__}_sub_agent_2'),
935-
_TestingAgent(name=f'{request.function.__name__}_sub_agent_3'),
936-
]
937-
938-
parent = _TestingAgent(
939-
name=f'{request.function.__name__}_parent',
940-
sub_agents=sub_agents,
941-
)
942-
943-
assert len(parent.sub_agents) == 3
944-
assert parent.sub_agents[0].name == f'{request.function.__name__}_sub_agent_1'
945-
assert parent.sub_agents[1].name == f'{request.function.__name__}_sub_agent_2'
946-
assert parent.sub_agents[2].name == f'{request.function.__name__}_sub_agent_3'
947-
948-
949-
def test_validate_sub_agents_unique_names_empty_list(
950-
request: pytest.FixtureRequest,
951-
):
952-
"""Test that empty sub-agents list passes validation."""
953-
parent = _TestingAgent(
954-
name=f'{request.function.__name__}_parent',
955-
sub_agents=[],
956-
)
957-
958-
assert len(parent.sub_agents) == 0
959-
960-
961857
if __name__ == '__main__':
962858
pytest.main([__file__])
963859

0 commit comments

Comments
 (0)