@@ -62,57 +62,9 @@ def __repr__(self):
6262 )
6363
6464
65- def run_graphql_query (
66- query : str , variables : dict , token : str , retry : bool = True
67- ) -> dict :
68- """
69- This function submits a graphql query and returns the results as a
70- dictionary.
71- """
72- s = requests .Session ()
73- retries = requests .adapters .Retry (total = 8 , backoff_factor = 2 , status_forcelist = [504 ])
74- s .mount ("https://" , requests .adapters .HTTPAdapter (max_retries = retries ))
75-
76- headers = {
77- "Authorization" : "bearer {}" .format (token ),
78- # See
79- # https://github.blog/2021-11-16-graphql-global-id-migration-update/
80- "X-Github-Next-Global-ID" : "1" ,
81- }
82- request = s .post (
83- url = "https://api.github.com/graphql" ,
84- json = {"query" : query , "variables" : variables },
85- headers = headers ,
86- )
87-
88- rate_limit = request .headers .get ("X-RateLimit-Remaining" )
89- print (rate_limit )
90- if rate_limit and int (rate_limit ) < 10 :
91- reset_time = int (request .headers ["X-RateLimit-Reset" ])
92- while reset_time - int (time .time ()) > 0 :
93- time .sleep (60 )
94- print (
95- "Waiting until rate limit reset" ,
96- reset_time - int (time .time ()),
97- "seconds remaining" ,
98- )
99-
100- if request .status_code == 200 :
101- if "data" not in request .json ():
102- print (request .json ())
103- sys .exit (1 )
104- return request .json ()["data" ]
105- elif retry :
106- return run_graphql_query (query , variables , token , False )
107- else :
108- raise Exception (
109- "Failed to run graphql query\n query: {}\n error: {}" .format (
110- query , request .json ()
111- )
112- )
113-
114-
115- def check_manual_requests (start_date : datetime .datetime , token : str ) -> list [str ]:
65+ def check_manual_requests (
66+ gh : github .Github , start_date : datetime .datetime
67+ ) -> list [str ]:
11668 """
11769 Return a list of users who have been asked since ``start_date`` if they
11870 want to keep their commit access.
@@ -140,15 +92,18 @@ def check_manual_requests(start_date: datetime.datetime, token: str) -> list[str
14092 "query" : f"type:issue created:>{ formatted_start_date } org:llvm repo:llvm-project label:infra:commit-access"
14193 }
14294
143- data = run_graphql_query (query , variables , token )
95+ res_header , res_data = gh ._Github__requester .graphql_query (
96+ query = query , variables = variables
97+ )
98+ data = res_data ["data" ]
14499 users = []
145100 for issue in data ["search" ]["nodes" ]:
146101 users .extend ([user [1 :] for user in re .findall ("@[^ ,\n ]+" , issue ["body" ])])
147102
148103 return users
149104
150105
151- def get_num_commits (user : str , start_date : datetime .datetime , token : str ) -> int :
106+ def get_num_commits (gh : github . Github , user : str , start_date : datetime .datetime ) -> int :
152107 """
153108 Get number of commits that ``user`` has been made since ``start_date`.
154109 """
@@ -166,7 +121,10 @@ def get_num_commits(user: str, start_date: datetime.datetime, token: str) -> int
166121 }
167122 """
168123
169- data = run_graphql_query (user_query , variables , token )
124+ res_header , res_data = gh ._Github__requester .graphql_query (
125+ query = user_query , variables = variables
126+ )
127+ data = res_data ["data" ]
170128 variables ["user_id" ] = data ["user" ]["id" ]
171129
172130 query = """
@@ -193,7 +151,10 @@ def get_num_commits(user: str, start_date: datetime.datetime, token: str) -> int
193151 }
194152 """
195153 count = 0
196- data = run_graphql_query (query , variables , token )
154+ res_header , res_data = gh ._Github__requester .graphql_query (
155+ query = query , variables = variables
156+ )
157+ data = res_data ["data" ]
197158 for repo in data ["organization" ]["teams" ]["nodes" ][0 ]["repositories" ]["nodes" ]:
198159 count += int (repo ["ref" ]["target" ]["history" ]["totalCount" ])
199160 if count >= User .THRESHOLD :
@@ -202,7 +163,7 @@ def get_num_commits(user: str, start_date: datetime.datetime, token: str) -> int
202163
203164
204165def is_new_committer_query_repo (
205- user : str , start_date : datetime .datetime , token : str
166+ gh : github . Github , user : str , start_date : datetime .datetime
206167) -> bool :
207168 """
208169 Determine if ``user`` is a new committer. A new committer can keep their
@@ -220,7 +181,10 @@ def is_new_committer_query_repo(
220181 }
221182 """
222183
223- data = run_graphql_query (user_query , variables , token )
184+ res_header , res_data = gh ._Github__requester .graphql_query (
185+ query = user_query , variables = variables
186+ )
187+ data = res_data ["data" ]
224188 variables ["owner" ] = "llvm"
225189 variables ["user_id" ] = data ["user" ]["id" ]
226190 variables ["start_date" ] = start_date .strftime ("%Y-%m-%dT%H:%M:%S" )
@@ -245,7 +209,10 @@ def is_new_committer_query_repo(
245209 }
246210 """
247211
248- data = run_graphql_query (query , variables , token )
212+ res_header , res_data = gh ._Github__requester .graphql_query (
213+ query = query , variables = variables
214+ )
215+ data = res_data ["data" ]
249216 repo = data ["organization" ]["repository" ]
250217 commits = repo ["ref" ]["target" ]["history" ]["nodes" ]
251218 if len (commits ) == 0 :
@@ -256,18 +223,22 @@ def is_new_committer_query_repo(
256223 return True
257224
258225
259- def is_new_committer (user : str , start_date : datetime .datetime , token : str ) -> bool :
226+ def is_new_committer (
227+ gh : github .Github , user : str , start_date : datetime .datetime
228+ ) -> bool :
260229 """
261230 Wrapper around is_new_commiter_query_repo to handle exceptions.
262231 """
263232 try :
264- return is_new_committer_query_repo (user , start_date , token )
233+ return is_new_committer_query_repo (gh , user , start_date )
265234 except :
266235 pass
267236 return True
268237
269238
270- def get_review_count (user : str , start_date : datetime .datetime , token : str ) -> int :
239+ def get_review_count (
240+ gh : github .Github , user : str , start_date : datetime .datetime
241+ ) -> int :
271242 """
272243 Return the number of reviews that ``user`` has done since ``start_date``.
273244 """
@@ -286,11 +257,14 @@ def get_review_count(user: str, start_date: datetime.datetime, token: str) -> in
286257 "query" : f"type:pr commenter:{ user } -author:{ user } merged:>{ formatted_start_date } org:llvm" ,
287258 }
288259
289- data = run_graphql_query (query , variables , token )
260+ res_header , res_data = gh ._Github__requester .graphql_query (
261+ query = query , variables = variables
262+ )
263+ data = res_data ["data" ]
290264 return int (data ["search" ]["issueCount" ])
291265
292266
293- def count_prs (triage_list : dict , start_date : datetime .datetime , token : str ):
267+ def count_prs (gh : github . Github , triage_list : dict , start_date : datetime .datetime ):
294268 """
295269 Fetch all the merged PRs for the project since ``start_date`` and update
296270 ``triage_list`` with the number of PRs merged for each user.
@@ -329,7 +303,10 @@ def count_prs(triage_list: dict, start_date: datetime.datetime, token: str):
329303 has_next_page = True
330304 while has_next_page :
331305 print (variables )
332- data = run_graphql_query (query , variables , token )
306+ res_header , res_data = gh ._Github__requester .graphql_query (
307+ query = query , variables = variables
308+ )
309+ data = res_data ["data" ]
333310 for pr in data ["search" ]["nodes" ]:
334311 # Users can be None if the user has been deleted.
335312 if not pr ["author" ]:
@@ -365,14 +342,14 @@ def main():
365342
366343 print ("Start:" , len (triage_list ), "triagers" )
367344 # Step 0 Check if users have requested commit access in the last year.
368- for user in check_manual_requests (one_year_ago , token ):
345+ for user in check_manual_requests (gh , one_year_ago ):
369346 if user in triage_list :
370347 print (user , "requested commit access in the last year." )
371348 del triage_list [user ]
372349 print ("After Request Check:" , len (triage_list ), "triagers" )
373350
374351 # Step 1 count all PRs authored or merged
375- count_prs (triage_list , one_year_ago , token )
352+ count_prs (gh , triage_list , one_year_ago )
376353
377354 print ("After PRs:" , len (triage_list ), "triagers" )
378355
@@ -381,7 +358,7 @@ def main():
381358
382359 # Step 2 check for reviews
383360 for user in list (triage_list .keys ()):
384- review_count = get_review_count (user , one_year_ago , token )
361+ review_count = get_review_count (gh , user , one_year_ago )
385362 triage_list [user ].add_reviewed (review_count )
386363
387364 print ("After Reviews:" , len (triage_list ), "triagers" )
@@ -391,7 +368,7 @@ def main():
391368
392369 # Step 3 check for number of commits
393370 for user in list (triage_list .keys ()):
394- num_commits = get_num_commits (user , one_year_ago , token )
371+ num_commits = get_num_commits (gh , user , one_year_ago )
395372 # Override the total number of commits to not double count commits and
396373 # authored PRs.
397374 triage_list [user ].set_authored (num_commits )
@@ -401,7 +378,7 @@ def main():
401378 # Step 4 check for new committers
402379 for user in list (triage_list .keys ()):
403380 print ("Checking" , user )
404- if is_new_committer (user , one_year_ago , token ):
381+ if is_new_committer (gh , user , one_year_ago ):
405382 print ("Removing new committer: " , user )
406383 del triage_list [user ]
407384
0 commit comments