':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`'

def create_status(self, state, target_url=github.GithubObject.NotSet, description=github.GithubObject.NotSet, context=github.GithubObject.NotSet):

    assert isinstance(state, (str, unicode)), state
    assert ((target_url is github.GithubObject.NotSet) or isinstance(target_url, (str, unicode))), target_url
    assert ((description is github.GithubObject.NotSet) or isinstance(description, (str, unicode))), description
    assert ((context is github.GithubObject.NotSet) or isinstance(context, (str, unicode))), context
    post_parameters = {'state': state}
    if (target_url is not github.GithubObject.NotSet):
        post_parameters['target_url'] = target_url
    if (description is not github.GithubObject.NotSet):
        post_parameters['description'] = description
    if (context is not github.GithubObject.NotSet):
        post_parameters['context'] = context
    (headers, data) = self._requester.requestJsonAndCheck('POST', ((self._parentUrl(self._parentUrl(self.url)) + '/statuses/') + self.sha), input=post_parameters)
    return github.CommitStatus.CommitStatus(self._requester, headers, data, completed=True)
