Skip to content

Commit aa972d4

Browse files
chore: update type-hints return signature for GetWithoutIdMixin methods
Commit f0152dc removed situation where `get()` in a `GetWithoutIdMixin` based class could return `None` Update the type-hints to no longer return `Optional` AKA `None`
1 parent b2e6f3b commit aa972d4

12 files changed

+50
-66
lines changed

gitlab/mixins.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ class GetWithoutIdMixin(_RestManagerBase):
126126
@exc.on_http_error(exc.GitlabGetError)
127127
def get(
128128
self, id: Optional[Union[int, str]] = None, **kwargs: Any
129-
) -> Optional[base.RESTObject]:
129+
) -> base.RESTObject:
130130
"""Retrieve a single object.
131131
132132
Args:

gitlab/v4/objects/appearance.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -60,5 +60,5 @@ def update(
6060

6161
def get(
6262
self, id: Optional[Union[int, str]] = None, **kwargs: Any
63-
) -> Optional[ApplicationAppearance]:
64-
return cast(Optional[ApplicationAppearance], super().get(id=id, **kwargs))
63+
) -> ApplicationAppearance:
64+
return cast(ApplicationAppearance, super().get(id=id, **kwargs))

gitlab/v4/objects/export_import.py

+8-16
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,8 @@ class GroupExportManager(GetWithoutIdMixin, CreateMixin, RESTManager):
2424
_obj_cls = GroupExport
2525
_from_parent_attrs = {"group_id": "id"}
2626

27-
def get(
28-
self, id: Optional[Union[int, str]] = None, **kwargs: Any
29-
) -> Optional[GroupExport]:
30-
return cast(Optional[GroupExport], super().get(id=id, **kwargs))
27+
def get(self, id: Optional[Union[int, str]] = None, **kwargs: Any) -> GroupExport:
28+
return cast(GroupExport, super().get(id=id, **kwargs))
3129

3230

3331
class GroupImport(RESTObject):
@@ -39,10 +37,8 @@ class GroupImportManager(GetWithoutIdMixin, RESTManager):
3937
_obj_cls = GroupImport
4038
_from_parent_attrs = {"group_id": "id"}
4139

42-
def get(
43-
self, id: Optional[Union[int, str]] = None, **kwargs: Any
44-
) -> Optional[GroupImport]:
45-
return cast(Optional[GroupImport], super().get(id=id, **kwargs))
40+
def get(self, id: Optional[Union[int, str]] = None, **kwargs: Any) -> GroupImport:
41+
return cast(GroupImport, super().get(id=id, **kwargs))
4642

4743

4844
class ProjectExport(DownloadMixin, RefreshMixin, RESTObject):
@@ -55,10 +51,8 @@ class ProjectExportManager(GetWithoutIdMixin, CreateMixin, RESTManager):
5551
_from_parent_attrs = {"project_id": "id"}
5652
_create_attrs = RequiredOptional(optional=("description",))
5753

58-
def get(
59-
self, id: Optional[Union[int, str]] = None, **kwargs: Any
60-
) -> Optional[ProjectExport]:
61-
return cast(Optional[ProjectExport], super().get(id=id, **kwargs))
54+
def get(self, id: Optional[Union[int, str]] = None, **kwargs: Any) -> ProjectExport:
55+
return cast(ProjectExport, super().get(id=id, **kwargs))
6256

6357

6458
class ProjectImport(RefreshMixin, RESTObject):
@@ -70,7 +64,5 @@ class ProjectImportManager(GetWithoutIdMixin, RESTManager):
7064
_obj_cls = ProjectImport
7165
_from_parent_attrs = {"project_id": "id"}
7266

73-
def get(
74-
self, id: Optional[Union[int, str]] = None, **kwargs: Any
75-
) -> Optional[ProjectImport]:
76-
return cast(Optional[ProjectImport], super().get(id=id, **kwargs))
67+
def get(self, id: Optional[Union[int, str]] = None, **kwargs: Any) -> ProjectImport:
68+
return cast(ProjectImport, super().get(id=id, **kwargs))

gitlab/v4/objects/merge_request_approvals.py

+6-8
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ class ProjectApprovalManager(GetWithoutIdMixin, UpdateMixin, RESTManager):
4747

4848
def get(
4949
self, id: Optional[Union[int, str]] = None, **kwargs: Any
50-
) -> Optional[ProjectApproval]:
51-
return cast(Optional[ProjectApproval], super().get(id=id, **kwargs))
50+
) -> ProjectApproval:
51+
return cast(ProjectApproval, super().get(id=id, **kwargs))
5252

5353
@exc.on_http_error(exc.GitlabUpdateError)
5454
def set_approvers(
@@ -112,8 +112,8 @@ class ProjectMergeRequestApprovalManager(GetWithoutIdMixin, UpdateMixin, RESTMan
112112

113113
def get(
114114
self, id: Optional[Union[int, str]] = None, **kwargs: Any
115-
) -> Optional[ProjectMergeRequestApproval]:
116-
return cast(Optional[ProjectMergeRequestApproval], super().get(id=id, **kwargs))
115+
) -> ProjectMergeRequestApproval:
116+
return cast(ProjectMergeRequestApproval, super().get(id=id, **kwargs))
117117

118118
@exc.on_http_error(exc.GitlabUpdateError)
119119
def set_approvers(
@@ -254,7 +254,5 @@ class ProjectMergeRequestApprovalStateManager(GetWithoutIdMixin, RESTManager):
254254

255255
def get(
256256
self, id: Optional[Union[int, str]] = None, **kwargs: Any
257-
) -> Optional[ProjectMergeRequestApprovalState]:
258-
return cast(
259-
Optional[ProjectMergeRequestApprovalState], super().get(id=id, **kwargs)
260-
)
257+
) -> ProjectMergeRequestApprovalState:
258+
return cast(ProjectMergeRequestApprovalState, super().get(id=id, **kwargs))

gitlab/v4/objects/notification_settings.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ class NotificationSettingsManager(GetWithoutIdMixin, UpdateMixin, RESTManager):
4040

4141
def get(
4242
self, id: Optional[Union[int, str]] = None, **kwargs: Any
43-
) -> Optional[NotificationSettings]:
44-
return cast(Optional[NotificationSettings], super().get(id=id, **kwargs))
43+
) -> NotificationSettings:
44+
return cast(NotificationSettings, super().get(id=id, **kwargs))
4545

4646

4747
class GroupNotificationSettings(NotificationSettings):
@@ -55,8 +55,8 @@ class GroupNotificationSettingsManager(NotificationSettingsManager):
5555

5656
def get(
5757
self, id: Optional[Union[int, str]] = None, **kwargs: Any
58-
) -> Optional[GroupNotificationSettings]:
59-
return cast(Optional[GroupNotificationSettings], super().get(id=id, **kwargs))
58+
) -> GroupNotificationSettings:
59+
return cast(GroupNotificationSettings, super().get(id=id, **kwargs))
6060

6161

6262
class ProjectNotificationSettings(NotificationSettings):
@@ -70,5 +70,5 @@ class ProjectNotificationSettingsManager(NotificationSettingsManager):
7070

7171
def get(
7272
self, id: Optional[Union[int, str]] = None, **kwargs: Any
73-
) -> Optional[ProjectNotificationSettings]:
74-
return cast(Optional[ProjectNotificationSettings], super().get(id=id, **kwargs))
73+
) -> ProjectNotificationSettings:
74+
return cast(ProjectNotificationSettings, super().get(id=id, **kwargs))

gitlab/v4/objects/pipelines.py

+4-6
Original file line numberDiff line numberDiff line change
@@ -252,8 +252,8 @@ class ProjectPipelineTestReportManager(GetWithoutIdMixin, RESTManager):
252252

253253
def get(
254254
self, id: Optional[Union[int, str]] = None, **kwargs: Any
255-
) -> Optional[ProjectPipelineTestReport]:
256-
return cast(Optional[ProjectPipelineTestReport], super().get(id=id, **kwargs))
255+
) -> ProjectPipelineTestReport:
256+
return cast(ProjectPipelineTestReport, super().get(id=id, **kwargs))
257257

258258

259259
class ProjectPipelineTestReportSummary(RESTObject):
@@ -267,7 +267,5 @@ class ProjectPipelineTestReportSummaryManager(GetWithoutIdMixin, RESTManager):
267267

268268
def get(
269269
self, id: Optional[Union[int, str]] = None, **kwargs: Any
270-
) -> Optional[ProjectPipelineTestReportSummary]:
271-
return cast(
272-
Optional[ProjectPipelineTestReportSummary], super().get(id=id, **kwargs)
273-
)
270+
) -> ProjectPipelineTestReportSummary:
271+
return cast(ProjectPipelineTestReportSummary, super().get(id=id, **kwargs))

gitlab/v4/objects/projects.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1030,5 +1030,5 @@ class ProjectStorageManager(GetWithoutIdMixin, RESTManager):
10301030

10311031
def get(
10321032
self, id: Optional[Union[int, str]] = None, **kwargs: Any
1033-
) -> Optional[ProjectStorage]:
1034-
return cast(Optional[ProjectStorage], super().get(id=id, **kwargs))
1033+
) -> ProjectStorage:
1034+
return cast(ProjectStorage, super().get(id=id, **kwargs))

gitlab/v4/objects/push_rules.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -53,5 +53,5 @@ class ProjectPushRulesManager(
5353

5454
def get(
5555
self, id: Optional[Union[int, str]] = None, **kwargs: Any
56-
) -> Optional[ProjectPushRules]:
57-
return cast(Optional[ProjectPushRules], super().get(id=id, **kwargs))
56+
) -> ProjectPushRules:
57+
return cast(ProjectPushRules, super().get(id=id, **kwargs))

gitlab/v4/objects/settings.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -117,5 +117,5 @@ def update(
117117

118118
def get(
119119
self, id: Optional[Union[int, str]] = None, **kwargs: Any
120-
) -> Optional[ApplicationSettings]:
121-
return cast(Optional[ApplicationSettings], super().get(id=id, **kwargs))
120+
) -> ApplicationSettings:
121+
return cast(ApplicationSettings, super().get(id=id, **kwargs))

gitlab/v4/objects/statistics.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ class ProjectAdditionalStatisticsManager(GetWithoutIdMixin, RESTManager):
2626

2727
def get(
2828
self, id: Optional[Union[int, str]] = None, **kwargs: Any
29-
) -> Optional[ProjectAdditionalStatistics]:
30-
return cast(Optional[ProjectAdditionalStatistics], super().get(id=id, **kwargs))
29+
) -> ProjectAdditionalStatistics:
30+
return cast(ProjectAdditionalStatistics, super().get(id=id, **kwargs))
3131

3232

3333
class IssuesStatistics(RefreshMixin, RESTObject):
@@ -40,8 +40,8 @@ class IssuesStatisticsManager(GetWithoutIdMixin, RESTManager):
4040

4141
def get(
4242
self, id: Optional[Union[int, str]] = None, **kwargs: Any
43-
) -> Optional[IssuesStatistics]:
44-
return cast(Optional[IssuesStatistics], super().get(id=id, **kwargs))
43+
) -> IssuesStatistics:
44+
return cast(IssuesStatistics, super().get(id=id, **kwargs))
4545

4646

4747
class GroupIssuesStatistics(RefreshMixin, RESTObject):
@@ -55,8 +55,8 @@ class GroupIssuesStatisticsManager(GetWithoutIdMixin, RESTManager):
5555

5656
def get(
5757
self, id: Optional[Union[int, str]] = None, **kwargs: Any
58-
) -> Optional[GroupIssuesStatistics]:
59-
return cast(Optional[GroupIssuesStatistics], super().get(id=id, **kwargs))
58+
) -> GroupIssuesStatistics:
59+
return cast(GroupIssuesStatistics, super().get(id=id, **kwargs))
6060

6161

6262
class ProjectIssuesStatistics(RefreshMixin, RESTObject):
@@ -70,5 +70,5 @@ class ProjectIssuesStatisticsManager(GetWithoutIdMixin, RESTManager):
7070

7171
def get(
7272
self, id: Optional[Union[int, str]] = None, **kwargs: Any
73-
) -> Optional[ProjectIssuesStatistics]:
74-
return cast(Optional[ProjectIssuesStatistics], super().get(id=id, **kwargs))
73+
) -> ProjectIssuesStatistics:
74+
return cast(ProjectIssuesStatistics, super().get(id=id, **kwargs))

gitlab/v4/objects/users.py

+6-10
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,8 @@ class CurrentUserStatusManager(GetWithoutIdMixin, UpdateMixin, RESTManager):
122122

123123
def get(
124124
self, id: Optional[Union[int, str]] = None, **kwargs: Any
125-
) -> Optional[CurrentUserStatus]:
126-
return cast(Optional[CurrentUserStatus], super().get(id=id, **kwargs))
125+
) -> CurrentUserStatus:
126+
return cast(CurrentUserStatus, super().get(id=id, **kwargs))
127127

128128

129129
class CurrentUser(RESTObject):
@@ -140,10 +140,8 @@ class CurrentUserManager(GetWithoutIdMixin, RESTManager):
140140
_path = "/user"
141141
_obj_cls = CurrentUser
142142

143-
def get(
144-
self, id: Optional[Union[int, str]] = None, **kwargs: Any
145-
) -> Optional[CurrentUser]:
146-
return cast(Optional[CurrentUser], super().get(id=id, **kwargs))
143+
def get(self, id: Optional[Union[int, str]] = None, **kwargs: Any) -> CurrentUser:
144+
return cast(CurrentUser, super().get(id=id, **kwargs))
147145

148146

149147
class User(SaveMixin, ObjectDeleteMixin, RESTObject):
@@ -400,10 +398,8 @@ class UserStatusManager(GetWithoutIdMixin, RESTManager):
400398
_obj_cls = UserStatus
401399
_from_parent_attrs = {"user_id": "id"}
402400

403-
def get(
404-
self, id: Optional[Union[int, str]] = None, **kwargs: Any
405-
) -> Optional[UserStatus]:
406-
return cast(Optional[UserStatus], super().get(id=id, **kwargs))
401+
def get(self, id: Optional[Union[int, str]] = None, **kwargs: Any) -> UserStatus:
402+
return cast(UserStatus, super().get(id=id, **kwargs))
407403

408404

409405
class UserActivitiesManager(ListMixin, RESTManager):

tests/meta/test_ensure_type_hints.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ def get(
7272
GET_WITHOUT_ID_METHOD_TEMPLATE = """
7373
def get(
7474
self, id: Optional[Union[int, str]] = None, **kwargs: Any
75-
) -> Optional[{obj_cls.__name__}]:
76-
return cast(Optional[{obj_cls.__name__}], super().get(id=id, **kwargs))
75+
) -> {obj_cls.__name__}:
76+
return cast({obj_cls.__name__}, super().get(id=id, **kwargs))
7777
7878
You may also need to add the following imports:
7979
from typing import Any, cast, Optional, Union"
@@ -102,7 +102,7 @@ def test_check_get_without_id_function_type_hints(
102102
base_type=gitlab.mixins.GetWithoutIdMixin,
103103
class_info=class_info,
104104
method_template=GET_WITHOUT_ID_METHOD_TEMPLATE,
105-
optional_return=True,
105+
optional_return=False,
106106
)
107107

108108
def get_check_helper(

0 commit comments

Comments
 (0)