From 2a4493cfecb1696b42ecc235b097f8ae4080bd27 Mon Sep 17 00:00:00 2001 From: Nejc Habjan Date: Tue, 26 Apr 2022 22:37:38 +0200 Subject: [PATCH 1/3] chore(cli): expose custom arguments in current function --- gitlab/cli.py | 1 + 1 file changed, 1 insertion(+) diff --git a/gitlab/cli.py b/gitlab/cli.py index f06f49d94..35e580221 100644 --- a/gitlab/cli.py +++ b/gitlab/cli.py @@ -79,6 +79,7 @@ def wrapped_f(*args: Any, **kwargs: Any) -> Any: action = custom_action or f.__name__.replace("_", "-") custom_actions[final_name][action] = (mandatory, optional, in_obj) + wrapped_f._custom_args = mandatory + optional return cast(__F, wrapped_f) return wrap From c4bfbb4bd9c89d1cee9fdd2db2caef35a6b041c9 Mon Sep 17 00:00:00 2001 From: Nejc Habjan Date: Tue, 26 Apr 2022 22:39:03 +0200 Subject: [PATCH 2/3] refactor(merge_requests): collect payload arguments from custom action --- gitlab/v4/objects/merge_requests.py | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/gitlab/v4/objects/merge_requests.py b/gitlab/v4/objects/merge_requests.py index edd7d0195..b1c0029f1 100644 --- a/gitlab/v4/objects/merge_requests.py +++ b/gitlab/v4/objects/merge_requests.py @@ -355,13 +355,7 @@ def merge_ref(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: ), ) @exc.on_http_error(exc.GitlabMRClosedError) - def merge( - self, - merge_commit_message: Optional[str] = None, - should_remove_source_branch: Optional[bool] = None, - merge_when_pipeline_succeeds: Optional[bool] = None, - **kwargs: Any, - ) -> Dict[str, Any]: + def merge(self, **kwargs: Any) -> Dict[str, Any]: """Accept the merge request. Args: @@ -377,15 +371,14 @@ def merge( GitlabMRClosedError: If the merge failed """ path = f"{self.manager.path}/{self.encoded_id}/merge" - data: Dict[str, Any] = {} - if merge_commit_message: - data["merge_commit_message"] = merge_commit_message - if should_remove_source_branch is not None: - data["should_remove_source_branch"] = should_remove_source_branch - if merge_when_pipeline_succeeds is not None: - data["merge_when_pipeline_succeeds"] = merge_when_pipeline_succeeds - - server_data = self.manager.gitlab.http_put(path, post_data=data, **kwargs) + post_data: Dict[str, Any] = {} + data = kwargs.copy() + + for key in kwargs.keys(): + if key in self.merge._custom_args: + post_data[key] = data.pop(key) + + server_data = self.manager.gitlab.http_put(path, post_data=post_data, **data) if TYPE_CHECKING: assert isinstance(server_data, dict) self._update_attrs(server_data) From 08f23c3a20052f18ef8cb26bb23c49fe04dc07a7 Mon Sep 17 00:00:00 2001 From: Nejc Habjan Date: Wed, 27 Apr 2022 00:18:32 +0200 Subject: [PATCH 3/3] fix(merge_requests): add missing parameters for merge() --- gitlab/v4/objects/merge_requests.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gitlab/v4/objects/merge_requests.py b/gitlab/v4/objects/merge_requests.py index b1c0029f1..0493c5835 100644 --- a/gitlab/v4/objects/merge_requests.py +++ b/gitlab/v4/objects/merge_requests.py @@ -350,8 +350,11 @@ def merge_ref(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: (), ( "merge_commit_message", - "should_remove_source_branch", "merge_when_pipeline_succeeds", + "sha", + "should_remove_source_branch", + "squash_commit_message", + "squash", ), ) @exc.on_http_error(exc.GitlabMRClosedError)