def merge(self, commit_message=github.GithubObject.NotSet, commit_title=github.GithubObject.NotSet, merge_method=github.GithubObject.NotSet, sha=github.GithubObject.NotSet):
assert commit_message is github.GithubObject.NotSet or isinstance(commit_message, (str, unicode)), commit_message<EOL>assert commit_title is github.GithubObject.NotSet or isinstance(commit_title, (str, unicode)), commit_title<EOL>assert merge_method is github.GithubObject.NotSet or isinstance(merge_method, (str, unicode)), merge_method<EOL>assert sha is github.GithubObject.NotSet or isinstance(sha, (str, unicode)), sha<EOL>post_parameters = dict()<EOL>if commit_message is not github.GithubObject.NotSet:<EOL><INDENT>post_parameters["<STR_LIT>"] = commit_message<EOL><DEDENT>if commit_title is not github.GithubObject.NotSet:<EOL><INDENT>post_parameters["<STR_LIT>"] = commit_title<EOL><DEDENT>if merge_method is not github.GithubObject.NotSet:<EOL><INDENT>post_parameters["<STR_LIT>"] = merge_method<EOL><DEDENT>if sha is not github.GithubObject.NotSet:<EOL><INDENT>post_parameters["<STR_LIT>"] = sha<EOL><DEDENT>headers, data = self._requester.requestJsonAndCheck(<EOL>"<STR_LIT>",<EOL>self.url + "<STR_LIT>",<EOL>input=post_parameters<EOL>)<EOL>return github.PullRequestMergeStatus.PullRequestMergeStatus(self._requester, headers, data, completed=True)<EOL>
:calls: `PUT /repos/:owner/:repo/pulls/:number/merge <http://developer.github.com/v3/pulls>`_
:param commit_message: string
:rtype: :class:`github.PullRequestMergeStatus.PullRequestMergeStatus`