diff venv/lib/python2.7/site-packages/github/Repository.py @ 0:d67268158946 draft

planemo upload commit a3f181f5f126803c654b3a66dd4e83a48f7e203b
author bcclaywell
date Mon, 12 Oct 2015 17:43:33 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/venv/lib/python2.7/site-packages/github/Repository.py	Mon Oct 12 17:43:33 2015 -0400
@@ -0,0 +1,2194 @@
+# -*- coding: utf-8 -*-
+
+# ########################## Copyrights and license ############################
+#                                                                              #
+# Copyright 2012 Christopher Gilbert <christopher.john.gilbert@gmail.com>      #
+# Copyright 2012 Steve English <steve.english@navetas.com>                     #
+# Copyright 2012 Vincent Jacques <vincent@vincent-jacques.net>                 #
+# Copyright 2012 Zearin <zearin@gonk.net>                                      #
+# Copyright 2013 AKFish <akfish@gmail.com>                                     #
+# Copyright 2013 Adrian Petrescu <adrian.petrescu@maluuba.com>                 #
+# Copyright 2013 Mark Roddy <markroddy@gmail.com>                              #
+# Copyright 2013 Vincent Jacques <vincent@vincent-jacques.net>                 #
+# Copyright 2013 martinqt <m.ki2@laposte.net>                                  #
+#                                                                              #
+# This file is part of PyGithub. http://jacquev6.github.com/PyGithub/          #
+#                                                                              #
+# PyGithub is free software: you can redistribute it and/or modify it under    #
+# the terms of the GNU Lesser General Public License as published by the Free  #
+# Software Foundation, either version 3 of the License, or (at your option)    #
+# any later version.                                                           #
+#                                                                              #
+# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY  #
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS    #
+# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more #
+# details.                                                                     #
+#                                                                              #
+# You should have received a copy of the GNU Lesser General Public License     #
+# along with PyGithub. If not, see <http://www.gnu.org/licenses/>.             #
+#                                                                              #
+# ##############################################################################
+
+import urllib
+import datetime
+
+import github.GithubObject
+import github.PaginatedList
+
+import github.Branch
+import github.IssueEvent
+import github.ContentFile
+import github.Label
+import github.GitBlob
+import github.Organization
+import github.GitRef
+import github.Issue
+import github.Repository
+import github.PullRequest
+import github.RepositoryKey
+import github.NamedUser
+import github.Milestone
+import github.Comparison
+import github.CommitComment
+import github.GitCommit
+import github.Team
+import github.Commit
+import github.GitTree
+import github.Hook
+import github.Tag
+import github.GitTag
+import github.Download
+import github.Permissions
+import github.Event
+import github.Legacy
+import github.StatsContributor
+import github.StatsCommitActivity
+import github.StatsCodeFrequency
+import github.StatsParticipation
+import github.StatsPunchCard
+
+
+class Repository(github.GithubObject.CompletableGithubObject):
+    """
+    This class represents Repositorys. The reference can be found here http://developer.github.com/v3/repos/
+    """
+
+    @property
+    def archive_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._archive_url)
+        return self._archive_url.value
+
+    @property
+    def assignees_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._assignees_url)
+        return self._assignees_url.value
+
+    @property
+    def blobs_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._blobs_url)
+        return self._blobs_url.value
+
+    @property
+    def branches_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._branches_url)
+        return self._branches_url.value
+
+    @property
+    def clone_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._clone_url)
+        return self._clone_url.value
+
+    @property
+    def collaborators_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._collaborators_url)
+        return self._collaborators_url.value
+
+    @property
+    def comments_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._comments_url)
+        return self._comments_url.value
+
+    @property
+    def commits_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._commits_url)
+        return self._commits_url.value
+
+    @property
+    def compare_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._compare_url)
+        return self._compare_url.value
+
+    @property
+    def contents_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._contents_url)
+        return self._contents_url.value
+
+    @property
+    def contributors_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._contributors_url)
+        return self._contributors_url.value
+
+    @property
+    def created_at(self):
+        """
+        :type: datetime.datetime
+        """
+        self._completeIfNotSet(self._created_at)
+        return self._created_at.value
+
+    @property
+    def default_branch(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._default_branch)
+        return self._default_branch.value
+
+    @property
+    def description(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._description)
+        return self._description.value
+
+    @property
+    def downloads_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._downloads_url)
+        return self._downloads_url.value
+
+    @property
+    def events_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._events_url)
+        return self._events_url.value
+
+    @property
+    def fork(self):
+        """
+        :type: bool
+        """
+        self._completeIfNotSet(self._fork)
+        return self._fork.value
+
+    @property
+    def forks(self):
+        """
+        :type: integer
+        """
+        self._completeIfNotSet(self._forks)
+        return self._forks.value
+
+    @property
+    def forks_count(self):
+        """
+        :type: integer
+        """
+        self._completeIfNotSet(self._forks_count)
+        return self._forks_count.value
+
+    @property
+    def forks_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._forks_url)
+        return self._forks_url.value
+
+    @property
+    def full_name(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._full_name)
+        return self._full_name.value
+
+    @property
+    def git_commits_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._git_commits_url)
+        return self._git_commits_url.value
+
+    @property
+    def git_refs_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._git_refs_url)
+        return self._git_refs_url.value
+
+    @property
+    def git_tags_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._git_tags_url)
+        return self._git_tags_url.value
+
+    @property
+    def git_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._git_url)
+        return self._git_url.value
+
+    @property
+    def has_downloads(self):
+        """
+        :type: bool
+        """
+        self._completeIfNotSet(self._has_downloads)
+        return self._has_downloads.value
+
+    @property
+    def has_issues(self):
+        """
+        :type: bool
+        """
+        self._completeIfNotSet(self._has_issues)
+        return self._has_issues.value
+
+    @property
+    def has_wiki(self):
+        """
+        :type: bool
+        """
+        self._completeIfNotSet(self._has_wiki)
+        return self._has_wiki.value
+
+    @property
+    def homepage(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._homepage)
+        return self._homepage.value
+
+    @property
+    def hooks_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._hooks_url)
+        return self._hooks_url.value
+
+    @property
+    def html_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._html_url)
+        return self._html_url.value
+
+    @property
+    def id(self):
+        """
+        :type: integer
+        """
+        self._completeIfNotSet(self._id)
+        return self._id.value
+
+    @property
+    def issue_comment_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._issue_comment_url)
+        return self._issue_comment_url.value
+
+    @property
+    def issue_events_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._issue_events_url)
+        return self._issue_events_url.value
+
+    @property
+    def issues_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._issues_url)
+        return self._issues_url.value
+
+    @property
+    def keys_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._keys_url)
+        return self._keys_url.value
+
+    @property
+    def labels_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._labels_url)
+        return self._labels_url.value
+
+    @property
+    def language(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._language)
+        return self._language.value
+
+    @property
+    def languages_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._languages_url)
+        return self._languages_url.value
+
+    @property
+    def master_branch(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._master_branch)
+        return self._master_branch.value
+
+    @property
+    def merges_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._merges_url)
+        return self._merges_url.value
+
+    @property
+    def milestones_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._milestones_url)
+        return self._milestones_url.value
+
+    @property
+    def mirror_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._mirror_url)
+        return self._mirror_url.value
+
+    @property
+    def name(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._name)
+        return self._name.value
+
+    @property
+    def network_count(self):
+        """
+        :type: integer
+        """
+        self._completeIfNotSet(self._network_count)
+        return self._network_count.value
+
+    @property
+    def notifications_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._notifications_url)
+        return self._notifications_url.value
+
+    @property
+    def open_issues(self):
+        """
+        :type: integer
+        """
+        self._completeIfNotSet(self._open_issues)
+        return self._open_issues.value
+
+    @property
+    def open_issues_count(self):
+        """
+        :type: integer
+        """
+        self._completeIfNotSet(self._open_issues_count)
+        return self._open_issues_count.value
+
+    @property
+    def organization(self):
+        """
+        :type: :class:`github.Organization.Organization`
+        """
+        self._completeIfNotSet(self._organization)
+        return self._organization.value
+
+    @property
+    def owner(self):
+        """
+        :type: :class:`github.NamedUser.NamedUser`
+        """
+        self._completeIfNotSet(self._owner)
+        return self._owner.value
+
+    @property
+    def parent(self):
+        """
+        :type: :class:`github.Repository.Repository`
+        """
+        self._completeIfNotSet(self._parent)
+        return self._parent.value
+
+    @property
+    def permissions(self):
+        """
+        :type: :class:`github.Permissions.Permissions`
+        """
+        self._completeIfNotSet(self._permissions)
+        return self._permissions.value
+
+    @property
+    def private(self):
+        """
+        :type: bool
+        """
+        self._completeIfNotSet(self._private)
+        return self._private.value
+
+    @property
+    def pulls_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._pulls_url)
+        return self._pulls_url.value
+
+    @property
+    def pushed_at(self):
+        """
+        :type: datetime.datetime
+        """
+        self._completeIfNotSet(self._pushed_at)
+        return self._pushed_at.value
+
+    @property
+    def size(self):
+        """
+        :type: integer
+        """
+        self._completeIfNotSet(self._size)
+        return self._size.value
+
+    @property
+    def source(self):
+        """
+        :type: :class:`github.Repository.Repository`
+        """
+        self._completeIfNotSet(self._source)
+        return self._source.value
+
+    @property
+    def ssh_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._ssh_url)
+        return self._ssh_url.value
+
+    @property
+    def stargazers_count(self):
+        """
+        :type: integer
+        """
+        self._completeIfNotSet(self._stargazers_count)  # pragma no cover (Should be covered)
+        return self._stargazers_count.value  # pragma no cover (Should be covered)
+
+    @property
+    def stargazers_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._stargazers_url)
+        return self._stargazers_url.value
+
+    @property
+    def statuses_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._statuses_url)
+        return self._statuses_url.value
+
+    @property
+    def subscribers_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._subscribers_url)
+        return self._subscribers_url.value
+
+    @property
+    def subscription_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._subscription_url)
+        return self._subscription_url.value
+
+    @property
+    def svn_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._svn_url)
+        return self._svn_url.value
+
+    @property
+    def tags_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._tags_url)
+        return self._tags_url.value
+
+    @property
+    def teams_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._teams_url)
+        return self._teams_url.value
+
+    @property
+    def trees_url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._trees_url)
+        return self._trees_url.value
+
+    @property
+    def updated_at(self):
+        """
+        :type: datetime.datetime
+        """
+        self._completeIfNotSet(self._updated_at)
+        return self._updated_at.value
+
+    @property
+    def url(self):
+        """
+        :type: string
+        """
+        self._completeIfNotSet(self._url)
+        return self._url.value
+
+    @property
+    def watchers(self):
+        """
+        :type: integer
+        """
+        self._completeIfNotSet(self._watchers)
+        return self._watchers.value
+
+    @property
+    def watchers_count(self):
+        """
+        :type: integer
+        """
+        self._completeIfNotSet(self._watchers_count)
+        return self._watchers_count.value
+
+    def add_to_collaborators(self, collaborator):
+        """
+        :calls: `PUT /repos/:owner/:repo/collaborators/:user <http://developer.github.com/v3/repos/collaborators>`_
+        :param collaborator: string or :class:`github.NamedUser.NamedUser`
+        :rtype: None
+        """
+        assert isinstance(collaborator, github.NamedUser.NamedUser) or isinstance(collaborator, (str, unicode)), collaborator
+
+        if isinstance(collaborator, github.NamedUser.NamedUser):
+            collaborator = collaborator._identity
+
+        headers, data = self._requester.requestJsonAndCheck(
+            "PUT",
+            self.url + "/collaborators/" + collaborator
+        )
+
+    def compare(self, base, head):
+        """
+        :calls: `GET /repos/:owner/:repo/compare/:base...:head <http://developer.github.com/v3/repos/commits>`_
+        :param base: string
+        :param head: string
+        :rtype: :class:`github.Comparison.Comparison`
+        """
+        assert isinstance(base, (str, unicode)), base
+        assert isinstance(head, (str, unicode)), head
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            self.url + "/compare/" + base + "..." + head
+        )
+        return github.Comparison.Comparison(self._requester, headers, data, completed=True)
+
+    def create_git_blob(self, content, encoding):
+        """
+        :calls: `POST /repos/:owner/:repo/git/blobs <http://developer.github.com/v3/git/blobs>`_
+        :param content: string
+        :param encoding: string
+        :rtype: :class:`github.GitBlob.GitBlob`
+        """
+        assert isinstance(content, (str, unicode)), content
+        assert isinstance(encoding, (str, unicode)), encoding
+        post_parameters = {
+            "content": content,
+            "encoding": encoding,
+        }
+        headers, data = self._requester.requestJsonAndCheck(
+            "POST",
+            self.url + "/git/blobs",
+            input=post_parameters
+        )
+        return github.GitBlob.GitBlob(self._requester, headers, data, completed=True)
+
+    def create_git_commit(self, message, tree, parents, author=github.GithubObject.NotSet, committer=github.GithubObject.NotSet):
+        """
+        :calls: `POST /repos/:owner/:repo/git/commits <http://developer.github.com/v3/git/commits>`_
+        :param message: string
+        :param tree: :class:`github.GitTree.GitTree`
+        :param parents: list of :class:`github.GitCommit.GitCommit`
+        :param author: :class:`github.InputGitAuthor.InputGitAuthor`
+        :param committer: :class:`github.InputGitAuthor.InputGitAuthor`
+        :rtype: :class:`github.GitCommit.GitCommit`
+        """
+        assert isinstance(message, (str, unicode)), message
+        assert isinstance(tree, github.GitTree.GitTree), tree
+        assert all(isinstance(element, github.GitCommit.GitCommit) for element in parents), parents
+        assert author is github.GithubObject.NotSet or isinstance(author, github.InputGitAuthor), author
+        assert committer is github.GithubObject.NotSet or isinstance(committer, github.InputGitAuthor), committer
+        post_parameters = {
+            "message": message,
+            "tree": tree._identity,
+            "parents": [element._identity for element in parents],
+        }
+        if author is not github.GithubObject.NotSet:
+            post_parameters["author"] = author._identity
+        if committer is not github.GithubObject.NotSet:
+            post_parameters["committer"] = committer._identity
+        headers, data = self._requester.requestJsonAndCheck(
+            "POST",
+            self.url + "/git/commits",
+            input=post_parameters
+        )
+        return github.GitCommit.GitCommit(self._requester, headers, data, completed=True)
+
+    def create_git_ref(self, ref, sha):
+        """
+        :calls: `POST /repos/:owner/:repo/git/refs <http://developer.github.com/v3/git/refs>`_
+        :param ref: string
+        :param sha: string
+        :rtype: :class:`github.GitRef.GitRef`
+        """
+        assert isinstance(ref, (str, unicode)), ref
+        assert isinstance(sha, (str, unicode)), sha
+        post_parameters = {
+            "ref": ref,
+            "sha": sha,
+        }
+        headers, data = self._requester.requestJsonAndCheck(
+            "POST",
+            self.url + "/git/refs",
+            input=post_parameters
+        )
+        return github.GitRef.GitRef(self._requester, headers, data, completed=True)
+
+    def create_git_tag(self, tag, message, object, type, tagger=github.GithubObject.NotSet):
+        """
+        :calls: `POST /repos/:owner/:repo/git/tags <http://developer.github.com/v3/git/tags>`_
+        :param tag: string
+        :param message: string
+        :param object: string
+        :param type: string
+        :param tagger: :class:`github.InputGitAuthor.InputGitAuthor`
+        :rtype: :class:`github.GitTag.GitTag`
+        """
+        assert isinstance(tag, (str, unicode)), tag
+        assert isinstance(message, (str, unicode)), message
+        assert isinstance(object, (str, unicode)), object
+        assert isinstance(type, (str, unicode)), type
+        assert tagger is github.GithubObject.NotSet or isinstance(tagger, github.InputGitAuthor), tagger
+        post_parameters = {
+            "tag": tag,
+            "message": message,
+            "object": object,
+            "type": type,
+        }
+        if tagger is not github.GithubObject.NotSet:
+            post_parameters["tagger"] = tagger._identity
+        headers, data = self._requester.requestJsonAndCheck(
+            "POST",
+            self.url + "/git/tags",
+            input=post_parameters
+        )
+        return github.GitTag.GitTag(self._requester, headers, data, completed=True)
+
+    def create_git_tree(self, tree, base_tree=github.GithubObject.NotSet):
+        """
+        :calls: `POST /repos/:owner/:repo/git/trees <http://developer.github.com/v3/git/trees>`_
+        :param tree: list of :class:`github.InputGitTreeElement.InputGitTreeElement`
+        :param base_tree: :class:`github.GitTree.GitTree`
+        :rtype: :class:`github.GitTree.GitTree`
+        """
+        assert all(isinstance(element, github.InputGitTreeElement) for element in tree), tree
+        assert base_tree is github.GithubObject.NotSet or isinstance(base_tree, github.GitTree.GitTree), base_tree
+        post_parameters = {
+            "tree": [element._identity for element in tree],
+        }
+        if base_tree is not github.GithubObject.NotSet:
+            post_parameters["base_tree"] = base_tree._identity
+        headers, data = self._requester.requestJsonAndCheck(
+            "POST",
+            self.url + "/git/trees",
+            input=post_parameters
+        )
+        return github.GitTree.GitTree(self._requester, headers, data, completed=True)
+
+    def create_hook(self, name, config, events=github.GithubObject.NotSet, active=github.GithubObject.NotSet):
+        """
+        :calls: `POST /repos/:owner/:repo/hooks <http://developer.github.com/v3/repos/hooks>`_
+        :param name: string
+        :param config: dict
+        :param events: list of string
+        :param active: bool
+        :rtype: :class:`github.Hook.Hook`
+        """
+        assert isinstance(name, (str, unicode)), name
+        assert isinstance(config, dict), config
+        assert events is github.GithubObject.NotSet or all(isinstance(element, (str, unicode)) for element in events), events
+        assert active is github.GithubObject.NotSet or isinstance(active, bool), active
+        post_parameters = {
+            "name": name,
+            "config": config,
+        }
+        if events is not github.GithubObject.NotSet:
+            post_parameters["events"] = events
+        if active is not github.GithubObject.NotSet:
+            post_parameters["active"] = active
+        headers, data = self._requester.requestJsonAndCheck(
+            "POST",
+            self.url + "/hooks",
+            input=post_parameters
+        )
+        return github.Hook.Hook(self._requester, headers, data, completed=True)
+
+    def create_issue(self, title, body=github.GithubObject.NotSet, assignee=github.GithubObject.NotSet, milestone=github.GithubObject.NotSet, labels=github.GithubObject.NotSet):
+        """
+        :calls: `POST /repos/:owner/:repo/issues <http://developer.github.com/v3/issues>`_
+        :param title: string
+        :param body: string
+        :param assignee: string or :class:`github.NamedUser.NamedUser`
+        :param milestone: :class:`github.Milestone.Milestone`
+        :param labels: list of :class:`github.Label.Label`
+        :rtype: :class:`github.Issue.Issue`
+        """
+        assert isinstance(title, (str, unicode)), title
+        assert body is github.GithubObject.NotSet or isinstance(body, (str, unicode)), body
+        assert assignee is github.GithubObject.NotSet or isinstance(assignee, github.NamedUser.NamedUser) or isinstance(assignee, (str, unicode)), assignee
+        assert milestone is github.GithubObject.NotSet or isinstance(milestone, github.Milestone.Milestone), milestone
+        assert labels is github.GithubObject.NotSet or all(isinstance(element, github.Label.Label) for element in labels), labels
+        post_parameters = {
+            "title": title,
+        }
+        if body is not github.GithubObject.NotSet:
+            post_parameters["body"] = body
+        if assignee is not github.GithubObject.NotSet:
+            if isinstance(assignee, (str, unicode)):
+                post_parameters["assignee"] = assignee
+            else:
+                post_parameters["assignee"] = assignee._identity
+        if milestone is not github.GithubObject.NotSet:
+            post_parameters["milestone"] = milestone._identity
+        if labels is not github.GithubObject.NotSet:
+            post_parameters["labels"] = [element.name for element in labels]
+        headers, data = self._requester.requestJsonAndCheck(
+            "POST",
+            self.url + "/issues",
+            input=post_parameters
+        )
+        return github.Issue.Issue(self._requester, headers, data, completed=True)
+
+    def create_key(self, title, key):
+        """
+        :calls: `POST /repos/:owner/:repo/keys <http://developer.github.com/v3/repos/keys>`_
+        :param title: string
+        :param key: string
+        :rtype: :class:`github.RepositoryKey.RepositoryKey`
+        """
+        assert isinstance(title, (str, unicode)), title
+        assert isinstance(key, (str, unicode)), key
+        post_parameters = {
+            "title": title,
+            "key": key,
+        }
+        headers, data = self._requester.requestJsonAndCheck(
+            "POST",
+            self.url + "/keys",
+            input=post_parameters
+        )
+        return github.RepositoryKey.RepositoryKey(self._requester, headers, data, completed=True, repoUrl=self.url)
+
+    def create_label(self, name, color):
+        """
+        :calls: `POST /repos/:owner/:repo/labels <http://developer.github.com/v3/issues/labels>`_
+        :param name: string
+        :param color: string
+        :rtype: :class:`github.Label.Label`
+        """
+        assert isinstance(name, (str, unicode)), name
+        assert isinstance(color, (str, unicode)), color
+        post_parameters = {
+            "name": name,
+            "color": color,
+        }
+        headers, data = self._requester.requestJsonAndCheck(
+            "POST",
+            self.url + "/labels",
+            input=post_parameters
+        )
+        return github.Label.Label(self._requester, headers, data, completed=True)
+
+    def create_milestone(self, title, state=github.GithubObject.NotSet, description=github.GithubObject.NotSet, due_on=github.GithubObject.NotSet):
+        """
+        :calls: `POST /repos/:owner/:repo/milestones <http://developer.github.com/v3/issues/milestones>`_
+        :param title: string
+        :param state: string
+        :param description: string
+        :param due_on: date
+        :rtype: :class:`github.Milestone.Milestone`
+        """
+        assert isinstance(title, (str, unicode)), title
+        assert state is github.GithubObject.NotSet or isinstance(state, (str, unicode)), state
+        assert description is github.GithubObject.NotSet or isinstance(description, (str, unicode)), description
+        assert due_on is github.GithubObject.NotSet or isinstance(due_on, datetime.date), due_on
+        post_parameters = {
+            "title": title,
+        }
+        if state is not github.GithubObject.NotSet:
+            post_parameters["state"] = state
+        if description is not github.GithubObject.NotSet:
+            post_parameters["description"] = description
+        if due_on is not github.GithubObject.NotSet:
+            post_parameters["due_on"] = due_on.strftime("%Y-%m-%d")
+        headers, data = self._requester.requestJsonAndCheck(
+            "POST",
+            self.url + "/milestones",
+            input=post_parameters
+        )
+        return github.Milestone.Milestone(self._requester, headers, data, completed=True)
+
+    def create_pull(self, *args, **kwds):
+        """
+        :calls: `POST /repos/:owner/:repo/pulls <http://developer.github.com/v3/pulls>`_
+        :param title: string
+        :param body: string
+        :param issue: :class:`github.Issue.Issue`
+        :param base: string
+        :param head: string
+        :rtype: :class:`github.PullRequest.PullRequest`
+        """
+        if len(args) + len(kwds) == 4:
+            return self.__create_pull_1(*args, **kwds)
+        else:
+            return self.__create_pull_2(*args, **kwds)
+
+    def __create_pull_1(self, title, body, base, head):
+        assert isinstance(title, (str, unicode)), title
+        assert isinstance(body, (str, unicode)), body
+        assert isinstance(base, (str, unicode)), base
+        assert isinstance(head, (str, unicode)), head
+        return self.__create_pull(title=title, body=body, base=base, head=head)
+
+    def __create_pull_2(self, issue, base, head):
+        assert isinstance(issue, github.Issue.Issue), issue
+        assert isinstance(base, (str, unicode)), base
+        assert isinstance(head, (str, unicode)), head
+        return self.__create_pull(issue=issue._identity, base=base, head=head)
+
+    def __create_pull(self, **kwds):
+        post_parameters = kwds
+        headers, data = self._requester.requestJsonAndCheck(
+            "POST",
+            self.url + "/pulls",
+            input=post_parameters
+        )
+        return github.PullRequest.PullRequest(self._requester, headers, data, completed=True)
+
+    def delete(self):
+        """
+        :calls: `DELETE /repos/:owner/:repo <http://developer.github.com/v3/repos>`_
+        :rtype: None
+        """
+        headers, data = self._requester.requestJsonAndCheck(
+            "DELETE",
+            self.url
+        )
+
+    def edit(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, default_branch=github.GithubObject.NotSet):
+        """
+        :calls: `PATCH /repos/:owner/:repo <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 default_branch: string
+        :rtype: None
+        """
+        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 default_branch is github.GithubObject.NotSet or isinstance(default_branch, (str, unicode)), default_branch
+        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 default_branch is not github.GithubObject.NotSet:
+            post_parameters["default_branch"] = default_branch
+        headers, data = self._requester.requestJsonAndCheck(
+            "PATCH",
+            self.url,
+            input=post_parameters
+        )
+        self._useAttributes(data)
+
+    def get_archive_link(self, archive_format, ref=github.GithubObject.NotSet):
+        """
+        :calls: `GET /repos/:owner/:repo/:archive_format/:ref <http://developer.github.com/v3/repos/contents>`_
+        :param archive_format: string
+        :param ref: string
+        :rtype: string
+        """
+        assert isinstance(archive_format, (str, unicode)), archive_format
+        assert ref is github.GithubObject.NotSet or isinstance(ref, (str, unicode)), ref
+        url = self.url + "/" + archive_format
+        if ref is not github.GithubObject.NotSet:
+            url += "/" + ref
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            url
+        )
+        return headers["location"]
+
+    def get_assignees(self):
+        """
+        :calls: `GET /repos/:owner/:repo/assignees <http://developer.github.com/v3/issues/assignees>`_
+        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.NamedUser.NamedUser`
+        """
+        return github.PaginatedList.PaginatedList(
+            github.NamedUser.NamedUser,
+            self._requester,
+            self.url + "/assignees",
+            None
+        )
+
+    def get_branch(self, branch):
+        """
+        :calls: `GET /repos/:owner/:repo/branches/:branch <http://developer.github.com/v3/repos>`_
+        :param branch: string
+        :rtype: :class:`github.Branch.Branch`
+        """
+        assert isinstance(branch, (str, unicode)), branch
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            self.url + "/branches/" + branch
+        )
+        return github.Branch.Branch(self._requester, headers, data, completed=True)
+
+    def get_branches(self):
+        """
+        :calls: `GET /repos/:owner/:repo/branches <http://developer.github.com/v3/repos>`_
+        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Branch.Branch`
+        """
+        return github.PaginatedList.PaginatedList(
+            github.Branch.Branch,
+            self._requester,
+            self.url + "/branches",
+            None
+        )
+
+    def get_collaborators(self):
+        """
+        :calls: `GET /repos/:owner/:repo/collaborators <http://developer.github.com/v3/repos/collaborators>`_
+        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.NamedUser.NamedUser`
+        """
+        return github.PaginatedList.PaginatedList(
+            github.NamedUser.NamedUser,
+            self._requester,
+            self.url + "/collaborators",
+            None
+        )
+
+    def get_comment(self, id):
+        """
+        :calls: `GET /repos/:owner/:repo/comments/:id <http://developer.github.com/v3/repos/comments>`_
+        :param id: integer
+        :rtype: :class:`github.CommitComment.CommitComment`
+        """
+        assert isinstance(id, (int, long)), id
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            self.url + "/comments/" + str(id)
+        )
+        return github.CommitComment.CommitComment(self._requester, headers, data, completed=True)
+
+    def get_comments(self):
+        """
+        :calls: `GET /repos/:owner/:repo/comments <http://developer.github.com/v3/repos/comments>`_
+        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.CommitComment.CommitComment`
+        """
+        return github.PaginatedList.PaginatedList(
+            github.CommitComment.CommitComment,
+            self._requester,
+            self.url + "/comments",
+            None
+        )
+
+    def get_commit(self, sha):
+        """
+        :calls: `GET /repos/:owner/:repo/commits/:sha <http://developer.github.com/v3/repos/commits>`_
+        :param sha: string
+        :rtype: :class:`github.Commit.Commit`
+        """
+        assert isinstance(sha, (str, unicode)), sha
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            self.url + "/commits/" + sha
+        )
+        return github.Commit.Commit(self._requester, headers, data, completed=True)
+
+    def get_commits(self, sha=github.GithubObject.NotSet, path=github.GithubObject.NotSet, since=github.GithubObject.NotSet, until=github.GithubObject.NotSet, author=github.GithubObject.NotSet):
+        """
+        :calls: `GET /repos/:owner/:repo/commits <http://developer.github.com/v3/repos/commits>`_
+        :param sha: string
+        :param path: string
+        :param since: datetime.datetime
+        :param until: datetime.datetime
+        :param author: string or :class:`github.NamedUser.NamedUser` or :class:`github.AuthenticatedUser.AuthenticatedUser`
+        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Commit.Commit`
+        """
+        assert sha is github.GithubObject.NotSet or isinstance(sha, (str, unicode)), sha
+        assert path is github.GithubObject.NotSet or isinstance(path, (str, unicode)), path
+        assert since is github.GithubObject.NotSet or isinstance(since, datetime.datetime), since
+        assert until is github.GithubObject.NotSet or isinstance(until, datetime.datetime), until
+        assert author is github.GithubObject.NotSet or isinstance(author, (str, unicode, github.NamedUser.NamedUser, github.AuthenticatedUser.AuthenticatedUser)), author
+        url_parameters = dict()
+        if sha is not github.GithubObject.NotSet:
+            url_parameters["sha"] = sha
+        if path is not github.GithubObject.NotSet:
+            url_parameters["path"] = path
+        if since is not github.GithubObject.NotSet:
+            url_parameters["since"] = since.strftime("%Y-%m-%dT%H:%M:%SZ")
+        if until is not github.GithubObject.NotSet:
+            url_parameters["until"] = until.strftime("%Y-%m-%dT%H:%M:%SZ")
+        if author is not github.GithubObject.NotSet:
+            if isinstance(author, (github.NamedUser.NamedUser, github.AuthenticatedUser.AuthenticatedUser)):
+                url_parameters["author"] = author.login
+            else:
+                url_parameters["author"] = author
+        return github.PaginatedList.PaginatedList(
+            github.Commit.Commit,
+            self._requester,
+            self.url + "/commits",
+            url_parameters
+        )
+
+    def get_contents(self, path, ref=github.GithubObject.NotSet):
+        """
+        :calls: `GET /repos/:owner/:repo/contents/:path <http://developer.github.com/v3/repos/contents>`_
+        :param path: string
+        :param ref: string
+        :rtype: :class:`github.ContentFile.ContentFile`
+        """
+        return self.get_file_contents(path, ref)
+
+    def get_file_contents(self, path, ref=github.GithubObject.NotSet):
+        """
+        :calls: `GET /repos/:owner/:repo/contents/:path <http://developer.github.com/v3/repos/contents>`_
+        :param path: string
+        :param ref: string
+        :rtype: :class:`github.ContentFile.ContentFile`
+        """
+        assert isinstance(path, (str, unicode)), path
+        assert ref is github.GithubObject.NotSet or isinstance(ref, (str, unicode)), ref
+        url_parameters = dict()
+        if ref is not github.GithubObject.NotSet:
+            url_parameters["ref"] = ref
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            self.url + "/contents" + path,
+            parameters=url_parameters
+        )
+        return github.ContentFile.ContentFile(self._requester, headers, data, completed=True)
+
+    def get_dir_contents(self, path, ref=github.GithubObject.NotSet):
+        """
+        :calls: `GET /repos/:owner/:repo/contents/:path <http://developer.github.com/v3/repos/contents>`_
+        :param path: string
+        :param ref: string
+        :rtype: list of :class:`github.ContentFile.ContentFile`
+        """
+        assert isinstance(path, (str, unicode)), path
+        assert ref is github.GithubObject.NotSet or isinstance(ref, (str, unicode)), ref
+        url_parameters = dict()
+        if ref is not github.GithubObject.NotSet:
+            url_parameters["ref"] = ref
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            self.url + "/contents" + path,
+            parameters=url_parameters
+        )
+
+        # Handle 302 redirect response
+        if headers.get('status') == '302 Found' and headers.get('location'):
+            headers, data = self._requester.requestJsonAndCheck(
+                "GET",
+                headers['location'],
+                parameters=url_parameters
+            )
+
+        return [
+            github.ContentFile.ContentFile(self._requester, headers, attributes, completed=(attributes["type"] != "file"))  # Lazy completion only makes sense for files. See discussion here: https://github.com/jacquev6/PyGithub/issues/140#issuecomment-13481130
+            for attributes in data
+        ]
+
+    def get_contributors(self):
+        """
+        :calls: `GET /repos/:owner/:repo/contributors <http://developer.github.com/v3/repos>`_
+        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.NamedUser.NamedUser`
+        """
+        return github.PaginatedList.PaginatedList(
+            github.NamedUser.NamedUser,
+            self._requester,
+            self.url + "/contributors",
+            None
+        )
+
+    def get_download(self, id):
+        """
+        :calls: `GET /repos/:owner/:repo/downloads/:id <http://developer.github.com/v3/repos/downloads>`_
+        :param id: integer
+        :rtype: :class:`github.Download.Download`
+        """
+        assert isinstance(id, (int, long)), id
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            self.url + "/downloads/" + str(id)
+        )
+        return github.Download.Download(self._requester, headers, data, completed=True)
+
+    def get_downloads(self):
+        """
+        :calls: `GET /repos/:owner/:repo/downloads <http://developer.github.com/v3/repos/downloads>`_
+        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Download.Download`
+        """
+        return github.PaginatedList.PaginatedList(
+            github.Download.Download,
+            self._requester,
+            self.url + "/downloads",
+            None
+        )
+
+    def get_events(self):
+        """
+        :calls: `GET /repos/:owner/:repo/events <http://developer.github.com/v3/activity/events>`_
+        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Event.Event`
+        """
+        return github.PaginatedList.PaginatedList(
+            github.Event.Event,
+            self._requester,
+            self.url + "/events",
+            None
+        )
+
+    def get_forks(self):
+        """
+        :calls: `GET /repos/:owner/:repo/forks <http://developer.github.com/v3/repos/forks>`_
+        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Repository.Repository`
+        """
+        return github.PaginatedList.PaginatedList(
+            Repository,
+            self._requester,
+            self.url + "/forks",
+            None
+        )
+
+    def get_git_blob(self, sha):
+        """
+        :calls: `GET /repos/:owner/:repo/git/blobs/:sha <http://developer.github.com/v3/git/blobs>`_
+        :param sha: string
+        :rtype: :class:`github.GitBlob.GitBlob`
+        """
+        assert isinstance(sha, (str, unicode)), sha
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            self.url + "/git/blobs/" + sha
+        )
+        return github.GitBlob.GitBlob(self._requester, headers, data, completed=True)
+
+    def get_git_commit(self, sha):
+        """
+        :calls: `GET /repos/:owner/:repo/git/commits/:sha <http://developer.github.com/v3/git/commits>`_
+        :param sha: string
+        :rtype: :class:`github.GitCommit.GitCommit`
+        """
+        assert isinstance(sha, (str, unicode)), sha
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            self.url + "/git/commits/" + sha
+        )
+        return github.GitCommit.GitCommit(self._requester, headers, data, completed=True)
+
+    def get_git_ref(self, ref):
+        """
+        :calls: `GET /repos/:owner/:repo/git/refs/:ref <http://developer.github.com/v3/git/refs>`_
+        :param ref: string
+        :rtype: :class:`github.GitRef.GitRef`
+        """
+        prefix = "/git/refs/"
+        if not self._requester.FIX_REPO_GET_GIT_REF:
+            prefix = "/git/"
+        assert isinstance(ref, (str, unicode)), ref
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            self.url + prefix + ref
+        )
+        return github.GitRef.GitRef(self._requester, headers, data, completed=True)
+
+    def get_git_refs(self):
+        """
+        :calls: `GET /repos/:owner/:repo/git/refs <http://developer.github.com/v3/git/refs>`_
+        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.GitRef.GitRef`
+        """
+        return github.PaginatedList.PaginatedList(
+            github.GitRef.GitRef,
+            self._requester,
+            self.url + "/git/refs",
+            None
+        )
+
+    def get_git_tag(self, sha):
+        """
+        :calls: `GET /repos/:owner/:repo/git/tags/:sha <http://developer.github.com/v3/git/tags>`_
+        :param sha: string
+        :rtype: :class:`github.GitTag.GitTag`
+        """
+        assert isinstance(sha, (str, unicode)), sha
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            self.url + "/git/tags/" + sha
+        )
+        return github.GitTag.GitTag(self._requester, headers, data, completed=True)
+
+    def get_git_tree(self, sha, recursive=github.GithubObject.NotSet):
+        """
+        :calls: `GET /repos/:owner/:repo/git/trees/:sha <http://developer.github.com/v3/git/trees>`_
+        :param sha: string
+        :param recursive: bool
+        :rtype: :class:`github.GitTree.GitTree`
+        """
+        assert isinstance(sha, (str, unicode)), sha
+        assert recursive is github.GithubObject.NotSet or isinstance(recursive, bool), recursive
+        url_parameters = dict()
+        if recursive is not github.GithubObject.NotSet:
+            url_parameters["recursive"] = recursive
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            self.url + "/git/trees/" + sha,
+            parameters=url_parameters
+        )
+        return github.GitTree.GitTree(self._requester, headers, data, completed=True)
+
+    def get_hook(self, id):
+        """
+        :calls: `GET /repos/:owner/:repo/hooks/:id <http://developer.github.com/v3/repos/hooks>`_
+        :param id: integer
+        :rtype: :class:`github.Hook.Hook`
+        """
+        assert isinstance(id, (int, long)), id
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            self.url + "/hooks/" + str(id)
+        )
+        return github.Hook.Hook(self._requester, headers, data, completed=True)
+
+    def get_hooks(self):
+        """
+        :calls: `GET /repos/:owner/:repo/hooks <http://developer.github.com/v3/repos/hooks>`_
+        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Hook.Hook`
+        """
+        return github.PaginatedList.PaginatedList(
+            github.Hook.Hook,
+            self._requester,
+            self.url + "/hooks",
+            None
+        )
+
+    def get_issue(self, number):
+        """
+        :calls: `GET /repos/:owner/:repo/issues/:number <http://developer.github.com/v3/issues>`_
+        :param number: integer
+        :rtype: :class:`github.Issue.Issue`
+        """
+        assert isinstance(number, (int, long)), number
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            self.url + "/issues/" + str(number)
+        )
+        return github.Issue.Issue(self._requester, headers, data, completed=True)
+
+    def get_issues(self, milestone=github.GithubObject.NotSet, state=github.GithubObject.NotSet, assignee=github.GithubObject.NotSet, mentioned=github.GithubObject.NotSet, labels=github.GithubObject.NotSet, sort=github.GithubObject.NotSet, direction=github.GithubObject.NotSet, since=github.GithubObject.NotSet):
+        """
+        :calls: `GET /repos/:owner/:repo/issues <http://developer.github.com/v3/issues>`_
+        :param milestone: :class:`github.Milestone.Milestone` or "none" or "*"
+        :param state: string
+        :param assignee: string or :class:`github.NamedUser.NamedUser` or "none" or "*"
+        :param mentioned: :class:`github.NamedUser.NamedUser`
+        :param labels: list of :class:`github.Label.Label`
+        :param sort: string
+        :param direction: string
+        :param since: datetime.datetime
+        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Issue.Issue`
+        """
+        assert milestone is github.GithubObject.NotSet or milestone == "*" or milestone == "none" or isinstance(milestone, github.Milestone.Milestone), milestone
+        assert state is github.GithubObject.NotSet or isinstance(state, (str, unicode)), state
+        assert assignee is github.GithubObject.NotSet or isinstance(assignee, github.NamedUser.NamedUser) or isinstance(assignee, (str, unicode)), assignee
+        assert mentioned is github.GithubObject.NotSet or isinstance(mentioned, github.NamedUser.NamedUser), mentioned
+        assert labels is github.GithubObject.NotSet or all(isinstance(element, github.Label.Label) for element in labels), labels
+        assert sort is github.GithubObject.NotSet or isinstance(sort, (str, unicode)), sort
+        assert direction is github.GithubObject.NotSet or isinstance(direction, (str, unicode)), direction
+        assert since is github.GithubObject.NotSet or isinstance(since, datetime.datetime), since
+        url_parameters = dict()
+        if milestone is not github.GithubObject.NotSet:
+            if isinstance(milestone, str):
+                url_parameters["milestone"] = milestone
+            else:
+                url_parameters["milestone"] = milestone._identity
+        if state is not github.GithubObject.NotSet:
+            url_parameters["state"] = state
+        if assignee is not github.GithubObject.NotSet:
+            if isinstance(assignee, str):
+                url_parameters["assignee"] = assignee
+            else:
+                url_parameters["assignee"] = assignee._identity
+        if mentioned is not github.GithubObject.NotSet:
+            url_parameters["mentioned"] = mentioned._identity
+        if labels is not github.GithubObject.NotSet:
+            url_parameters["labels"] = ",".join(label.name for label in labels)
+        if sort is not github.GithubObject.NotSet:
+            url_parameters["sort"] = sort
+        if direction is not github.GithubObject.NotSet:
+            url_parameters["direction"] = direction
+        if since is not github.GithubObject.NotSet:
+            url_parameters["since"] = since.strftime("%Y-%m-%dT%H:%M:%SZ")
+        return github.PaginatedList.PaginatedList(
+            github.Issue.Issue,
+            self._requester,
+            self.url + "/issues",
+            url_parameters
+        )
+
+    def get_issues_comments(self, sort=github.GithubObject.NotSet, direction=github.GithubObject.NotSet, since=github.GithubObject.NotSet):
+        """
+        :calls: `GET /repos/:owner/:repo/issues/comments <http://developer.github.com/v3/issues/comments>`_
+        :param sort: string
+        :param direction: string
+        :param since: datetime.datetime
+        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.IssueComment.IssueComment`
+        """
+        assert sort is github.GithubObject.NotSet or isinstance(sort, (str, unicode)), sort
+        assert direction is github.GithubObject.NotSet or isinstance(direction, (str, unicode)), direction
+        assert since is github.GithubObject.NotSet or isinstance(since, datetime.datetime), since
+        url_parameters = dict()
+        if sort is not github.GithubObject.NotSet:
+            url_parameters["sort"] = sort
+        if direction is not github.GithubObject.NotSet:
+            url_parameters["direction"] = direction
+        if since is not github.GithubObject.NotSet:
+            url_parameters["since"] = since.strftime("%Y-%m-%dT%H:%M:%SZ")
+        return github.PaginatedList.PaginatedList(
+            github.IssueComment.IssueComment,
+            self._requester,
+            self.url + "/issues/comments",
+            url_parameters
+        )
+
+    def get_issues_event(self, id):
+        """
+        :calls: `GET /repos/:owner/:repo/issues/events/:id <http://developer.github.com/v3/issues/events>`_
+        :param id: integer
+        :rtype: :class:`github.IssueEvent.IssueEvent`
+        """
+        assert isinstance(id, (int, long)), id
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            self.url + "/issues/events/" + str(id)
+        )
+        return github.IssueEvent.IssueEvent(self._requester, headers, data, completed=True)
+
+    def get_issues_events(self):
+        """
+        :calls: `GET /repos/:owner/:repo/issues/events <http://developer.github.com/v3/issues/events>`_
+        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.IssueEvent.IssueEvent`
+        """
+        return github.PaginatedList.PaginatedList(
+            github.IssueEvent.IssueEvent,
+            self._requester,
+            self.url + "/issues/events",
+            None
+        )
+
+    def get_key(self, id):
+        """
+        :calls: `GET /repos/:owner/:repo/keys/:id <http://developer.github.com/v3/repos/keys>`_
+        :param id: integer
+        :rtype: :class:`github.RepositoryKey.RepositoryKey`
+        """
+        assert isinstance(id, (int, long)), id
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            self.url + "/keys/" + str(id)
+        )
+        return github.RepositoryKey.RepositoryKey(self._requester, headers, data, completed=True, repoUrl=self.url)
+
+    def get_keys(self):
+        """
+        :calls: `GET /repos/:owner/:repo/keys <http://developer.github.com/v3/repos/keys>`_
+        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.RepositoryKey.RepositoryKey`
+        """
+        return github.PaginatedList.PaginatedList(
+            lambda requester, headers, data, completed: github.RepositoryKey.RepositoryKey(requester, headers, data, completed, repoUrl=self.url),
+            self._requester,
+            self.url + "/keys",
+            None
+        )
+
+    def get_label(self, name):
+        """
+        :calls: `GET /repos/:owner/:repo/labels/:name <http://developer.github.com/v3/issues/labels>`_
+        :param name: string
+        :rtype: :class:`github.Label.Label`
+        """
+        assert isinstance(name, (str, unicode)), name
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            self.url + "/labels/" + urllib.quote(name)
+        )
+        return github.Label.Label(self._requester, headers, data, completed=True)
+
+    def get_labels(self):
+        """
+        :calls: `GET /repos/:owner/:repo/labels <http://developer.github.com/v3/issues/labels>`_
+        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Label.Label`
+        """
+        return github.PaginatedList.PaginatedList(
+            github.Label.Label,
+            self._requester,
+            self.url + "/labels",
+            None
+        )
+
+    def get_languages(self):
+        """
+        :calls: `GET /repos/:owner/:repo/languages <http://developer.github.com/v3/repos>`_
+        :rtype: dict of string to integer
+        """
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            self.url + "/languages"
+        )
+        return data
+
+    def get_milestone(self, number):
+        """
+        :calls: `GET /repos/:owner/:repo/milestones/:number <http://developer.github.com/v3/issues/milestones>`_
+        :param number: integer
+        :rtype: :class:`github.Milestone.Milestone`
+        """
+        assert isinstance(number, (int, long)), number
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            self.url + "/milestones/" + str(number)
+        )
+        return github.Milestone.Milestone(self._requester, headers, data, completed=True)
+
+    def get_milestones(self, state=github.GithubObject.NotSet, sort=github.GithubObject.NotSet, direction=github.GithubObject.NotSet):
+        """
+        :calls: `GET /repos/:owner/:repo/milestones <http://developer.github.com/v3/issues/milestones>`_
+        :param state: string
+        :param sort: string
+        :param direction: string
+        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Milestone.Milestone`
+        """
+        assert state is github.GithubObject.NotSet or isinstance(state, (str, unicode)), state
+        assert sort is github.GithubObject.NotSet or isinstance(sort, (str, unicode)), sort
+        assert direction is github.GithubObject.NotSet or isinstance(direction, (str, unicode)), direction
+        url_parameters = dict()
+        if state is not github.GithubObject.NotSet:
+            url_parameters["state"] = state
+        if sort is not github.GithubObject.NotSet:
+            url_parameters["sort"] = sort
+        if direction is not github.GithubObject.NotSet:
+            url_parameters["direction"] = direction
+        return github.PaginatedList.PaginatedList(
+            github.Milestone.Milestone,
+            self._requester,
+            self.url + "/milestones",
+            url_parameters
+        )
+
+    def get_network_events(self):
+        """
+        :calls: `GET /networks/:owner/:repo/events <http://developer.github.com/v3/activity/events>`_
+        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Event.Event`
+        """
+        return github.PaginatedList.PaginatedList(
+            github.Event.Event,
+            self._requester,
+            "/networks/" + self.owner.login + "/" + self.name + "/events",
+            None
+        )
+
+    def get_pull(self, number):
+        """
+        :calls: `GET /repos/:owner/:repo/pulls/:number <http://developer.github.com/v3/pulls>`_
+        :param number: integer
+        :rtype: :class:`github.PullRequest.PullRequest`
+        """
+        assert isinstance(number, (int, long)), number
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            self.url + "/pulls/" + str(number)
+        )
+        return github.PullRequest.PullRequest(self._requester, headers, data, completed=True)
+
+    def get_pulls(self, state=github.GithubObject.NotSet):
+        """
+        :calls: `GET /repos/:owner/:repo/pulls <http://developer.github.com/v3/pulls>`_
+        :param state: string
+        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.PullRequest.PullRequest`
+        """
+        assert state is github.GithubObject.NotSet or isinstance(state, (str, unicode)), state
+        url_parameters = dict()
+        if state is not github.GithubObject.NotSet:
+            url_parameters["state"] = state
+        return github.PaginatedList.PaginatedList(
+            github.PullRequest.PullRequest,
+            self._requester,
+            self.url + "/pulls",
+            url_parameters
+        )
+
+    def get_pulls_comments(self, sort=github.GithubObject.NotSet, direction=github.GithubObject.NotSet, since=github.GithubObject.NotSet):
+        """
+        :calls: `GET /repos/:owner/:repo/pulls/comments <http://developer.github.com/v3/pulls/comments>`_
+        :param sort: string
+        :param direction: string
+        :param since: datetime.datetime
+        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.PullRequestComment.PullRequestComment`
+        """
+        return self.get_pulls_review_comments(sort, direction, since)
+
+    def get_pulls_review_comments(self, sort=github.GithubObject.NotSet, direction=github.GithubObject.NotSet, since=github.GithubObject.NotSet):
+        """
+        :calls: `GET /repos/:owner/:repo/pulls/comments <http://developer.github.com/v3/pulls/comments>`_
+        :param sort: string
+        :param direction: string
+        :param since: datetime.datetime
+        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.PullRequestComment.PullRequestComment`
+        """
+        assert sort is github.GithubObject.NotSet or isinstance(sort, (str, unicode)), sort
+        assert direction is github.GithubObject.NotSet or isinstance(direction, (str, unicode)), direction
+        assert since is github.GithubObject.NotSet or isinstance(since, datetime.datetime), since
+        url_parameters = dict()
+        if sort is not github.GithubObject.NotSet:
+            url_parameters["sort"] = sort
+        if direction is not github.GithubObject.NotSet:
+            url_parameters["direction"] = direction
+        if since is not github.GithubObject.NotSet:
+            url_parameters["since"] = since.strftime("%Y-%m-%dT%H:%M:%SZ")
+        return github.PaginatedList.PaginatedList(
+            github.IssueComment.IssueComment,
+            self._requester,
+            self.url + "/pulls/comments",
+            url_parameters
+        )
+
+    def get_readme(self, ref=github.GithubObject.NotSet):
+        """
+        :calls: `GET /repos/:owner/:repo/readme <http://developer.github.com/v3/repos/contents>`_
+        :param ref: string
+        :rtype: :class:`github.ContentFile.ContentFile`
+        """
+        assert ref is github.GithubObject.NotSet or isinstance(ref, (str, unicode)), ref
+        url_parameters = dict()
+        if ref is not github.GithubObject.NotSet:
+            url_parameters["ref"] = ref
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            self.url + "/readme",
+            parameters=url_parameters
+        )
+        return github.ContentFile.ContentFile(self._requester, headers, data, completed=True)
+
+    def get_stargazers(self):
+        """
+        :calls: `GET /repos/:owner/:repo/stargazers <http://developer.github.com/v3/activity/starring>`_
+        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.NamedUser.NamedUser`
+        """
+        return github.PaginatedList.PaginatedList(
+            github.NamedUser.NamedUser,
+            self._requester,
+            self.url + "/stargazers",
+            None
+        )
+
+    def get_stats_contributors(self):
+        """
+        :calls: `GET /repos/:owner/:repo/stats/contributors <http://developer.github.com/v3/repos/statistics/#get-contributors-list-with-additions-deletions-and-commit-counts>`_
+        :rtype: None or list of :class:`github.StatsContributor.StatsContributor`
+        """
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            self.url + "/stats/contributors"
+        )
+        if data == {}:
+            return None
+        else:
+            return [
+                github.StatsContributor.StatsContributor(self._requester, headers, attributes, completed=True)
+                for attributes in data
+            ]
+
+    def get_stats_commit_activity(self):
+        """
+        :calls: `GET /repos/:owner/:repo/stats/commit_activity <developer.github.com/v3/repos/statistics/#get-the-number-of-commits-per-hour-in-each-day>`_
+        :rtype: None or list of :class:`github.StatsCommitActivity.StatsCommitActivity`
+        """
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            self.url + "/stats/commit_activity"
+        )
+        if data == {}:
+            return None
+        else:
+            return [
+                github.StatsCommitActivity.StatsCommitActivity(self._requester, headers, attributes, completed=True)
+                for attributes in data
+            ]
+
+    def get_stats_code_frequency(self):
+        """
+        :calls: `GET /repos/:owner/:repo/stats/code_frequency <http://developer.github.com/v3/repos/statistics/#get-the-number-of-additions-and-deletions-per-week>`_
+        :rtype: None or list of :class:`github.StatsCodeFrequency.StatsCodeFrequency`
+        """
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            self.url + "/stats/code_frequency"
+        )
+        if data == {}:
+            return None
+        else:
+            return [
+                github.StatsCodeFrequency.StatsCodeFrequency(self._requester, headers, attributes, completed=True)
+                for attributes in data
+            ]
+
+    def get_stats_participation(self):
+        """
+        :calls: `GET /repos/:owner/:repo/stats/participation <http://developer.github.com/v3/repos/statistics/#get-the-weekly-commit-count-for-the-repo-owner-and-everyone-else>`_
+        :rtype: None or :class:`github.StatsParticipation.StatsParticipation`
+        """
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            self.url + "/stats/participation"
+        )
+        if data == {}:
+            return None
+        else:
+            return github.StatsParticipation.StatsParticipation(self._requester, headers, data, completed=True)
+
+    def get_stats_punch_card(self):
+        """
+        :calls: `GET /repos/:owner/:repo/stats/punch_card <http://developer.github.com/v3/repos/statistics/#get-the-number-of-commits-per-hour-in-each-day>`_
+        :rtype: None or :class:`github.StatsPunchCard.StatsPunchCard`
+        """
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            self.url + "/stats/punch_card"
+        )
+        if data == {}:
+            return None
+        else:
+            return github.StatsPunchCard.StatsPunchCard(self._requester, headers, data, completed=True)
+
+    def get_subscribers(self):
+        """
+        :calls: `GET /repos/:owner/:repo/subscribers <http://developer.github.com/v3/activity/watching>`_
+        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.NamedUser.NamedUser`
+        """
+        return github.PaginatedList.PaginatedList(
+            github.NamedUser.NamedUser,
+            self._requester,
+            self.url + "/subscribers",
+            None
+        )
+
+    def get_tags(self):
+        """
+        :calls: `GET /repos/:owner/:repo/tags <http://developer.github.com/v3/repos>`_
+        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Tag.Tag`
+        """
+        return github.PaginatedList.PaginatedList(
+            github.Tag.Tag,
+            self._requester,
+            self.url + "/tags",
+            None
+        )
+
+    def get_teams(self):
+        """
+        :calls: `GET /repos/:owner/:repo/teams <http://developer.github.com/v3/repos>`_
+        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Team.Team`
+        """
+        return github.PaginatedList.PaginatedList(
+            github.Team.Team,
+            self._requester,
+            self.url + "/teams",
+            None
+        )
+
+    def get_watchers(self):
+        """
+        :calls: `GET /repos/:owner/:repo/watchers <http://developer.github.com/v3/activity/starring>`_
+        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.NamedUser.NamedUser`
+        """
+        return github.PaginatedList.PaginatedList(
+            github.NamedUser.NamedUser,
+            self._requester,
+            self.url + "/watchers",
+            None
+        )
+
+    def has_in_assignees(self, assignee):
+        """
+        :calls: `GET /repos/:owner/:repo/assignees/:assignee <http://developer.github.com/v3/issues/assignees>`_
+        :param assignee: string or :class:`github.NamedUser.NamedUser`
+        :rtype: bool
+        """
+        assert isinstance(assignee, github.NamedUser.NamedUser) or isinstance(assignee, (str, unicode)), assignee
+
+        if isinstance(assignee, github.NamedUser.NamedUser):
+            assignee = assignee._identity
+
+        status, headers, data = self._requester.requestJson(
+            "GET",
+            self.url + "/assignees/" + assignee
+        )
+        return status == 204
+
+    def has_in_collaborators(self, collaborator):
+        """
+        :calls: `GET /repos/:owner/:repo/collaborators/:user <http://developer.github.com/v3/repos/collaborators>`_
+        :param collaborator: string or :class:`github.NamedUser.NamedUser`
+        :rtype: bool
+        """
+        assert isinstance(collaborator, github.NamedUser.NamedUser) or isinstance(collaborator, (str, unicode)), collaborator
+
+        if isinstance(collaborator, github.NamedUser.NamedUser):
+            collaborator = collaborator._identity
+
+        status, headers, data = self._requester.requestJson(
+            "GET",
+            self.url + "/collaborators/" + collaborator
+        )
+        return status == 204
+
+    def legacy_search_issues(self, state, keyword):
+        """
+        :calls: `GET /legacy/issues/search/:owner/:repository/:state/:keyword <http://developer.github.com/v3/search/legacy>`_
+        :param state: "open" or "closed"
+        :param keyword: string
+        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Issue.Issue`
+        """
+        assert state in ["open", "closed"], state
+        assert isinstance(keyword, (str, unicode)), keyword
+        headers, data = self._requester.requestJsonAndCheck(
+            "GET",
+            "/legacy/issues/search/" + self.owner.login + "/" + self.name + "/" + state + "/" + urllib.quote(keyword)
+        )
+        return [
+            github.Issue.Issue(self._requester, headers, github.Legacy.convertIssue(element), completed=False)
+            for element in data["issues"]
+        ]
+
+    def merge(self, base, head, commit_message=github.GithubObject.NotSet):
+        """
+        :calls: `POST /repos/:owner/:repo/merges <http://developer.github.com/v3/repos/merging>`_
+        :param base: string
+        :param head: string
+        :param commit_message: string
+        :rtype: :class:`github.Commit.Commit`
+        """
+        assert isinstance(base, (str, unicode)), base
+        assert isinstance(head, (str, unicode)), head
+        assert commit_message is github.GithubObject.NotSet or isinstance(commit_message, (str, unicode)), commit_message
+        post_parameters = {
+            "base": base,
+            "head": head,
+        }
+        if commit_message is not github.GithubObject.NotSet:
+            post_parameters["commit_message"] = commit_message
+        headers, data = self._requester.requestJsonAndCheck(
+            "POST",
+            self.url + "/merges",
+            input=post_parameters
+        )
+        if data is None:
+            return None
+        else:
+            return github.Commit.Commit(self._requester, headers, data, completed=True)
+
+    def remove_from_collaborators(self, collaborator):
+        """
+        :calls: `DELETE /repos/:owner/:repo/collaborators/:user <http://developer.github.com/v3/repos/collaborators>`_
+        :param collaborator: string or :class:`github.NamedUser.NamedUser`
+        :rtype: None
+        """
+        assert isinstance(collaborator, github.NamedUser.NamedUser) or isinstance(collaborator, (str, unicode)), collaborator
+
+        if isinstance(collaborator, github.NamedUser.NamedUser):
+            collaborator = collaborator._identity
+
+        headers, data = self._requester.requestJsonAndCheck(
+            "DELETE",
+            self.url + "/collaborators/" + collaborator
+        )
+
+    def subscribe_to_hub(self, event, callback, secret=github.GithubObject.NotSet):
+        """
+        :calls: `POST /hub <http://developer.github.com/>`_
+        :param event: string
+        :param callback: string
+        :param secret: string
+        :rtype: None
+        """
+        return self._hub("subscribe", event, callback, secret)
+
+    def unsubscribe_from_hub(self, event, callback):
+        """
+        :calls: `POST /hub <http://developer.github.com/>`_
+        :param event: string
+        :param callback: string
+        :param secret: string
+        :rtype: None
+        """
+        return self._hub("unsubscribe", event, callback, github.GithubObject.NotSet)
+
+    def _hub(self, mode, event, callback, secret):
+        assert isinstance(mode, (str, unicode)), mode
+        assert isinstance(event, (str, unicode)), event
+        assert isinstance(callback, (str, unicode)), callback
+        assert secret is github.GithubObject.NotSet or isinstance(secret, (str, unicode)), secret
+
+        post_parameters = {
+            "hub.mode": mode,
+            "hub.topic": "https://github.com/" + self.full_name + "/events/" + event,
+            "hub.callback": callback,
+        }
+        if secret is not github.GithubObject.NotSet:
+            post_parameters["hub.secret"] = secret
+
+        headers, output = self._requester.requestMultipartAndCheck(
+            "POST",
+            "/hub",
+            input=post_parameters
+        )
+
+    @property
+    def _identity(self):
+        return self.owner.login + "/" + self.name
+
+    def _initAttributes(self):
+        self._archive_url = github.GithubObject.NotSet
+        self._assignees_url = github.GithubObject.NotSet
+        self._blobs_url = github.GithubObject.NotSet
+        self._branches_url = github.GithubObject.NotSet
+        self._clone_url = github.GithubObject.NotSet
+        self._collaborators_url = github.GithubObject.NotSet
+        self._comments_url = github.GithubObject.NotSet
+        self._commits_url = github.GithubObject.NotSet
+        self._compare_url = github.GithubObject.NotSet
+        self._contents_url = github.GithubObject.NotSet
+        self._contributors_url = github.GithubObject.NotSet
+        self._created_at = github.GithubObject.NotSet
+        self._default_branch = github.GithubObject.NotSet
+        self._description = github.GithubObject.NotSet
+        self._downloads_url = github.GithubObject.NotSet
+        self._events_url = github.GithubObject.NotSet
+        self._fork = github.GithubObject.NotSet
+        self._forks = github.GithubObject.NotSet
+        self._forks_count = github.GithubObject.NotSet
+        self._forks_url = github.GithubObject.NotSet
+        self._full_name = github.GithubObject.NotSet
+        self._git_commits_url = github.GithubObject.NotSet
+        self._git_refs_url = github.GithubObject.NotSet
+        self._git_tags_url = github.GithubObject.NotSet
+        self._git_url = github.GithubObject.NotSet
+        self._has_downloads = github.GithubObject.NotSet
+        self._has_issues = github.GithubObject.NotSet
+        self._has_wiki = github.GithubObject.NotSet
+        self._homepage = github.GithubObject.NotSet
+        self._hooks_url = github.GithubObject.NotSet
+        self._html_url = github.GithubObject.NotSet
+        self._id = github.GithubObject.NotSet
+        self._issue_comment_url = github.GithubObject.NotSet
+        self._issue_events_url = github.GithubObject.NotSet
+        self._issues_url = github.GithubObject.NotSet
+        self._keys_url = github.GithubObject.NotSet
+        self._labels_url = github.GithubObject.NotSet
+        self._language = github.GithubObject.NotSet
+        self._languages_url = github.GithubObject.NotSet
+        self._master_branch = github.GithubObject.NotSet
+        self._merges_url = github.GithubObject.NotSet
+        self._milestones_url = github.GithubObject.NotSet
+        self._mirror_url = github.GithubObject.NotSet
+        self._name = github.GithubObject.NotSet
+        self._network_count = github.GithubObject.NotSet
+        self._notifications_url = github.GithubObject.NotSet
+        self._open_issues = github.GithubObject.NotSet
+        self._open_issues_count = github.GithubObject.NotSet
+        self._organization = github.GithubObject.NotSet
+        self._owner = github.GithubObject.NotSet
+        self._parent = github.GithubObject.NotSet
+        self._permissions = github.GithubObject.NotSet
+        self._private = github.GithubObject.NotSet
+        self._pulls_url = github.GithubObject.NotSet
+        self._pushed_at = github.GithubObject.NotSet
+        self._size = github.GithubObject.NotSet
+        self._source = github.GithubObject.NotSet
+        self._ssh_url = github.GithubObject.NotSet
+        self._stargazers_count = github.GithubObject.NotSet
+        self._stargazers_url = github.GithubObject.NotSet
+        self._statuses_url = github.GithubObject.NotSet
+        self._subscribers_url = github.GithubObject.NotSet
+        self._subscription_url = github.GithubObject.NotSet
+        self._svn_url = github.GithubObject.NotSet
+        self._tags_url = github.GithubObject.NotSet
+        self._teams_url = github.GithubObject.NotSet
+        self._trees_url = github.GithubObject.NotSet
+        self._updated_at = github.GithubObject.NotSet
+        self._url = github.GithubObject.NotSet
+        self._watchers = github.GithubObject.NotSet
+        self._watchers_count = github.GithubObject.NotSet
+
+    def _useAttributes(self, attributes):
+        if "archive_url" in attributes:  # pragma no branch
+            self._archive_url = self._makeStringAttribute(attributes["archive_url"])
+        if "assignees_url" in attributes:  # pragma no branch
+            self._assignees_url = self._makeStringAttribute(attributes["assignees_url"])
+        if "blobs_url" in attributes:  # pragma no branch
+            self._blobs_url = self._makeStringAttribute(attributes["blobs_url"])
+        if "branches_url" in attributes:  # pragma no branch
+            self._branches_url = self._makeStringAttribute(attributes["branches_url"])
+        if "clone_url" in attributes:  # pragma no branch
+            self._clone_url = self._makeStringAttribute(attributes["clone_url"])
+        if "collaborators_url" in attributes:  # pragma no branch
+            self._collaborators_url = self._makeStringAttribute(attributes["collaborators_url"])
+        if "comments_url" in attributes:  # pragma no branch
+            self._comments_url = self._makeStringAttribute(attributes["comments_url"])
+        if "commits_url" in attributes:  # pragma no branch
+            self._commits_url = self._makeStringAttribute(attributes["commits_url"])
+        if "compare_url" in attributes:  # pragma no branch
+            self._compare_url = self._makeStringAttribute(attributes["compare_url"])
+        if "contents_url" in attributes:  # pragma no branch
+            self._contents_url = self._makeStringAttribute(attributes["contents_url"])
+        if "contributors_url" in attributes:  # pragma no branch
+            self._contributors_url = self._makeStringAttribute(attributes["contributors_url"])
+        if "created_at" in attributes:  # pragma no branch
+            self._created_at = self._makeDatetimeAttribute(attributes["created_at"])
+        if "default_branch" in attributes:  # pragma no branch
+            self._default_branch = self._makeStringAttribute(attributes["default_branch"])
+        if "description" in attributes:  # pragma no branch
+            self._description = self._makeStringAttribute(attributes["description"])
+        if "downloads_url" in attributes:  # pragma no branch
+            self._downloads_url = self._makeStringAttribute(attributes["downloads_url"])
+        if "events_url" in attributes:  # pragma no branch
+            self._events_url = self._makeStringAttribute(attributes["events_url"])
+        if "fork" in attributes:  # pragma no branch
+            self._fork = self._makeBoolAttribute(attributes["fork"])
+        if "forks" in attributes:  # pragma no branch
+            self._forks = self._makeIntAttribute(attributes["forks"])
+        if "forks_count" in attributes:  # pragma no branch
+            self._forks_count = self._makeIntAttribute(attributes["forks_count"])
+        if "forks_url" in attributes:  # pragma no branch
+            self._forks_url = self._makeStringAttribute(attributes["forks_url"])
+        if "full_name" in attributes:  # pragma no branch
+            self._full_name = self._makeStringAttribute(attributes["full_name"])
+        if "git_commits_url" in attributes:  # pragma no branch
+            self._git_commits_url = self._makeStringAttribute(attributes["git_commits_url"])
+        if "git_refs_url" in attributes:  # pragma no branch
+            self._git_refs_url = self._makeStringAttribute(attributes["git_refs_url"])
+        if "git_tags_url" in attributes:  # pragma no branch
+            self._git_tags_url = self._makeStringAttribute(attributes["git_tags_url"])
+        if "git_url" in attributes:  # pragma no branch
+            self._git_url = self._makeStringAttribute(attributes["git_url"])
+        if "has_downloads" in attributes:  # pragma no branch
+            self._has_downloads = self._makeBoolAttribute(attributes["has_downloads"])
+        if "has_issues" in attributes:  # pragma no branch
+            self._has_issues = self._makeBoolAttribute(attributes["has_issues"])
+        if "has_wiki" in attributes:  # pragma no branch
+            self._has_wiki = self._makeBoolAttribute(attributes["has_wiki"])
+        if "homepage" in attributes:  # pragma no branch
+            self._homepage = self._makeStringAttribute(attributes["homepage"])
+        if "hooks_url" in attributes:  # pragma no branch
+            self._hooks_url = self._makeStringAttribute(attributes["hooks_url"])
+        if "html_url" in attributes:  # pragma no branch
+            self._html_url = self._makeStringAttribute(attributes["html_url"])
+        if "id" in attributes:  # pragma no branch
+            self._id = self._makeIntAttribute(attributes["id"])
+        if "issue_comment_url" in attributes:  # pragma no branch
+            self._issue_comment_url = self._makeStringAttribute(attributes["issue_comment_url"])
+        if "issue_events_url" in attributes:  # pragma no branch
+            self._issue_events_url = self._makeStringAttribute(attributes["issue_events_url"])
+        if "issues_url" in attributes:  # pragma no branch
+            self._issues_url = self._makeStringAttribute(attributes["issues_url"])
+        if "keys_url" in attributes:  # pragma no branch
+            self._keys_url = self._makeStringAttribute(attributes["keys_url"])
+        if "labels_url" in attributes:  # pragma no branch
+            self._labels_url = self._makeStringAttribute(attributes["labels_url"])
+        if "language" in attributes:  # pragma no branch
+            self._language = self._makeStringAttribute(attributes["language"])
+        if "languages_url" in attributes:  # pragma no branch
+            self._languages_url = self._makeStringAttribute(attributes["languages_url"])
+        if "master_branch" in attributes:  # pragma no branch
+            self._master_branch = self._makeStringAttribute(attributes["master_branch"])
+        if "merges_url" in attributes:  # pragma no branch
+            self._merges_url = self._makeStringAttribute(attributes["merges_url"])
+        if "milestones_url" in attributes:  # pragma no branch
+            self._milestones_url = self._makeStringAttribute(attributes["milestones_url"])
+        if "mirror_url" in attributes:  # pragma no branch
+            self._mirror_url = self._makeStringAttribute(attributes["mirror_url"])
+        if "name" in attributes:  # pragma no branch
+            self._name = self._makeStringAttribute(attributes["name"])
+        if "network_count" in attributes:  # pragma no branch
+            self._network_count = self._makeIntAttribute(attributes["network_count"])
+        if "notifications_url" in attributes:  # pragma no branch
+            self._notifications_url = self._makeStringAttribute(attributes["notifications_url"])
+        if "open_issues" in attributes:  # pragma no branch
+            self._open_issues = self._makeIntAttribute(attributes["open_issues"])
+        if "open_issues_count" in attributes:  # pragma no branch
+            self._open_issues_count = self._makeIntAttribute(attributes["open_issues_count"])
+        if "organization" in attributes:  # pragma no branch
+            self._organization = self._makeClassAttribute(github.Organization.Organization, attributes["organization"])
+        if "owner" in attributes:  # pragma no branch
+            self._owner = self._makeClassAttribute(github.NamedUser.NamedUser, attributes["owner"])
+        if "parent" in attributes:  # pragma no branch
+            self._parent = self._makeClassAttribute(Repository, attributes["parent"])
+        if "permissions" in attributes:  # pragma no branch
+            self._permissions = self._makeClassAttribute(github.Permissions.Permissions, attributes["permissions"])
+        if "private" in attributes:  # pragma no branch
+            self._private = self._makeBoolAttribute(attributes["private"])
+        if "pulls_url" in attributes:  # pragma no branch
+            self._pulls_url = self._makeStringAttribute(attributes["pulls_url"])
+        if "pushed_at" in attributes:  # pragma no branch
+            self._pushed_at = self._makeDatetimeAttribute(attributes["pushed_at"])
+        if "size" in attributes:  # pragma no branch
+            self._size = self._makeIntAttribute(attributes["size"])
+        if "source" in attributes:  # pragma no branch
+            self._source = self._makeClassAttribute(Repository, attributes["source"])
+        if "ssh_url" in attributes:  # pragma no branch
+            self._ssh_url = self._makeStringAttribute(attributes["ssh_url"])
+        if "stargazers_count" in attributes:  # pragma no branch
+            self._stargazers_count = self._makeIntAttribute(attributes["stargazers_count"])
+        if "stargazers_url" in attributes:  # pragma no branch
+            self._stargazers_url = self._makeStringAttribute(attributes["stargazers_url"])
+        if "statuses_url" in attributes:  # pragma no branch
+            self._statuses_url = self._makeStringAttribute(attributes["statuses_url"])
+        if "subscribers_url" in attributes:  # pragma no branch
+            self._subscribers_url = self._makeStringAttribute(attributes["subscribers_url"])
+        if "subscription_url" in attributes:  # pragma no branch
+            self._subscription_url = self._makeStringAttribute(attributes["subscription_url"])
+        if "svn_url" in attributes:  # pragma no branch
+            self._svn_url = self._makeStringAttribute(attributes["svn_url"])
+        if "tags_url" in attributes:  # pragma no branch
+            self._tags_url = self._makeStringAttribute(attributes["tags_url"])
+        if "teams_url" in attributes:  # pragma no branch
+            self._teams_url = self._makeStringAttribute(attributes["teams_url"])
+        if "trees_url" in attributes:  # pragma no branch
+            self._trees_url = self._makeStringAttribute(attributes["trees_url"])
+        if "updated_at" in attributes:  # pragma no branch
+            self._updated_at = self._makeDatetimeAttribute(attributes["updated_at"])
+        if "url" in attributes:  # pragma no branch
+            self._url = self._makeStringAttribute(attributes["url"])
+        if "watchers" in attributes:  # pragma no branch
+            self._watchers = self._makeIntAttribute(attributes["watchers"])
+        if "watchers_count" in attributes:  # pragma no branch
+            self._watchers_count = self._makeIntAttribute(attributes["watchers_count"])