def create_status(self, state, target_url=github.GithubObject.NotSet, description=github.GithubObject.NotSet, context=github.GithubObject.NotSet):
assert isinstance(state, (str, unicode)), state<EOL>assert target_url is github.GithubObject.NotSet or isinstance(target_url, (str, unicode)), target_url<EOL>assert description is github.GithubObject.NotSet or isinstance(description, (str, unicode)), description<EOL>assert context is github.GithubObject.NotSet or isinstance(context, (str, unicode)), context<EOL>post_parameters = {<EOL>"<STR_LIT:state>": state,<EOL>}<EOL>if target_url is not github.GithubObject.NotSet:<EOL><INDENT>post_parameters["<STR_LIT>"] = target_url<EOL><DEDENT>if description is not github.GithubObject.NotSet:<EOL><INDENT>post_parameters["<STR_LIT:description>"] = description<EOL><DEDENT>if context is not github.GithubObject.NotSet:<EOL><INDENT>post_parameters["<STR_LIT>"] = context<EOL><DEDENT>headers, data = self._requester.requestJsonAndCheck(<EOL>"<STR_LIT:POST>",<EOL>self._parentUrl(self._parentUrl(self.url)) + "<STR_LIT>" + self.sha,<EOL>input=post_parameters<EOL>)<EOL>return github.CommitStatus.CommitStatus(self._requester, headers, data, completed=True)<EOL>
:calls: `POST /repos/:owner/:repo/statuses/:sha <http://developer.github.com/v3/repos/statuses>`_
:param state: string
:param target_url: string
:param description: string
:param context: string
:rtype: :class:`github.CommitStatus.CommitStatus`