We accumulate data about PR lifecycle times for PRs in the google/xls repository. The data includes key timestamps such as when a PR is created, when a review is requested (with CI passing), when the "reviewing internally" label is applied, and when the PR is finally closed (either merged or manually closed).
Three Python scripts are used in this project:
- accumulate_pr_data.py: Fetches PRs from github.com/google/xls, processes timeline events, and writes the relevant data to pr_data.csv.
- plot_pr_delays.py: Reads pr_data.csv, filters for PRs from xlsynth/xlsynth, calculates delays between lifecycle events, and produces a matplotlib boxplot which is saved as pr_delays.png.
- plot_pr_counts.py: Reads pr_data.csv, filters for PRs from xlsynth/xlsynth, counts the number of PRs opened each month, and produces a bar chart saved as pr_counts.png.
To generate the report:
-
Set your GITHUB_TOKEN environment variable.
-
Run:
python update_all.py
The following diagram shows the typical PR delays for PRs originating from the xlsynth/xlsynth repository:
And here is the monthly count of those PRs:
Below is a list of all pull-requests that originated from xlsynth/xlsynth, grouped by the month in which they were opened. The list is regenerated automatically by generate_pr_links_table.py.
🧪 = draft (open) 🚧 = still open (not merged yet)

