<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def create_repo(self, auth, name, description=None, private=False, auto_init=False, gitignore_templates=None, license_template=None, readme_template=None, organization=None):
 """ Creates a new repository, and returns the created repository. :param auth.Authentication auth: authentication object :param str name: name of the repository to create :param str description: description of the repository to create :param bool private: whether the create repository should be private :param bool auto_init: whether the created repository should be auto-initialized with an initial commit :param list[str] gitignore_templates: collection of ``.gitignore`` templates to apply :param str license_template: license template to apply :param str readme_template: README template to apply :param str organization: organization under which repository is created :return: a representation of the created repository :rtype: GogsRepo :raises NetworkFailure: if there is an error communicating with the server :raises ApiFailure: if the request cannot be serviced """

        gitignores = None if gitignore_templates is None \
            else ",".join(gitignore_templates)
        data = {
            "name": name,
            "description": description,
            "private": private,
            "auto_init": auto_init,
            "gitignores": gitignores,
            "license": license_template,
            "readme": readme_template
        }
        data = {k: v for (k, v) in data.items() if v is not None}
        url = "/org/{0}/repos".format(organization) if organization else "/user/repos"
        response = self.post(url, auth=auth, data=data)
        return GogsRepo.from_json(response.json())