Skip to content

Commit 1307a6b

Browse files
committed
MOre type hints
1 parent 86ead8c commit 1307a6b

File tree

14 files changed

+52
-47
lines changed

14 files changed

+52
-47
lines changed

sonar/applications.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ class Application(aggr.Aggregation):
7171
def __init__(self, endpoint: pf.Platform, key: str, name: str) -> None:
7272
"""Don't use this directly, go through the class methods to create Objects"""
7373
super().__init__(endpoint=endpoint, key=key)
74-
self._branches: Optional[dict] = None
75-
self._projects: Optional[dict] = None
74+
self._branches: Optional[dict[str, app_branches.ApplicationBranch]] = None
75+
self._projects: Optional[dict[str, str]] = None
7676
self._description: Optional[str] = None
7777
self.name = name
7878
log.debug("Created object %s with uuid %d id %x", str(self), hash(self), id(self))
@@ -90,7 +90,7 @@ def get_object(cls, endpoint: pf.Platform, key: str) -> Application:
9090
:rtype: Application
9191
"""
9292
check_supported(endpoint)
93-
o = Application.CACHE.get(key, endpoint.local_url)
93+
o: Application = Application.CACHE.get(key, endpoint.local_url)
9494
if o:
9595
return o
9696
data = json.loads(endpoint.get(Application.API[c.GET], params={"application": key}).text)["application"]
@@ -109,7 +109,7 @@ def load(cls, endpoint: pf.Platform, data: types.ApiPayload) -> Application:
109109
:rtype: Application
110110
"""
111111
check_supported(endpoint)
112-
o = Application.CACHE.get(data["key"], endpoint.local_url)
112+
o: Application = Application.CACHE.get(data["key"], endpoint.local_url)
113113
if not o:
114114
o = cls(endpoint, data["key"], data["name"])
115115
o.reload(data)
@@ -369,7 +369,7 @@ def add_projects(self, project_list: list[str]) -> bool:
369369
util.handle_error(e, f"adding project '{proj}' to {str(self)}", catch_http_statuses=(HTTPStatus.NOT_FOUND,))
370370
Application.CACHE.pop(self)
371371
ok = False
372-
self._projects: Optional[dict] = None
372+
self._projects = None
373373
self.projects()
374374
return ok
375375

sonar/audit/problem.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,9 @@ def to_json(self, with_url=False):
6161
return d
6262

6363

64-
def dump_report(problems: list[Problem], file: str, server_id: Optional[str] = None, format: str = "csv", with_url: bool = False, separator: str = ",") -> None:
64+
def dump_report(
65+
problems: list[Problem], file: str, server_id: Optional[str] = None, format: str = "csv", with_url: bool = False, separator: str = ","
66+
) -> None:
6567
"""Dumps to file a report about a list of problems
6668
6769
:param list[Problems] problems: List of problems to dump

sonar/findings.py

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535

3636
import sonar.utilities as util
3737
from sonar import projects, rules
38+
from sonar.changelog import Changelog
3839

3940
_JSON_FIELDS_REMAPPED = (("pull_request", "pullRequest"), ("_comments", "comments"))
4041

@@ -109,26 +110,26 @@ class Finding(sq.SqObject):
109110
def __init__(self, endpoint: pf.Platform, key: str, data: types.ApiPayload = None, from_export: bool = False) -> None:
110111
"""Constructor"""
111112
super().__init__(endpoint=endpoint, key=key)
112-
self.severity = None #: Severity (str)
113-
self.type = None #: Type (str): VULNERABILITY, BUG, CODE_SMELL or SECURITY_HOTSPOT
114-
self.impacts = None #: 10.x MQR mode
115-
self.author = None #: Author (str)
116-
self.assignee = None #: Assignee (str)
117-
self.status = None #: Status (str)
118-
self.resolution = None #: Resolution (str)
119-
self.rule = None #: Rule Id (str)
120-
self.projectKey = None #: Project key (str)
121-
self._changelog: Optional[dict] = None
122-
self._comments: Optional[dict] = None
113+
self.severity = None # BLOCKER, CRITICAL, MAJOR, MINOR, INFO
114+
self.type: Optional[str] = None # VULNERABILITY, BUG, CODE_SMELL or SECURITY_HOTSPOT
115+
self.impacts: Optional[dict[str, str]] = None #: 10.x MQR mode
116+
self.author: Optional[str] = None
117+
self.assignee: Optional[str] = None
118+
self.status: Optional[str] = None # OPEN, CONFIRMED, REOPENED, RESOLVED, CLOSED, ACCEPTED, FALSE_POSITIVE
119+
self.resolution: Optional[str] = None
120+
self.rule: Optional[str] = None
121+
self.projectKey: Optional[str] = None
122+
self._changelog: Optional[dict[str, Changelog]] = None
123+
self._comments: Optional[dict[str, dict[str, str]]] = None
123124
self.file: Optional[str] = None
124-
self.line = 0 #: Line (int)
125+
self.line: int = 0
125126
self.component: Optional[str] = None
126-
self.message = None #: Message
127-
self.creation_date = None #: Creation date (datetime)
128-
self.modification_date = None #: Last modification date (datetime)
129-
self.hash = None #: Hash (str)
130-
self.branch = None #: Branch (str)
131-
self.pull_request = None #: Pull request (str)
127+
self.message: Optional[str] = None #: Message
128+
self.creation_date: Optional[datetime] = None #: Creation date (datetime)
129+
self.modification_date: Optional[datetime] = None #: Last modification date (datetime)
130+
self.hash: Optional[str] = None #: Hash (str)
131+
self.branch: Optional[str] = None #: Branch (str)
132+
self.pull_request: Optional[str] = None #: Pull request (str)
132133
self._load(data, from_export)
133134

134135
def _load(self, data: types.ApiPayload, from_export: bool = False) -> None:

sonar/hotspots.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ def __init__(self, endpoint: pf.Platform, key: str, data: types.ApiPayload = Non
9595
"""Constructor"""
9696
super().__init__(endpoint=endpoint, key=key, data=data, from_export=from_export)
9797
self.type = "SECURITY_HOTSPOT"
98-
self.__details: Optional[dict] = None
98+
self.__details: types.ApiPayload = None
9999
Hotspot.CACHE.put(self)
100100
self.refresh()
101101

sonar/permissions/global_permissions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class GlobalPermissions(permissions.Permissions):
4141
def __init__(self, concerned_object: object) -> None:
4242
self.concerned_object = concerned_object
4343
self.endpoint = concerned_object
44-
self.permissions: Optional[dict] = None
44+
self.permissions: Optional[dict[str, str[str, str]]] = None
4545
self.read()
4646

4747
def __str__(self) -> str:

sonar/permissions/permission_templates.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,11 @@ class PermissionTemplate(sqobject.SqObject):
5353
def __init__(self, endpoint: pf.Platform, name: str, data: types.ApiPayload = None, create_data: types.ObjectJsonRepr = None) -> None:
5454
"""Constructor"""
5555
super().__init__(endpoint=endpoint, key=name)
56-
self.key: Optional[str] = None
57-
self.name = name
56+
self.key = None
57+
self.name: str = name
5858
self.description: Optional[str] = None
5959
self.project_key_pattern: Optional[str] = None
60-
self._permissions: Optional[dict] = None
60+
self._permissions: Optional[template_permissions.TemplatePermissions] = None
6161
if create_data is not None:
6262
log.info("Creating permission template '%s'", name)
6363
log.debug("from create_data %s", utilities.json_dump(create_data))
@@ -244,7 +244,7 @@ def search(endpoint: pf.Platform, params: types.ApiParams = None) -> dict[str, P
244244
return objects_list
245245

246246

247-
def search_by_name(endpoint: pf.Platform, name: str) -> PermissionTemplate:
247+
def search_by_name(endpoint: pf.Platform, name: str) -> types.ApiPayload:
248248
"""Searches permissions templates by name"""
249249
return utilities.search_by_name(endpoint=endpoint, name=name, api=_SEARCH_API, returned_field="permissionTemplates")
250250

sonar/permissions/permissions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ class Permissions(ABC):
7575
def __init__(self, concerned_object: object) -> None:
7676
self.concerned_object = concerned_object
7777
self.endpoint = concerned_object.endpoint
78-
self.permissions: Optional[dict] = None
78+
self.permissions: Optional[dict[str, dict[str, str]]] = None
7979
self.read()
8080

8181
def __str__(self) -> str:

sonar/platform.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,16 +78,16 @@ def __init__(
7878
self.external_url = self.local_url
7979
self.__token = token
8080
self.__cert_file = cert_file
81-
self.__user_data: Optional[dict] = None
81+
self.__user_data: types.ApiPayload = None
8282
self._version: Optional[tuple[int, ...]] = None
8383
self._sys_info: Optional[dict[str, Any]] = None
84-
self.__global_nav: Optional[dict] = None
84+
self.__global_nav: types.ApiPayload = None
8585
self._server_id: Optional[str] = None
8686
self._permissions: Optional[object] = None
8787
self.http_timeout = int(http_timeout)
8888
self.organization = org
8989
self._user_agent = _SONAR_TOOLS_AGENT
90-
self._global_settings_definitions: Optional[dict] = None
90+
self._global_settings_definitions: types.ApiPayload = None
9191

9292
def __str__(self) -> str:
9393
"""

sonar/projects.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -163,10 +163,10 @@ def __init__(self, endpoint: pf.Platform, key: str) -> None:
163163
self._last_analysis: Optional[datetime] = None
164164
self._branches_last_analysis: Optional[datetime] = None
165165
self._permissions: Optional[object] = None
166-
self._branches: Optional[dict] = None
167-
self._pull_requests: Optional[dict] = None
166+
self._branches: Optional[dict[str, branches.Branch]] = None
167+
self._pull_requests: Optional[dict[str, pull_requests.PullRequest]] = None
168168
self._ncloc_with_branches: Optional[int] = None
169-
self._binding: Optional[dict] = None
169+
self._binding: Optional[dict[str, str]] = None
170170
self._new_code: Optional[str] = None
171171
self._ci: Optional[str] = None
172172
self._revision: Optional[str] = None

sonar/qualitygates.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ def __init__(self, endpoint: pf.Platform, name: str, data: types.ApiPayload) ->
117117
log.debug("Loading %s with data %s", self, util.json_dump(data))
118118
self.is_built_in = False #: Whether the quality gate is built in
119119
self.is_default = False #: Whether the quality gate is the default
120-
self._conditions: Optional[dict] = None #: Quality gate conditions
120+
self._conditions: Optional[dict[str, str]] = None #: Quality gate conditions
121121
self._permissions: Optional[object] = None #: Quality gate permissions
122122
self._projects: Optional[dict[str, projects.Project]] = None #: Projects using this quality profile
123123
self.sq_json = data
@@ -263,7 +263,7 @@ def set_conditions(self, conditions_list: list[str]) -> bool:
263263
ok = ok and self.post("qualitygates/create_condition", params=params).ok
264264
except exceptions.SonarException:
265265
ok = False
266-
self._conditions: Optional[dict] = None
266+
self._conditions = None
267267
self.conditions()
268268
return ok
269269

0 commit comments

Comments
 (0)