Skip to content

Commit e00976f

Browse files
tooling: Correct Pyright new warnings (#889)
Fix all reportPrivateUsage and reportMissingParameterType and more.
1 parent 8d336e3 commit e00976f

13 files changed

Lines changed: 180 additions & 133 deletions

File tree

tooling/docs/_tooling/extensions/score_draw_uml_funcs/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,10 @@
2727

2828
import hashlib
2929
import time
30+
from collections.abc import Callable
3031
from functools import cache
3132
from pathlib import Path
32-
from typing import Any, Callable
33+
from typing import Any
3334

3435
from sphinx.application import Sphinx
3536
from sphinx_needs.logging import get_logger

tooling/docs/_tooling/extensions/score_header_service/header_service.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import re
1717
import subprocess
1818
from collections import defaultdict
19-
from typing import Any
19+
from typing import Any, ClassVar
2020

2121
from github import (
2222
Auth,
@@ -49,7 +49,7 @@
4949
# }
5050

5151

52-
def register(app: Sphinx, env: BuildEnvironment, _: str) -> None:
52+
def register(app: Sphinx, env: BuildEnvironment, _: str | None) -> None:
5353
"""Register the HeaderService with the Sphinx application environment.
5454
5555
:param app: The Sphinx application instance.
@@ -72,13 +72,13 @@ def generate_hash() -> str:
7272

7373

7474
class HeaderService(BaseService):
75-
options: dict[str, str, str | int | float | bool] = {}
75+
options = {}
7676

7777
def __init__(
7878
self,
7979
app: Sphinx,
8080
name: str,
81-
config: dict[str, str | int | float | bool],
81+
config: dict[str, Any] | None,
8282
**kwargs: dict[str, Any],
8383
) -> None:
8484
"""Initialize the HeaderService.
@@ -162,7 +162,7 @@ def _extract_merge_commit_data(location: str) -> dict[str, str | list[str]]:
162162
for m in re.finditer(pattern, out, re.MULTILINE):
163163
data[m.group(1)].append(", ".join(m.group(2, 3)))
164164

165-
commit_data = {
165+
commit_data: dict[str, str | list[str]] = {
166166
"author": author,
167167
"approver": data.get("Approved", "N/A"),
168168
"reviewer": data.get("Reviewed", "N/A"),
@@ -182,8 +182,10 @@ def _extract_github_data() -> dict[str, str | list[str]]:
182182
"reviewers": "N/A",
183183
"hash": "N/A",
184184
}
185+
186+
github: Github | None = None
187+
185188
try:
186-
github: Github | None = None
187189
auth = Auth.Token(_extract_github_token())
188190
github = Github(auth=auth)
189191
org: Organization.Organization = github.get_organization(_extract_org())
@@ -261,7 +263,7 @@ def _extract_team_info(org: Organization.Organization) -> dict[str, list[str]]:
261263
:param org: The GitHub organization instance.
262264
:return: A dictionary containing the team information.
263265
"""
264-
team_info = {
266+
team_info: dict[str, list[str]] = {
265267
t.name: [m.login for m in org.get_team(t.id).get_members()]
266268
for t in org.get_teams()
267269
if t.name in APPROVER_TEAMS
@@ -278,7 +280,7 @@ def _append_approver_teams(
278280
:param team_info: The team information dictionary.
279281
:return: A list of approvers with their teams.
280282
"""
281-
approvers_with_teams = []
283+
approvers_with_teams: list[str] = []
282284

283285
for approver in approvers:
284286
teams = [name for name, members in team_info.items() if approver in members]

tooling/docs/_tooling/extensions/score_header_service/test/test_header_service.py

Lines changed: 50 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,15 @@
1111
# SPDX-License-Identifier: Apache-2.0
1212
# *******************************************************************************
1313
import os
14+
from collections.abc import Callable
1415
from unittest.mock import ANY, MagicMock, patch
15-
import score_header_service.header_service as hs
16+
1617
import pytest
18+
import score_header_service.header_service as hs
1719

1820

1921
@pytest.fixture(scope="session", autouse=True)
20-
def add_metadata(record_testsuite_property):
22+
def add_metadata(record_testsuite_property: Callable[[str, str | list[str]], None]):
2123
record_testsuite_property("Verifies", ["GD__automatic_document_header_generation"])
2224
record_testsuite_property(
2325
"Description", "It should check the generation of the header information."
@@ -44,7 +46,7 @@ def test_register():
4446

4547

4648
@patch("random.randint")
47-
def test_generate_hash(randint_mock):
49+
def test_generate_hash(randint_mock: MagicMock):
4850
randint_mock.return_value = 42
4951
assert hs.generate_hash() == "73475cb4"
5052

@@ -53,11 +55,13 @@ def test_generate_hash(randint_mock):
5355
@patch("score_header_service.header_service._extract_github_data")
5456
@patch("sphinx.application.Sphinx")
5557
def test_request_from_directive_github_data(
56-
mock_app, mock_extract_github_data, mock_generate_hash
58+
mock_app: MagicMock,
59+
mock_extract_github_data: MagicMock,
60+
mock_generate_hash: MagicMock,
5761
):
5862
github_data = {
5963
"author": "John Doe",
60-
"approvers": "apover_1",
64+
"approvers": "approver1",
6165
"reviewers": "reviewer_1",
6266
"hash": "abcdef",
6367
}
@@ -83,11 +87,13 @@ def test_request_from_directive_github_data(
8387
@patch("score_header_service.header_service._extract_merge_commit_data")
8488
@patch("sphinx.application.Sphinx")
8589
def test_request_from_directive_commit_data(
86-
mock_app, mock_extract_merge_commit_data, mock_generate_hash
90+
mock_app: MagicMock,
91+
mock_extract_merge_commit_data: MagicMock,
92+
mock_generate_hash: MagicMock,
8793
):
8894
github_data = {
8995
"author": "John Doe",
90-
"approvers": "apover_1",
96+
"approvers": "approver1",
9197
"reviewers": "reviewer_1",
9298
"hash": "abcdef",
9399
}
@@ -115,15 +121,15 @@ def test_request_from_directive_commit_data(
115121

116122
@patch("score_header_service.header_service.HeaderService.request_from_directive")
117123
@patch("sphinx.application.Sphinx")
118-
def test_debug(mock_app, mock_request_from_directive):
124+
def test_debug(mock_app: MagicMock, mock_request_from_directive: MagicMock):
119125
debug_data = [{"key": "value"}]
120126
mock_request_from_directive.return_value = debug_data
121127
header_service = hs.HeaderService(mock_app, "dummy-service", None)
122128
assert header_service.debug(None) == debug_data
123129

124130

125131
@patch("score_header_service.header_service.subprocess.run")
126-
def test_extract_merge_commit_data(run_mock):
132+
def test_extract_merge_commit_data(run_mock: MagicMock):
127133
lines = """abcdef
128134
John Doe
129135
Approved: {approver1} ( {approver1@mail.com} ) on {2024-11-1}
@@ -137,7 +143,8 @@ def test_extract_merge_commit_data(run_mock):
137143
result_mock.stdout.decode.return_value = lines
138144
run_mock.return_value = result_mock
139145

140-
assert hs._extract_merge_commit_data("/req/feature1") == {
146+
# private functions just used in test
147+
assert hs._extract_merge_commit_data("/req/feature1") == { # type: ignore
141148
"author": "John Doe",
142149
"approver": ["approver1, approver1@mail.com", "approver2, approver2@mail.com"],
143150
"reviewer": [
@@ -157,12 +164,12 @@ def test_extract_merge_commit_data(run_mock):
157164

158165

159166
@patch("score_header_service.header_service.subprocess.run")
160-
def test_extract_merge_commit_data_error(run_mock):
167+
def test_extract_merge_commit_data_error(run_mock: MagicMock):
161168
result_mock = MagicMock()
162169
result_mock.returncode = 1
163170
run_mock.return_value = result_mock
164171

165-
assert hs._extract_merge_commit_data("/req/feature1") == {
172+
assert hs._extract_merge_commit_data("/req/feature2") == { # type: ignore
166173
"author": "N/A",
167174
"approver": "N/A",
168175
"reviewer": "N/A",
@@ -180,15 +187,15 @@ def test_extract_merge_commit_data_error(run_mock):
180187
@patch("score_header_service.header_service.Auth.Token")
181188
@patch("score_header_service.header_service.Github")
182189
def test_extract_github_data(
183-
mock_github,
184-
mock_auth_token,
185-
mock_extract_github_token,
186-
mock_extract_pull_request,
187-
mock_extract_repo,
188-
mock_extract_org,
189-
mock_extract_team_info,
190-
mock_extract_reviewers,
191-
mock_extract_approvers,
190+
mock_github: MagicMock,
191+
mock_auth_token: MagicMock,
192+
mock_extract_github_token: MagicMock,
193+
mock_extract_pull_request: MagicMock,
194+
mock_extract_repo: MagicMock,
195+
mock_extract_org: MagicMock,
196+
mock_extract_team_info: MagicMock,
197+
mock_extract_reviewers: MagicMock,
198+
mock_extract_approvers: MagicMock,
192199
):
193200
mock_extract_github_token.return_value = "fake_token"
194201
mock_auth_token.return_value = "fake_token"
@@ -210,7 +217,7 @@ def test_extract_github_data(
210217
mock_extract_reviewers.return_value = "reviewer1; reviewer2"
211218
mock_extract_team_info.return_value = {"team1": "approver3"}
212219

213-
data = hs._extract_github_data()
220+
data = hs._extract_github_data() # type: ignore
214221
assert data == {
215222
"author": "author1",
216223
"approvers": "approver1",
@@ -220,9 +227,9 @@ def test_extract_github_data(
220227

221228

222229
@patch("score_header_service.header_service.Auth.Token")
223-
def test_extract_github_data_exception(mock_auth_token):
230+
def test_extract_github_data_exception(mock_auth_token: MagicMock):
224231
mock_auth_token.side_effect = Exception("Error")
225-
assert hs._extract_github_data() == {
232+
assert hs._extract_github_data() == { # type: ignore
226233
"author": "N/A",
227234
"approvers": "N/A",
228235
"reviewers": "N/A",
@@ -232,22 +239,22 @@ def test_extract_github_data_exception(mock_auth_token):
232239

233240
def test_extract_org():
234241
with patch.dict(os.environ, {"GITHUB_REPOSITORY": "org/repo"}):
235-
assert hs._extract_org() == "org"
242+
assert hs._extract_org() == "org" # type: ignore
236243

237244

238245
def test_extract_repo():
239246
with patch.dict(os.environ, {"GITHUB_REPOSITORY": "org/repo"}):
240-
assert hs._extract_repo() == "org/repo"
247+
assert hs._extract_repo() == "org/repo" # type: ignore
241248

242249

243250
def test_extract_github_token():
244251
with patch.dict(os.environ, {"GH_TOKEN": "fake_token"}):
245-
assert hs._extract_github_token() == "fake_token"
252+
assert hs._extract_github_token() == "fake_token" # type: ignore
246253

247254

248255
def test_extract_pull_request():
249256
with patch.dict(os.environ, {"GITHUB_REF_NAME": "123/merge"}):
250-
assert hs._extract_pull_request() == "123"
257+
assert hs._extract_pull_request() == "123" # type: ignore
251258

252259

253260
def test_extract_team_info():
@@ -268,13 +275,13 @@ def test_extract_team_info():
268275
mock_team1.get_members.return_value = [mock_member1, mock_member2]
269276
mock_org.get_teams.return_value = [mock_team1, mock_team2]
270277
mock_org.get_team.side_effect = lambda id: mock_team1 if id == 1 else mock_team2
271-
assert hs._extract_team_info(mock_org) == {
278+
assert hs._extract_team_info(mock_org) == { # type: ignore
272279
"automotive-score-committers": ["approver1", "approver3"]
273280
}
274281

275282

276283
@patch("score_header_service.header_service._append_approver_teams")
277-
def test_extract_appprovers(mock_append_approver_teams):
284+
def test_extract_approvers(mock_append_approver_teams: MagicMock):
278285
mock_review1 = MagicMock()
279286
mock_review2 = MagicMock()
280287
mock_review3 = MagicMock()
@@ -285,19 +292,20 @@ def test_extract_appprovers(mock_append_approver_teams):
285292
mock_review2.user.login = "approver2"
286293
mock_review3.user.login = "approver3"
287294
mock_append_approver_teams.return_value = ["approver1", "approver2"]
288-
assert (
289-
hs._extract_approvers(
290-
[mock_review1, mock_review2, mock_review3],
291-
{"team1": ["approver1", "approver2"]},
292-
)
293-
== "approver1; approver2"
295+
mock_paginated_list = MagicMock()
296+
mock_paginated_list.__iter__.return_value = iter(
297+
[mock_review1, mock_review2, mock_review3]
298+
)
299+
result = hs._extract_approvers( # type: ignore
300+
mock_paginated_list, {"team1": ["approver1", "approver2"]}
294301
)
302+
assert result == "approver1; approver2"
295303

296304

297305
def test_append_approver_teams():
298306
approvers = ["approver1", "approver2"]
299307
team_info = {"team1": ["approver1"]}
300-
assert hs._append_approver_teams(approvers, team_info) == [
308+
assert hs._append_approver_teams(approvers, team_info) == [ # type: ignore
301309
"approver1 (team1)",
302310
"approver2",
303311
]
@@ -313,7 +321,9 @@ def test_extract_reviewers():
313321
mock_review1.user.login = "reviewer1"
314322
mock_review2.user.login = "reviewer2"
315323
mock_review3.user.login = "reviewer3"
316-
assert (
317-
hs._extract_reviewers([mock_review1, mock_review2, mock_review3], "author1")
318-
== "reviewer1; reviewer3"
324+
mock_paginated_list = MagicMock()
325+
mock_paginated_list.__iter__.return_value = iter(
326+
[mock_review1, mock_review2, mock_review3]
319327
)
328+
result = hs._extract_reviewers(mock_paginated_list, "author1") # type: ignore
329+
assert result == "reviewer1; reviewer3"

0 commit comments

Comments
 (0)