mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-09 08:08:32 +00:00
fix: Refactor try-except loop to resolve PERF203 lint issue
Co-Authored-By: João <joao@crewai.com>
This commit is contained in:
@@ -1,11 +1,11 @@
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
from crewai.agents import parser
|
||||||
from crewai.agents.crew_agent_executor import (
|
from crewai.agents.crew_agent_executor import (
|
||||||
AgentAction,
|
AgentAction,
|
||||||
AgentFinish,
|
AgentFinish,
|
||||||
OutputParserException,
|
OutputParserException,
|
||||||
)
|
)
|
||||||
from crewai.agents import parser
|
|
||||||
|
|
||||||
|
|
||||||
def test_valid_action_parsing_special_characters():
|
def test_valid_action_parsing_special_characters():
|
||||||
@@ -345,12 +345,16 @@ def test_integration_valid_and_invalid():
|
|||||||
"""
|
"""
|
||||||
parts = text.strip().split("\n\n")
|
parts = text.strip().split("\n\n")
|
||||||
results = []
|
results = []
|
||||||
for part in parts:
|
|
||||||
|
def parse_part(part_text):
|
||||||
try:
|
try:
|
||||||
result = parser.parse(part.strip())
|
return parser.parse(part_text.strip())
|
||||||
results.append(result)
|
|
||||||
except OutputParserException as e:
|
except OutputParserException as e:
|
||||||
results.append(e)
|
return e
|
||||||
|
|
||||||
|
for part in parts:
|
||||||
|
result = parse_part(part)
|
||||||
|
results.append(result)
|
||||||
|
|
||||||
assert isinstance(results[0], AgentAction)
|
assert isinstance(results[0], AgentAction)
|
||||||
assert isinstance(results[1], AgentFinish)
|
assert isinstance(results[1], AgentFinish)
|
||||||
@@ -402,10 +406,10 @@ def test_harmony_format_detection():
|
|||||||
"""Test that Harmony format is properly detected."""
|
"""Test that Harmony format is properly detected."""
|
||||||
harmony_text = "<|start|>assistant<|channel|>analysis<|message|>result<|end|>"
|
harmony_text = "<|start|>assistant<|channel|>analysis<|message|>result<|end|>"
|
||||||
react_text = "Thought: test\nFinal Answer: result"
|
react_text = "Thought: test\nFinal Answer: result"
|
||||||
|
|
||||||
harmony_result = parser.parse(harmony_text)
|
harmony_result = parser.parse(harmony_text)
|
||||||
react_result = parser.parse(react_text)
|
react_result = parser.parse(react_text)
|
||||||
|
|
||||||
assert isinstance(harmony_result, parser.AgentFinish)
|
assert isinstance(harmony_result, parser.AgentFinish)
|
||||||
assert isinstance(react_result, parser.AgentFinish)
|
assert isinstance(react_result, parser.AgentFinish)
|
||||||
assert harmony_result.output == "result"
|
assert harmony_result.output == "result"
|
||||||
@@ -424,10 +428,10 @@ def test_automatic_format_detection():
|
|||||||
"""Test that the parser automatically detects different formats."""
|
"""Test that the parser automatically detects different formats."""
|
||||||
react_action = "Thought: Let's search\nAction: search\nAction Input: query"
|
react_action = "Thought: Let's search\nAction: search\nAction Input: query"
|
||||||
react_finish = "Thought: Done\nFinal Answer: result"
|
react_finish = "Thought: Done\nFinal Answer: result"
|
||||||
|
|
||||||
harmony_action = '<|start|>assistant<|channel|>commentary to=tool<|message|>{"input": "test"}<|call|>'
|
harmony_action = '<|start|>assistant<|channel|>commentary to=tool<|message|>{"input": "test"}<|call|>'
|
||||||
harmony_finish = "<|start|>assistant<|channel|>analysis<|message|>final result<|end|>"
|
harmony_finish = "<|start|>assistant<|channel|>analysis<|message|>final result<|end|>"
|
||||||
|
|
||||||
assert isinstance(parser.parse(react_action), parser.AgentAction)
|
assert isinstance(parser.parse(react_action), parser.AgentAction)
|
||||||
assert isinstance(parser.parse(react_finish), parser.AgentFinish)
|
assert isinstance(parser.parse(react_finish), parser.AgentFinish)
|
||||||
assert isinstance(parser.parse(harmony_action), parser.AgentAction)
|
assert isinstance(parser.parse(harmony_action), parser.AgentAction)
|
||||||
@@ -437,13 +441,13 @@ def test_automatic_format_detection():
|
|||||||
def test_format_registry():
|
def test_format_registry():
|
||||||
"""Test the format registry functionality."""
|
"""Test the format registry functionality."""
|
||||||
from crewai.agents.parser import _format_registry
|
from crewai.agents.parser import _format_registry
|
||||||
|
|
||||||
assert 'react' in _format_registry._parsers
|
assert 'react' in _format_registry._parsers
|
||||||
assert 'harmony' in _format_registry._parsers
|
assert 'harmony' in _format_registry._parsers
|
||||||
|
|
||||||
react_text = "Thought: test\nAction: search\nAction Input: query"
|
react_text = "Thought: test\nAction: search\nAction Input: query"
|
||||||
harmony_text = "<|start|>assistant<|channel|>analysis<|message|>result<|end|>"
|
harmony_text = "<|start|>assistant<|channel|>analysis<|message|>result<|end|>"
|
||||||
|
|
||||||
assert _format_registry._parsers['react'].can_parse(react_text)
|
assert _format_registry._parsers['react'].can_parse(react_text)
|
||||||
assert _format_registry._parsers['harmony'].can_parse(harmony_text)
|
assert _format_registry._parsers['harmony'].can_parse(harmony_text)
|
||||||
assert not _format_registry._parsers['react'].can_parse(harmony_text)
|
assert not _format_registry._parsers['react'].can_parse(harmony_text)
|
||||||
@@ -452,4 +456,3 @@ def test_format_registry():
|
|||||||
|
|
||||||
def test_backward_compatibility():
|
def test_backward_compatibility():
|
||||||
"""Test that all existing ReAct format tests still pass."""
|
"""Test that all existing ReAct format tests still pass."""
|
||||||
pass
|
|
||||||
|
|||||||
Reference in New Issue
Block a user