You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "mumrah (via GitHub)" <gi...@apache.org> on 2023/04/06 13:49:40 UTC

[GitHub] [kafka] mumrah commented on a diff in pull request #11096: Adding reviewers.py to help tag reviewers in commit message

mumrah commented on code in PR #11096:
URL: https://github.com/apache/kafka/pull/11096#discussion_r1159825800


##########
reviewers.py:
##########
@@ -0,0 +1,76 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+from collections import defaultdict
+import operator
+import os
+import re
+
+
+def prompt_for_user():
+    while True:
+        try:
+            user_input = input("\nName or email (case insensitive): ") 
+        except (KeyboardInterrupt, EOFError):
+            return None
+        clean_input = user_input.strip().lower()
+        if clean_input != "":
+            return clean_input
+
+
+if __name__ == "__main__":
+    print("Utility to help generate 'Reviewers' string for Pull Requests. Use Ctrl+D or Ctrl+C to exit")
+    
+    stream = os.popen("git log | grep Reviewers")
+    lines = stream.readlines()
+    all_reviewers = defaultdict(int)
+    for line in lines:
+        stripped = line.strip().lstrip("Reviewers: ")
+        reviewers = stripped.split(",")
+        for reviewer in reviewers:
+            all_reviewers[reviewer.strip()] += 1 
+    parsed_reviewers = []
+
+    for item in all_reviewers.items():
+        m = re.match("(?P<name>.*)\s<(?P<email>.*)>", item[0])
+        if m is not None and len(m.groups()) == 2:
+            if item[1] > 2:
+                parsed_reviewers.append((m.group("name"), m.group("email"), item[1]))
+    
+    selected_reviewers = []
+    while True:
+        if len(selected_reviewers) != 0:
+            print(f"Reviewers so far: {selected_reviewers}")
+        user_input = prompt_for_user()
+        if user_input is None:
+            break
+        candidates = []
+        for reviewer, email, count in parsed_reviewers:
+            if reviewer.lower().startswith(user_input) or email.lower().startswith(user_input):
+                candidates.append((reviewer, email, count))
+            if len(candidates) == 10:
+                break
+        if len(candidates) == 0:
+            continue
+
+        print("\nPossible matches (in order of most recent):")

Review Comment:
   @showuon the zip + range(10) has the effect of only showing the top 10



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: jira-unsubscribe@kafka.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org