@@ -79,6 +79,30 @@ def extract_metric_name(line):
79
79
return line .split ('{' )[0 ].strip ()
80
80
return line .strip ()
81
81
82
+ def format_sample_diff (samples , change_type = None , limit = 5 ):
83
+ """
84
+ Formats a sample of diffs (up to limit) in a collapsible section.
85
+ """
86
+ if not samples :
87
+ return ""
88
+
89
+ title = "Sample changes"
90
+ if change_type :
91
+ title = f"Sample { change_type } changes"
92
+
93
+ sample_lines = []
94
+ sample_lines .append (f"<details><summary>{ title } ({ len (samples )} total)</summary>" )
95
+ sample_lines .append ("" )
96
+
97
+ for i , sample in enumerate (samples [:limit ]):
98
+ sample_lines .append (f"```diff\n { sample } \n ```" )
99
+
100
+ if len (samples ) > limit :
101
+ sample_lines .append (f"\n ... and { len (samples ) - limit } more" )
102
+
103
+ sample_lines .append ("</details>" )
104
+ return "\n " .join (sample_lines )
105
+
82
106
def generate_diff_summary (changes ):
83
107
"""
84
108
Generates a markdown summary from the parsed diff changes.
@@ -100,20 +124,24 @@ def generate_diff_summary(changes):
100
124
summary .append ("\n ### 🆕 Added Metrics" )
101
125
for metric , samples in changes ['added' ].items ():
102
126
summary .append (f"- `{ metric } ` ({ len (samples )} variants)" )
127
+ summary .append (format_sample_diff (samples , "added" ))
103
128
104
129
# Removed metrics
105
130
if changes ['removed' ]:
106
131
summary .append ("\n ### ❌ Removed Metrics" )
107
132
for metric , samples in changes ['removed' ].items ():
108
133
summary .append (f"- `{ metric } ` ({ len (samples )} variants)" )
134
+ summary .append (format_sample_diff (samples , "removed" ))
109
135
110
136
# Modified metrics
111
137
if changes ['modified' ]:
112
138
summary .append ("\n ### 🔄 Modified Metrics" )
113
139
for metric , versions in changes ['modified' ].items ():
114
140
summary .append (f"- `{ metric } `" )
115
141
summary .append (f" - Added variants: { len (versions ['added' ])} " )
142
+ summary .append (format_sample_diff (versions ['added' ], "added" ))
116
143
summary .append (f" - Removed variants: { len (versions ['removed' ])} " )
144
+ summary .append (format_sample_diff (versions ['removed' ], "removed" ))
117
145
118
146
return "\n " .join (summary )
119
147
0 commit comments