@@ -111,14 +111,19 @@ def test_is_agent_span(self, mock_client):
111111 exporter = PostHogSpanExporter (mock_client )
112112 assert exporter ._is_agent_span ("agent run" , {}) is True
113113 assert exporter ._is_agent_span ("invoke_agent" , {}) is True
114- assert exporter ._is_agent_span ("some_span" , {"gen_ai.agent.name" : "test" }) # truthy
114+ assert exporter ._is_agent_span (
115+ "some_span" , {"gen_ai.agent.name" : "test" }
116+ ) # truthy
115117 assert not exporter ._is_agent_span ("some_span" , {})
116118
117119 def test_is_tool_span (self , mock_client ):
118120 exporter = PostHogSpanExporter (mock_client )
119121 assert exporter ._is_tool_span ("execute_tool get_weather" , {}) is True
120122 assert exporter ._is_tool_span ("running tools" , {}) is True
121- assert exporter ._is_tool_span ("some_span" , {"gen_ai.tool.name" : "get_weather" }) is True
123+ assert (
124+ exporter ._is_tool_span ("some_span" , {"gen_ai.tool.name" : "get_weather" })
125+ is True
126+ )
122127 assert exporter ._is_tool_span ("model call" , {}) is False
123128
124129
@@ -135,8 +140,12 @@ def test_basic_generation_event(self, mock_client):
135140 "gen_ai.system" : "openai" ,
136141 "gen_ai.usage.input_tokens" : 100 ,
137142 "gen_ai.usage.output_tokens" : 50 ,
138- "gen_ai.input.messages" : json .dumps ([{"role" : "user" , "content" : "Hello" }]),
139- "gen_ai.output.messages" : json .dumps ([{"role" : "assistant" , "content" : "Hi!" }]),
143+ "gen_ai.input.messages" : json .dumps (
144+ [{"role" : "user" , "content" : "Hello" }]
145+ ),
146+ "gen_ai.output.messages" : json .dumps (
147+ [{"role" : "assistant" , "content" : "Hi!" }]
148+ ),
140149 },
141150 )
142151
@@ -178,14 +187,20 @@ def test_generation_event_with_error(self, mock_client):
178187 assert props ["$ai_error" ] == "Rate limit exceeded"
179188
180189 def test_generation_event_privacy_mode (self , mock_client ):
181- exporter = PostHogSpanExporter (mock_client , distinct_id = "user_123" , privacy_mode = True )
190+ exporter = PostHogSpanExporter (
191+ mock_client , distinct_id = "user_123" , privacy_mode = True
192+ )
182193
183194 span = create_mock_span (
184195 name = "chat openai" ,
185196 attributes = {
186197 "gen_ai.request.model" : "gpt-4" ,
187- "gen_ai.input.messages" : json .dumps ([{"role" : "user" , "content" : "Secret data" }]),
188- "gen_ai.output.messages" : json .dumps ([{"role" : "assistant" , "content" : "Response" }]),
198+ "gen_ai.input.messages" : json .dumps (
199+ [{"role" : "user" , "content" : "Secret data" }]
200+ ),
201+ "gen_ai.output.messages" : json .dumps (
202+ [{"role" : "assistant" , "content" : "Response" }]
203+ ),
189204 },
190205 )
191206
@@ -224,7 +239,9 @@ class TestAgentSpanHandling:
224239 def test_agent_span_is_skipped (self , mock_client ):
225240 exporter = PostHogSpanExporter (mock_client , distinct_id = "user_123" )
226241
227- span = create_mock_span (name = "agent run" , attributes = {"gen_ai.agent.name" : "TestAgent" })
242+ span = create_mock_span (
243+ name = "agent run" , attributes = {"gen_ai.agent.name" : "TestAgent" }
244+ )
228245
229246 exporter .export ([span ])
230247
@@ -250,7 +267,9 @@ def test_basic_tool_span_event(self, mock_client):
250267 name = "execute_tool get_weather" ,
251268 attributes = {
252269 "gen_ai.tool.name" : "get_weather" ,
253- "gen_ai.tool.call.arguments" : json .dumps ({"latitude" : 37.7749 , "longitude" : - 122.4194 }),
270+ "gen_ai.tool.call.arguments" : json .dumps (
271+ {"latitude" : 37.7749 , "longitude" : - 122.4194 }
272+ ),
254273 "gen_ai.tool.call.result" : "Sunny, 72°F" ,
255274 },
256275 parent_span_id = 0xABCDEF1234567890 ,
@@ -266,11 +285,16 @@ def test_basic_tool_span_event(self, mock_client):
266285 assert "$ai_trace_id" in props
267286 assert "$ai_span_id" in props
268287 assert "$ai_parent_id" in props
269- assert props ["$ai_tool_arguments" ] == {"latitude" : 37.7749 , "longitude" : - 122.4194 }
288+ assert props ["$ai_tool_arguments" ] == {
289+ "latitude" : 37.7749 ,
290+ "longitude" : - 122.4194 ,
291+ }
270292 assert props ["$ai_tool_result" ] == "Sunny, 72°F"
271293
272294 def test_tool_span_privacy_mode (self , mock_client ):
273- exporter = PostHogSpanExporter (mock_client , distinct_id = "user_123" , privacy_mode = True )
295+ exporter = PostHogSpanExporter (
296+ mock_client , distinct_id = "user_123" , privacy_mode = True
297+ )
274298
275299 span = create_mock_span (
276300 name = "execute_tool get_weather" ,
@@ -294,7 +318,9 @@ class TestDistinctIdHandling:
294318 def test_distinct_id_from_constructor (self , mock_client ):
295319 exporter = PostHogSpanExporter (mock_client , distinct_id = "configured_user" )
296320
297- span = create_mock_span (name = "chat openai" , attributes = {"gen_ai.request.model" : "gpt-4" })
321+ span = create_mock_span (
322+ name = "chat openai" , attributes = {"gen_ai.request.model" : "gpt-4" }
323+ )
298324
299325 exporter .export ([span ])
300326
@@ -326,12 +352,17 @@ def test_distinct_id_fallback_to_trace_id(self, mock_client):
326352
327353 exporter .export ([span ])
328354
329- assert mock_client .capture .call_args [1 ]["distinct_id" ] == "abcdef1234567890abcdef1234567890"
355+ assert (
356+ mock_client .capture .call_args [1 ]["distinct_id" ]
357+ == "abcdef1234567890abcdef1234567890"
358+ )
330359
331360 def test_process_person_profile_false_when_no_distinct_id (self , mock_client ):
332361 exporter = PostHogSpanExporter (mock_client )
333362
334- span = create_mock_span (name = "chat openai" , attributes = {"gen_ai.request.model" : "gpt-4" })
363+ span = create_mock_span (
364+ name = "chat openai" , attributes = {"gen_ai.request.model" : "gpt-4" }
365+ )
335366
336367 exporter .export ([span ])
337368
@@ -349,7 +380,9 @@ def test_additional_properties_included(self, mock_client):
349380 properties = {"$ai_session_id" : "session_abc" , "custom_prop" : "value" },
350381 )
351382
352- span = create_mock_span (name = "chat openai" , attributes = {"gen_ai.request.model" : "gpt-4" })
383+ span = create_mock_span (
384+ name = "chat openai" , attributes = {"gen_ai.request.model" : "gpt-4" }
385+ )
353386
354387 exporter .export ([span ])
355388
@@ -364,7 +397,9 @@ def test_groups_included(self, mock_client):
364397 groups = {"company" : "posthog" , "team" : "product" },
365398 )
366399
367- span = create_mock_span (name = "chat openai" , attributes = {"gen_ai.request.model" : "gpt-4" })
400+ span = create_mock_span (
401+ name = "chat openai" , attributes = {"gen_ai.request.model" : "gpt-4" }
402+ )
368403
369404 exporter .export ([span ])
370405
@@ -380,7 +415,9 @@ class TestExportResult:
380415 def test_export_returns_success (self , mock_client ):
381416 exporter = PostHogSpanExporter (mock_client , distinct_id = "user_123" )
382417
383- span = create_mock_span (name = "chat openai" , attributes = {"gen_ai.request.model" : "gpt-4" })
418+ span = create_mock_span (
419+ name = "chat openai" , attributes = {"gen_ai.request.model" : "gpt-4" }
420+ )
384421
385422 result = exporter .export ([span ])
386423
@@ -390,7 +427,9 @@ def test_export_handles_exceptions_gracefully(self, mock_client):
390427 mock_client .capture .side_effect = Exception ("Network error" )
391428 exporter = PostHogSpanExporter (mock_client , distinct_id = "user_123" )
392429
393- span = create_mock_span (name = "chat openai" , attributes = {"gen_ai.request.model" : "gpt-4" })
430+ span = create_mock_span (
431+ name = "chat openai" , attributes = {"gen_ai.request.model" : "gpt-4" }
432+ )
394433
395434 result = exporter .export ([span ])
396435
0 commit comments