Skip to content

Commit 9db71d7

Browse files
authored
Merge pull request #38 from per1234/lint-report-size-deltas
Lint the Python code of libraries/report-size-deltas during CI run
2 parents d1cc99c + 2fa4e39 commit 9db71d7

File tree

4 files changed

+123
-78
lines changed

4 files changed

+123
-78
lines changed

.flake8

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
[flake8]
2+
doctests = True
3+
# W503 and W504 are mutually exclusive. PEP 8 recommends line break before.
4+
ignore = W503
5+
max-complexity = 10
6+
max-line-length = 120
7+
select = E,W,F,C,N

.github/workflows/libraries_report-size-deltas.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@ jobs:
1515
with:
1616
python-version: '3.8.2'
1717

18+
- name: Lint with flake8
19+
run: |
20+
pip install --quiet flake8
21+
pip install --quiet pep8-naming
22+
flake8 --show-source "$GITHUB_WORKSPACE/libraries/report-size-deltas"
23+
1824
- name: Run Python unit tests
1925
run: |
2026
export PYTHONPATH="$GITHUB_WORKSPACE/libraries/report-size-deltas"

reportsizedeltas.py

Lines changed: 45 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,8 @@ def report_exists(self, pr_number, pr_head_sha):
121121
page_number = 1
122122
page_count = 1
123123
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",
126126
page_number=page_number)
127127

128128
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_
150150
page_count = 1
151151
while page_number <= page_count:
152152
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",
155155
page_number=page_number)
156156
runs_data = api_data["json_data"]
157157

@@ -179,8 +179,8 @@ def get_artifact_download_url_for_run(self, run_id):
179179
page_number = 1
180180
page_count = 1
181181
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",
184184
page_number=page_number)
185185
artifacts_data = api_data["json_data"]
186186

@@ -230,19 +230,19 @@ def generate_report(self, artifact_folder_object, pr_head_sha, pr_number):
230230
artifact_folder_object -- object containing the data about the temporary folder that stores the markdown files
231231
"""
232232
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")
236236
report_markdown = report_markdown + "FQBN | Flash Usage | RAM For Global Variables\n---|---|---"
237237
reports_data = []
238238
for report_filename in sorted(os.listdir(path=artifact_folder)):
239239
with open(file=artifact_folder + "/" + report_filename) as report_file:
240240
report_data = json.load(report_file)
241241
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"]))
246246

247247
logger.debug("Report:\n" + report_markdown)
248248
return {"markdown": report_markdown, "data": reports_data}
@@ -257,11 +257,11 @@ def comment_report(self, pr_number, report_markdown):
257257
report_data = {"body": report_markdown}
258258
report_data = json.dumps(obj=report_data)
259259
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")
265265

266266
self.http_request(url=url, data=report_data)
267267

@@ -278,8 +278,8 @@ def api_request(self, request, request_parameters="", page_number=1):
278278
page_number -- Some responses will be paginated. This argument specifies which page should be returned.
279279
(default value: 1)
280280
"""
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")
283283

284284
def get_json_response(self, url):
285285
"""Load the specified URL and return a dictionary:
@@ -306,21 +306,11 @@ def get_json_response(self, url):
306306
page_count = 0
307307
additional_pages = False
308308
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
324314

325315
return {"json_data": json_data, "additional_pages": additional_pages, "page_count": page_count}
326316
except Exception as exception:
@@ -443,6 +433,26 @@ def determine_urlopen_retry(exception):
443433
return False
444434

445435

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+
446456
def generate_value_cell(value):
447457
"""Return the Markdown formatted text for a memory change data cell in the report table
448458

0 commit comments

Comments
 (0)