Skip to content

Commit 85ab6a2

Browse files
committed
Bring Python code into compliance with Black formatting style
With the exception of increasing the maximum line length from the antiquated default value, the default style of the Black code formatter tool is used as standard in Arduino tooling projects.
1 parent 0a3b1ae commit 85ab6a2

File tree

2 files changed

+369
-421
lines changed

2 files changed

+369
-421
lines changed

reportsizedeltas/reportsizedeltas.py

Lines changed: 92 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,17 @@ def main() -> None:
2121
set_verbosity(enable_verbosity=False)
2222

2323
if "INPUT_SIZE-DELTAS-REPORTS-ARTIFACT-NAME" in os.environ:
24-
print("::warning::The size-deltas-report-artifact-name input is deprecated. Use the equivalent input: "
25-
"sketches-reports-source instead.")
24+
print(
25+
"::warning::The size-deltas-report-artifact-name input is deprecated. Use the equivalent input: "
26+
"sketches-reports-source instead."
27+
)
2628
os.environ["INPUT_SKETCHES-REPORTS-SOURCE"] = os.environ["INPUT_SIZE-DELTAS-REPORTS-ARTIFACT-NAME"]
2729

28-
report_size_deltas = ReportSizeDeltas(repository_name=os.environ["GITHUB_REPOSITORY"],
29-
sketches_reports_source=os.environ["INPUT_SKETCHES-REPORTS-SOURCE"],
30-
token=os.environ["INPUT_GITHUB-TOKEN"])
30+
report_size_deltas = ReportSizeDeltas(
31+
repository_name=os.environ["GITHUB_REPOSITORY"],
32+
sketches_reports_source=os.environ["INPUT_SKETCHES-REPORTS-SOURCE"],
33+
token=os.environ["INPUT_GITHUB-TOKEN"],
34+
)
3135

3236
report_size_deltas.report_size_deltas()
3337

@@ -59,11 +63,13 @@ class ReportSizeDeltas:
5963
artifact_name -- name of the workflow artifact that contains the memory usage data
6064
token -- GitHub access token
6165
"""
66+
6267
report_key_beginning = "**Memory usage change @ "
6368
not_applicable_indicator = "N/A"
6469

6570
class ReportKeys:
6671
"""Key names used in the sketches report dictionary."""
72+
6773
boards = "boards"
6874
board = "board"
6975
commit_hash = "commit_hash"
@@ -115,8 +121,7 @@ def report_size_deltas_from_workflow_artifacts(self) -> None:
115121
page_number = 1
116122
page_count = 1
117123
while page_number <= page_count:
118-
api_data = self.api_request(request="repos/" + self.repository_name + "/pulls",
119-
page_number=page_number)
124+
api_data = self.api_request(request="repos/" + self.repository_name + "/pulls", page_number=page_number)
120125
prs_data = api_data["json_data"]
121126
for pr_data in prs_data:
122127
# Note: closed PRs are not listed in the API response
@@ -130,16 +135,14 @@ def report_size_deltas_from_workflow_artifacts(self) -> None:
130135
print("::debug::PR locked, skipping")
131136
continue
132137

133-
if self.report_exists(pr_number=pr_number,
134-
pr_head_sha=pr_head_sha):
138+
if self.report_exists(pr_number=pr_number, pr_head_sha=pr_head_sha):
135139
# Go on to the next PR
136140
print("::debug::Report already exists")
137141
continue
138142

139143
artifact_download_url = self.get_artifact_download_url_for_sha(
140-
pr_user_login=pr_data["user"]["login"],
141-
pr_head_ref=pr_data["head"]["ref"],
142-
pr_head_sha=pr_head_sha)
144+
pr_user_login=pr_data["user"]["login"], pr_head_ref=pr_data["head"]["ref"], pr_head_sha=pr_head_sha
145+
)
143146
if artifact_download_url is None:
144147
# Go on to the next PR
145148
print("::debug::No sketches report artifact found")
@@ -175,9 +178,10 @@ def report_exists(self, pr_number: int, pr_head_sha: str) -> bool:
175178
page_number = 1
176179
page_count = 1
177180
while page_number <= page_count:
178-
api_data = self.api_request(request="repos/" + self.repository_name + "/issues/" + str(pr_number)
179-
+ "/comments",
180-
page_number=page_number)
181+
api_data = self.api_request(
182+
request="repos/" + self.repository_name + "/issues/" + str(pr_number) + "/comments",
183+
page_number=page_number,
184+
)
181185

182186
comments_data = api_data["json_data"]
183187
for comment_data in comments_data:
@@ -203,10 +207,15 @@ def get_artifact_download_url_for_sha(self, pr_user_login: str, pr_head_ref: str
203207
page_number = 1
204208
page_count = 1
205209
while page_number <= page_count:
206-
api_data = self.api_request(request="repos/" + self.repository_name + "/actions/runs",
207-
request_parameters="actor=" + pr_user_login + "&branch=" + pr_head_ref
208-
+ "&event=pull_request&status=completed",
209-
page_number=page_number)
210+
api_data = self.api_request(
211+
request="repos/" + self.repository_name + "/actions/runs",
212+
request_parameters="actor="
213+
+ pr_user_login
214+
+ "&branch="
215+
+ pr_head_ref
216+
+ "&event=pull_request&status=completed",
217+
page_number=page_number,
218+
)
210219
runs_data = api_data["json_data"]
211220

212221
# Find the runs with the head SHA of the PR (there may be multiple runs)
@@ -233,9 +242,10 @@ def get_artifact_download_url_for_run(self, run_id: str) -> str | None:
233242
page_number = 1
234243
page_count = 1
235244
while page_number <= page_count:
236-
api_data = self.api_request(request="repos/" + self.repository_name + "/actions/runs/"
237-
+ str(run_id) + "/artifacts",
238-
page_number=page_number)
245+
api_data = self.api_request(
246+
request="repos/" + self.repository_name + "/actions/runs/" + str(run_id) + "/artifacts",
247+
page_number=page_number,
248+
)
239249
artifacts_data = api_data["json_data"]
240250

241251
for artifact_data in artifacts_data["artifacts"]:
@@ -259,8 +269,9 @@ def get_artifact(self, artifact_download_url: str):
259269
artifact_folder_object = tempfile.TemporaryDirectory(prefix="reportsizedeltas-")
260270
try:
261271
# Download artifact
262-
with open(file=artifact_folder_object.name + "/" + self.sketches_reports_source + ".zip",
263-
mode="wb") as out_file:
272+
with open(
273+
file=artifact_folder_object.name + "/" + self.sketches_reports_source + ".zip", mode="wb"
274+
) as out_file:
264275
with self.raw_http_request(url=artifact_download_url) as fp:
265276
out_file.write(fp.read())
266277

@@ -292,10 +303,11 @@ def get_sketches_reports(self, artifact_folder_object):
292303
report_data = json.load(report_file)
293304
if (
294305
(self.ReportKeys.boards not in report_data)
295-
or (self.ReportKeys.sizes
296-
not in report_data[self.ReportKeys.boards][0])
297-
or (self.ReportKeys.maximum
298-
not in report_data[self.ReportKeys.boards][0][self.ReportKeys.sizes][0])
306+
or (self.ReportKeys.sizes not in report_data[self.ReportKeys.boards][0])
307+
or (
308+
self.ReportKeys.maximum
309+
not in report_data[self.ReportKeys.boards][0][self.ReportKeys.sizes][0]
310+
)
299311
):
300312
# Sketches reports use an old format, skip
301313
print("Old format sketches report found, skipping")
@@ -308,8 +320,10 @@ def get_sketches_reports(self, artifact_folder_object):
308320
break
309321

310322
if not sketches_reports:
311-
print("No size deltas data found in workflow artifact for this PR. The compile-examples action's "
312-
"enable-size-deltas-report input must be set to true to produce size deltas data.")
323+
print(
324+
"No size deltas data found in workflow artifact for this PR. The compile-examples action's "
325+
"enable-size-deltas-report input must be set to true to produce size deltas data."
326+
)
313327

314328
return sketches_reports
315329

@@ -345,24 +359,23 @@ def generate_report(self, sketches_reports) -> str:
345359
report_markdown = report_markdown + generate_markdown_table(row_list=summary_report_data) + "\n"
346360

347361
# Add full table
348-
report_markdown_with_table = (report_markdown
349-
+ "<details>\n"
350-
"<summary>Click for full report table</summary>\n\n")
351-
report_markdown_with_table = (report_markdown_with_table
352-
+ generate_markdown_table(row_list=full_report_data)
353-
+ "\n</details>\n\n")
362+
report_markdown_with_table = (
363+
report_markdown + "<details>\n" "<summary>Click for full report table</summary>\n\n"
364+
)
365+
report_markdown_with_table = (
366+
report_markdown_with_table + generate_markdown_table(row_list=full_report_data) + "\n</details>\n\n"
367+
)
354368

355369
if len(report_markdown_with_table) < maximum_report_length:
356370
report_markdown = report_markdown_with_table
357371

358372
# Add full CSV
359-
report_markdown_with_csv = (report_markdown
360-
+ "<details>\n"
361-
"<summary>Click for full report CSV</summary>\n\n"
362-
"```\n")
363-
report_markdown_with_csv = (report_markdown_with_csv
364-
+ generate_csv_table(row_list=full_report_data)
365-
+ "```\n</details>")
373+
report_markdown_with_csv = (
374+
report_markdown + "<details>\n" "<summary>Click for full report CSV</summary>\n\n" "```\n"
375+
)
376+
report_markdown_with_csv = (
377+
report_markdown_with_csv + generate_csv_table(row_list=full_report_data) + "```\n</details>"
378+
)
366379

367380
if len(report_markdown_with_csv) < maximum_report_length:
368381
report_markdown = report_markdown_with_csv
@@ -386,51 +399,32 @@ def add_summary_report_row(self, report_data, fqbn_data) -> None:
386399
# Populate the row with data
387400
for size_data in fqbn_data[self.ReportKeys.sizes]:
388401
# Determine column number for this memory type
389-
column_number = get_report_column_number(
390-
report=report_data,
391-
column_heading=size_data[self.ReportKeys.name]
392-
)
402+
column_number = get_report_column_number(report=report_data, column_heading=size_data[self.ReportKeys.name])
393403

394404
# Add the memory data to the cell
395405
if self.ReportKeys.delta in size_data:
396406
# Absolute data
397-
report_data[row_number][column_number] = (
398-
self.get_summary_value(
399-
show_emoji=True,
400-
minimum=size_data[self.ReportKeys.delta][self.ReportKeys.absolute][
401-
self.ReportKeys.minimum],
402-
maximum=size_data[self.ReportKeys.delta][self.ReportKeys.absolute][
403-
self.ReportKeys.maximum]
404-
)
407+
report_data[row_number][column_number] = self.get_summary_value(
408+
show_emoji=True,
409+
minimum=size_data[self.ReportKeys.delta][self.ReportKeys.absolute][self.ReportKeys.minimum],
410+
maximum=size_data[self.ReportKeys.delta][self.ReportKeys.absolute][self.ReportKeys.maximum],
405411
)
406412

407413
# Relative data
408-
report_data[row_number][column_number + 1] = (
409-
self.get_summary_value(
410-
show_emoji=False,
411-
minimum=size_data[self.ReportKeys.delta][self.ReportKeys.relative][
412-
self.ReportKeys.minimum],
413-
maximum=size_data[self.ReportKeys.delta][self.ReportKeys.relative][
414-
self.ReportKeys.maximum]
415-
)
414+
report_data[row_number][column_number + 1] = self.get_summary_value(
415+
show_emoji=False,
416+
minimum=size_data[self.ReportKeys.delta][self.ReportKeys.relative][self.ReportKeys.minimum],
417+
maximum=size_data[self.ReportKeys.delta][self.ReportKeys.relative][self.ReportKeys.maximum],
416418
)
417419
else:
418420
# Absolute data
419-
report_data[row_number][column_number] = (
420-
self.get_summary_value(
421-
show_emoji=True,
422-
minimum=self.not_applicable_indicator,
423-
maximum=self.not_applicable_indicator
424-
)
421+
report_data[row_number][column_number] = self.get_summary_value(
422+
show_emoji=True, minimum=self.not_applicable_indicator, maximum=self.not_applicable_indicator
425423
)
426424

427425
# Relative data
428-
report_data[row_number][column_number + 1] = (
429-
self.get_summary_value(
430-
show_emoji=False,
431-
minimum=self.not_applicable_indicator,
432-
maximum=self.not_applicable_indicator
433-
)
426+
report_data[row_number][column_number + 1] = self.get_summary_value(
427+
show_emoji=False, minimum=self.not_applicable_indicator, maximum=self.not_applicable_indicator
434428
)
435429

436430
def add_detailed_report_row(self, report_data, fqbn_data) -> None:
@@ -454,23 +448,20 @@ def add_detailed_report_row(self, report_data, fqbn_data) -> None:
454448
report=report_data,
455449
column_heading=(
456450
"`{sketch_name}`<br>{size_name}".format(
457-
sketch_name=sketch[self.ReportKeys.name],
458-
size_name=size_data[self.ReportKeys.name]
451+
sketch_name=sketch[self.ReportKeys.name], size_name=size_data[self.ReportKeys.name]
459452
)
460-
)
453+
),
461454
)
462455

463456
# Add the memory data to the cell
464457
if self.ReportKeys.delta in size_data:
465458
# Absolute
466-
report_data[row_number][column_number] = (
467-
size_data[self.ReportKeys.delta][self.ReportKeys.absolute]
468-
)
459+
report_data[row_number][column_number] = size_data[self.ReportKeys.delta][self.ReportKeys.absolute]
469460

470461
# Relative
471-
report_data[row_number][column_number + 1] = (
472-
size_data[self.ReportKeys.delta][self.ReportKeys.relative]
473-
)
462+
report_data[row_number][column_number + 1] = size_data[self.ReportKeys.delta][
463+
self.ReportKeys.relative
464+
]
474465
else:
475466
# Absolute
476467
report_data[row_number][column_number] = self.not_applicable_indicator
@@ -528,11 +519,7 @@ def comment_report(self, pr_number: int, report_markdown: str) -> None:
528519
report_data = {"body": report_markdown}
529520
report_data = json.dumps(obj=report_data)
530521
report_data = report_data.encode(encoding="utf-8")
531-
url = ("https://api.github.com/repos/"
532-
+ self.repository_name
533-
+ "/issues/"
534-
+ str(pr_number)
535-
+ "/comments")
522+
url = "https://api.github.com/repos/" + self.repository_name + "/issues/" + str(pr_number) + "/comments"
536523

537524
self.http_request(url=url, data=report_data)
538525

@@ -549,8 +536,15 @@ def api_request(self, request: str, request_parameters: str = "", page_number: i
549536
page_number -- Some responses will be paginated. This argument specifies which page should be returned.
550537
(default value: 1)
551538
"""
552-
return self.get_json_response(url="https://api.github.com/" + request + "?" + request_parameters + "&page="
553-
+ str(page_number) + "&per_page=100")
539+
return self.get_json_response(
540+
url="https://api.github.com/"
541+
+ request
542+
+ "?"
543+
+ request_parameters
544+
+ "&page="
545+
+ str(page_number)
546+
+ "&per_page=100"
547+
)
554548

555549
def get_json_response(self, url: str):
556550
"""Load the specified URL and return a dictionary:
@@ -599,9 +593,11 @@ def http_request(self, url: str, data: str | None = None) -> dict[str]:
599593
(default value: None)
600594
"""
601595
with self.raw_http_request(url=url, data=data) as response_object:
602-
return {"body": response_object.read().decode(encoding="utf-8", errors="ignore"),
603-
"headers": response_object.info(),
604-
"url": response_object.geturl()}
596+
return {
597+
"body": response_object.read().decode(encoding="utf-8", errors="ignore"),
598+
"headers": response_object.info(),
599+
"url": response_object.geturl(),
600+
}
605601

606602
def raw_http_request(self, url: str, data: str | None = None):
607603
"""Make a request and return an object containing the response.
@@ -681,7 +677,7 @@ def determine_urlopen_retry(exception) -> bool:
681677
# urllib.error.URLError: <urlopen error [WinError 10061] No connection could be made because the target
682678
# machine actively refused it>
683679
"<urlopen error [WinError 10061] No connection could be made because the target machine actively refused "
684-
"it>"
680+
"it>",
685681
]
686682

687683
# Delay before retry (seconds)
@@ -713,7 +709,7 @@ def get_page_count(link_header: str | None) -> int:
713709
if link_header is not None:
714710
# Get the pagination data
715711
for link in link_header.split(","):
716-
if link[-13:] == ">; rel=\"last\"":
712+
if link[-13:] == '>; rel="last"':
717713
link = re.split("[?&>]", link)
718714
for parameter in link:
719715
if parameter[:5] == "page=":

0 commit comments

Comments
 (0)