@@ -106,15 +106,25 @@ x = bedges[:-1] + np.timedelta64(15, "D")
106106
107107# NOTE: np.histogram doesn't work on datetimes
108108merged_prs_per_month = dict()
109+ uniq_mergers_per_month = dict()
109110for 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():
236246tags: [remove-input]
237247---
238248p = 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")
246263show(p)
247264```
0 commit comments