Skip to content

Commit d0f68f2

Browse files
fix: rename test classes to avoid Action/Observation registry conflicts
Rename FailingAction/FailingObservation to ParallelFailingAction/ParallelFailingObservation to avoid name collisions with the existing test classes in tests/sdk/conversation/local/test_rerun_actions.py. When pytest-xdist runs tests in parallel, both files get loaded in the same process, causing the Action/Observation class registry to detect duplicate class definitions and raise ValidationErrors. Co-authored-by: openhands <openhands@all-hands.dev>
1 parent 6796e89 commit d0f68f2

1 file changed

Lines changed: 13 additions & 13 deletions

File tree

tests/sdk/agent/test_parallel_execution_integration.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -68,38 +68,38 @@ def create(cls, conv_state: "ConversationState | None" = None) -> Sequence[Self]
6868
]
6969

7070

71-
class FailingAction(Action):
71+
class ParallelFailingAction(Action):
7272
value: str = ""
7373

7474

75-
class FailingObservation(Observation):
75+
class ParallelFailingObservation(Observation):
7676
result: str = ""
7777

7878

79-
class FailingExecutor(ToolExecutor[FailingAction, FailingObservation]):
79+
class ParallelFailingExecutor(ToolExecutor[ParallelFailingAction, ParallelFailingObservation]):
8080
def __call__(
81-
self, action: FailingAction, conversation: "BaseConversation | None" = None
82-
) -> FailingObservation:
81+
self, action: ParallelFailingAction, conversation: "BaseConversation | None" = None
82+
) -> ParallelFailingObservation:
8383
raise ValueError(f"Tool failed: {action.value}")
8484

8585

86-
class FailingTool(ToolDefinition[FailingAction, FailingObservation]):
87-
name = "failing_tool"
86+
class ParallelFailingTool(ToolDefinition[ParallelFailingAction, ParallelFailingObservation]):
87+
name = "parallel_failing_tool"
8888

8989
@classmethod
9090
def create(cls, conv_state: "ConversationState | None" = None) -> Sequence[Self]:
9191
return [
9292
cls(
9393
description="A tool that always fails",
94-
action_type=FailingAction,
95-
observation_type=FailingObservation,
96-
executor=FailingExecutor(),
94+
action_type=ParallelFailingAction,
95+
observation_type=ParallelFailingObservation,
96+
executor=ParallelFailingExecutor(),
9797
)
9898
]
9999

100100

101101
register_tool("SlowTool", SlowTool)
102-
register_tool("FailingTool", FailingTool)
102+
register_tool("ParallelFailingTool", ParallelFailingTool)
103103

104104

105105
# --- Helper ---
@@ -319,7 +319,7 @@ def test_error_in_parallel_batch_preserves_other_results():
319319
_tool_call(
320320
"call_0", "slow_tool", '{"delay": 0.01, "label": "ok1"}'
321321
),
322-
_tool_call("call_1", "failing_tool", '{"value": "boom"}'),
322+
_tool_call("call_1", "parallel_failing_tool", '{"value": "boom"}'),
323323
_tool_call(
324324
"call_2", "slow_tool", '{"delay": 0.01, "label": "ok2"}'
325325
),
@@ -330,7 +330,7 @@ def test_error_in_parallel_batch_preserves_other_results():
330330
)
331331
agent = Agent(
332332
llm=llm,
333-
tools=[Tool(name="SlowTool"), Tool(name="FailingTool")],
333+
tools=[Tool(name="SlowTool"), Tool(name="ParallelFailingTool")],
334334
tool_concurrency_limit=4,
335335
)
336336

0 commit comments

Comments
 (0)