From 4e76d730c38f522bc9cf66b6660f5024488546e4 Mon Sep 17 00:00:00 2001 From: Jarek Potiuk Date: Fri, 3 Jun 2022 21:25:51 +0200 Subject: [PATCH] Better summary of status of AIP-47 (#24169) Result is here: https://github.com/apache/airflow/issues/24168 GitOrigin-RevId: bcb77c9973258e4577dbc534aa5c92196f8b467a --- dev/system_tests/update_issue_status.py | 71 ++++++++++++++++++++++--- 1 file changed, 64 insertions(+), 7 deletions(-) diff --git a/dev/system_tests/update_issue_status.py b/dev/system_tests/update_issue_status.py index d1bd9af5666..0f9fe1d5db5 100755 --- a/dev/system_tests/update_issue_status.py +++ b/dev/system_tests/update_issue_status.py @@ -17,10 +17,10 @@ # under the License. import textwrap from pathlib import Path -from typing import Optional, Tuple +from typing import Dict, List, Optional, Tuple import rich_click as click -from github import Github +from github import Github, Issue from rich.console import Console console = Console(width=400, color_system="standard") @@ -140,18 +140,26 @@ def update_issue_status( """Update status of the issues regarding the AIP-47 migration.""" g = Github(github_token) repo = g.get_repo(repository) - issues = repo.get_issues(labels=labels.split(',')) + issues = repo.get_issues(labels=labels.split(','), state='all') max_issues = max_issues if max_issues is not None else issues.totalCount total_re_added = 0 total_completed = 0 total_count_done = 0 total_count_all = 0 num_issues = 0 + completed_open_issues: List[Issue.Issue] = [] + completed_closed_issues: List[Issue.Issue] = [] + not_completed_closed_issues: List[Issue.Issue] = [] + not_completed_opened_issues: List[Issue.Issue] = [] + per_issue_num_done: Dict[int, int] = {} + per_issue_num_all: Dict[int, int] = {} for issue in issues[start_from : start_from + max_issues]: console.print(f"[blue] {issue.id}: {issue.title}") new_body, count_re_added, count_completed, count_done, count_all = process_paths_from_body( issue.body, dry_run=dry_run, verbose=verbose ) + if count_all == 0: + continue if count_re_added != 0 or count_completed != 0: if dry_run: print(new_body) @@ -168,16 +176,65 @@ def update_issue_status( total_completed += count_completed total_count_done += count_done total_count_all += count_all + per_issue_num_all[issue.id] = count_all + per_issue_num_done[issue.id] = count_done + if count_done == count_all: + if issue.state == "closed": + completed_closed_issues.append(issue) + else: + completed_open_issues.append(issue) + else: + if issue.state == "closed": + not_completed_closed_issues.append(issue) + else: + not_completed_opened_issues.append(issue) num_issues += 1 - console.print() - console.print() - console.print(f"[green]Summary of ALL performed actions: for {num_issues} issues[/]") + console.print(f"[green]Summary of ALL actions: for {num_issues} issues[/]") console.print(f" Re-added file number: {total_re_added}") console.print(f" Completed file number: {total_completed}") + console.print() + console.print() + console.print(f"[green]Summary of ALL issues: for {num_issues} issues[/]") console.print( - f" Done {total_count_done}/{total_count_all} = {(total_count_done * 100/ total_count_all):.2f}%" + f" Completed and closed issues: {len(completed_closed_issues)}/{num_issues}: " + f"{len(completed_closed_issues) * 100/num_issues:.2f}%" ) + console.print( + f" Completed files {total_count_done}/{total_count_all} = " + f"{(total_count_done * 100/ total_count_all):.2f}%" + ) + console.print() + if not_completed_closed_issues: + console.print("[yellow] Issues that are not completed and should be opened:[/]\n") + for issue in not_completed_closed_issues: + all = per_issue_num_all[issue.id] + done = per_issue_num_done[issue.id] + console.print( + fr" * \[[yellow]{issue.title}[/]]({issue.html_url}): " + f"{done}/{all} : {done * 100 / all:.2f}%" + ) + console.print() + if completed_open_issues: + console.print("[yellow] Issues that are completed and should be closed:[/]\n") + for issue in completed_open_issues: + console.print(fr" * \[[yellow]{issue.title}[/]]({issue.html_url})") + console.print() + if not_completed_opened_issues: + console.print("[yellow] Issues that are not completed and are still opened:[/]\n") + for issue in not_completed_opened_issues: + all = per_issue_num_all[issue.id] + done = per_issue_num_done[issue.id] + console.print( + fr" * \[[yellow]{issue.title}[/]]({issue.html_url}): " + f"{done}/{all} : {done * 100 / all:.2f}%" + ) + console.print() + if completed_closed_issues: + console.print("[green] Issues that are completed and are already closed:[/]\n") + for issue in completed_closed_issues: + console.print(fr" * \[[green]{issue.title}[/]]({issue.html_url})") + console.print() console.print()