From 442571f8e9afe5e9fd5ba58d3a19d0ce1ec2ff19 Mon Sep 17 00:00:00 2001 From: jennyhickson Date: Fri, 12 Dec 2025 12:22:03 +0000 Subject: [PATCH 1/7] add file capture and debug prints --- workload/workload.py | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/workload/workload.py b/workload/workload.py index aebe0a5b..47079383 100644 --- a/workload/workload.py +++ b/workload/workload.py @@ -3,6 +3,7 @@ import subprocess from pathlib import Path +from awscli.testutils import capture_output from prettytable import PrettyTable lfric_repositories = [ @@ -40,14 +41,14 @@ class ProjectData: review_data: list Data filtered to contain a list of review tuples """ - def __init__(self, test: bool = False): + def __init__(self, test: bool = False, capture: bool = False): self.data = {} self.review_data = [] - self.fetch_project_data(test) - self.filter_reviewers() + self.fetch_project_data(test, capture) + self.filter_reviewers(test) - def fetch_project_data(self, test: bool): + def fetch_project_data(self, test: bool, capture: bool): """ Retrieve data from GitHub API or a from a test file. """ @@ -66,20 +67,35 @@ def fetch_project_data(self, test: bool): self.data = json.loads(output.stdout) - def filter_reviewers(self): + if capture: + file = Path(__file__).with_name("test.json") + with open(file, "w") as f: + json.dump(self.data, f) + + def filter_reviewers(self, test: bool = False): """ Filter the data to create a list of review tuples """ all_reviews = self.data["items"] for review in all_reviews: + cr = "" + sr = "" if "code Review" in review: + cr = f"{review['code Review']}" self.review_data.append((review["code Review"], review["repository"])) if "sciTech Review" in review: + sr = f"{review['sciTech Review']}" self.review_data.append( (review["sciTech Review"], review["repository"]) ) + if test and (cr or sr): + print("SciTech:", f"{sr: <18}", + "Code:", f"{cr: <18}", + f"{review['repository']: <50}", + review["title"]) + def one_repo(self, repository: str) -> list: """ Filter the review data to just that of one repository @@ -230,14 +246,19 @@ def parse_args(): action="store_true", help="Use test input files.", ) + parser.add_argument( + "--capture_project", + action="store_true", + help="Capture the current project status into the test file" + ) return parser.parse_args() -def main(total: bool, test: bool): +def main(total: bool, test: bool, capture_project: bool): # Extract data from github about the reviews and team members. - data = ProjectData(test) + data = ProjectData(test, capture_project) other_team = Team(test=test) other_team.members = other_reviewers @@ -271,4 +292,4 @@ def main(total: bool, test: bool): if __name__ == "__main__": args = parse_args() - main(args.total, args.test) + main(args.total, args.test, args.capture_project) From 6551a9d5389fc63baf6c277314f876c593352e9c Mon Sep 17 00:00:00 2001 From: jennyhickson Date: Fri, 12 Dec 2025 12:23:07 +0000 Subject: [PATCH 2/7] black --- workload/workload.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/workload/workload.py b/workload/workload.py index 47079383..76f8b5d6 100644 --- a/workload/workload.py +++ b/workload/workload.py @@ -91,10 +91,14 @@ def filter_reviewers(self, test: bool = False): ) if test and (cr or sr): - print("SciTech:", f"{sr: <18}", - "Code:", f"{cr: <18}", - f"{review['repository']: <50}", - review["title"]) + print( + "SciTech:", + f"{sr: <18}", + "Code:", + f"{cr: <18}", + f"{review['repository']: <50}", + review["title"], + ) def one_repo(self, repository: str) -> list: """ @@ -249,7 +253,7 @@ def parse_args(): parser.add_argument( "--capture_project", action="store_true", - help="Capture the current project status into the test file" + help="Capture the current project status into the test file", ) return parser.parse_args() From 5f8617a3bcab6c0957e15c373b6ab6ec1adbc62c Mon Sep 17 00:00:00 2001 From: jennyhickson Date: Fri, 12 Dec 2025 12:24:19 +0000 Subject: [PATCH 3/7] remove spurious import --- workload/workload.py | 1 - 1 file changed, 1 deletion(-) diff --git a/workload/workload.py b/workload/workload.py index 76f8b5d6..3c751f59 100644 --- a/workload/workload.py +++ b/workload/workload.py @@ -3,7 +3,6 @@ import subprocess from pathlib import Path -from awscli.testutils import capture_output from prettytable import PrettyTable lfric_repositories = [ From ee05cf2bfb5aa3d6fa54516ab522e05459693e41 Mon Sep 17 00:00:00 2001 From: jennyhickson Date: Fri, 12 Dec 2025 12:29:09 +0000 Subject: [PATCH 4/7] add extra print --- workload/workload.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/workload/workload.py b/workload/workload.py index 3c751f59..985ba1a8 100644 --- a/workload/workload.py +++ b/workload/workload.py @@ -70,6 +70,10 @@ def fetch_project_data(self, test: bool, capture: bool): file = Path(__file__).with_name("test.json") with open(file, "w") as f: json.dump(self.data, f) + print( + "Project data saved to test.json. Use --test to run with" + "the captured data." + ) def filter_reviewers(self, test: bool = False): """ From ee122b24b6375ebc718f3b5e78bac52fd3ce43a1 Mon Sep 17 00:00:00 2001 From: jennyhickson Date: Fri, 12 Dec 2025 12:30:00 +0000 Subject: [PATCH 5/7] space --- workload/workload.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workload/workload.py b/workload/workload.py index 985ba1a8..87df3c41 100644 --- a/workload/workload.py +++ b/workload/workload.py @@ -72,7 +72,7 @@ def fetch_project_data(self, test: bool, capture: bool): json.dump(self.data, f) print( "Project data saved to test.json. Use --test to run with" - "the captured data." + " the captured data." ) def filter_reviewers(self, test: bool = False): From 5bb9f1eb1efd9fd60f36f10cf364fd6697ceab75 Mon Sep 17 00:00:00 2001 From: jennyhickson Date: Fri, 12 Dec 2025 12:33:41 +0000 Subject: [PATCH 6/7] simplify --- workload/workload.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/workload/workload.py b/workload/workload.py index 87df3c41..7dc6f57f 100644 --- a/workload/workload.py +++ b/workload/workload.py @@ -84,11 +84,11 @@ def filter_reviewers(self, test: bool = False): cr = "" sr = "" if "code Review" in review: - cr = f"{review['code Review']}" + cr = review['code Review'] self.review_data.append((review["code Review"], review["repository"])) if "sciTech Review" in review: - sr = f"{review['sciTech Review']}" + sr = review['sciTech Review'] self.review_data.append( (review["sciTech Review"], review["repository"]) ) From ead08bdffb091c6c2a25b71090322442141202b2 Mon Sep 17 00:00:00 2001 From: jennyhickson Date: Fri, 12 Dec 2025 12:34:06 +0000 Subject: [PATCH 7/7] black --- workload/workload.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/workload/workload.py b/workload/workload.py index 7dc6f57f..d9cab5dd 100644 --- a/workload/workload.py +++ b/workload/workload.py @@ -84,11 +84,11 @@ def filter_reviewers(self, test: bool = False): cr = "" sr = "" if "code Review" in review: - cr = review['code Review'] + cr = review["code Review"] self.review_data.append((review["code Review"], review["repository"])) if "sciTech Review" in review: - sr = review['sciTech Review'] + sr = review["sciTech Review"] self.review_data.append( (review["sciTech Review"], review["repository"]) )