Merge branch 'develop' into topic/ExperimentOnDocumentation

Conflicts:
	ReadMe.md
	doc/ChangeLog.md
	doc/ReferenceOfApis.md
	doc/ReferenceOfClasses.md
	github/AuthenticatedUser.py
	github/Authorization.py
	github/CommitComment.py
	github/ContentFile.py
	github/Download.py
	github/Gist.py
	github/GistComment.py
	github/GitRef.py
	github/Github.py
	github/Hook.py
	github/Issue.py
	github/IssueComment.py
	github/Label.py
	github/Milestone.py
	github/PullRequest.py
	github/PullRequestComment.py
	github/Repository.py
	github/RepositoryKey.py
	github/Team.py
	github/UserKey.py
	setup.py
This commit is contained in:
Vincent Jacques
2013-02-16 19:57:13 +01:00
60 changed files with 659 additions and 180 deletions
+112 -42
View File
@@ -299,7 +299,7 @@ class Repository(github.GithubObject.GithubObject):
:rtype: None
"""
assert isinstance(collaborator, github.NamedUser.NamedUser), collaborator
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"PUT",
self.url + "/collaborators/" + collaborator._identity,
None,
@@ -315,7 +315,7 @@ class Repository(github.GithubObject.GithubObject):
"""
assert isinstance(base, (str, unicode)), base
assert isinstance(head, (str, unicode)), head
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/compare/" + base + "..." + head,
None,
@@ -344,7 +344,7 @@ class Repository(github.GithubObject.GithubObject):
post_parameters["description"] = description
if content_type is not github.GithubObject.NotSet:
post_parameters["content_type"] = content_type
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/downloads",
None,
@@ -365,7 +365,7 @@ class Repository(github.GithubObject.GithubObject):
"content": content,
"encoding": encoding,
}
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/git/blobs",
None,
@@ -397,7 +397,7 @@ class Repository(github.GithubObject.GithubObject):
post_parameters["author"] = author._identity
if committer is not github.GithubObject.NotSet:
post_parameters["committer"] = committer._identity
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/git/commits",
None,
@@ -418,7 +418,7 @@ class Repository(github.GithubObject.GithubObject):
"ref": ref,
"sha": sha,
}
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/git/refs",
None,
@@ -449,7 +449,7 @@ class Repository(github.GithubObject.GithubObject):
}
if tagger is not github.GithubObject.NotSet:
post_parameters["tagger"] = tagger._identity
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/git/tags",
None,
@@ -471,7 +471,7 @@ class Repository(github.GithubObject.GithubObject):
}
if base_tree is not github.GithubObject.NotSet:
post_parameters["base_tree"] = base_tree._identity
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/git/trees",
None,
@@ -500,7 +500,7 @@ class Repository(github.GithubObject.GithubObject):
post_parameters["events"] = events
if active is not github.GithubObject.NotSet:
post_parameters["active"] = active
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/hooks",
None,
@@ -534,7 +534,7 @@ class Repository(github.GithubObject.GithubObject):
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.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/issues",
None,
@@ -555,7 +555,7 @@ class Repository(github.GithubObject.GithubObject):
"title": title,
"key": key,
}
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/keys",
None,
@@ -576,7 +576,7 @@ class Repository(github.GithubObject.GithubObject):
"name": name,
"color": color,
}
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/labels",
None,
@@ -606,7 +606,7 @@ class Repository(github.GithubObject.GithubObject):
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.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/milestones",
None,
@@ -644,7 +644,7 @@ class Repository(github.GithubObject.GithubObject):
def __create_pull(self, **kwds):
post_parameters = kwds
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/pulls",
None,
@@ -657,7 +657,7 @@ class Repository(github.GithubObject.GithubObject):
:calls: `DELETE /repos/:user/:repo <http://developer.github.com/v3/todo>`_
:rtype: None
"""
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
self.url,
None,
@@ -702,7 +702,7 @@ class Repository(github.GithubObject.GithubObject):
post_parameters["has_downloads"] = has_downloads
if default_branch is not github.GithubObject.NotSet:
post_parameters["default_branch"] = default_branch
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"PATCH",
self.url,
None,
@@ -722,7 +722,7 @@ class Repository(github.GithubObject.GithubObject):
url = self.url + "/" + archive_format
if ref is not github.GithubObject.NotSet:
url += "/" + ref
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"GET",
url,
None,
@@ -749,7 +749,7 @@ class Repository(github.GithubObject.GithubObject):
:rtype: :class:`github.Branch.Branch`
"""
assert isinstance(branch, (str, unicode)), branch
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/branches/" + branch,
None,
@@ -788,7 +788,7 @@ class Repository(github.GithubObject.GithubObject):
:rtype: :class:`github.CommitComment.CommitComment`
"""
assert isinstance(id, (int, long)), id
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/comments/" + str(id),
None,
@@ -815,7 +815,7 @@ class Repository(github.GithubObject.GithubObject):
:rtype: :class:`github.Commit.Commit`
"""
assert isinstance(sha, (str, unicode)), sha
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/commits/" + sha,
None,
@@ -846,7 +846,14 @@ class Repository(github.GithubObject.GithubObject):
def get_contents(self, path, ref=github.GithubObject.NotSet):
"""
:calls: `GET /repos/:user/:repo/contents/:path <http://developer.github.com/v3/todo>`_
: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):
"""
:param path: string
:param ref: string
:rtype: :class:`github.ContentFile.ContentFile`
@@ -856,7 +863,7 @@ class Repository(github.GithubObject.GithubObject):
url_parameters = dict()
if ref is not github.GithubObject.NotSet:
url_parameters["ref"] = ref
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/contents" + path,
url_parameters,
@@ -864,6 +871,28 @@ class Repository(github.GithubObject.GithubObject):
)
return github.ContentFile.ContentFile(self._requester, data, completed=True)
def get_dir_contents(self, path, ref=github.GithubObject.NotSet):
"""
: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,
url_parameters,
None
)
return [
github.ContentFile.ContentFile(self._requester, 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/:user/:repo/contributors <http://developer.github.com/v3/todo>`_
@@ -883,7 +912,7 @@ class Repository(github.GithubObject.GithubObject):
:rtype: :class:`github.Download.Download`
"""
assert isinstance(id, (int, long)), id
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/downloads/" + str(id),
None,
@@ -934,7 +963,7 @@ class Repository(github.GithubObject.GithubObject):
:rtype: :class:`github.GitBlob.GitBlob`
"""
assert isinstance(sha, (str, unicode)), sha
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/git/blobs/" + sha,
None,
@@ -949,7 +978,7 @@ class Repository(github.GithubObject.GithubObject):
:rtype: :class:`github.GitCommit.GitCommit`
"""
assert isinstance(sha, (str, unicode)), sha
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/git/commits/" + sha,
None,
@@ -967,7 +996,7 @@ class Repository(github.GithubObject.GithubObject):
if not self._requester.FIX_REPO_GET_GIT_REF:
prefix = "/git/"
assert isinstance(ref, (str, unicode)), ref
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + prefix + ref,
None,
@@ -994,7 +1023,7 @@ class Repository(github.GithubObject.GithubObject):
:rtype: :class:`github.GitTag.GitTag`
"""
assert isinstance(sha, (str, unicode)), sha
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/git/tags/" + sha,
None,
@@ -1014,7 +1043,7 @@ class Repository(github.GithubObject.GithubObject):
url_parameters = dict()
if recursive is not github.GithubObject.NotSet:
url_parameters["recursive"] = recursive
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/git/trees/" + sha,
url_parameters,
@@ -1029,7 +1058,7 @@ class Repository(github.GithubObject.GithubObject):
:rtype: :class:`github.Hook.Hook`
"""
assert isinstance(id, (int, long)), id
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/hooks/" + str(id),
None,
@@ -1056,7 +1085,7 @@ class Repository(github.GithubObject.GithubObject):
:rtype: :class:`github.Issue.Issue`
"""
assert isinstance(number, (int, long)), number
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/issues/" + str(number),
None,
@@ -1147,7 +1176,7 @@ class Repository(github.GithubObject.GithubObject):
:rtype: :class:`github.IssueEvent.IssueEvent`
"""
assert isinstance(id, (int, long)), id
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/issues/events/" + str(id),
None,
@@ -1174,7 +1203,7 @@ class Repository(github.GithubObject.GithubObject):
:rtype: :class:`github.RepositoryKey.RepositoryKey`
"""
assert isinstance(id, (int, long)), id
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/keys/" + str(id),
None,
@@ -1201,7 +1230,7 @@ class Repository(github.GithubObject.GithubObject):
:rtype: :class:`github.Label.Label`
"""
assert isinstance(name, (str, unicode)), name
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/labels/" + urllib.quote(name),
None,
@@ -1226,7 +1255,7 @@ class Repository(github.GithubObject.GithubObject):
:calls: `GET /repos/:user/:repo/languages <http://developer.github.com/v3/todo>`_
:rtype: dict of string to integer
"""
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/languages",
None,
@@ -1241,7 +1270,7 @@ class Repository(github.GithubObject.GithubObject):
:rtype: :class:`github.Milestone.Milestone`
"""
assert isinstance(number, (int, long)), number
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/milestones/" + str(number),
None,
@@ -1293,7 +1322,7 @@ class Repository(github.GithubObject.GithubObject):
:rtype: :class:`github.PullRequest.PullRequest`
"""
assert isinstance(number, (int, long)), number
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/pulls/" + str(number),
None,
@@ -1363,7 +1392,7 @@ class Repository(github.GithubObject.GithubObject):
url_parameters = dict()
if ref is not github.GithubObject.NotSet:
url_parameters["ref"] = ref
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/readme",
url_parameters,
@@ -1438,7 +1467,7 @@ class Repository(github.GithubObject.GithubObject):
:rtype: bool
"""
assert isinstance(assignee, github.NamedUser.NamedUser), assignee
status, headers, data = self._requester.requestRaw(
status, headers, data = self._requester.requestJson(
"GET",
self.url + "/assignees/" + assignee._identity,
None,
@@ -1453,7 +1482,7 @@ class Repository(github.GithubObject.GithubObject):
:rtype: bool
"""
assert isinstance(collaborator, github.NamedUser.NamedUser), collaborator
status, headers, data = self._requester.requestRaw(
status, headers, data = self._requester.requestJson(
"GET",
self.url + "/collaborators/" + collaborator._identity,
None,
@@ -1470,7 +1499,7 @@ class Repository(github.GithubObject.GithubObject):
"""
assert state in ["open", "closed"], state
assert isinstance(keyword, (str, unicode)), keyword
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"GET",
"/legacy/issues/search/" + self.owner.login + "/" + self.name + "/" + state + "/" + urllib.quote(keyword),
None,
@@ -1498,7 +1527,7 @@ class Repository(github.GithubObject.GithubObject):
}
if commit_message is not github.GithubObject.NotSet:
post_parameters["commit_message"] = commit_message
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/merges",
None,
@@ -1516,13 +1545,54 @@ class Repository(github.GithubObject.GithubObject):
:rtype: None
"""
assert isinstance(collaborator, github.NamedUser.NamedUser), collaborator
headers, data = self._requester.requestAndCheck(
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
self.url + "/collaborators/" + collaborator._identity,
None,
None
)
def subscribe_to_hub(self, event, callback, secret=github.GithubObject.NotSet):
"""
:calls: `POST /hub <http://developer.github.com/v3/todo>`_
: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/v3/todo>`_
: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
responseHeaders, output = self._requester.requestMultipartAndCheck(
"POST",
"/hub",
None,
post_parameters,
)
@property
def _identity(self):
return self.owner.login + "/" + self.name