diff --git a/labels.py b/labels.py index 8544ee4..091a5a0 100644 --- a/labels.py +++ b/labels.py @@ -101,17 +101,25 @@ def get_stats_time_in_labels( if issue.label_metrics[label] is None: continue if label not in time_in_labels: - time_in_labels[label] = [issue.label_metrics[label]] + time_in_labels[label] = [issue.label_metrics[label].total_seconds()] else: - time_in_labels[label].append(issue.label_metrics[label]) + time_in_labels[label].append( + issue.label_metrics[label].total_seconds() + ) average_time_in_labels = {} med_time_in_labels = {} ninety_percentile_in_labels = {} for label, time_list in time_in_labels.items(): - average_time_in_labels[label] = numpy.average(time_list) - med_time_in_labels[label] = numpy.median(time_list) - ninety_percentile_in_labels[label] = numpy.percentile(time_list, 90, axis=0) + average_time_in_labels[label] = timedelta( + seconds=numpy.round(numpy.average(time_list)) + ) + med_time_in_labels[label] = timedelta( + seconds=numpy.round(numpy.median(time_list)) + ) + ninety_percentile_in_labels[label] = timedelta( + seconds=numpy.round(numpy.percentile(time_list, 90, axis=0)) + ) for label in labels: if label not in average_time_in_labels: @@ -120,8 +128,8 @@ def get_stats_time_in_labels( ninety_percentile_in_labels[label] = None stats = { - 'avg': average_time_in_labels, - 'med': med_time_in_labels, - '90p': ninety_percentile_in_labels + "avg": average_time_in_labels, + "med": med_time_in_labels, + "90p": ninety_percentile_in_labels, } return stats diff --git a/time_to_answer.py b/time_to_answer.py index c33b414..90d1769 100644 --- a/time_to_answer.py +++ b/time_to_answer.py @@ -43,16 +43,19 @@ def get_stats_time_to_answer( # Calculate stats describing time to answer num_issues_with_time_to_answer = len(issues_with_time_to_answer) if num_issues_with_time_to_answer > 0: - average_time_to_answer = numpy.average(answer_times) - med_time_to_answer = numpy.median(answer_times) - ninety_percentile_time_to_answer = numpy.percentile(answer_times, 90, axis=0) + average_time_to_answer = numpy.round(numpy.average(answer_times)) + med_time_to_answer = numpy.round(numpy.median(answer_times)) + ninety_percentile_time_to_answer = numpy.round( + numpy.percentile(answer_times, 90, axis=0) + ) else: return None stats = { - 'avg': timedelta(seconds=average_time_to_answer), - 'med': timedelta(seconds=med_time_to_answer), - '90p': timedelta(seconds=ninety_percentile_time_to_answer)} + "avg": timedelta(seconds=average_time_to_answer), + "med": timedelta(seconds=med_time_to_answer), + "90p": timedelta(seconds=ninety_percentile_time_to_answer), + } # Print the average time to answer converting seconds to a readable time format print(f"Average time to answer: {timedelta(seconds=average_time_to_answer)}") diff --git a/time_to_close.py b/time_to_close.py index aead394..7791ed6 100644 --- a/time_to_close.py +++ b/time_to_close.py @@ -84,16 +84,19 @@ def get_stats_time_to_close( # Calculate stats describing time to close num_issues_with_time_to_close = len(issues_with_time_to_close) if num_issues_with_time_to_close > 0 and total_time_to_close is not None: - average_time_to_close = numpy.average(close_times) - med_time_to_close = numpy.median(close_times) - ninety_percentile_time_to_close = numpy.percentile(close_times, 90, axis=0) + average_time_to_close = numpy.round(numpy.average(close_times)) + med_time_to_close = numpy.round(numpy.median(close_times)) + ninety_percentile_time_to_close = numpy.round( + numpy.percentile(close_times, 90, axis=0) + ) else: return None stats = { - 'avg': timedelta(seconds=average_time_to_close), - 'med': timedelta(seconds=med_time_to_close), - '90p': timedelta(seconds=ninety_percentile_time_to_close)} + "avg": timedelta(seconds=average_time_to_close), + "med": timedelta(seconds=med_time_to_close), + "90p": timedelta(seconds=ninety_percentile_time_to_close), + } # Print the average time to close converting seconds to a readable time format print(f"Time to close: {timedelta(seconds=average_time_to_close)}") diff --git a/time_to_first_response.py b/time_to_first_response.py index e764be5..3193fa6 100644 --- a/time_to_first_response.py +++ b/time_to_first_response.py @@ -58,7 +58,13 @@ def measure_time_to_first_response( number=20, sort="created", direction="asc" ) # type: ignore for comment in comments: - if ignore_comment(issue.issue.user, comment.user, ignore_users, comment.created_at, ready_for_review_at): + if ignore_comment( + issue.issue.user, + comment.user, + ignore_users, + comment.created_at, + ready_for_review_at, + ): continue first_comment_time = comment.created_at break @@ -68,8 +74,13 @@ def measure_time_to_first_response( if pull_request: review_comments = pull_request.reviews(number=50) # type: ignore for review_comment in review_comments: - if ignore_comment(issue.issue.user, review_comment.user, ignore_users, - review_comment.submitted_at, ready_for_review_at): + if ignore_comment( + issue.issue.user, + review_comment.user, + ignore_users, + review_comment.submitted_at, + ready_for_review_at, + ): continue first_review_comment_time = review_comment.submitted_at break @@ -119,7 +130,8 @@ def ignore_comment( # ignore comments by the issue creator or comment_user.login == issue_user.login # ignore comments created before the issue was ready for review - or (ready_for_review_at and comment_created_at < ready_for_review_at)) + or (ready_for_review_at and comment_created_at < ready_for_review_at) + ) def get_stats_time_to_first_response( @@ -145,14 +157,17 @@ def get_stats_time_to_first_response( if len(issues) - none_count <= 0: return None - average_seconds_to_first_response = numpy.average(response_times) - med_seconds_to_first_response = numpy.median(response_times) - ninety_percentile_seconds_to_first_response = numpy.percentile(response_times, 90, axis=0) + average_seconds_to_first_response = numpy.round(numpy.average(response_times)) + med_seconds_to_first_response = numpy.round(numpy.median(response_times)) + ninety_percentile_seconds_to_first_response = numpy.round( + numpy.percentile(response_times, 90, axis=0) + ) stats = { - 'avg': timedelta(seconds=average_seconds_to_first_response), - 'med': timedelta(seconds=med_seconds_to_first_response), - '90p': timedelta(seconds=ninety_percentile_seconds_to_first_response)} + "avg": timedelta(seconds=average_seconds_to_first_response), + "med": timedelta(seconds=med_seconds_to_first_response), + "90p": timedelta(seconds=ninety_percentile_seconds_to_first_response), + } # Print the average time to first response converting seconds to a readable time format print(