@@ -79,9 +79,31 @@ def extract_metric_name(line):
79
79
return line .split ('{' )[0 ].strip ()
80
80
return line .strip ()
81
81
82
+ def get_sample_lines (samples , max_lines = 5 ):
83
+ """
84
+ Get sample lines from metric changes, limiting to max_lines.
85
+ Returns formatted sample lines for display.
86
+ """
87
+ sample_lines = []
88
+ line_count = 0
89
+
90
+ for sample in samples [:3 ]: # Take first 3 samples to avoid too much output
91
+ lines = sample .split ('\n ' )
92
+ for line in lines :
93
+ if line_count >= max_lines :
94
+ if len (samples ) > 3 or any (len (s .split ('\n ' )) > max_lines for s in samples ):
95
+ sample_lines .append (" ..." )
96
+ break
97
+ sample_lines .append (f" { line } " )
98
+ line_count += 1
99
+ if line_count >= max_lines :
100
+ break
101
+
102
+ return sample_lines
103
+
82
104
def generate_diff_summary (changes ):
83
105
"""
84
- Generates a markdown summary from the parsed diff changes.
106
+ Generates a markdown summary from the parsed diff changes with sample lines .
85
107
"""
86
108
summary = ["## 📊 Metrics Diff Summary\n " ]
87
109
@@ -100,12 +122,30 @@ def generate_diff_summary(changes):
100
122
summary .append ("\n ### 🆕 Added Metrics" )
101
123
for metric , samples in changes ['added' ].items ():
102
124
summary .append (f"- `{ metric } ` ({ len (samples )} variants)" )
125
+ sample_lines = get_sample_lines (samples )
126
+ if sample_lines :
127
+ summary .append ("<details>" )
128
+ summary .append ("<summary>View samples</summary>" )
129
+ summary .append ("" )
130
+ summary .append ("```" )
131
+ summary .extend (sample_lines )
132
+ summary .append ("```" )
133
+ summary .append ("</details>" )
103
134
104
135
# Removed metrics
105
136
if changes ['removed' ]:
106
137
summary .append ("\n ### ❌ Removed Metrics" )
107
138
for metric , samples in changes ['removed' ].items ():
108
139
summary .append (f"- `{ metric } ` ({ len (samples )} variants)" )
140
+ sample_lines = get_sample_lines (samples )
141
+ if sample_lines :
142
+ summary .append ("<details>" )
143
+ summary .append ("<summary>View samples</summary>" )
144
+ summary .append ("" )
145
+ summary .append ("```" )
146
+ summary .extend (sample_lines )
147
+ summary .append ("```" )
148
+ summary .append ("</details>" )
109
149
110
150
# Modified metrics
111
151
if changes ['modified' ]:
@@ -115,6 +155,32 @@ def generate_diff_summary(changes):
115
155
summary .append (f" - Added variants: { len (versions ['added' ])} " )
116
156
summary .append (f" - Removed variants: { len (versions ['removed' ])} " )
117
157
158
+ # Show samples of added variants
159
+ if versions ['added' ]:
160
+ added_samples = get_sample_lines (versions ['added' ], max_lines = 3 )
161
+ if added_samples :
162
+ summary .append (" - Sample added:" )
163
+ summary .append (" <details>" )
164
+ summary .append (" <summary>View added samples</summary>" )
165
+ summary .append ("" )
166
+ summary .append (" ```" )
167
+ summary .extend ([f" { line } " for line in added_samples ])
168
+ summary .append (" ```" )
169
+ summary .append (" </details>" )
170
+
171
+ # Show samples of removed variants
172
+ if versions ['removed' ]:
173
+ removed_samples = get_sample_lines (versions ['removed' ], max_lines = 3 )
174
+ if removed_samples :
175
+ summary .append (" - Sample removed:" )
176
+ summary .append (" <details>" )
177
+ summary .append (" <summary>View removed samples</summary>" )
178
+ summary .append ("" )
179
+ summary .append (" ```" )
180
+ summary .extend ([f" { line } " for line in removed_samples ])
181
+ summary .append (" ```" )
182
+ summary .append (" </details>" )
183
+
118
184
return "\n " .join (summary )
119
185
120
186
def main ():
0 commit comments