@@ -1697,7 +1697,11 @@ def test_jsonl_collector_export_exact_output(self):
16971697 0 ,
16981698 [
16991699 MockThreadInfo (
1700- 1 , [MockFrameInfo ("file.py" , 10 , "func1" ), MockFrameInfo ("file.py" , 20 , "func2" )]
1700+ 1 ,
1701+ [
1702+ MockFrameInfo ("file.py" , 10 , "func1" ),
1703+ MockFrameInfo ("file.py" , 20 , "func2" ),
1704+ ],
17011705 )
17021706 ],
17031707 )
@@ -1707,14 +1711,23 @@ def test_jsonl_collector_export_exact_output(self):
17071711 0 ,
17081712 [
17091713 MockThreadInfo (
1710- 1 , [MockFrameInfo ("file.py" , 10 , "func1" ), MockFrameInfo ("file.py" , 20 , "func2" )]
1714+ 1 ,
1715+ [
1716+ MockFrameInfo ("file.py" , 10 , "func1" ),
1717+ MockFrameInfo ("file.py" , 20 , "func2" ),
1718+ ],
17111719 )
17121720 ],
17131721 )
17141722 ] # Same stack
17151723 test_frames3 = [
17161724 MockInterpreterInfo (
1717- 0 , [MockThreadInfo (1 , [MockFrameInfo ("other.py" , 5 , "other_func" )])]
1725+ 0 ,
1726+ [
1727+ MockThreadInfo (
1728+ 1 , [MockFrameInfo ("other.py" , 5 , "other_func" )]
1729+ )
1730+ ],
17181731 )
17191732 ]
17201733
@@ -1747,7 +1760,11 @@ def test_jsonl_collector_export_includes_mode_in_meta(self):
17471760 [
17481761 MockInterpreterInfo (
17491762 0 ,
1750- [MockThreadInfo (1 , [MockFrameInfo ("file.py" , 10 , "func" )])],
1763+ [
1764+ MockThreadInfo (
1765+ 1 , [MockFrameInfo ("file.py" , 10 , "func" )]
1766+ )
1767+ ],
17511768 )
17521769 ]
17531770 )
@@ -1756,7 +1773,9 @@ def test_jsonl_collector_export_includes_mode_in_meta(self):
17561773 with open (jsonl_out .name , "r" , encoding = "utf-8" ) as f :
17571774 records = [json .loads (line ) for line in f ]
17581775
1759- meta_record = next (record for record in records if record ["type" ] == "meta" )
1776+ meta_record = next (
1777+ record for record in records if record ["type" ] == "meta"
1778+ )
17601779 self .assertEqual (meta_record ["mode" ], "cpu" )
17611780
17621781 def test_jsonl_collector_export_empty_profile (self ):
@@ -1770,7 +1789,9 @@ def test_jsonl_collector_export_empty_profile(self):
17701789 with open (jsonl_out .name , "r" , encoding = "utf-8" ) as f :
17711790 records = [json .loads (line ) for line in f ]
17721791
1773- self .assertEqual ([record ["type" ] for record in records ], ["meta" , "end" ])
1792+ self .assertEqual (
1793+ [record ["type" ] for record in records ], ["meta" , "end" ]
1794+ )
17741795 self .assertEqual (records [0 ]["sample_interval_usec" ], 1000 )
17751796 self .assertEqual (records [0 ]["run_id" ], "run-123" )
17761797 self .assertEqual (records [1 ]["samples_total" ], 0 )
@@ -1789,9 +1810,15 @@ def test_jsonl_collector_recursive_frames_counted_once_per_sample(self):
17891810 MockThreadInfo (
17901811 1 ,
17911812 [
1792- MockFrameInfo ("recursive.py" , 10 , "recursive_func" ),
1793- MockFrameInfo ("recursive.py" , 10 , "recursive_func" ),
1794- MockFrameInfo ("recursive.py" , 10 , "recursive_func" ),
1813+ MockFrameInfo (
1814+ "recursive.py" , 10 , "recursive_func"
1815+ ),
1816+ MockFrameInfo (
1817+ "recursive.py" , 10 , "recursive_func"
1818+ ),
1819+ MockFrameInfo (
1820+ "recursive.py" , 10 , "recursive_func"
1821+ ),
17951822 ],
17961823 )
17971824 ],
@@ -1807,7 +1834,13 @@ def test_jsonl_collector_recursive_frames_counted_once_per_sample(self):
18071834 self .assertEqual (len (frame_defs ), 1 )
18081835 self .assertEqual (
18091836 agg_record ["entries" ],
1810- [{"frame_id" : frame_defs [0 ]["frame_id" ], "self" : 1 , "cumulative" : 1 }],
1837+ [
1838+ {
1839+ "frame_id" : frame_defs [0 ]["frame_id" ],
1840+ "self" : 1 ,
1841+ "cumulative" : 1 ,
1842+ }
1843+ ],
18111844 )
18121845 self .assertEqual (agg_record ["samples_total" ], 1 )
18131846 self .assertEqual (end_record ["samples_total" ], 1 )
@@ -1860,9 +1893,7 @@ def export_summary(skip_idle):
18601893
18611894 paths , funcs , samples_total = export_summary (skip_idle = False )
18621895 self .assertEqual (paths , {"active1.py" , "idle.py" , "active2.py" })
1863- self .assertEqual (
1864- funcs , {"active_func1" , "idle_func" , "active_func2" }
1865- )
1896+ self .assertEqual (funcs , {"active_func1" , "idle_func" , "active_func2" })
18661897 self .assertEqual (samples_total , 3 )
18671898
18681899 def test_jsonl_collector_splits_large_exports_into_chunks (self ):
@@ -1879,7 +1910,11 @@ def test_jsonl_collector_splits_large_exports_into_chunks(self):
18791910 [
18801911 MockThreadInfo (
18811912 1 ,
1882- [MockFrameInfo (f"file{ i } .py" , i + 1 , f"func{ i } " )],
1913+ [
1914+ MockFrameInfo (
1915+ f"file{ i } .py" , i + 1 , f"func{ i } "
1916+ )
1917+ ],
18831918 )
18841919 ],
18851920 )
@@ -1895,14 +1930,26 @@ def test_jsonl_collector_splits_large_exports_into_chunks(self):
18951930 self .assertEqual (len (run_ids ), 1 )
18961931 self .assertRegex (next (iter (run_ids )), r"^[0-9a-f]{32}$" )
18971932
1898- _ , str_defs , frame_defs , agg_record , end_record = _jsonl_tables (records )
1899- str_chunks = [record for record in records if record ["type" ] == "str_def" ]
1900- frame_chunks = [record for record in records if record ["type" ] == "frame_def" ]
1933+ _ , str_defs , frame_defs , agg_record , end_record = _jsonl_tables (
1934+ records
1935+ )
1936+ str_chunks = [
1937+ record for record in records if record ["type" ] == "str_def"
1938+ ]
1939+ frame_chunks = [
1940+ record for record in records if record ["type" ] == "frame_def"
1941+ ]
19011942 agg_chunks = [record for record in records if record ["type" ] == "agg" ]
19021943
1903- self .assertEqual ([len (record ["defs" ]) for record in str_chunks ], [256 , 256 , 2 ])
1904- self .assertEqual ([len (record ["defs" ]) for record in frame_chunks ], [256 , 1 ])
1905- self .assertEqual ([len (record ["entries" ]) for record in agg_chunks ], [256 , 1 ])
1944+ self .assertEqual (
1945+ [len (record ["defs" ]) for record in str_chunks ], [256 , 256 , 2 ]
1946+ )
1947+ self .assertEqual (
1948+ [len (record ["defs" ]) for record in frame_chunks ], [256 , 1 ]
1949+ )
1950+ self .assertEqual (
1951+ [len (record ["entries" ]) for record in agg_chunks ], [256 , 1 ]
1952+ )
19061953 self .assertEqual (len (str_defs ), 514 )
19071954 self .assertEqual (len (frame_defs ), 257 )
19081955 self .assertEqual (agg_record ["samples_total" ], 257 )
@@ -2071,7 +2118,9 @@ def test_pstats_collector_cumulative_percentage_cannot_exceed_100(self):
20712118 cumulative_calls = stats [1 ]
20722119 self .assertEqual (cumulative_calls , 10 )
20732120
2074- def test_pstats_collector_different_lines_same_function_counted_separately (self ):
2121+ def test_pstats_collector_different_lines_same_function_counted_separately (
2122+ self ,
2123+ ):
20752124 """Test that different line numbers in same function are tracked separately."""
20762125 collector = PstatsCollector (sample_interval_usec = 1000 )
20772126
@@ -2278,17 +2327,23 @@ def test_flamegraph_collector_with_location_info(self):
22782327 frame = MockFrameInfo ("app.py" , 100 , "process_data" )
22792328 frames = [
22802329 MockInterpreterInfo (
2281- 0 ,
2282- [MockThreadInfo (1 , [frame ], status = THREAD_STATUS_HAS_GIL )]
2330+ 0 , [MockThreadInfo (1 , [frame ], status = THREAD_STATUS_HAS_GIL )]
22832331 )
22842332 ]
22852333 collector .collect (frames )
22862334
22872335 data = collector ._convert_to_flamegraph_format ()
22882336 # Verify the function name includes lineno from location
22892337 strings = data .get ("strings" , [])
2290- name_found = any ("process_data" in s and "100" in s for s in strings if isinstance (s , str ))
2291- self .assertTrue (name_found , f"Expected to find 'process_data' with line 100 in { strings } " )
2338+ name_found = any (
2339+ "process_data" in s and "100" in s
2340+ for s in strings
2341+ if isinstance (s , str )
2342+ )
2343+ self .assertTrue (
2344+ name_found ,
2345+ f"Expected to find 'process_data' with line 100 in { strings } " ,
2346+ )
22922347
22932348 def test_gecko_collector_with_location_info (self ):
22942349 """Test GeckoCollector handles LocationInfo properly."""
@@ -2297,8 +2352,7 @@ def test_gecko_collector_with_location_info(self):
22972352 frame = MockFrameInfo ("server.py" , 50 , "handle_request" )
22982353 frames = [
22992354 MockInterpreterInfo (
2300- 0 ,
2301- [MockThreadInfo (1 , [frame ], status = THREAD_STATUS_HAS_GIL )]
2355+ 0 , [MockThreadInfo (1 , [frame ], status = THREAD_STATUS_HAS_GIL )]
23022356 )
23032357 ]
23042358 collector .collect (frames )
@@ -2561,8 +2615,12 @@ def _make_sample_frames(self):
25612615 1 ,
25622616 [
25632617 MockFrameInfo ("app.py" , 100 , "main" , opcode = 90 ),
2564- MockFrameInfo ("utils.py" , 50 , "helper" , opcode = 100 ),
2565- MockFrameInfo ("lib.py" , 25 , "process" , opcode = None ),
2618+ MockFrameInfo (
2619+ "utils.py" , 50 , "helper" , opcode = 100
2620+ ),
2621+ MockFrameInfo (
2622+ "lib.py" , 25 , "process" , opcode = None
2623+ ),
25662624 ],
25672625 status = THREAD_STATUS_HAS_GIL ,
25682626 )
@@ -2720,7 +2778,9 @@ def test_flamegraph_collector_filters_internal_frames(self):
27202778 1 ,
27212779 [
27222780 MockFrameInfo ("app.py" , 50 , "run" ),
2723- MockFrameInfo ("/lib/_sync_coordinator.py" , 100 , "main" ),
2781+ MockFrameInfo (
2782+ "/lib/_sync_coordinator.py" , 100 , "main"
2783+ ),
27242784 MockFrameInfo ("<frozen runpy>" , 87 , "_run_code" ),
27252785 ],
27262786 status = THREAD_STATUS_HAS_GIL ,
@@ -2748,7 +2808,9 @@ def test_collapsed_stack_collector_filters_internal_frames(self):
27482808 1 ,
27492809 [
27502810 MockFrameInfo ("app.py" , 50 , "run" ),
2751- MockFrameInfo ("/lib/_sync_coordinator.py" , 100 , "main" ),
2811+ MockFrameInfo (
2812+ "/lib/_sync_coordinator.py" , 100 , "main"
2813+ ),
27522814 ],
27532815 status = THREAD_STATUS_HAS_GIL ,
27542816 )
0 commit comments