Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitf9c0ad9

Browse files
chore: add type-hints to gitlab/v4/objects/merge_requests.py
* Add type-hints to gitlab/v4/objects/merge_requests.py * Add return value to cancel_merge_when_pipeline_succeeds() function as GitLab docs show it returns a value. * Add return value to approve() function as GitLab docs show it returns a value. * Add 'get()' method so that type-checkers will understand that getting a project merge request is of type ProjectMergeRequest.
1 parent4ab9e92 commitf9c0ad9

File tree

2 files changed

+51
-17
lines changed

2 files changed

+51
-17
lines changed

‎gitlab/v4/objects/merge_requests.py

Lines changed: 50 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33
https://docs.gitlab.com/ee/api/merge_requests.html
44
https://docs.gitlab.com/ee/api/merge_request_approvals.html
55
"""
6+
fromtypingimportAny,cast,Dict,Optional,TYPE_CHECKING,Union
7+
8+
importrequests
9+
10+
importgitlab
611
fromgitlabimportcli
712
fromgitlabimportexceptionsasexc
813
fromgitlabimporttypes
@@ -159,7 +164,9 @@ class ProjectMergeRequest(
159164

160165
@cli.register_custom_action("ProjectMergeRequest")
161166
@exc.on_http_error(exc.GitlabMROnBuildSuccessError)
162-
defcancel_merge_when_pipeline_succeeds(self,**kwargs):
167+
defcancel_merge_when_pipeline_succeeds(
168+
self,**kwargs:Any
169+
)->"ProjectMergeRequest":
163170
"""Cancel merge when the pipeline succeeds.
164171
165172
Args:
@@ -169,17 +176,23 @@ def cancel_merge_when_pipeline_succeeds(self, **kwargs):
169176
GitlabAuthenticationError: If authentication is not correct
170177
GitlabMROnBuildSuccessError: If the server could not handle the
171178
request
179+
180+
Returns:
181+
ProjectMergeRequest
172182
"""
173183

174184
path= (
175185
f"{self.manager.path}/{self.get_id()}/cancel_merge_when_pipeline_succeeds"
176186
)
177187
server_data=self.manager.gitlab.http_put(path,**kwargs)
188+
ifTYPE_CHECKING:
189+
assertisinstance(server_data,dict)
178190
self._update_attrs(server_data)
191+
returnProjectMergeRequest(self.manager,server_data)
179192

180193
@cli.register_custom_action("ProjectMergeRequest")
181194
@exc.on_http_error(exc.GitlabListError)
182-
defcloses_issues(self,**kwargs):
195+
defcloses_issues(self,**kwargs:Any)->RESTObjectList:
183196
"""List issues that will close on merge."
184197
185198
Args:
@@ -199,12 +212,14 @@ def closes_issues(self, **kwargs):
199212
"""
200213
path=f"{self.manager.path}/{self.get_id()}/closes_issues"
201214
data_list=self.manager.gitlab.http_list(path,as_list=False,**kwargs)
215+
ifTYPE_CHECKING:
216+
assertisinstance(data_list,gitlab.GitlabList)
202217
manager=ProjectIssueManager(self.manager.gitlab,parent=self.manager._parent)
203218
returnRESTObjectList(manager,ProjectIssue,data_list)
204219

205220
@cli.register_custom_action("ProjectMergeRequest")
206221
@exc.on_http_error(exc.GitlabListError)
207-
defcommits(self,**kwargs):
222+
defcommits(self,**kwargs:Any)->RESTObjectList:
208223
"""List the merge request commits.
209224
210225
Args:
@@ -225,12 +240,14 @@ def commits(self, **kwargs):
225240

226241
path=f"{self.manager.path}/{self.get_id()}/commits"
227242
data_list=self.manager.gitlab.http_list(path,as_list=False,**kwargs)
243+
ifTYPE_CHECKING:
244+
assertisinstance(data_list,gitlab.GitlabList)
228245
manager=ProjectCommitManager(self.manager.gitlab,parent=self.manager._parent)
229246
returnRESTObjectList(manager,ProjectCommit,data_list)
230247

231248
@cli.register_custom_action("ProjectMergeRequest")
232249
@exc.on_http_error(exc.GitlabListError)
233-
defchanges(self,**kwargs):
250+
defchanges(self,**kwargs:Any)->Union[Dict[str,Any],requests.Response]:
234251
"""List the merge request changes.
235252
236253
Args:
@@ -248,7 +265,7 @@ def changes(self, **kwargs):
248265

249266
@cli.register_custom_action("ProjectMergeRequest",tuple(), ("sha",))
250267
@exc.on_http_error(exc.GitlabMRApprovalError)
251-
defapprove(self,sha=None,**kwargs):
268+
defapprove(self,sha:Optional[str]=None,**kwargs:Any)->Dict[str,Any]:
252269
"""Approve the merge request.
253270
254271
Args:
@@ -259,6 +276,9 @@ def approve(self, sha=None, **kwargs):
259276
GitlabAuthenticationError: If authentication is not correct
260277
GitlabMRApprovalError: If the approval failed
261278
279+
Returns:
280+
A dict containing the result.
281+
262282
https://docs.gitlab.com/ee/api/merge_request_approvals.html#approve-merge-request
263283
"""
264284
path=f"{self.manager.path}/{self.get_id()}/approve"
@@ -267,11 +287,14 @@ def approve(self, sha=None, **kwargs):
267287
data["sha"]=sha
268288

269289
server_data=self.manager.gitlab.http_post(path,post_data=data,**kwargs)
290+
ifTYPE_CHECKING:
291+
assertisinstance(server_data,dict)
270292
self._update_attrs(server_data)
293+
returnserver_data
271294

272295
@cli.register_custom_action("ProjectMergeRequest")
273296
@exc.on_http_error(exc.GitlabMRApprovalError)
274-
defunapprove(self,**kwargs):
297+
defunapprove(self,**kwargs:Any)->None:
275298
"""Unapprove the merge request.
276299
277300
Args:
@@ -284,14 +307,16 @@ def unapprove(self, **kwargs):
284307
https://docs.gitlab.com/ee/api/merge_request_approvals.html#unapprove-merge-request
285308
"""
286309
path=f"{self.manager.path}/{self.get_id()}/unapprove"
287-
data= {}
310+
data:Dict[str,Any]= {}
288311

289312
server_data=self.manager.gitlab.http_post(path,post_data=data,**kwargs)
313+
ifTYPE_CHECKING:
314+
assertisinstance(server_data,dict)
290315
self._update_attrs(server_data)
291316

292317
@cli.register_custom_action("ProjectMergeRequest")
293318
@exc.on_http_error(exc.GitlabMRRebaseError)
294-
defrebase(self,**kwargs):
319+
defrebase(self,**kwargs:Any)->Union[Dict[str,Any],requests.Response]:
295320
"""Attempt to rebase the source branch onto the target branch
296321
297322
Args:
@@ -302,12 +327,12 @@ def rebase(self, **kwargs):
302327
GitlabMRRebaseError: If rebasing failed
303328
"""
304329
path=f"{self.manager.path}/{self.get_id()}/rebase"
305-
data= {}
330+
data:Dict[str,Any]= {}
306331
returnself.manager.gitlab.http_put(path,post_data=data,**kwargs)
307332

308333
@cli.register_custom_action("ProjectMergeRequest")
309334
@exc.on_http_error(exc.GitlabGetError)
310-
defmerge_ref(self,**kwargs):
335+
defmerge_ref(self,**kwargs:Any)->Union[Dict[str,Any],requests.Response]:
311336
"""Attempt to merge changes between source and target branches into
312337
`refs/merge-requests/:iid/merge`.
313338
@@ -332,15 +357,15 @@ def merge_ref(self, **kwargs):
332357
@exc.on_http_error(exc.GitlabMRClosedError)
333358
defmerge(
334359
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]:
340365
"""Accept the merge request.
341366
342367
Args:
343-
merge_commit_message (bool): Commit message
368+
merge_commit_message (str): Commit message
344369
should_remove_source_branch (bool): If True, removes the source
345370
branch
346371
merge_when_pipeline_succeeds (bool): Wait for the build to succeed,
@@ -352,7 +377,7 @@ def merge(
352377
GitlabMRClosedError: If the merge failed
353378
"""
354379
path=f"{self.manager.path}/{self.get_id()}/merge"
355-
data= {}
380+
data:Dict[str,Any]= {}
356381
ifmerge_commit_message:
357382
data["merge_commit_message"]=merge_commit_message
358383
ifshould_remove_source_branchisnotNone:
@@ -361,7 +386,10 @@ def merge(
361386
data["merge_when_pipeline_succeeds"]=True
362387

363388
server_data=self.manager.gitlab.http_put(path,post_data=data,**kwargs)
389+
ifTYPE_CHECKING:
390+
assertisinstance(server_data,dict)
364391
self._update_attrs(server_data)
392+
returnserver_data
365393

366394

367395
classProjectMergeRequestManager(CRUDMixin,RESTManager):
@@ -428,6 +456,11 @@ class ProjectMergeRequestManager(CRUDMixin, RESTManager):
428456
"labels":types.ListAttribute,
429457
}
430458

459+
defget(
460+
self,id:Union[str,int],lazy:bool=False,**kwargs:Any
461+
)->ProjectMergeRequest:
462+
returncast(ProjectMergeRequest,super().get(id=id,lazy=lazy,**kwargs))
463+
431464

432465
classProjectDeploymentMergeRequest(MergeRequest):
433466
pass

‎pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ ignore_errors = true
2323

2424
[[tool.mypy.overrides]]# Overrides to negate above patterns
2525
module = [
26+
"gitlab.v4.objects.merge_requests",
2627
"gitlab.v4.objects.projects",
2728
"gitlab.v4.objects.users"
2829
]

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp