':calls: `POST /orgs/:org/repos <http://developer.github.com/v3/repos>`_
:param name: string
:param description: string
:param homepage: string
:param private: bool
:param has_issues: bool
:param has_wiki: bool
:param has_downloads: bool
:param team_id: :class:`github.Team.Team`
:param auto_init: bool
:param gitignore_template: string
:rtype: :class:`github.Repository.Repository`'

def create_repo(self, name, description=github.GithubObject.NotSet, homepage=github.GithubObject.NotSet, private=github.GithubObject.NotSet, has_issues=github.GithubObject.NotSet, has_wiki=github.GithubObject.NotSet, has_downloads=github.GithubObject.NotSet, team_id=github.GithubObject.NotSet, auto_init=github.GithubObject.NotSet, gitignore_template=github.GithubObject.NotSet):

    assert isinstance(name, (str, unicode)), name
    assert ((description is github.GithubObject.NotSet) or isinstance(description, (str, unicode))), description
    assert ((homepage is github.GithubObject.NotSet) or isinstance(homepage, (str, unicode))), homepage
    assert ((private is github.GithubObject.NotSet) or isinstance(private, bool)), private
    assert ((has_issues is github.GithubObject.NotSet) or isinstance(has_issues, bool)), has_issues
    assert ((has_wiki is github.GithubObject.NotSet) or isinstance(has_wiki, bool)), has_wiki
    assert ((has_downloads is github.GithubObject.NotSet) or isinstance(has_downloads, bool)), has_downloads
    assert ((team_id is github.GithubObject.NotSet) or isinstance(team_id, github.Team.Team)), team_id
    assert ((auto_init is github.GithubObject.NotSet) or isinstance(auto_init, bool)), auto_init
    assert ((gitignore_template is github.GithubObject.NotSet) or isinstance(gitignore_template, (str, unicode))), gitignore_template
    post_parameters = {'name': name}
    if (description is not github.GithubObject.NotSet):
        post_parameters['description'] = description
    if (homepage is not github.GithubObject.NotSet):
        post_parameters['homepage'] = homepage
    if (private is not github.GithubObject.NotSet):
        post_parameters['private'] = private
    if (has_issues is not github.GithubObject.NotSet):
        post_parameters['has_issues'] = has_issues
    if (has_wiki is not github.GithubObject.NotSet):
        post_parameters['has_wiki'] = has_wiki
    if (has_downloads is not github.GithubObject.NotSet):
        post_parameters['has_downloads'] = has_downloads
    if (team_id is not github.GithubObject.NotSet):
        post_parameters['team_id'] = team_id._identity
    if (auto_init is not github.GithubObject.NotSet):
        post_parameters['auto_init'] = auto_init
    if (gitignore_template is not github.GithubObject.NotSet):
        post_parameters['gitignore_template'] = gitignore_template
    (headers, data) = self._requester.requestJsonAndCheck('POST', (self.url + '/repos'), input=post_parameters)
    return github.Repository.Repository(self._requester, headers, data, completed=True)
