Skip to content

Commit ec51482

Browse files
committed
Add analysis of number of uniq mergers per month.
1 parent 391122d commit ec51482

File tree

1 file changed

+21
-4
lines changed

1 file changed

+21
-4
lines changed

site/index.md

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,15 +106,25 @@ x = bedges[:-1] + np.timedelta64(15, "D")
106106
107107
# NOTE: np.histogram doesn't work on datetimes
108108
merged_prs_per_month = dict()
109+
uniq_mergers_per_month = dict()
109110
for proj, data in project_prs.items():
110111
# Num merged PRs per month
111112
merged_prs = np.array(data["merged_prs"], dtype=object)
112113
merge_dates = np.array([pr["mergedAt"] for pr in merged_prs], dtype="M8[D]")
113114
num_merged_per_month = []
115+
uniq_mergers = []
114116
for lo, hi in itertools.pairwise(bedges):
115117
month_mask = (merge_dates < hi) & (merge_dates > lo)
118+
119+
# Number of PRs merged per month
116120
num_merged_per_month.append(month_mask.sum())
121+
122+
# Number of unique maintainers who merged a PR in a given month
123+
mergers = {pr["mergedBy"]["login"] for pr in merged_prs[month_mask]}
124+
uniq_mergers.append(len(mergers))
125+
117126
merged_prs_per_month[proj] = num_merged_per_month
127+
uniq_mergers_per_month[proj] = uniq_mergers
118128
```
119129

120130
```{code-cell} ipython3
@@ -236,12 +246,19 @@ for proj, data in project_prs.items():
236246
tags: [remove-input]
237247
---
238248
p = figure(
239-
width=400,
249+
width=650,
240250
height=400,
241-
title="Merged PRs per month",
251+
title="Number of unique maintainers who merged at least 1 PR",
242252
x_axis_type="datetime",
243253
)
244-
for (label, y), color in zip(merged_prs_per_month.items(), itertools.cycle(palette)):
245-
p.line(x, y, color=color, legend_label=label)
254+
255+
legend_items = []
256+
for (label, y), color in zip(uniq_mergers_per_month.items(), itertools.cycle(palette)):
257+
l = p.line(x, y, line_width=2, color=color, muted_alpha=0.2)
258+
legend_items.append((label, [l]))
259+
260+
legend = Legend(items=legend_items, orientation="horizontal")
261+
legend.click_policy = "mute"
262+
p.add_layout(legend, "below")
246263
show(p)
247264
```

0 commit comments

Comments
 (0)