Skip to content

Commit 4fb3ade

Browse files
committed
style
1 parent a9b6ccd commit 4fb3ade

File tree

2 files changed

+94
-32
lines changed

2 files changed

+94
-32
lines changed

Lib/profiling/sampling/binary_reader.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ def convert_binary_to_format(input_file, output_file, output_format,
118118
collector = PstatsCollector(interval)
119119
elif output_format == 'gecko':
120120
collector = GeckoCollector(interval)
121-
elif output_format == 'jsonl':
121+
elif output_format == "jsonl":
122122
collector = JsonlCollector(interval)
123123
else:
124124
raise ValueError(f"Unknown output format: {output_format}")

Lib/test/test_profiling/test_sampling_profiler/test_collectors.py

Lines changed: 93 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)