@@ -121,8 +121,8 @@ def report_exists(self, pr_number, pr_head_sha):
121
121
page_number = 1
122
122
page_count = 1
123
123
while page_number <= page_count :
124
- api_data = self .api_request (request = "repos/" + self .repository_name + "/issues/" + str (pr_number ) +
125
- "/comments" ,
124
+ api_data = self .api_request (request = "repos/" + self .repository_name + "/issues/" + str (pr_number )
125
+ + "/comments" ,
126
126
page_number = page_number )
127
127
128
128
comments_data = api_data ["json_data" ]
@@ -150,8 +150,8 @@ def get_artifact_download_url_for_sha(self, pr_user_login, pr_head_ref, pr_head_
150
150
page_count = 1
151
151
while page_number <= page_count :
152
152
api_data = self .api_request (request = "repos/" + self .repository_name + "/actions/runs" ,
153
- request_parameters = "actor=" + pr_user_login + "&branch=" + pr_head_ref +
154
- "&event=pull_request&status=completed" ,
153
+ request_parameters = "actor=" + pr_user_login + "&branch=" + pr_head_ref
154
+ + "&event=pull_request&status=completed" ,
155
155
page_number = page_number )
156
156
runs_data = api_data ["json_data" ]
157
157
@@ -179,8 +179,8 @@ def get_artifact_download_url_for_run(self, run_id):
179
179
page_number = 1
180
180
page_count = 1
181
181
while page_number <= page_count :
182
- api_data = self .api_request (request = "repos/" + self .repository_name + "/actions/runs/" +
183
- str (run_id ) + "/artifacts" ,
182
+ api_data = self .api_request (request = "repos/" + self .repository_name + "/actions/runs/"
183
+ + str (run_id ) + "/artifacts" ,
184
184
page_number = page_number )
185
185
artifacts_data = api_data ["json_data" ]
186
186
@@ -230,19 +230,19 @@ def generate_report(self, artifact_folder_object, pr_head_sha, pr_number):
230
230
artifact_folder_object -- object containing the data about the temporary folder that stores the markdown files
231
231
"""
232
232
with artifact_folder_object as artifact_folder :
233
- report_markdown = (self .report_key_beginning + pr_head_sha + "]" +
234
- "(https://github.com/" + self .repository_name + "/pull/" + str (pr_number ) +
235
- "/commits/" + pr_head_sha + ")**\n \n " )
233
+ report_markdown = (self .report_key_beginning + pr_head_sha + "]"
234
+ + "(https://github.com/" + self .repository_name + "/pull/" + str (pr_number )
235
+ + "/commits/" + pr_head_sha + ")**\n \n " )
236
236
report_markdown = report_markdown + "FQBN | Flash Usage | RAM For Global Variables\n ---|---|---"
237
237
reports_data = []
238
238
for report_filename in sorted (os .listdir (path = artifact_folder )):
239
239
with open (file = artifact_folder + "/" + report_filename ) as report_file :
240
240
report_data = json .load (report_file )
241
241
reports_data = reports_data + [report_data ]
242
- report_markdown = (report_markdown + "\n " +
243
- report_data ["fqbn" ] +
244
- generate_value_cell (report_data ["flash_delta" ]) +
245
- generate_value_cell (report_data ["ram_delta" ]))
242
+ report_markdown = (report_markdown + "\n "
243
+ + report_data ["fqbn" ]
244
+ + generate_value_cell (report_data ["flash_delta" ])
245
+ + generate_value_cell (report_data ["ram_delta" ]))
246
246
247
247
logger .debug ("Report:\n " + report_markdown )
248
248
return {"markdown" : report_markdown , "data" : reports_data }
@@ -257,11 +257,11 @@ def comment_report(self, pr_number, report_markdown):
257
257
report_data = {"body" : report_markdown }
258
258
report_data = json .dumps (obj = report_data )
259
259
report_data = report_data .encode (encoding = "utf-8" )
260
- url = ("https://api.github.com/repos/" +
261
- self .repository_name +
262
- "/issues/" +
263
- str (pr_number ) +
264
- "/comments" )
260
+ url = ("https://api.github.com/repos/"
261
+ + self .repository_name
262
+ + "/issues/"
263
+ + str (pr_number )
264
+ + "/comments" )
265
265
266
266
self .http_request (url = url , data = report_data )
267
267
@@ -278,8 +278,8 @@ def api_request(self, request, request_parameters="", page_number=1):
278
278
page_number -- Some responses will be paginated. This argument specifies which page should be returned.
279
279
(default value: 1)
280
280
"""
281
- return self .get_json_response (url = "https://api.github.com/" + request + "?" + request_parameters + "&page=" +
282
- str (page_number ) + "&per_page=100" )
281
+ return self .get_json_response (url = "https://api.github.com/" + request + "?" + request_parameters + "&page="
282
+ + str (page_number ) + "&per_page=100" )
283
283
284
284
def get_json_response (self , url ):
285
285
"""Load the specified URL and return a dictionary:
@@ -306,21 +306,11 @@ def get_json_response(self, url):
306
306
page_count = 0
307
307
additional_pages = False
308
308
else :
309
- page_count = 1
310
- additional_pages = False
311
-
312
- if response_data ["headers" ]["Link" ] is not None :
313
- # Get the pagination data
314
- if response_data ["headers" ]["Link" ].find (">; rel=\" next\" " ) != - 1 :
315
- additional_pages = True
316
- for link in response_data ["headers" ]["Link" ].split ("," ):
317
- if link [- 13 :] == ">; rel=\" last\" " :
318
- link = re .split ("[?&>]" , link )
319
- for parameter in link :
320
- if parameter [:5 ] == "page=" :
321
- page_count = int (parameter .split ("=" )[1 ])
322
- break
323
- break
309
+ page_count = get_page_count (link_header = response_data ["headers" ]["Link" ])
310
+ if page_count > 1 :
311
+ additional_pages = True
312
+ else :
313
+ additional_pages = False
324
314
325
315
return {"json_data" : json_data , "additional_pages" : additional_pages , "page_count" : page_count }
326
316
except Exception as exception :
@@ -443,6 +433,26 @@ def determine_urlopen_retry(exception):
443
433
return False
444
434
445
435
436
+ def get_page_count (link_header ):
437
+ """Return the number of pages of the API response
438
+
439
+ Keyword arguments:
440
+ link_header -- Link header of the HTTP response
441
+ """
442
+ page_count = 1
443
+ if link_header is not None :
444
+ # Get the pagination data
445
+ for link in link_header .split ("," ):
446
+ if link [- 13 :] == ">; rel=\" last\" " :
447
+ link = re .split ("[?&>]" , link )
448
+ for parameter in link :
449
+ if parameter [:5 ] == "page=" :
450
+ page_count = int (parameter .split ("=" )[1 ])
451
+ break
452
+ break
453
+ return page_count
454
+
455
+
446
456
def generate_value_cell (value ):
447
457
"""Return the Markdown formatted text for a memory change data cell in the report table
448
458
0 commit comments