code: def merge(self, merge_commit_message=None,
                should_remove_source_branch=False,
                merge_when_pipeline_succeeds=False,
                **kwargs):
          
          path = '%s/%s/merge' % (self.manager.path, self.get_id())
          data = {}
          if merge_commit_message:
              data['merge_commit_message'] = merge_commit_message
          if should_remove_source_branch:
              data['should_remove_source_branch'] = True
          if merge_when_pipeline_succeeds:
              data['merge_when_pipeline_succeeds'] = True
  
          server_data = self.manager.gitlab.http_put(path, post_data=data,
                                                     **kwargs)
          self._update_attrs(server_data)
docs: Accept the merge request.
  
          Args:
              merge_commit_message (bool): Commit message
              should_remove_source_branch (bool): If True, removes the source
                                                  branch
              merge_when_pipeline_succeeds (bool): Wait for the build to succeed,
                                                   then merge
              **kwargs: Extra options to send to the server (e.g. sudo)
  
          Raises:
              GitlabAuthenticationError: If authentication is not correct
              GitlabMRClosedError: If the merge failed