| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 4ab9e92 commit f9c0ad9
2 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -3,6 +3,11 @@ | |||
| 3 | 3 | https://docs.gitlab.com/ee/api/merge_requests.html | |
| 4 | 4 | https://docs.gitlab.com/ee/api/merge_request_approvals.html | |
| 5 | 5 | """ | |
| 6 | + from typing import Any, cast, Dict, Optional, TYPE_CHECKING, Union | ||
| 7 | + | ||
| 8 | + import requests | ||
| 9 | + | ||
| 10 | + import gitlab | ||
| 6 | 11 | from gitlab import cli | |
| 7 | 12 | from gitlab import exceptions as exc | |
| 8 | 13 | from gitlab import types | |
@@ -159,7 +164,9 @@ class ProjectMergeRequest( | |||
| 159 | 164 | ||
| 160 | 165 | @cli.register_custom_action("ProjectMergeRequest") | |
| 161 | 166 | @exc.on_http_error(exc.GitlabMROnBuildSuccessError) | |
| 162 | - def cancel_merge_when_pipeline_succeeds(self, **kwargs): | ||
| 167 | + def cancel_merge_when_pipeline_succeeds( | ||
| 168 | + self, **kwargs: Any | ||
| 169 | + ) -> "ProjectMergeRequest": | ||
| 163 | 170 | """Cancel merge when the pipeline succeeds. | |
| 164 | 171 | ||
| 165 | 172 | Args: | |
@@ -169,17 +176,23 @@ def cancel_merge_when_pipeline_succeeds(self, **kwargs): | |||
| 169 | 176 | GitlabAuthenticationError: If authentication is not correct | |
| 170 | 177 | GitlabMROnBuildSuccessError: If the server could not handle the | |
| 171 | 178 | request | |
| 179 | + | ||
| 180 | + Returns: | ||
| 181 | + ProjectMergeRequest | ||
| 172 | 182 | """ | |
| 173 | 183 | ||
| 174 | 184 | path = ( | |
| 175 | 185 | f"{self.manager.path}/{self.get_id()}/cancel_merge_when_pipeline_succeeds" | |
| 176 | 186 | ) | |
| 177 | 187 | server_data = self.manager.gitlab.http_put(path, **kwargs) | |
| 188 | + if TYPE_CHECKING: | ||
| 189 | + assert isinstance(server_data, dict) | ||
| 178 | 190 | self._update_attrs(server_data) | |
| 191 | + return ProjectMergeRequest(self.manager, server_data) | ||
| 179 | 192 | ||
| 180 | 193 | @cli.register_custom_action("ProjectMergeRequest") | |
| 181 | 194 | @exc.on_http_error(exc.GitlabListError) | |
| 182 | - def closes_issues(self, **kwargs): | ||
| 195 | + def closes_issues(self, **kwargs: Any) -> RESTObjectList: | ||
| 183 | 196 | """List issues that will close on merge." | |
| 184 | 197 | ||
| 185 | 198 | Args: | |
@@ -199,12 +212,14 @@ def closes_issues(self, **kwargs): | |||
| 199 | 212 | """ | |
| 200 | 213 | path = f"{self.manager.path}/{self.get_id()}/closes_issues" | |
| 201 | 214 | data_list = self.manager.gitlab.http_list(path, as_list=False, **kwargs) | |
| 215 | + if TYPE_CHECKING: | ||
| 216 | + assert isinstance(data_list, gitlab.GitlabList) | ||
| 202 | 217 | manager = ProjectIssueManager(self.manager.gitlab, parent=self.manager._parent) | |
| 203 | 218 | return RESTObjectList(manager, ProjectIssue, data_list) | |
| 204 | 219 | ||
| 205 | 220 | @cli.register_custom_action("ProjectMergeRequest") | |
| 206 | 221 | @exc.on_http_error(exc.GitlabListError) | |
| 207 | - def commits(self, **kwargs): | ||
| 222 | + def commits(self, **kwargs: Any) -> RESTObjectList: | ||
| 208 | 223 | """List the merge request commits. | |
| 209 | 224 | ||
| 210 | 225 | Args: | |
@@ -225,12 +240,14 @@ def commits(self, **kwargs): | |||
| 225 | 240 | ||
| 226 | 241 | path = f"{self.manager.path}/{self.get_id()}/commits" | |
| 227 | 242 | data_list = self.manager.gitlab.http_list(path, as_list=False, **kwargs) | |
| 243 | + if TYPE_CHECKING: | ||
| 244 | + assert isinstance(data_list, gitlab.GitlabList) | ||
| 228 | 245 | manager = ProjectCommitManager(self.manager.gitlab, parent=self.manager._parent) | |
| 229 | 246 | return RESTObjectList(manager, ProjectCommit, data_list) | |
| 230 | 247 | ||
| 231 | 248 | @cli.register_custom_action("ProjectMergeRequest") | |
| 232 | 249 | @exc.on_http_error(exc.GitlabListError) | |
| 233 | - def changes(self, **kwargs): | ||
| 250 | + def changes(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: | ||
| 234 | 251 | """List the merge request changes. | |
| 235 | 252 | ||
| 236 | 253 | Args: | |
@@ -248,7 +265,7 @@ def changes(self, **kwargs): | |||
| 248 | 265 | ||
| 249 | 266 | @cli.register_custom_action("ProjectMergeRequest", tuple(), ("sha",)) | |
| 250 | 267 | @exc.on_http_error(exc.GitlabMRApprovalError) | |
| 251 | - def approve(self, sha=None, **kwargs): | ||
| 268 | + def approve(self, sha: Optional[str] = None, **kwargs: Any) -> Dict[str, Any]: | ||
| 252 | 269 | """Approve the merge request. | |
| 253 | 270 | ||
| 254 | 271 | Args: | |
@@ -259,6 +276,9 @@ def approve(self, sha=None, **kwargs): | |||
| 259 | 276 | GitlabAuthenticationError: If authentication is not correct | |
| 260 | 277 | GitlabMRApprovalError: If the approval failed | |
| 261 | 278 | ||
| 279 | + Returns: | ||
| 280 | + A dict containing the result. | ||
| 281 | + | ||
| 262 | 282 | https://docs.gitlab.com/ee/api/merge_request_approvals.html#approve-merge-request | |
| 263 | 283 | """ | |
| 264 | 284 | path = f"{self.manager.path}/{self.get_id()}/approve" | |
@@ -267,11 +287,14 @@ def approve(self, sha=None, **kwargs): | |||
| 267 | 287 | data["sha"] = sha | |
| 268 | 288 | ||
| 269 | 289 | server_data = self.manager.gitlab.http_post(path, post_data=data, **kwargs) | |
| 290 | + if TYPE_CHECKING: | ||
| 291 | + assert isinstance(server_data, dict) | ||
| 270 | 292 | self._update_attrs(server_data) | |
| 293 | + return server_data | ||
| 271 | 294 | ||
| 272 | 295 | @cli.register_custom_action("ProjectMergeRequest") | |
| 273 | 296 | @exc.on_http_error(exc.GitlabMRApprovalError) | |
| 274 | - def unapprove(self, **kwargs): | ||
| 297 | + def unapprove(self, **kwargs: Any) -> None: | ||
| 275 | 298 | """Unapprove the merge request. | |
| 276 | 299 | ||
| 277 | 300 | Args: | |
@@ -284,14 +307,16 @@ def unapprove(self, **kwargs): | |||
| 284 | 307 | https://docs.gitlab.com/ee/api/merge_request_approvals.html#unapprove-merge-request | |
| 285 | 308 | """ | |
| 286 | 309 | path = f"{self.manager.path}/{self.get_id()}/unapprove" | |
| 287 | - data = {} | ||
| 310 | + data: Dict[str, Any] = {} | ||
| 288 | 311 | ||
| 289 | 312 | server_data = self.manager.gitlab.http_post(path, post_data=data, **kwargs) | |
| 313 | + if TYPE_CHECKING: | ||
| 314 | + assert isinstance(server_data, dict) | ||
| 290 | 315 | self._update_attrs(server_data) | |
| 291 | 316 | ||
| 292 | 317 | @cli.register_custom_action("ProjectMergeRequest") | |
| 293 | 318 | @exc.on_http_error(exc.GitlabMRRebaseError) | |
| 294 | - def rebase(self, **kwargs): | ||
| 319 | + def rebase(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: | ||
| 295 | 320 | """Attempt to rebase the source branch onto the target branch | |
| 296 | 321 | ||
| 297 | 322 | Args: | |
@@ -302,12 +327,12 @@ def rebase(self, **kwargs): | |||
| 302 | 327 | GitlabMRRebaseError: If rebasing failed | |
| 303 | 328 | """ | |
| 304 | 329 | path = f"{self.manager.path}/{self.get_id()}/rebase" | |
| 305 | - data = {} | ||
| 330 | + data: Dict[str, Any] = {} | ||
| 306 | 331 | return self.manager.gitlab.http_put(path, post_data=data, **kwargs) | |
| 307 | 332 | ||
| 308 | 333 | @cli.register_custom_action("ProjectMergeRequest") | |
| 309 | 334 | @exc.on_http_error(exc.GitlabGetError) | |
| 310 | - def merge_ref(self, **kwargs): | ||
| 335 | + def merge_ref(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: | ||
| 311 | 336 | """Attempt to merge changes between source and target branches into | |
| 312 | 337 | `refs/merge-requests/:iid/merge`. | |
| 313 | 338 | ||
@@ -332,15 +357,15 @@ def merge_ref(self, **kwargs): | |||
| 332 | 357 | @exc.on_http_error(exc.GitlabMRClosedError) | |
| 333 | 358 | def merge( | |
| 334 | 359 | self, | |
| 335 | - merge_commit_message=None, | ||
| 336 | - should_remove_source_branch=False, | ||
| 337 | - merge_when_pipeline_succeeds=False, | ||
| 338 | - **kwargs, | ||
| 339 | - ): | ||
| 360 | + merge_commit_message: Optional[str] = None, | ||
| 361 | + should_remove_source_branch: bool = False, | ||
| 362 | + merge_when_pipeline_succeeds: bool = False, | ||
| 363 | + **kwargs: Any, | ||
| 364 | + ) -> Dict[str, Any]: | ||
| 340 | 365 | """Accept the merge request. | |
| 341 | 366 | ||
| 342 | 367 | Args: | |
| 343 | - merge_commit_message (bool): Commit message | ||
| 368 | + merge_commit_message (str): Commit message | ||
| 344 | 369 | should_remove_source_branch (bool): If True, removes the source | |
| 345 | 370 | branch | |
| 346 | 371 | merge_when_pipeline_succeeds (bool): Wait for the build to succeed, | |
@@ -352,7 +377,7 @@ def merge( | |||
| 352 | 377 | GitlabMRClosedError: If the merge failed | |
| 353 | 378 | """ | |
| 354 | 379 | path = f"{self.manager.path}/{self.get_id()}/merge" | |
| 355 | - data = {} | ||
| 380 | + data: Dict[str, Any] = {} | ||
| 356 | 381 | if merge_commit_message: | |
| 357 | 382 | data["merge_commit_message"] = merge_commit_message | |
| 358 | 383 | if should_remove_source_branch is not None: | |
@@ -361,7 +386,10 @@ def merge( | |||
| 361 | 386 | data["merge_when_pipeline_succeeds"] = True | |
| 362 | 387 | ||
| 363 | 388 | server_data = self.manager.gitlab.http_put(path, post_data=data, **kwargs) | |
| 389 | + if TYPE_CHECKING: | ||
| 390 | + assert isinstance(server_data, dict) | ||
| 364 | 391 | self._update_attrs(server_data) | |
| 392 | + return server_data | ||
| 365 | 393 | ||
| 366 | 394 | ||
| 367 | 395 | class ProjectMergeRequestManager(CRUDMixin, RESTManager): | |
@@ -428,6 +456,11 @@ class ProjectMergeRequestManager(CRUDMixin, RESTManager): | |||
| 428 | 456 | "labels": types.ListAttribute, | |
| 429 | 457 | } | |
| 430 | 458 | ||
| 459 | + def get( | ||
| 460 | + self, id: Union[str, int], lazy: bool = False, **kwargs: Any | ||
| 461 | + ) -> ProjectMergeRequest: | ||
| 462 | + return cast(ProjectMergeRequest, super().get(id=id, lazy=lazy, **kwargs)) | ||
| 463 | + | ||
| 431 | 464 | ||
| 432 | 465 | class ProjectDeploymentMergeRequest(MergeRequest): | |
| 433 | 466 | pass | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -23,6 +23,7 @@ ignore_errors = true | |||
| 23 | 23 | ||
| 24 | 24 | [[tool.mypy.overrides]] # Overrides to negate above patterns | |
| 25 | 25 | module = [ | |
| 26 | + "gitlab.v4.objects.merge_requests", | ||
| 26 | 27 | "gitlab.v4.objects.projects", | |
| 27 | 28 | "gitlab.v4.objects.users" | |
| 28 | 29 | ] | |
| Back | FazBrowse Home | New Git URL |
0 commit comments