From 5482946b9b0f380e9bce40d76684537c44e0e1f9 Mon Sep 17 00:00:00 2001 From: Horki Date: Tue, 8 Dec 2020 11:41:12 +0100 Subject: [PATCH 1/3] 767: triage; fetch pr titles --- triage/weekly_report.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/triage/weekly_report.py b/triage/weekly_report.py index 4de0ea4cb..50d38a41c 100755 --- a/triage/weekly_report.py +++ b/triage/weekly_report.py @@ -58,6 +58,8 @@ def eprint(*args, **kwargs): 'mixed': [], } +pr_titles = dict() + def get_username(): usernames = {'mackendy': 'ecstaticmorse', 'joshua': 'jyn514'} @@ -95,7 +97,7 @@ def relative_change(expected, actual): def log_change(expected, actual): '''Returns `ln(actual / expected)` - This is prefereable to percentage change because it scales equally for + This is preferable to percentage change because it scales equally for positive or negative changes. This means that the order of the arguments only affects the sign of the output @@ -172,6 +174,17 @@ def gh_link(pr): return f'https://github.com/rust-lang/rust/issues/{pr}' +def gh_pr_title(pr): + if pr in pr_titles: + return pr_titles.get(pr) + + url = f'https://api.github.com/repos/rust-lang/rust/pulls/{pr}' + with urllib.request.urlopen(url) as f: + data = json.loads(f.read()) + pr_titles[pr] = data['title'] + return pr_titles[pr] + + def compare_link(start, end, stat): return f'https://perf.rust-lang.org/compare.html?start={start}&end={end}&stat={stat.value}' @@ -180,8 +193,9 @@ def write_section(res, *changes): pr = res['b']['pr'] start = res['a']['commit'] end = res['b']['commit'] + title = gh_pr_title(pr) - msg = f'[#{pr}]({gh_link(pr)})' + msg = f'{title} [#{pr}]({gh_link(pr)})' for change in changes: msg += '\n- ' From 97c7b659281b31736fba96df699733db52e0a620 Mon Sep 17 00:00:00 2001 From: Horki Date: Tue, 8 Dec 2020 17:18:10 +0100 Subject: [PATCH 2/3] 767: add token from env, and exception handler --- triage/weekly_report.py | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/triage/weekly_report.py b/triage/weekly_report.py index 50d38a41c..b8355d65f 100755 --- a/triage/weekly_report.py +++ b/triage/weekly_report.py @@ -4,6 +4,7 @@ from datetime import date from enum import Enum from math import log +from os import getenv from pathlib import Path from pprint import pp from sys import exit @@ -58,8 +59,6 @@ def eprint(*args, **kwargs): 'mixed': [], } -pr_titles = dict() - def get_username(): usernames = {'mackendy': 'ecstaticmorse', 'joshua': 'jyn514'} @@ -175,14 +174,23 @@ def gh_link(pr): def gh_pr_title(pr): - if pr in pr_titles: - return pr_titles.get(pr) + def make_req(): + url = f'https://api.github.com/repos/rust-lang/rust/pulls/{pr}' + req = urllib.request.Request(url) + req.add_header('Content-Type', 'application/json') + req.add_header('Authorization', f'token {getenv("GITHUB_TOKEN")}') + + with urllib.request.urlopen(req) as f: + data = json.loads(f.read()) + return data.get('title', '') - url = f'https://api.github.com/repos/rust-lang/rust/pulls/{pr}' - with urllib.request.urlopen(url) as f: - data = json.loads(f.read()) - pr_titles[pr] = data['title'] - return pr_titles[pr] + result = '' + try: + result = make_req() + except urllib.error.HTTPError as e: + eprint(e) + finally: + return result def compare_link(start, end, stat): @@ -195,7 +203,7 @@ def write_section(res, *changes): end = res['b']['commit'] title = gh_pr_title(pr) - msg = f'{title} [#{pr}]({gh_link(pr)})' + msg = f'{title}[#{pr}]({gh_link(pr)})' for change in changes: msg += '\n- ' From 6e8f5b26616bf81608e3b94a51fc58205b669b44 Mon Sep 17 00:00:00 2001 From: Horki Date: Sat, 12 Dec 2020 14:43:49 +0100 Subject: [PATCH 3/3] 767: check for GITHUB_TOKEN --- triage/weekly_report.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/triage/weekly_report.py b/triage/weekly_report.py index 3dd9f84c4..c52316100 100755 --- a/triage/weekly_report.py +++ b/triage/weekly_report.py @@ -178,7 +178,8 @@ def make_req(): url = f'https://api.github.com/repos/rust-lang/rust/pulls/{pr}' req = urllib.request.Request(url) req.add_header('Content-Type', 'application/json') - req.add_header('Authorization', f'token {getenv("GITHUB_TOKEN")}') + if getenv("GITHUB_TOKEN") is not None: + req.add_header('Authorization', f'token {getenv("GITHUB_TOKEN")}') with urllib.request.urlopen(req) as f: data = json.loads(f.read())