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 diff --git a/gitlab/v4/objects/merge_requests.py b/gitlab/v4/objects/merge_requests.py index edd7d0195..0493c5835 100644 --- a/gitlab/v4/objects/merge_requests.py +++ b/gitlab/v4/objects/merge_requests.py @@ -350,18 +350,15 @@ 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) - 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 +374,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)