Skip to content

Commit 7f7b3cf

Browse files
committed
Fix linting failure
Change-Id: I847f75259e01729db88129a44b241afb0ea2aca4 Co-developed-by: Cursor <noreply@cursor.com>
1 parent b342978 commit 7f7b3cf

File tree

1 file changed

+25
-53
lines changed

1 file changed

+25
-53
lines changed

util/opentelemetry-util-genai/tests/test_utils.py

Lines changed: 25 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,16 @@ def _assert_text_message(
165165
assert message.get("finish_reason") == finish_reason
166166

167167

168+
def _normalize_to_list(value: Any) -> list[Any]:
169+
"""Normalize tuple or list to list for OpenTelemetry compatibility."""
170+
return list(value) if isinstance(value, tuple) else value
171+
172+
173+
def _normalize_to_dict(value: Any) -> dict[str, Any]:
174+
"""Normalize tuple or dict to dict for OpenTelemetry compatibility."""
175+
return dict(value) if isinstance(value, tuple) else value
176+
177+
168178
class TestVersion(unittest.TestCase):
169179
@patch_env_vars(
170180
stability_mode="gen_ai_latest_experimental",
@@ -515,14 +525,10 @@ class BoomError(RuntimeError):
515525
content_capturing="EVENT_ONLY",
516526
)
517527
def test_emits_llm_event(self):
518-
message = _create_input_message("test query")
519-
chat_generation = _create_output_message("test response")
520-
system_instruction = _create_system_instruction()
521-
522528
invocation = LLMInvocation(
523529
request_model="event-model",
524-
input_messages=[message],
525-
system_instruction=system_instruction,
530+
input_messages=[_create_input_message("test query")],
531+
system_instruction=_create_system_instruction(),
526532
provider="test-provider",
527533
temperature=0.7,
528534
max_tokens=100,
@@ -533,14 +539,13 @@ def test_emits_llm_event(self):
533539
)
534540

535541
self.telemetry_handler.start_llm(invocation)
536-
invocation.output_messages = [chat_generation]
542+
invocation.output_messages = [_create_output_message("test response")]
537543
self.telemetry_handler.stop_llm(invocation)
538544

539545
# Check that event was emitted
540546
logs = self.log_exporter.get_finished_logs()
541547
self.assertEqual(len(logs), 1)
542-
log_data = logs[0]
543-
log_record = log_data.log_record
548+
log_record = logs[0].log_record
544549

545550
# Verify event name
546551
self.assertEqual(
@@ -562,60 +567,27 @@ def test_emits_llm_event(self):
562567

563568
# Verify messages are in structured format (not JSON string)
564569
# OpenTelemetry may convert lists to tuples, so we normalize
565-
input_messages = attrs[GenAI.GEN_AI_INPUT_MESSAGES]
566-
input_messages_list = (
567-
list(input_messages)
568-
if isinstance(input_messages, tuple)
569-
else input_messages
570-
)
571-
self.assertEqual(len(input_messages_list), 1)
572-
input_msg = (
573-
dict(input_messages_list[0])
574-
if isinstance(input_messages_list[0], tuple)
575-
else input_messages_list[0]
570+
input_msg = _normalize_to_dict(
571+
_normalize_to_list(attrs[GenAI.GEN_AI_INPUT_MESSAGES])[0]
576572
)
577573
self.assertEqual(input_msg["role"], "Human")
578-
parts = (
579-
list(input_msg["parts"])
580-
if isinstance(input_msg["parts"], tuple)
581-
else input_msg["parts"]
574+
self.assertEqual(
575+
_normalize_to_list(input_msg["parts"])[0]["content"], "test query"
582576
)
583-
self.assertEqual(parts[0]["content"], "test query")
584577

585-
output_messages = attrs[GenAI.GEN_AI_OUTPUT_MESSAGES]
586-
output_messages_list = (
587-
list(output_messages)
588-
if isinstance(output_messages, tuple)
589-
else output_messages
590-
)
591-
self.assertEqual(len(output_messages_list), 1)
592-
output_msg = (
593-
dict(output_messages_list[0])
594-
if isinstance(output_messages_list[0], tuple)
595-
else output_messages_list[0]
578+
output_msg = _normalize_to_dict(
579+
_normalize_to_list(attrs[GenAI.GEN_AI_OUTPUT_MESSAGES])[0]
596580
)
597581
self.assertEqual(output_msg["role"], "AI")
598-
output_parts = (
599-
list(output_msg["parts"])
600-
if isinstance(output_msg["parts"], tuple)
601-
else output_msg["parts"]
582+
self.assertEqual(
583+
_normalize_to_list(output_msg["parts"])[0]["content"],
584+
"test response",
602585
)
603-
self.assertEqual(output_parts[0]["content"], "test response")
604586
self.assertEqual(output_msg["finish_reason"], "stop")
605587

606588
# Verify system instruction is present in event in structured format
607-
self.assertIn(GenAI.GEN_AI_SYSTEM_INSTRUCTIONS, attrs)
608-
system_instructions = attrs[GenAI.GEN_AI_SYSTEM_INSTRUCTIONS]
609-
system_instructions_list = (
610-
list(system_instructions)
611-
if isinstance(system_instructions, tuple)
612-
else system_instructions
613-
)
614-
self.assertEqual(len(system_instructions_list), 1)
615-
sys_instr = (
616-
dict(system_instructions_list[0])
617-
if isinstance(system_instructions_list[0], tuple)
618-
else system_instructions_list[0]
589+
sys_instr = _normalize_to_dict(
590+
_normalize_to_list(attrs[GenAI.GEN_AI_SYSTEM_INSTRUCTIONS])[0]
619591
)
620592
self.assertEqual(sys_instr["content"], "You are a helpful assistant.")
621593
self.assertEqual(sys_instr["type"], "text")

0 commit comments

Comments
 (0)