From ea4bd8c9ad94a2e38bc272c9f9ff8cfdccea4c03 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 08:27:42 +0800 Subject: [PATCH 001/103] Update .gitignore to ignore eproject settings and custom build batch files --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 98aa8eff..3a7eff09 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,6 @@ GithubCredentials.py /PyGithub.egg-info/ /.coverage /developer.github.com/ + +*.cfg +*.bat From cfbe7fb0b0e8f72f8725e48a4155ab0338d9773f Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 11:21:15 +0800 Subject: [PATCH 002/103] Change GithubObject.__init__ without breaking build. --- github/GithubObject.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/github/GithubObject.py b/github/GithubObject.py index 8178d8e7..ba1feba7 100644 --- a/github/GithubObject.py +++ b/github/GithubObject.py @@ -38,8 +38,9 @@ class GithubObject(object): """ Base class for all classes representing objects returned by the API. """ - def __init__(self, requester, attributes, completed): + def __init__(self, requester, headers, attributes, completed): self._requester = requester + self._headers = headers; self._initAttributes() self._storeAndUseAttributes(attributes) @@ -79,13 +80,18 @@ class GithubObject(object): class NonCompletableGithubObject(GithubObject): + def __init__(self, requester, attributes, completed): + ''' + Adapte for __init__ change, remove later + ''' + GithubObject.__init__(self, requester, {}, attributes, completed) def _completeIfNeeded(self): pass class CompletableGithubObject(GithubObject): def __init__(self, requester, attributes, completed): - GithubObject.__init__(self, requester, attributes, completed) + GithubObject.__init__(self, requester, {}, attributes, completed) self.__completed = completed def _completeIfNotSet(self, value): From 0bc138b490b0b9d7ebc5e539547b88e062dd127d Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 12:32:41 +0800 Subject: [PATCH 003/103] Change NonCompletableGithubObject without breaking build. --- github/Branch.py | 5 +++++ github/CommitStats.py | 5 +++++ github/CommitStatus.py | 5 +++++ github/Event.py | 5 +++++ github/File.py | 5 +++++ github/GistFile.py | 5 +++++ github/GitAuthor.py | 5 +++++ github/GitObject.py | 5 +++++ github/GitTreeElement.py | 5 +++++ github/GithubObject.py | 11 ++++++----- github/GitignoreTemplate.py | 5 +++++ github/HookDescription.py | 5 +++++ github/HookResponse.py | 5 +++++ github/IssuePullRequest.py | 5 +++++ github/NotificationSubject.py | 5 +++++ github/PaginatedList.py | 34 +++++++++++++++++++++++--------- github/Permissions.py | 5 +++++ github/Plan.py | 5 +++++ github/PullRequestMergeStatus.py | 5 +++++ github/PullRequestPart.py | 5 +++++ github/Tag.py | 5 +++++ 21 files changed, 126 insertions(+), 14 deletions(-) diff --git a/github/Branch.py b/github/Branch.py index 11f074d5..6e9f094f 100644 --- a/github/Branch.py +++ b/github/Branch.py @@ -33,6 +33,11 @@ class Branch(github.GithubObject.NonCompletableGithubObject): """ This class represents Branchs. The reference can be found here http://developer.github.com/v3/repos/#list-branches """ + def __init__(self, requester, attributes, completed): + ''' + Adapte for __init__ change, remove later + ''' + github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def commit(self): diff --git a/github/CommitStats.py b/github/CommitStats.py index 1be6a1d4..ce367f48 100644 --- a/github/CommitStats.py +++ b/github/CommitStats.py @@ -30,6 +30,11 @@ class CommitStats(github.GithubObject.NonCompletableGithubObject): """ This class represents CommitStatss as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + ''' + Adapte for __init__ change, remove later + ''' + github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def additions(self): diff --git a/github/CommitStatus.py b/github/CommitStatus.py index 122c55c4..b870cd30 100644 --- a/github/CommitStatus.py +++ b/github/CommitStatus.py @@ -32,6 +32,11 @@ class CommitStatus(github.GithubObject.NonCompletableGithubObject): """ This class represents CommitStatuss as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + ''' + Adapte for __init__ change, remove later + ''' + github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def created_at(self): diff --git a/github/Event.py b/github/Event.py index 60e7c863..bf185c4a 100644 --- a/github/Event.py +++ b/github/Event.py @@ -35,6 +35,11 @@ class Event(github.GithubObject.NonCompletableGithubObject): """ This class represents Events. The reference can be found here http://developer.github.com/v3/activity/events/ """ + def __init__(self, requester, attributes, completed): + ''' + Adapte for __init__ change, remove later + ''' + github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def actor(self): diff --git a/github/File.py b/github/File.py index 538fde6b..e126bac0 100644 --- a/github/File.py +++ b/github/File.py @@ -30,6 +30,11 @@ class File(github.GithubObject.NonCompletableGithubObject): """ This class represents Files as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + ''' + Adapte for __init__ change, remove later + ''' + github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def additions(self): diff --git a/github/GistFile.py b/github/GistFile.py index a153c7ba..458fd87e 100644 --- a/github/GistFile.py +++ b/github/GistFile.py @@ -30,6 +30,11 @@ class GistFile(github.GithubObject.NonCompletableGithubObject): """ This class represents GistFiles as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + ''' + Adapte for __init__ change, remove later + ''' + github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def content(self): diff --git a/github/GitAuthor.py b/github/GitAuthor.py index dd409dea..71d3b3c1 100644 --- a/github/GitAuthor.py +++ b/github/GitAuthor.py @@ -30,6 +30,11 @@ class GitAuthor(github.GithubObject.NonCompletableGithubObject): """ This class represents GitAuthors as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + ''' + Adapte for __init__ change, remove later + ''' + github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def date(self): diff --git a/github/GitObject.py b/github/GitObject.py index 2d29b437..2d18d850 100644 --- a/github/GitObject.py +++ b/github/GitObject.py @@ -30,6 +30,11 @@ class GitObject(github.GithubObject.NonCompletableGithubObject): """ This class represents GitObjects as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + ''' + Adapte for __init__ change, remove later + ''' + github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def sha(self): diff --git a/github/GitTreeElement.py b/github/GitTreeElement.py index bf361be0..f58b57b3 100644 --- a/github/GitTreeElement.py +++ b/github/GitTreeElement.py @@ -30,6 +30,11 @@ class GitTreeElement(github.GithubObject.NonCompletableGithubObject): """ This class represents GitTreeElements as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + ''' + Adapte for __init__ change, remove later + ''' + github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def mode(self): diff --git a/github/GithubObject.py b/github/GithubObject.py index ba1feba7..4289a445 100644 --- a/github/GithubObject.py +++ b/github/GithubObject.py @@ -80,17 +80,18 @@ class GithubObject(object): class NonCompletableGithubObject(GithubObject): - def __init__(self, requester, attributes, completed): - ''' - Adapte for __init__ change, remove later - ''' - GithubObject.__init__(self, requester, {}, attributes, completed) +# def __init__(self, requester, attributes, completed): +# ''' +# Adapte for __init__ change, remove later +# ''' +# GithubObject.__init__(self, requester, {}, attributes, completed) def _completeIfNeeded(self): pass class CompletableGithubObject(GithubObject): def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later GithubObject.__init__(self, requester, {}, attributes, completed) self.__completed = completed diff --git a/github/GitignoreTemplate.py b/github/GitignoreTemplate.py index a1b96d7c..82b6def9 100644 --- a/github/GitignoreTemplate.py +++ b/github/GitignoreTemplate.py @@ -29,6 +29,11 @@ class GitignoreTemplate(github.GithubObject.NonCompletableGithubObject): """ This class represents GitignoreTemplates as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + ''' + Adapte for __init__ change, remove later + ''' + github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def source(self): diff --git a/github/HookDescription.py b/github/HookDescription.py index 766cbfc7..3a665159 100644 --- a/github/HookDescription.py +++ b/github/HookDescription.py @@ -30,6 +30,11 @@ class HookDescription(github.GithubObject.NonCompletableGithubObject): """ This class represents HookDescriptions as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + ''' + Adapte for __init__ change, remove later + ''' + github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def events(self): diff --git a/github/HookResponse.py b/github/HookResponse.py index 87dc0ac0..8b3b0183 100644 --- a/github/HookResponse.py +++ b/github/HookResponse.py @@ -30,6 +30,11 @@ class HookResponse(github.GithubObject.NonCompletableGithubObject): """ This class represents HookResponses as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + ''' + Adapte for __init__ change, remove later + ''' + github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def code(self): diff --git a/github/IssuePullRequest.py b/github/IssuePullRequest.py index cdc1b44b..075b61ce 100644 --- a/github/IssuePullRequest.py +++ b/github/IssuePullRequest.py @@ -30,6 +30,11 @@ class IssuePullRequest(github.GithubObject.NonCompletableGithubObject): """ This class represents IssuePullRequests as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + ''' + Adapte for __init__ change, remove later + ''' + github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def diff_url(self): diff --git a/github/NotificationSubject.py b/github/NotificationSubject.py index d32977ea..4188e059 100644 --- a/github/NotificationSubject.py +++ b/github/NotificationSubject.py @@ -28,6 +28,11 @@ class NotificationSubject(github.GithubObject.NonCompletableGithubObject): """ This class represents Subjects of Notifications as returned for example by http://developer.github.com/v3/activity/notifications/#list-your-notifications """ + def __init__(self, requester, attributes, completed): + ''' + Adapte for __init__ change, remove later + ''' + github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def title(self): diff --git a/github/PaginatedList.py b/github/PaginatedList.py index 21de4ed4..effdb839 100644 --- a/github/PaginatedList.py +++ b/github/PaginatedList.py @@ -26,7 +26,7 @@ ################################################################################ import github.GithubObject - +import inspect class PaginatedListBase: def __init__(self): @@ -113,6 +113,28 @@ class PaginatedList(PaginatedListBase): def _couldGrow(self): return self.__nextUrl is not None + + def makePage(self, headers, data): + ''' + Adapte for diffrent __init__ signature in refactoring, remove when done + ''' + try: + if not inspect.isclass(self.__contentClass): + return [ + self.__contentClass(self.__requester, element, completed=False) + for element in data] + elif issubclass(self.__contentClass, github.GithubObject.NonCompletableGithubObject): + return [ + self.__contentClass(self.__requester, element, completed=False) + for element in data] + else: + return [ + self.__contentClass(self.__requester, element, completed=False) + for element in data] + except TypeError: # fix for some testcases, passed lambda in + print "WTF????????????????" + print self.__contentClass + raise def _fetchNextPage(self): headers, data = self.__requester.requestJsonAndCheck("GET", self.__nextUrl, self.__nextParams, None) @@ -124,10 +146,7 @@ class PaginatedList(PaginatedListBase): self.__nextUrl = None self.__nextParams = None - return [ - self.__contentClass(self.__requester, element, completed=False) - for element in data - ] + return self.makePage(headers, data) def __parseLinkHeader(self, headers): links = {} @@ -148,7 +167,4 @@ class PaginatedList(PaginatedListBase): params["per_page"] = self.__requester.per_page headers, data = self.__requester.requestJsonAndCheck("GET", self.__firstUrl, params, None) - return [ - self.__contentClass(self.__requester, element, completed=False) - for element in data - ] + return self.makePage(headers, data) diff --git a/github/Permissions.py b/github/Permissions.py index 8b9f3b39..3a346d76 100644 --- a/github/Permissions.py +++ b/github/Permissions.py @@ -30,6 +30,11 @@ class Permissions(github.GithubObject.NonCompletableGithubObject): """ This class represents Permissionss as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + ''' + Adapte for __init__ change, remove later + ''' + github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def admin(self): diff --git a/github/Plan.py b/github/Plan.py index 1daefc7c..638369b3 100644 --- a/github/Plan.py +++ b/github/Plan.py @@ -30,6 +30,11 @@ class Plan(github.GithubObject.NonCompletableGithubObject): """ This class represents Plans as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + ''' + Adapte for __init__ change, remove later + ''' + github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def collaborators(self): diff --git a/github/PullRequestMergeStatus.py b/github/PullRequestMergeStatus.py index f9bae790..7151b21f 100644 --- a/github/PullRequestMergeStatus.py +++ b/github/PullRequestMergeStatus.py @@ -31,6 +31,11 @@ class PullRequestMergeStatus(github.GithubObject.NonCompletableGithubObject): """ This class represents PullRequestMergeStatuss. The reference can be found here http://developer.github.com/v3/pulls/#get-if-a-pull-request-has-been-merged """ + def __init__(self, requester, attributes, completed): + ''' + Adapte for __init__ change, remove later + ''' + github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def merged(self): diff --git a/github/PullRequestPart.py b/github/PullRequestPart.py index 99778645..4a05fecc 100644 --- a/github/PullRequestPart.py +++ b/github/PullRequestPart.py @@ -33,6 +33,11 @@ class PullRequestPart(github.GithubObject.NonCompletableGithubObject): """ This class represents PullRequestParts as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + ''' + Adapte for __init__ change, remove later + ''' + github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def label(self): diff --git a/github/Tag.py b/github/Tag.py index 5a42f637..0b185f11 100644 --- a/github/Tag.py +++ b/github/Tag.py @@ -33,6 +33,11 @@ class Tag(github.GithubObject.NonCompletableGithubObject): """ This class represents Tags. The reference can be found here http://developer.github.com/v3/git/tags/ """ + def __init__(self, requester, attributes, completed): + ''' + Adapte for __init__ change, remove later + ''' + github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def commit(self): From b12c4b38c55ad9649541668950a01e6b3940a1bc Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 13:05:41 +0800 Subject: [PATCH 004/103] Update Tag.py --- github/PaginatedList.py | 26 +++++++++----------------- github/Tag.py | 5 ----- 2 files changed, 9 insertions(+), 22 deletions(-) diff --git a/github/PaginatedList.py b/github/PaginatedList.py index effdb839..cad474de 100644 --- a/github/PaginatedList.py +++ b/github/PaginatedList.py @@ -118,23 +118,15 @@ class PaginatedList(PaginatedListBase): ''' Adapte for diffrent __init__ signature in refactoring, remove when done ''' - try: - if not inspect.isclass(self.__contentClass): - return [ - self.__contentClass(self.__requester, element, completed=False) - for element in data] - elif issubclass(self.__contentClass, github.GithubObject.NonCompletableGithubObject): - return [ - self.__contentClass(self.__requester, element, completed=False) - for element in data] - else: - return [ - self.__contentClass(self.__requester, element, completed=False) - for element in data] - except TypeError: # fix for some testcases, passed lambda in - print "WTF????????????????" - print self.__contentClass - raise + try: # Try use old __init__ signature + return [ + self.__contentClass(self.__requester, element, completed=False) + for element in data] + except TypeError: # must be new + return [ + self.__contentClass(self.__requester, headers, element, completed=False) + for element in data] + def _fetchNextPage(self): headers, data = self.__requester.requestJsonAndCheck("GET", self.__nextUrl, self.__nextParams, None) diff --git a/github/Tag.py b/github/Tag.py index 0b185f11..5a42f637 100644 --- a/github/Tag.py +++ b/github/Tag.py @@ -33,11 +33,6 @@ class Tag(github.GithubObject.NonCompletableGithubObject): """ This class represents Tags. The reference can be found here http://developer.github.com/v3/git/tags/ """ - def __init__(self, requester, attributes, completed): - ''' - Adapte for __init__ change, remove later - ''' - github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def commit(self): From 9f6562cb625d30b08b053da44a059ace70ed366e Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 13:07:23 +0800 Subject: [PATCH 005/103] Update CommitStatus.py --- github/Commit.py | 2 +- github/CommitStatus.py | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/github/Commit.py b/github/Commit.py index de9da2d1..1b9c6955 100644 --- a/github/Commit.py +++ b/github/Commit.py @@ -158,7 +158,7 @@ class Commit(github.GithubObject.CompletableGithubObject): None, post_parameters ) - return github.CommitStatus.CommitStatus(self._requester, data, completed=True) + return github.CommitStatus.CommitStatus(self._requester, headers, data, completed=True) def get_comments(self): """ diff --git a/github/CommitStatus.py b/github/CommitStatus.py index b870cd30..122c55c4 100644 --- a/github/CommitStatus.py +++ b/github/CommitStatus.py @@ -32,11 +32,6 @@ class CommitStatus(github.GithubObject.NonCompletableGithubObject): """ This class represents CommitStatuss as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - ''' - Adapte for __init__ change, remove later - ''' - github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def created_at(self): From e8e8d174fb65249dd6aa41d3ec7993223dc83af4 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 13:08:48 +0800 Subject: [PATCH 006/103] Update Event.py --- github/Event.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/github/Event.py b/github/Event.py index bf185c4a..60e7c863 100644 --- a/github/Event.py +++ b/github/Event.py @@ -35,11 +35,6 @@ class Event(github.GithubObject.NonCompletableGithubObject): """ This class represents Events. The reference can be found here http://developer.github.com/v3/activity/events/ """ - def __init__(self, requester, attributes, completed): - ''' - Adapte for __init__ change, remove later - ''' - github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def actor(self): From 6943f6da7f84b05b8eae4555dbc598df2fe5ec01 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 13:10:32 +0800 Subject: [PATCH 007/103] Update Branch.py --- github/Branch.py | 5 ----- github/Repository.py | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/github/Branch.py b/github/Branch.py index 6e9f094f..11f074d5 100644 --- a/github/Branch.py +++ b/github/Branch.py @@ -33,11 +33,6 @@ class Branch(github.GithubObject.NonCompletableGithubObject): """ This class represents Branchs. The reference can be found here http://developer.github.com/v3/repos/#list-branches """ - def __init__(self, requester, attributes, completed): - ''' - Adapte for __init__ change, remove later - ''' - github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def commit(self): diff --git a/github/Repository.py b/github/Repository.py index fd3afbce..1fc28f2e 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -769,7 +769,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, None ) - return github.Branch.Branch(self._requester, data, completed=True) + return github.Branch.Branch(self._requester, headers, data, completed=True) def get_branches(self): """ From bb56857b4d5e9d85f26815a3da4c69f6bc718fbd Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 13:15:25 +0800 Subject: [PATCH 008/103] Update File.py --- github/Commit.py | 2 +- github/Comparison.py | 2 +- github/File.py | 5 ----- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/github/Commit.py b/github/Commit.py index 1b9c6955..132fff20 100644 --- a/github/Commit.py +++ b/github/Commit.py @@ -211,7 +211,7 @@ class Commit(github.GithubObject.CompletableGithubObject): if "files" in attributes: # pragma no branch assert attributes["files"] is None or all(isinstance(element, dict) for element in attributes["files"]), attributes["files"] self._files = None if attributes["files"] is None else [ - github.File.File(self._requester, element, completed=False) + github.File.File(self._requester, self._headers, element, completed=False) for element in attributes["files"] ] if "parents" in attributes: # pragma no branch diff --git a/github/Comparison.py b/github/Comparison.py index a67cb5ae..eb9eadd8 100644 --- a/github/Comparison.py +++ b/github/Comparison.py @@ -166,7 +166,7 @@ class Comparison(github.GithubObject.CompletableGithubObject): if "files" in attributes: # pragma no branch assert attributes["files"] is None or all(isinstance(element, dict) for element in attributes["files"]), attributes["files"] self._files = None if attributes["files"] is None else [ - github.File.File(self._requester, element, completed=False) + github.File.File(self._requester, self._headers, element, completed=False) for element in attributes["files"] ] if "html_url" in attributes: # pragma no branch diff --git a/github/File.py b/github/File.py index e126bac0..538fde6b 100644 --- a/github/File.py +++ b/github/File.py @@ -30,11 +30,6 @@ class File(github.GithubObject.NonCompletableGithubObject): """ This class represents Files as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - ''' - Adapte for __init__ change, remove later - ''' - github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def additions(self): From c2dd9452eabc70bf88fc4769e48df63c0de8ce8a Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 13:18:29 +0800 Subject: [PATCH 009/103] Update Gist.py --- github/Gist.py | 2 +- github/GistFile.py | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/github/Gist.py b/github/Gist.py index 66866a81..ed6aa37f 100644 --- a/github/Gist.py +++ b/github/Gist.py @@ -317,7 +317,7 @@ class Gist(github.GithubObject.CompletableGithubObject): if "files" in attributes: # pragma no branch assert attributes["files"] is None or all(isinstance(element, dict) for element in attributes["files"].itervalues()), attributes["files"] self._files = None if attributes["files"] is None else dict( - (key, github.GistFile.GistFile(self._requester, element, completed=False)) + (key, github.GistFile.GistFile(self._requester, self._headers, element, completed=False)) for key, element in attributes["files"].iteritems() ) if "fork_of" in attributes: # pragma no branch diff --git a/github/GistFile.py b/github/GistFile.py index 458fd87e..a153c7ba 100644 --- a/github/GistFile.py +++ b/github/GistFile.py @@ -30,11 +30,6 @@ class GistFile(github.GithubObject.NonCompletableGithubObject): """ This class represents GistFiles as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - ''' - Adapte for __init__ change, remove later - ''' - github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def content(self): From 4f1e05200d35e951fb52730c3d783c2942836695 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 13:21:49 +0800 Subject: [PATCH 010/103] Update GitAuthor.py --- github/GitAuthor.py | 5 ----- github/GitCommit.py | 4 ++-- github/GitTag.py | 14 +++++++++++++- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/github/GitAuthor.py b/github/GitAuthor.py index 71d3b3c1..dd409dea 100644 --- a/github/GitAuthor.py +++ b/github/GitAuthor.py @@ -30,11 +30,6 @@ class GitAuthor(github.GithubObject.NonCompletableGithubObject): """ This class represents GitAuthors as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - ''' - Adapte for __init__ change, remove later - ''' - github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def date(self): diff --git a/github/GitCommit.py b/github/GitCommit.py index c87ca26b..32af246a 100644 --- a/github/GitCommit.py +++ b/github/GitCommit.py @@ -106,10 +106,10 @@ class GitCommit(github.GithubObject.CompletableGithubObject): def _useAttributes(self, attributes): if "author" in attributes: # pragma no branch assert attributes["author"] is None or isinstance(attributes["author"], dict), attributes["author"] - self._author = None if attributes["author"] is None else github.GitAuthor.GitAuthor(self._requester, attributes["author"], completed=False) + self._author = None if attributes["author"] is None else github.GitAuthor.GitAuthor(self._requester, self._headers, attributes["author"], completed=False) if "committer" in attributes: # pragma no branch assert attributes["committer"] is None or isinstance(attributes["committer"], dict), attributes["committer"] - self._committer = None if attributes["committer"] is None else github.GitAuthor.GitAuthor(self._requester, attributes["committer"], completed=False) + self._committer = None if attributes["committer"] is None else github.GitAuthor.GitAuthor(self._requester, self._headers, attributes["committer"], completed=False) if "message" in attributes: # pragma no branch assert attributes["message"] is None or isinstance(attributes["message"], (str, unicode)), attributes["message"] self._message = attributes["message"] diff --git a/github/GitTag.py b/github/GitTag.py index 980328a0..0a745d22 100644 --- a/github/GitTag.py +++ b/github/GitTag.py @@ -105,7 +105,19 @@ class GitTag(github.GithubObject.CompletableGithubObject): self._tag = attributes["tag"] if "tagger" in attributes: # pragma no branch assert attributes["tagger"] is None or isinstance(attributes["tagger"], dict), attributes["tagger"] - self._tagger = None if attributes["tagger"] is None else github.GitAuthor.GitAuthor(self._requester, attributes["tagger"], completed=False) + self._tagger = None if attributes["tagger"] is None else github.GitAuthor.GitAuthor(self._requester, self._headers, attributes["tagger"], completed=False) if "url" in attributes: # pragma no branch assert attributes["url"] is None or isinstance(attributes["url"], (str, unicode)), attributes["url"] self._url = attributes["url"] + + + + + + + + + + + + From 0879cbb6ff5f349bc8f867dace06801cf8f04136 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 13:23:21 +0800 Subject: [PATCH 011/103] Update GitignoreTemplate.py --- github/GitignoreTemplate.py | 5 ----- github/MainClass.py | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/github/GitignoreTemplate.py b/github/GitignoreTemplate.py index 82b6def9..a1b96d7c 100644 --- a/github/GitignoreTemplate.py +++ b/github/GitignoreTemplate.py @@ -29,11 +29,6 @@ class GitignoreTemplate(github.GithubObject.NonCompletableGithubObject): """ This class represents GitignoreTemplates as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - ''' - Adapte for __init__ change, remove later - ''' - github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def source(self): diff --git a/github/MainClass.py b/github/MainClass.py index ff180ef4..4fbe3645 100644 --- a/github/MainClass.py +++ b/github/MainClass.py @@ -308,7 +308,7 @@ class Github(object): None, None ) - return GitignoreTemplate.GitignoreTemplate(self.__requester, attributes, completed=True) + return GitignoreTemplate.GitignoreTemplate(self.__requester, headers, attributes, completed=True) def create_from_raw_data(self, klass, raw_data): """ From 274ab70f874098d1a0385e636748f0651b739e62 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 13:26:08 +0800 Subject: [PATCH 012/103] Update GitObject.py --- github/GitObject.py | 5 ----- github/GitRef.py | 2 +- github/GitTag.py | 2 +- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/github/GitObject.py b/github/GitObject.py index 2d18d850..2d29b437 100644 --- a/github/GitObject.py +++ b/github/GitObject.py @@ -30,11 +30,6 @@ class GitObject(github.GithubObject.NonCompletableGithubObject): """ This class represents GitObjects as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - ''' - Adapte for __init__ change, remove later - ''' - github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def sha(self): diff --git a/github/GitRef.py b/github/GitRef.py index 44d177b8..9ff4f30f 100644 --- a/github/GitRef.py +++ b/github/GitRef.py @@ -99,7 +99,7 @@ class GitRef(github.GithubObject.CompletableGithubObject): def _useAttributes(self, attributes): if "object" in attributes: # pragma no branch assert attributes["object"] is None or isinstance(attributes["object"], dict), attributes["object"] - self._object = None if attributes["object"] is None else github.GitObject.GitObject(self._requester, attributes["object"], completed=False) + self._object = None if attributes["object"] is None else github.GitObject.GitObject(self._requester, self._headers, attributes["object"], completed=False) if "ref" in attributes: # pragma no branch assert attributes["ref"] is None or isinstance(attributes["ref"], (str, unicode)), attributes["ref"] self._ref = attributes["ref"] diff --git a/github/GitTag.py b/github/GitTag.py index 0a745d22..58a34598 100644 --- a/github/GitTag.py +++ b/github/GitTag.py @@ -96,7 +96,7 @@ class GitTag(github.GithubObject.CompletableGithubObject): self._message = attributes["message"] if "object" in attributes: # pragma no branch assert attributes["object"] is None or isinstance(attributes["object"], dict), attributes["object"] - self._object = None if attributes["object"] is None else github.GitObject.GitObject(self._requester, attributes["object"], completed=False) + self._object = None if attributes["object"] is None else github.GitObject.GitObject(self._requester, self._headers, attributes["object"], completed=False) if "sha" in attributes: # pragma no branch assert attributes["sha"] is None or isinstance(attributes["sha"], (str, unicode)), attributes["sha"] self._sha = attributes["sha"] From 02435f3a9f5f321f5ff3d5c1f4bcb9a10fc5e290 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 13:30:39 +0800 Subject: [PATCH 013/103] Update GitTree.py --- github/GitTree.py | 7 ++++++- github/GitTreeElement.py | 5 ----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/github/GitTree.py b/github/GitTree.py index 38c696b8..f999de89 100644 --- a/github/GitTree.py +++ b/github/GitTree.py @@ -73,9 +73,14 @@ class GitTree(github.GithubObject.CompletableGithubObject): if "tree" in attributes: # pragma no branch assert attributes["tree"] is None or all(isinstance(element, dict) for element in attributes["tree"]), attributes["tree"] self._tree = None if attributes["tree"] is None else [ - github.GitTreeElement.GitTreeElement(self._requester, element, completed=False) + github.GitTreeElement.GitTreeElement(self._requester, self._headers, element, completed=False) for element in attributes["tree"] ] if "url" in attributes: # pragma no branch assert attributes["url"] is None or isinstance(attributes["url"], (str, unicode)), attributes["url"] self._url = attributes["url"] + + + + + diff --git a/github/GitTreeElement.py b/github/GitTreeElement.py index f58b57b3..bf361be0 100644 --- a/github/GitTreeElement.py +++ b/github/GitTreeElement.py @@ -30,11 +30,6 @@ class GitTreeElement(github.GithubObject.NonCompletableGithubObject): """ This class represents GitTreeElements as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - ''' - Adapte for __init__ change, remove later - ''' - github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def mode(self): From ac1585ee13f13cfa20fd79a78c4643de815607fd Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 13:59:08 +0800 Subject: [PATCH 014/103] Update HookDescription.py. --- github/HookDescription.py | 5 ----- github/MainClass.py | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/github/HookDescription.py b/github/HookDescription.py index 3a665159..766cbfc7 100644 --- a/github/HookDescription.py +++ b/github/HookDescription.py @@ -30,11 +30,6 @@ class HookDescription(github.GithubObject.NonCompletableGithubObject): """ This class represents HookDescriptions as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - ''' - Adapte for __init__ change, remove later - ''' - github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def events(self): diff --git a/github/MainClass.py b/github/MainClass.py index 4fbe3645..c113e565 100644 --- a/github/MainClass.py +++ b/github/MainClass.py @@ -281,7 +281,7 @@ class Github(object): None, None ) - return [HookDescription.HookDescription(self.__requester, attributes, completed=True) for attributes in data] + return [HookDescription.HookDescription(self.__requester, headers, attributes, completed=True) for attributes in data] def get_gitignore_templates(self): """ From d6170e36de261f8107cdc40e1e6e3c91bac0eb3d Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 14:03:57 +0800 Subject: [PATCH 015/103] Update IssuePullRequest.py --- github/Issue.py | 2 +- github/IssuePullRequest.py | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/github/Issue.py b/github/Issue.py index fd62dccf..502263de 100644 --- a/github/Issue.py +++ b/github/Issue.py @@ -412,7 +412,7 @@ class Issue(github.GithubObject.CompletableGithubObject): self._number = attributes["number"] if "pull_request" in attributes: # pragma no branch assert attributes["pull_request"] is None or isinstance(attributes["pull_request"], dict), attributes["pull_request"] - self._pull_request = None if attributes["pull_request"] is None else github.IssuePullRequest.IssuePullRequest(self._requester, attributes["pull_request"], completed=False) + self._pull_request = None if attributes["pull_request"] is None else github.IssuePullRequest.IssuePullRequest(self._requester, self._headers, attributes["pull_request"], completed=False) if "repository" in attributes: # pragma no branch assert attributes["repository"] is None or isinstance(attributes["repository"], dict), attributes["repository"] self._repository = None if attributes["repository"] is None else github.Repository.Repository(self._requester, attributes["repository"], completed=False) diff --git a/github/IssuePullRequest.py b/github/IssuePullRequest.py index 075b61ce..cdc1b44b 100644 --- a/github/IssuePullRequest.py +++ b/github/IssuePullRequest.py @@ -30,11 +30,6 @@ class IssuePullRequest(github.GithubObject.NonCompletableGithubObject): """ This class represents IssuePullRequests as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - ''' - Adapte for __init__ change, remove later - ''' - github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def diff_url(self): From 12387505e2fbf25ceae63f169b13d57d86b80282 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 14:05:10 +0800 Subject: [PATCH 016/103] Update Notification.py --- github/Notification.py | 5 ++++- github/NotificationSubject.py | 5 ----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/github/Notification.py b/github/Notification.py index 7e8f0a2b..f6f89fa5 100644 --- a/github/Notification.py +++ b/github/Notification.py @@ -107,7 +107,7 @@ class Notification(github.GithubObject.CompletableGithubObject): self._repository = None if attributes["repository"] is None else github.Repository.Repository(self._requester, attributes["repository"], completed=False) if "subject" in attributes: # pragma no branch assert attributes["subject"] is None or isinstance(attributes["subject"], dict), attributes["subject"] - self._subject = None if attributes["subject"] is None else github.NotificationSubject.NotificationSubject(self._requester, attributes["subject"], completed=False) + self._subject = None if attributes["subject"] is None else github.NotificationSubject.NotificationSubject(self._requester, self._headers, attributes["subject"], completed=False) if "reason" in attributes: # pragma no branch assert attributes["reason"] is None or isinstance(attributes["reason"], (str, unicode)), attributes["reason"] self._reason = attributes["reason"] @@ -120,3 +120,6 @@ class Notification(github.GithubObject.CompletableGithubObject): if "url" in attributes: # pragma no branch assert attributes["url"] is None or isinstance(attributes["url"], (str, unicode)), attributes["url"] self._url = attributes["url"] + + + diff --git a/github/NotificationSubject.py b/github/NotificationSubject.py index 4188e059..d32977ea 100644 --- a/github/NotificationSubject.py +++ b/github/NotificationSubject.py @@ -28,11 +28,6 @@ class NotificationSubject(github.GithubObject.NonCompletableGithubObject): """ This class represents Subjects of Notifications as returned for example by http://developer.github.com/v3/activity/notifications/#list-your-notifications """ - def __init__(self, requester, attributes, completed): - ''' - Adapte for __init__ change, remove later - ''' - github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def title(self): From 6e11aa9cf041be25691971476bc474facb1bd1f1 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 14:07:10 +0800 Subject: [PATCH 017/103] Update Permissions.py --- github/Permissions.py | 5 ----- github/Repository.py | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/github/Permissions.py b/github/Permissions.py index 3a346d76..8b9f3b39 100644 --- a/github/Permissions.py +++ b/github/Permissions.py @@ -30,11 +30,6 @@ class Permissions(github.GithubObject.NonCompletableGithubObject): """ This class represents Permissionss as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - ''' - Adapte for __init__ change, remove later - ''' - github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def admin(self): diff --git a/github/Repository.py b/github/Repository.py index 1fc28f2e..8e3fb440 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -1719,7 +1719,7 @@ class Repository(github.GithubObject.CompletableGithubObject): self._parent = None if attributes["parent"] is None else Repository(self._requester, attributes["parent"], completed=False) if "permissions" in attributes: # pragma no branch assert attributes["permissions"] is None or isinstance(attributes["permissions"], dict), attributes["permissions"] - self._permissions = None if attributes["permissions"] is None else github.Permissions.Permissions(self._requester, attributes["permissions"], completed=False) + self._permissions = None if attributes["permissions"] is None else github.Permissions.Permissions(self._requester, self._headers, attributes["permissions"], completed=False) if "private" in attributes: # pragma no branch assert attributes["private"] is None or isinstance(attributes["private"], bool), attributes["private"] self._private = attributes["private"] From dcb6874745b2e0466017f94be745ba35b72a3748 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 14:09:11 +0800 Subject: [PATCH 018/103] Fix CommitStats.py --- github/Commit.py | 2 +- github/CommitStats.py | 5 ----- github/GistHistoryState.py | 2 +- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/github/Commit.py b/github/Commit.py index 132fff20..322797fe 100644 --- a/github/Commit.py +++ b/github/Commit.py @@ -225,7 +225,7 @@ class Commit(github.GithubObject.CompletableGithubObject): self._sha = attributes["sha"] if "stats" in attributes: # pragma no branch assert attributes["stats"] is None or isinstance(attributes["stats"], dict), attributes["stats"] - self._stats = None if attributes["stats"] is None else github.CommitStats.CommitStats(self._requester, attributes["stats"], completed=False) + self._stats = None if attributes["stats"] is None else github.CommitStats.CommitStats(self._requester, self._headers, attributes["stats"], completed=False) if "url" in attributes: # pragma no branch assert attributes["url"] is None or isinstance(attributes["url"], (str, unicode)), attributes["url"] self._url = attributes["url"] diff --git a/github/CommitStats.py b/github/CommitStats.py index ce367f48..1be6a1d4 100644 --- a/github/CommitStats.py +++ b/github/CommitStats.py @@ -30,11 +30,6 @@ class CommitStats(github.GithubObject.NonCompletableGithubObject): """ This class represents CommitStatss as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - ''' - Adapte for __init__ change, remove later - ''' - github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def additions(self): diff --git a/github/GistHistoryState.py b/github/GistHistoryState.py index 75f78535..2f095558 100644 --- a/github/GistHistoryState.py +++ b/github/GistHistoryState.py @@ -84,7 +84,7 @@ class GistHistoryState(github.GithubObject.CompletableGithubObject): def _useAttributes(self, attributes): if "change_status" in attributes: # pragma no branch assert attributes["change_status"] is None or isinstance(attributes["change_status"], dict), attributes["change_status"] - self._change_status = None if attributes["change_status"] is None else github.CommitStats.CommitStats(self._requester, attributes["change_status"], completed=False) + self._change_status = None if attributes["change_status"] is None else github.CommitStats.CommitStats(self._requester, self._headers, attributes["change_status"], completed=False) if "committed_at" in attributes: # pragma no branch assert attributes["committed_at"] is None or isinstance(attributes["committed_at"], (str, unicode)), attributes["committed_at"] self._committed_at = self._parseDatetime(attributes["committed_at"]) From deb0514b5e7364b307a611797681da8ddf6db5c1 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 14:10:37 +0800 Subject: [PATCH 019/103] Update Hook.py --- github/Hook.py | 3 ++- github/HookResponse.py | 5 ----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/github/Hook.py b/github/Hook.py index e3a955d3..4366b559 100644 --- a/github/Hook.py +++ b/github/Hook.py @@ -195,7 +195,7 @@ class Hook(github.GithubObject.CompletableGithubObject): self._id = attributes["id"] if "last_response" in attributes: # pragma no branch assert attributes["last_response"] is None or isinstance(attributes["last_response"], dict), attributes["last_response"] - self._last_response = None if attributes["last_response"] is None else github.HookResponse.HookResponse(self._requester, attributes["last_response"], completed=False) + self._last_response = None if attributes["last_response"] is None else github.HookResponse.HookResponse(self._requester, self._headers, attributes["last_response"], completed=False) if "name" in attributes: # pragma no branch assert attributes["name"] is None or isinstance(attributes["name"], (str, unicode)), attributes["name"] self._name = attributes["name"] @@ -205,3 +205,4 @@ class Hook(github.GithubObject.CompletableGithubObject): if "url" in attributes: # pragma no branch assert attributes["url"] is None or isinstance(attributes["url"], (str, unicode)), attributes["url"] self._url = attributes["url"] + diff --git a/github/HookResponse.py b/github/HookResponse.py index 8b3b0183..87dc0ac0 100644 --- a/github/HookResponse.py +++ b/github/HookResponse.py @@ -30,11 +30,6 @@ class HookResponse(github.GithubObject.NonCompletableGithubObject): """ This class represents HookResponses as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - ''' - Adapte for __init__ change, remove later - ''' - github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def code(self): From c7aeaddfa8897ed9a23764bbb4beda29403ab413 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 14:13:14 +0800 Subject: [PATCH 020/103] Fix PullRequestMergeStatus.py --- github/PullRequest.py | 2 +- github/PullRequestMergeStatus.py | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/github/PullRequest.py b/github/PullRequest.py index 0adad292..ba02376e 100644 --- a/github/PullRequest.py +++ b/github/PullRequest.py @@ -462,7 +462,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject): None, post_parameters ) - return github.PullRequestMergeStatus.PullRequestMergeStatus(self._requester, data, completed=True) + return github.PullRequestMergeStatus.PullRequestMergeStatus(self._requester, headers, data, completed=True) def _initAttributes(self): self._additions = github.GithubObject.NotSet diff --git a/github/PullRequestMergeStatus.py b/github/PullRequestMergeStatus.py index 7151b21f..f9bae790 100644 --- a/github/PullRequestMergeStatus.py +++ b/github/PullRequestMergeStatus.py @@ -31,11 +31,6 @@ class PullRequestMergeStatus(github.GithubObject.NonCompletableGithubObject): """ This class represents PullRequestMergeStatuss. The reference can be found here http://developer.github.com/v3/pulls/#get-if-a-pull-request-has-been-merged """ - def __init__(self, requester, attributes, completed): - ''' - Adapte for __init__ change, remove later - ''' - github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def merged(self): From b2c4519c06cf541ae327d80b0b1361e2698e23ae Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 14:15:09 +0800 Subject: [PATCH 021/103] Update PulllRequestPart.py --- github/PullRequest.py | 4 ++-- github/PullRequestPart.py | 5 ----- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/github/PullRequest.py b/github/PullRequest.py index ba02376e..a30fa2f8 100644 --- a/github/PullRequest.py +++ b/github/PullRequest.py @@ -502,7 +502,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject): self._assignee = None if attributes["assignee"] is None else github.NamedUser.NamedUser(self._requester, attributes["assignee"], completed=False) if "base" in attributes: # pragma no branch assert attributes["base"] is None or isinstance(attributes["base"], dict), attributes["base"] - self._base = None if attributes["base"] is None else github.PullRequestPart.PullRequestPart(self._requester, attributes["base"], completed=False) + self._base = None if attributes["base"] is None else github.PullRequestPart.PullRequestPart(self._requester, self._headers, attributes["base"], completed=False) if "body" in attributes: # pragma no branch assert attributes["body"] is None or isinstance(attributes["body"], (str, unicode)), attributes["body"] self._body = attributes["body"] @@ -529,7 +529,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject): self._diff_url = attributes["diff_url"] if "head" in attributes: # pragma no branch assert attributes["head"] is None or isinstance(attributes["head"], dict), attributes["head"] - self._head = None if attributes["head"] is None else github.PullRequestPart.PullRequestPart(self._requester, attributes["head"], completed=False) + self._head = None if attributes["head"] is None else github.PullRequestPart.PullRequestPart(self._requester, self._headers, attributes["head"], completed=False) if "html_url" in attributes: # pragma no branch assert attributes["html_url"] is None or isinstance(attributes["html_url"], (str, unicode)), attributes["html_url"] self._html_url = attributes["html_url"] diff --git a/github/PullRequestPart.py b/github/PullRequestPart.py index 4a05fecc..99778645 100644 --- a/github/PullRequestPart.py +++ b/github/PullRequestPart.py @@ -33,11 +33,6 @@ class PullRequestPart(github.GithubObject.NonCompletableGithubObject): """ This class represents PullRequestParts as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - ''' - Adapte for __init__ change, remove later - ''' - github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def label(self): From 4a1a1d406896ebd96315fcf9092ab68dfb7a7194 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 14:19:31 +0800 Subject: [PATCH 022/103] Update Plan.py --- github/AuthenticatedUser.py | 2 +- github/NamedUser.py | 2 +- github/Organization.py | 2 +- github/Plan.py | 5 ----- 4 files changed, 3 insertions(+), 8 deletions(-) diff --git a/github/AuthenticatedUser.py b/github/AuthenticatedUser.py index a92a7813..5c4c4866 100644 --- a/github/AuthenticatedUser.py +++ b/github/AuthenticatedUser.py @@ -1061,7 +1061,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): self._owned_private_repos = attributes["owned_private_repos"] if "plan" in attributes: # pragma no branch assert attributes["plan"] is None or isinstance(attributes["plan"], dict), attributes["plan"] - self._plan = None if attributes["plan"] is None else github.Plan.Plan(self._requester, attributes["plan"], completed=False) + self._plan = None if attributes["plan"] is None else github.Plan.Plan(self._requester, self._headers, attributes["plan"], completed=False) if "private_gists" in attributes: # pragma no branch assert attributes["private_gists"] is None or isinstance(attributes["private_gists"], (int, long)), attributes["private_gists"] self._private_gists = attributes["private_gists"] diff --git a/github/NamedUser.py b/github/NamedUser.py index a8016a15..bb99030a 100644 --- a/github/NamedUser.py +++ b/github/NamedUser.py @@ -541,7 +541,7 @@ class NamedUser(github.GithubObject.CompletableGithubObject): self._owned_private_repos = attributes["owned_private_repos"] if "plan" in attributes: # pragma no branch assert attributes["plan"] is None or isinstance(attributes["plan"], dict), attributes["plan"] - self._plan = None if attributes["plan"] is None else github.Plan.Plan(self._requester, attributes["plan"], completed=False) + self._plan = None if attributes["plan"] is None else github.Plan.Plan(self._requester, self._headers, attributes["plan"], completed=False) if "private_gists" in attributes: # pragma no branch assert attributes["private_gists"] is None or isinstance(attributes["private_gists"], (int, long)), attributes["private_gists"] self._private_gists = attributes["private_gists"] diff --git a/github/Organization.py b/github/Organization.py index efe9cef0..bf341419 100644 --- a/github/Organization.py +++ b/github/Organization.py @@ -655,7 +655,7 @@ class Organization(github.GithubObject.CompletableGithubObject): self._owned_private_repos = attributes["owned_private_repos"] if "plan" in attributes: # pragma no branch assert attributes["plan"] is None or isinstance(attributes["plan"], dict), attributes["plan"] - self._plan = None if attributes["plan"] is None else github.Plan.Plan(self._requester, attributes["plan"], completed=False) + self._plan = None if attributes["plan"] is None else github.Plan.Plan(self._requester, self._headers, attributes["plan"], completed=False) if "private_gists" in attributes: # pragma no branch assert attributes["private_gists"] is None or isinstance(attributes["private_gists"], (int, long)), attributes["private_gists"] self._private_gists = attributes["private_gists"] diff --git a/github/Plan.py b/github/Plan.py index 638369b3..1daefc7c 100644 --- a/github/Plan.py +++ b/github/Plan.py @@ -30,11 +30,6 @@ class Plan(github.GithubObject.NonCompletableGithubObject): """ This class represents Plans as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - ''' - Adapte for __init__ change, remove later - ''' - github.GithubObject.NonCompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def collaborators(self): From a1b65636df9408d93b115a3533a091e3e9cc68c4 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 14:25:07 +0800 Subject: [PATCH 023/103] Clean up. NonCompletableGithubObject refactoring resolved. --- github/GithubObject.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/github/GithubObject.py b/github/GithubObject.py index 4289a445..e4060dff 100644 --- a/github/GithubObject.py +++ b/github/GithubObject.py @@ -80,11 +80,6 @@ class GithubObject(object): class NonCompletableGithubObject(GithubObject): -# def __init__(self, requester, attributes, completed): -# ''' -# Adapte for __init__ change, remove later -# ''' -# GithubObject.__init__(self, requester, {}, attributes, completed) def _completeIfNeeded(self): pass From ca6189c3c94fac963811342ce9f77104d0b5774b Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 14:49:20 +0800 Subject: [PATCH 024/103] Change CompletableGithubObject.__init__ without breaking build. --- github/AuthenticatedUser.py | 3 +++ github/Authorization.py | 3 +++ github/AuthorizationApplication.py | 3 +++ github/Commit.py | 3 +++ github/CommitComment.py | 3 +++ github/Comparison.py | 3 +++ github/ContentFile.py | 3 +++ github/Download.py | 3 +++ github/Gist.py | 3 +++ github/GistComment.py | 3 +++ github/GistHistoryState.py | 3 +++ github/GitBlob.py | 3 +++ github/GitCommit.py | 3 +++ github/GitRef.py | 3 +++ github/GitTag.py | 3 +++ github/GitTree.py | 3 +++ github/GithubObject.py | 5 +++-- github/Hook.py | 3 +++ github/Issue.py | 3 +++ github/IssueComment.py | 3 +++ github/IssueEvent.py | 3 +++ github/Label.py | 3 +++ github/Milestone.py | 3 +++ github/NamedUser.py | 3 +++ github/Notification.py | 3 +++ github/Organization.py | 3 +++ github/PullRequest.py | 3 +++ github/PullRequestComment.py | 3 +++ github/Repository.py | 3 +++ github/RepositoryKey.py | 3 ++- github/Team.py | 3 +++ github/UserKey.py | 3 +++ 32 files changed, 95 insertions(+), 3 deletions(-) diff --git a/github/AuthenticatedUser.py b/github/AuthenticatedUser.py index 5c4c4866..02467ebb 100644 --- a/github/AuthenticatedUser.py +++ b/github/AuthenticatedUser.py @@ -44,6 +44,9 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): """ This class represents AuthenticatedUsers as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def avatar_url(self): diff --git a/github/Authorization.py b/github/Authorization.py index 14cc1350..ec9d2241 100644 --- a/github/Authorization.py +++ b/github/Authorization.py @@ -32,6 +32,9 @@ class Authorization(github.GithubObject.CompletableGithubObject): """ This class represents Authorizations as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def app(self): diff --git a/github/AuthorizationApplication.py b/github/AuthorizationApplication.py index 392ec78c..af9c9b7c 100644 --- a/github/AuthorizationApplication.py +++ b/github/AuthorizationApplication.py @@ -30,6 +30,9 @@ class AuthorizationApplication(github.GithubObject.CompletableGithubObject): """ This class represents AuthorizationApplications as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def name(self): diff --git a/github/Commit.py b/github/Commit.py index 322797fe..ada886d1 100644 --- a/github/Commit.py +++ b/github/Commit.py @@ -39,6 +39,9 @@ class Commit(github.GithubObject.CompletableGithubObject): """ This class represents Commits. The reference can be found here http://developer.github.com/v3/git/commits/ """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def author(self): diff --git a/github/CommitComment.py b/github/CommitComment.py index 30f1df3a..166454ae 100644 --- a/github/CommitComment.py +++ b/github/CommitComment.py @@ -32,6 +32,9 @@ class CommitComment(github.GithubObject.CompletableGithubObject): """ This class represents CommitComments as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def body(self): diff --git a/github/Comparison.py b/github/Comparison.py index eb9eadd8..a131d1b6 100644 --- a/github/Comparison.py +++ b/github/Comparison.py @@ -33,6 +33,9 @@ class Comparison(github.GithubObject.CompletableGithubObject): """ This class represents Comparisons as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def ahead_by(self): diff --git a/github/ContentFile.py b/github/ContentFile.py index fda1d3d6..f38591f8 100644 --- a/github/ContentFile.py +++ b/github/ContentFile.py @@ -30,6 +30,9 @@ class ContentFile(github.GithubObject.CompletableGithubObject): """ This class represents ContentFiles as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def content(self): diff --git a/github/Download.py b/github/Download.py index 7555a8c3..47db03a8 100644 --- a/github/Download.py +++ b/github/Download.py @@ -30,6 +30,9 @@ class Download(github.GithubObject.CompletableGithubObject): """ This class represents Downloads as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def accesskeyid(self): diff --git a/github/Gist.py b/github/Gist.py index ed6aa37f..5453179f 100644 --- a/github/Gist.py +++ b/github/Gist.py @@ -37,6 +37,9 @@ class Gist(github.GithubObject.CompletableGithubObject): """ This class represents Gists as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def comments(self): diff --git a/github/GistComment.py b/github/GistComment.py index 2bb28abd..d228476f 100644 --- a/github/GistComment.py +++ b/github/GistComment.py @@ -32,6 +32,9 @@ class GistComment(github.GithubObject.CompletableGithubObject): """ This class represents GistComments as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def body(self): diff --git a/github/GistHistoryState.py b/github/GistHistoryState.py index 2f095558..34288f1d 100644 --- a/github/GistHistoryState.py +++ b/github/GistHistoryState.py @@ -33,6 +33,9 @@ class GistHistoryState(github.GithubObject.CompletableGithubObject): """ This class represents GistHistoryStates as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def change_status(self): diff --git a/github/GitBlob.py b/github/GitBlob.py index ffb12f98..e4adf50b 100644 --- a/github/GitBlob.py +++ b/github/GitBlob.py @@ -30,6 +30,9 @@ class GitBlob(github.GithubObject.CompletableGithubObject): """ This class represents GitBlobs as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def content(self): diff --git a/github/GitCommit.py b/github/GitCommit.py index 32af246a..488c82d0 100644 --- a/github/GitCommit.py +++ b/github/GitCommit.py @@ -33,6 +33,9 @@ class GitCommit(github.GithubObject.CompletableGithubObject): """ This class represents GitCommits as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def author(self): diff --git a/github/GitRef.py b/github/GitRef.py index 9ff4f30f..fd81e371 100644 --- a/github/GitRef.py +++ b/github/GitRef.py @@ -32,6 +32,9 @@ class GitRef(github.GithubObject.CompletableGithubObject): """ This class represents GitRefs as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def object(self): diff --git a/github/GitTag.py b/github/GitTag.py index 58a34598..186f8928 100644 --- a/github/GitTag.py +++ b/github/GitTag.py @@ -33,6 +33,9 @@ class GitTag(github.GithubObject.CompletableGithubObject): """ This class represents GitTags as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def message(self): diff --git a/github/GitTree.py b/github/GitTree.py index f999de89..741180f2 100644 --- a/github/GitTree.py +++ b/github/GitTree.py @@ -32,6 +32,9 @@ class GitTree(github.GithubObject.CompletableGithubObject): """ This class represents GitTrees as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def sha(self): diff --git a/github/GithubObject.py b/github/GithubObject.py index e4060dff..077cc5c2 100644 --- a/github/GithubObject.py +++ b/github/GithubObject.py @@ -85,9 +85,9 @@ class NonCompletableGithubObject(GithubObject): class CompletableGithubObject(GithubObject): - def __init__(self, requester, attributes, completed): + def __init__(self, requester, headers, attributes, completed): # Adapte for __init__ change, remove later - GithubObject.__init__(self, requester, {}, attributes, completed) + GithubObject.__init__(self, requester, headers, attributes, completed) self.__completed = completed def _completeIfNotSet(self, value): @@ -105,5 +105,6 @@ class CompletableGithubObject(GithubObject): None, None ) + self._headers = headers self._storeAndUseAttributes(data) self.__completed = True diff --git a/github/Hook.py b/github/Hook.py index 4366b559..965cc2ae 100644 --- a/github/Hook.py +++ b/github/Hook.py @@ -32,6 +32,9 @@ class Hook(github.GithubObject.CompletableGithubObject): """ This class represents Hooks as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def active(self): diff --git a/github/Issue.py b/github/Issue.py index 502263de..6c4c9161 100644 --- a/github/Issue.py +++ b/github/Issue.py @@ -41,6 +41,9 @@ class Issue(github.GithubObject.CompletableGithubObject): """ This class represents Issues as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def assignee(self): diff --git a/github/IssueComment.py b/github/IssueComment.py index 5e9e5099..d39470ab 100644 --- a/github/IssueComment.py +++ b/github/IssueComment.py @@ -33,6 +33,9 @@ class IssueComment(github.GithubObject.CompletableGithubObject): """ This class represents IssueComments as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def body(self): diff --git a/github/IssueEvent.py b/github/IssueEvent.py index 431ce2ad..2a5677af 100644 --- a/github/IssueEvent.py +++ b/github/IssueEvent.py @@ -33,6 +33,9 @@ class IssueEvent(github.GithubObject.CompletableGithubObject): """ This class represents IssueEvents as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def actor(self): diff --git a/github/Label.py b/github/Label.py index e2d42335..e09082ff 100644 --- a/github/Label.py +++ b/github/Label.py @@ -33,6 +33,9 @@ class Label(github.GithubObject.CompletableGithubObject): """ This class represents Labels. The reference can be found here http://developer.github.com/v3/issues/labels/ """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def color(self): diff --git a/github/Milestone.py b/github/Milestone.py index 9611d7b7..2650d24b 100644 --- a/github/Milestone.py +++ b/github/Milestone.py @@ -37,6 +37,9 @@ class Milestone(github.GithubObject.CompletableGithubObject): """ This class represents Milestones. The reference can be found here http://developer.github.com/v3/issues/milestones/ """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def closed_issues(self): diff --git a/github/NamedUser.py b/github/NamedUser.py index bb99030a..b1e619af 100644 --- a/github/NamedUser.py +++ b/github/NamedUser.py @@ -39,6 +39,9 @@ class NamedUser(github.GithubObject.CompletableGithubObject): """ This class represents NamedUsers as returned for example by http://developer.github.com/v3/todo """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def avatar_url(self): diff --git a/github/Notification.py b/github/Notification.py index f6f89fa5..433cfcd3 100644 --- a/github/Notification.py +++ b/github/Notification.py @@ -33,6 +33,9 @@ class Notification(github.GithubObject.CompletableGithubObject): """ This class represents Notifications. The reference can be found here http://developer.github.com/v3/activity/notifications/ """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def id(self): diff --git a/github/Organization.py b/github/Organization.py index bf341419..16db918d 100644 --- a/github/Organization.py +++ b/github/Organization.py @@ -41,6 +41,9 @@ class Organization(github.GithubObject.CompletableGithubObject): """ This class represents Organizations. The reference can be found here http://developer.github.com/v3/orgs/ """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def avatar_url(self): diff --git a/github/PullRequest.py b/github/PullRequest.py index a30fa2f8..32c213c5 100644 --- a/github/PullRequest.py +++ b/github/PullRequest.py @@ -41,6 +41,9 @@ class PullRequest(github.GithubObject.CompletableGithubObject): """ This class represents PullRequests. The reference can be found here http://developer.github.com/v3/pulls/ """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def additions(self): diff --git a/github/PullRequestComment.py b/github/PullRequestComment.py index c8f0ef6f..31be092b 100644 --- a/github/PullRequestComment.py +++ b/github/PullRequestComment.py @@ -34,6 +34,9 @@ class PullRequestComment(github.GithubObject.CompletableGithubObject): """ This class represents PullRequestComments. The reference can be found here http://developer.github.com/v3/pulls/comments/ """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def body(self): diff --git a/github/Repository.py b/github/Repository.py index 8e3fb440..50822782 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -65,6 +65,9 @@ class Repository(github.GithubObject.CompletableGithubObject): """ This class represents Repositorys. The reference can be found here http://developer.github.com/v3/repos/ """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def clone_url(self): diff --git a/github/RepositoryKey.py b/github/RepositoryKey.py index 750541b2..788ac6e3 100644 --- a/github/RepositoryKey.py +++ b/github/RepositoryKey.py @@ -34,7 +34,8 @@ class RepositoryKey(github.GithubObject.CompletableGithubObject): """ def __init__(self, requester, attributes, completed, repoUrl): - github.GithubObject.CompletableGithubObject.__init__(self, requester, attributes, completed) + ##############NOTE: this one should not be removed but modified + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) self.__repoUrl = repoUrl @property diff --git a/github/Team.py b/github/Team.py index b6d681d6..0637d057 100644 --- a/github/Team.py +++ b/github/Team.py @@ -35,6 +35,9 @@ class Team(github.GithubObject.CompletableGithubObject): """ This class represents Teams. The reference can be found here http://developer.github.com/v3/orgs/teams/ """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def id(self): diff --git a/github/UserKey.py b/github/UserKey.py index 222cd1a5..392a0b64 100644 --- a/github/UserKey.py +++ b/github/UserKey.py @@ -31,6 +31,9 @@ class UserKey(github.GithubObject.CompletableGithubObject): """ This class represents UserKeys. The reference can be found here http://developer.github.com/v3/users/keys/ """ + def __init__(self, requester, attributes, completed): + # Adapte for __init__ change, remove later + github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def id(self): From 2f31828502c95fef62970db7d4ca49fa8b4b8e0d Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 15:04:34 +0800 Subject: [PATCH 025/103] Update RepositoryKey.py --- github/PaginatedList.py | 18 +++++++++++++----- github/Repository.py | 6 +++--- github/RepositoryKey.py | 5 ++--- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/github/PaginatedList.py b/github/PaginatedList.py index cad474de..1911f098 100644 --- a/github/PaginatedList.py +++ b/github/PaginatedList.py @@ -118,14 +118,22 @@ class PaginatedList(PaginatedListBase): ''' Adapte for diffrent __init__ signature in refactoring, remove when done ''' - try: # Try use old __init__ signature + try: + try: # Try use old __init__ signature + return [ + self.__contentClass(self.__requester, element, completed=False) + for element in data] + except TypeError: # must be new + return [ + self.__contentClass(self.__requester, headers, element, completed=False) + for element in data] + except: + print "WTF???????????" + print self.__contentClass return [ self.__contentClass(self.__requester, element, completed=False) for element in data] - except TypeError: # must be new - return [ - self.__contentClass(self.__requester, headers, element, completed=False) - for element in data] + def _fetchNextPage(self): diff --git a/github/Repository.py b/github/Repository.py index 50822782..e8077b14 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -578,7 +578,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, post_parameters ) - return github.RepositoryKey.RepositoryKey(self._requester, data, completed=True, repoUrl=self._url) + return github.RepositoryKey.RepositoryKey(self._requester, headers, data, completed=True, repoUrl=self._url) def create_label(self, name, color): """ @@ -1239,7 +1239,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, None ) - return github.RepositoryKey.RepositoryKey(self._requester, data, completed=True, repoUrl=self._url) + return github.RepositoryKey.RepositoryKey(self._requester, headers, data, completed=True, repoUrl=self._url) def get_keys(self): """ @@ -1247,7 +1247,7 @@ class Repository(github.GithubObject.CompletableGithubObject): :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.RepositoryKey.RepositoryKey` """ return github.PaginatedList.PaginatedList( - lambda requester, data, completed: github.RepositoryKey.RepositoryKey(requester, data, completed, repoUrl=self._url), + lambda requester, headers, data, completed: github.RepositoryKey.RepositoryKey(requester, headers, data, completed, repoUrl=self._url), self._requester, self.url + "/keys", None diff --git a/github/RepositoryKey.py b/github/RepositoryKey.py index 788ac6e3..9a7c7b28 100644 --- a/github/RepositoryKey.py +++ b/github/RepositoryKey.py @@ -33,9 +33,8 @@ class RepositoryKey(github.GithubObject.CompletableGithubObject): This class represents RepositoryKeys. The reference can be found here http://developer.github.com/v3/repos/keys/ """ - def __init__(self, requester, attributes, completed, repoUrl): - ##############NOTE: this one should not be removed but modified - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) + def __init__(self, requester, headers, attributes, completed, repoUrl): + github.GithubObject.CompletableGithubObject.__init__(self, requester, headers, attributes, completed) self.__repoUrl = repoUrl @property From 28a49b94d87408592199ffa018e8c1b3bd9d2a77 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 15:06:21 +0800 Subject: [PATCH 026/103] Update AuthenticatedUser.py --- github/AuthenticatedUser.py | 3 --- github/MainClass.py | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/github/AuthenticatedUser.py b/github/AuthenticatedUser.py index 02467ebb..5c4c4866 100644 --- a/github/AuthenticatedUser.py +++ b/github/AuthenticatedUser.py @@ -44,9 +44,6 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): """ This class represents AuthenticatedUsers as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def avatar_url(self): diff --git a/github/MainClass.py b/github/MainClass.py index c113e565..8f821567 100644 --- a/github/MainClass.py +++ b/github/MainClass.py @@ -114,7 +114,7 @@ class Github(object): """ assert login is github.GithubObject.NotSet or isinstance(login, (str, unicode)), login if login is github.GithubObject.NotSet: - return AuthenticatedUser.AuthenticatedUser(self.__requester, {"url": "/user"}, completed=False) + return AuthenticatedUser.AuthenticatedUser(self.__requester, {}, {"url": "/user"}, completed=False) else: headers, data = self.__requester.requestJsonAndCheck( "GET", From 0e19d8e04e847aac690fcd5563c35aa0c1808a80 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 15:09:34 +0800 Subject: [PATCH 027/103] Update Authorization.py --- github/AuthenticatedUser.py | 4 ++-- github/Authorization.py | 3 --- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/github/AuthenticatedUser.py b/github/AuthenticatedUser.py index 5c4c4866..7e4e337e 100644 --- a/github/AuthenticatedUser.py +++ b/github/AuthenticatedUser.py @@ -348,7 +348,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): None, post_parameters ) - return github.Authorization.Authorization(self._requester, data, completed=True) + return github.Authorization.Authorization(self._requester, headers, data, completed=True) def create_fork(self, repo): """ @@ -516,7 +516,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): None, None ) - return github.Authorization.Authorization(self._requester, data, completed=True) + return github.Authorization.Authorization(self._requester, headers, data, completed=True) def get_authorizations(self): """ diff --git a/github/Authorization.py b/github/Authorization.py index ec9d2241..14cc1350 100644 --- a/github/Authorization.py +++ b/github/Authorization.py @@ -32,9 +32,6 @@ class Authorization(github.GithubObject.CompletableGithubObject): """ This class represents Authorizations as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def app(self): From 83c6495ec557898cd17a70be184c307558b4535c Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 15:10:54 +0800 Subject: [PATCH 028/103] Update AuthorizationApplication.py --- github/Authorization.py | 2 +- github/AuthorizationApplication.py | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/github/Authorization.py b/github/Authorization.py index 14cc1350..ef61ed84 100644 --- a/github/Authorization.py +++ b/github/Authorization.py @@ -165,7 +165,7 @@ class Authorization(github.GithubObject.CompletableGithubObject): def _useAttributes(self, attributes): if "app" in attributes: # pragma no branch assert attributes["app"] is None or isinstance(attributes["app"], dict), attributes["app"] - self._app = None if attributes["app"] is None else github.AuthorizationApplication.AuthorizationApplication(self._requester, attributes["app"], completed=False) + self._app = None if attributes["app"] is None else github.AuthorizationApplication.AuthorizationApplication(self._requester, self._headers, attributes["app"], completed=False) if "created_at" in attributes: # pragma no branch assert attributes["created_at"] is None or isinstance(attributes["created_at"], (str, unicode)), attributes["created_at"] self._created_at = self._parseDatetime(attributes["created_at"]) diff --git a/github/AuthorizationApplication.py b/github/AuthorizationApplication.py index af9c9b7c..392ec78c 100644 --- a/github/AuthorizationApplication.py +++ b/github/AuthorizationApplication.py @@ -30,9 +30,6 @@ class AuthorizationApplication(github.GithubObject.CompletableGithubObject): """ This class represents AuthorizationApplications as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def name(self): From ed32e78da1303962afaf8fa0d616a1828fdaa80b Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 15:26:05 +0800 Subject: [PATCH 029/103] Update Commit.py and GitCommit.py --- github/Branch.py | 2 +- github/Commit.py | 7 ++----- github/Comparison.py | 4 ++-- github/GitCommit.py | 5 +---- github/PaginatedList.py | 19 +++++++------------ github/Repository.py | 8 ++++---- github/Tag.py | 2 +- 7 files changed, 18 insertions(+), 29 deletions(-) diff --git a/github/Branch.py b/github/Branch.py index 11f074d5..5004f2f6 100644 --- a/github/Branch.py +++ b/github/Branch.py @@ -55,7 +55,7 @@ class Branch(github.GithubObject.NonCompletableGithubObject): def _useAttributes(self, attributes): if "commit" in attributes: # pragma no branch assert attributes["commit"] is None or isinstance(attributes["commit"], dict), attributes["commit"] - self._commit = None if attributes["commit"] is None else github.Commit.Commit(self._requester, attributes["commit"], completed=False) + self._commit = None if attributes["commit"] is None else github.Commit.Commit(self._requester, self._headers, attributes["commit"], completed=False) if "name" in attributes: # pragma no branch assert attributes["name"] is None or isinstance(attributes["name"], (str, unicode)), attributes["name"] self._name = attributes["name"] diff --git a/github/Commit.py b/github/Commit.py index ada886d1..91219da1 100644 --- a/github/Commit.py +++ b/github/Commit.py @@ -39,9 +39,6 @@ class Commit(github.GithubObject.CompletableGithubObject): """ This class represents Commits. The reference can be found here http://developer.github.com/v3/git/commits/ """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def author(self): @@ -207,7 +204,7 @@ class Commit(github.GithubObject.CompletableGithubObject): self._author = None if attributes["author"] is None else github.NamedUser.NamedUser(self._requester, attributes["author"], completed=False) if "commit" in attributes: # pragma no branch assert attributes["commit"] is None or isinstance(attributes["commit"], dict), attributes["commit"] - self._commit = None if attributes["commit"] is None else github.GitCommit.GitCommit(self._requester, attributes["commit"], completed=False) + self._commit = None if attributes["commit"] is None else github.GitCommit.GitCommit(self._requester, self._headers, attributes["commit"], completed=False) if "committer" in attributes: # pragma no branch assert attributes["committer"] is None or isinstance(attributes["committer"], dict), attributes["committer"] self._committer = None if attributes["committer"] is None else github.NamedUser.NamedUser(self._requester, attributes["committer"], completed=False) @@ -220,7 +217,7 @@ class Commit(github.GithubObject.CompletableGithubObject): if "parents" in attributes: # pragma no branch assert attributes["parents"] is None or all(isinstance(element, dict) for element in attributes["parents"]), attributes["parents"] self._parents = None if attributes["parents"] is None else [ - Commit(self._requester, element, completed=False) + Commit(self._requester, self._headers, element, completed=False) for element in attributes["parents"] ] if "sha" in attributes: # pragma no branch diff --git a/github/Comparison.py b/github/Comparison.py index a131d1b6..3182b43d 100644 --- a/github/Comparison.py +++ b/github/Comparison.py @@ -153,14 +153,14 @@ class Comparison(github.GithubObject.CompletableGithubObject): self._ahead_by = attributes["ahead_by"] if "base_commit" in attributes: # pragma no branch assert attributes["base_commit"] is None or isinstance(attributes["base_commit"], dict), attributes["base_commit"] - self._base_commit = None if attributes["base_commit"] is None else github.Commit.Commit(self._requester, attributes["base_commit"], completed=False) + self._base_commit = None if attributes["base_commit"] is None else github.Commit.Commit(self._requester, self._headers, attributes["base_commit"], completed=False) if "behind_by" in attributes: # pragma no branch assert attributes["behind_by"] is None or isinstance(attributes["behind_by"], (int, long)), attributes["behind_by"] self._behind_by = attributes["behind_by"] if "commits" in attributes: # pragma no branch assert attributes["commits"] is None or all(isinstance(element, dict) for element in attributes["commits"]), attributes["commits"] self._commits = None if attributes["commits"] is None else [ - github.Commit.Commit(self._requester, element, completed=False) + github.Commit.Commit(self._requester, self._headers, element, completed=False) for element in attributes["commits"] ] if "diff_url" in attributes: # pragma no branch diff --git a/github/GitCommit.py b/github/GitCommit.py index 488c82d0..e9272bdc 100644 --- a/github/GitCommit.py +++ b/github/GitCommit.py @@ -33,9 +33,6 @@ class GitCommit(github.GithubObject.CompletableGithubObject): """ This class represents GitCommits as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def author(self): @@ -119,7 +116,7 @@ class GitCommit(github.GithubObject.CompletableGithubObject): if "parents" in attributes: # pragma no branch assert attributes["parents"] is None or all(isinstance(element, dict) for element in attributes["parents"]), attributes["parents"] self._parents = None if attributes["parents"] is None else [ - GitCommit(self._requester, element, completed=False) + GitCommit(self._requester, self._headers, element, completed=False) for element in attributes["parents"] ] if "sha" in attributes: # pragma no branch diff --git a/github/PaginatedList.py b/github/PaginatedList.py index 1911f098..1ab477e1 100644 --- a/github/PaginatedList.py +++ b/github/PaginatedList.py @@ -118,21 +118,16 @@ class PaginatedList(PaginatedListBase): ''' Adapte for diffrent __init__ signature in refactoring, remove when done ''' - try: - try: # Try use old __init__ signature - return [ - self.__contentClass(self.__requester, element, completed=False) - for element in data] - except TypeError: # must be new - return [ - self.__contentClass(self.__requester, headers, element, completed=False) - for element in data] - except: - print "WTF???????????" - print self.__contentClass + + try: # Try use old __init__ signature return [ self.__contentClass(self.__requester, element, completed=False) for element in data] + except TypeError: # must be new + return [ + self.__contentClass(self.__requester, headers, element, completed=False) + for element in data] + diff --git a/github/Repository.py b/github/Repository.py index e8077b14..67c316d2 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -420,7 +420,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, post_parameters ) - return github.GitCommit.GitCommit(self._requester, data, completed=True) + return github.GitCommit.GitCommit(self._requester, headers, data, completed=True) def create_git_ref(self, ref, sha): """ @@ -838,7 +838,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, None ) - return github.Commit.Commit(self._requester, data, completed=True) + return github.Commit.Commit(self._requester, headers, data, completed=True) def get_commits(self, sha=github.GithubObject.NotSet, path=github.GithubObject.NotSet): """ @@ -1014,7 +1014,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, None ) - return github.GitCommit.GitCommit(self._requester, data, completed=True) + return github.GitCommit.GitCommit(self._requester, headers, data, completed=True) def get_git_ref(self, ref): """ @@ -1566,7 +1566,7 @@ class Repository(github.GithubObject.CompletableGithubObject): if data is None: return None else: - return github.Commit.Commit(self._requester, data, completed=True) + return github.Commit.Commit(self._requester, headers, data, completed=True) def remove_from_collaborators(self, collaborator): """ diff --git a/github/Tag.py b/github/Tag.py index 5a42f637..9300b607 100644 --- a/github/Tag.py +++ b/github/Tag.py @@ -71,7 +71,7 @@ class Tag(github.GithubObject.NonCompletableGithubObject): def _useAttributes(self, attributes): if "commit" in attributes: # pragma no branch assert attributes["commit"] is None or isinstance(attributes["commit"], dict), attributes["commit"] - self._commit = None if attributes["commit"] is None else github.Commit.Commit(self._requester, attributes["commit"], completed=False) + self._commit = None if attributes["commit"] is None else github.Commit.Commit(self._requester, self._headers, attributes["commit"], completed=False) if "name" in attributes: # pragma no branch assert attributes["name"] is None or isinstance(attributes["name"], (str, unicode)), attributes["name"] self._name = attributes["name"] From 3b2e19488fc6a5f51574d874e546173c1835d10b Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 15:28:00 +0800 Subject: [PATCH 030/103] Update CommitComment.py --- github/Commit.py | 2 +- github/CommitComment.py | 3 --- github/Repository.py | 2 +- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/github/Commit.py b/github/Commit.py index 91219da1..0fba1935 100644 --- a/github/Commit.py +++ b/github/Commit.py @@ -132,7 +132,7 @@ class Commit(github.GithubObject.CompletableGithubObject): None, post_parameters ) - return github.CommitComment.CommitComment(self._requester, data, completed=True) + return github.CommitComment.CommitComment(self._requester, headers, data, completed=True) def create_status(self, state, target_url=github.GithubObject.NotSet, description=github.GithubObject.NotSet): """ diff --git a/github/CommitComment.py b/github/CommitComment.py index 166454ae..30f1df3a 100644 --- a/github/CommitComment.py +++ b/github/CommitComment.py @@ -32,9 +32,6 @@ class CommitComment(github.GithubObject.CompletableGithubObject): """ This class represents CommitComments as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def body(self): diff --git a/github/Repository.py b/github/Repository.py index 67c316d2..8b8b5924 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -811,7 +811,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, None ) - return github.CommitComment.CommitComment(self._requester, data, completed=True) + return github.CommitComment.CommitComment(self._requester, headers, data, completed=True) def get_comments(self): """ From ced048663ba392bfee2543cea5f5fbf875771c0e Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 15:29:13 +0800 Subject: [PATCH 031/103] Update Comparision.py --- github/Comparison.py | 3 --- github/Repository.py | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/github/Comparison.py b/github/Comparison.py index 3182b43d..a0a3d6de 100644 --- a/github/Comparison.py +++ b/github/Comparison.py @@ -33,9 +33,6 @@ class Comparison(github.GithubObject.CompletableGithubObject): """ This class represents Comparisons as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def ahead_by(self): diff --git a/github/Repository.py b/github/Repository.py index 8b8b5924..25fc4a14 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -338,7 +338,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, None ) - return github.Comparison.Comparison(self._requester, data, completed=True) + return github.Comparison.Comparison(self._requester, headers, data, completed=True) def create_download(self, name, size, description=github.GithubObject.NotSet, content_type=github.GithubObject.NotSet): """ From 0c13da45929dbc528a4f8f14f8ce54df15888660 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 15:31:45 +0800 Subject: [PATCH 032/103] Update ContentFile.py --- github/ContentFile.py | 3 --- github/Repository.py | 6 +++--- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/github/ContentFile.py b/github/ContentFile.py index f38591f8..fda1d3d6 100644 --- a/github/ContentFile.py +++ b/github/ContentFile.py @@ -30,9 +30,6 @@ class ContentFile(github.GithubObject.CompletableGithubObject): """ This class represents ContentFiles as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def content(self): diff --git a/github/Repository.py b/github/Repository.py index 25fc4a14..2233b5d8 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -888,7 +888,7 @@ class Repository(github.GithubObject.CompletableGithubObject): url_parameters, None ) - return github.ContentFile.ContentFile(self._requester, data, completed=True) + return github.ContentFile.ContentFile(self._requester, headers, data, completed=True) def get_dir_contents(self, path, ref=github.GithubObject.NotSet): """ @@ -919,7 +919,7 @@ class Repository(github.GithubObject.CompletableGithubObject): ) 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 + 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 ] @@ -1428,7 +1428,7 @@ class Repository(github.GithubObject.CompletableGithubObject): url_parameters, None ) - return github.ContentFile.ContentFile(self._requester, data, completed=True) + return github.ContentFile.ContentFile(self._requester, headers, data, completed=True) def get_stargazers(self): """ From c15cb6575b88b56b48fb21e66931ab2108c8b23c Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 15:33:25 +0800 Subject: [PATCH 033/103] Update Download.py --- github/Download.py | 3 --- github/Repository.py | 4 ++-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/github/Download.py b/github/Download.py index 47db03a8..7555a8c3 100644 --- a/github/Download.py +++ b/github/Download.py @@ -30,9 +30,6 @@ class Download(github.GithubObject.CompletableGithubObject): """ This class represents Downloads as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def accesskeyid(self): diff --git a/github/Repository.py b/github/Repository.py index 2233b5d8..023a43be 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -367,7 +367,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, post_parameters ) - return github.Download.Download(self._requester, data, completed=True) + return github.Download.Download(self._requester, headers, data, completed=True) def create_git_blob(self, content, encoding): """ @@ -948,7 +948,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, None ) - return github.Download.Download(self._requester, data, completed=True) + return github.Download.Download(self._requester, headers, data, completed=True) def get_downloads(self): """ From dc8173a5328cede580cae7e2bbf053ee98185d4e Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 15:39:34 +0800 Subject: [PATCH 034/103] Update Gist*.py --- github/AuthenticatedUser.py | 2 +- github/Gist.py | 13 +++++-------- github/GistComment.py | 3 --- github/GistHistoryState.py | 3 --- github/MainClass.py | 2 +- github/NamedUser.py | 2 +- 6 files changed, 8 insertions(+), 17 deletions(-) diff --git a/github/AuthenticatedUser.py b/github/AuthenticatedUser.py index 7e4e337e..93417fe4 100644 --- a/github/AuthenticatedUser.py +++ b/github/AuthenticatedUser.py @@ -388,7 +388,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): None, post_parameters ) - return github.Gist.Gist(self._requester, data, completed=True) + return github.Gist.Gist(self._requester, headers, data, completed=True) def create_key(self, title, key): """ diff --git a/github/Gist.py b/github/Gist.py index 5453179f..69498746 100644 --- a/github/Gist.py +++ b/github/Gist.py @@ -37,9 +37,6 @@ class Gist(github.GithubObject.CompletableGithubObject): """ This class represents Gists as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def comments(self): @@ -177,7 +174,7 @@ class Gist(github.GithubObject.CompletableGithubObject): None, post_parameters ) - return github.GistComment.GistComment(self._requester, data, completed=True) + return github.GistComment.GistComment(self._requester, headers, data, completed=True) def create_fork(self): """ @@ -190,7 +187,7 @@ class Gist(github.GithubObject.CompletableGithubObject): None, None ) - return Gist(self._requester, data, completed=True) + return Gist(self._requester, headers, data, completed=True) def delete(self): """ @@ -239,7 +236,7 @@ class Gist(github.GithubObject.CompletableGithubObject): None, None ) - return github.GistComment.GistComment(self._requester, data, completed=True) + return github.GistComment.GistComment(self._requester, headers, data, completed=True) def get_comments(self): """ @@ -325,7 +322,7 @@ class Gist(github.GithubObject.CompletableGithubObject): ) if "fork_of" in attributes: # pragma no branch assert attributes["fork_of"] is None or isinstance(attributes["fork_of"], dict), attributes["fork_of"] - self._fork_of = None if attributes["fork_of"] is None else Gist(self._requester, attributes["fork_of"], completed=False) + self._fork_of = None if attributes["fork_of"] is None else Gist(self._requester, self._headers, attributes["fork_of"], completed=False) if "forks" in attributes: # pragma no branch assert attributes["forks"] is None or all(isinstance(element, dict) for element in attributes["forks"]), attributes["forks"] self._forks = None if attributes["forks"] is None else [ @@ -341,7 +338,7 @@ class Gist(github.GithubObject.CompletableGithubObject): if "history" in attributes: # pragma no branch assert attributes["history"] is None or all(isinstance(element, dict) for element in attributes["history"]), attributes["history"] self._history = None if attributes["history"] is None else [ - github.GistHistoryState.GistHistoryState(self._requester, element, completed=False) + github.GistHistoryState.GistHistoryState(self._requester, self._headers, element, completed=False) for element in attributes["history"] ] if "html_url" in attributes: # pragma no branch diff --git a/github/GistComment.py b/github/GistComment.py index d228476f..2bb28abd 100644 --- a/github/GistComment.py +++ b/github/GistComment.py @@ -32,9 +32,6 @@ class GistComment(github.GithubObject.CompletableGithubObject): """ This class represents GistComments as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def body(self): diff --git a/github/GistHistoryState.py b/github/GistHistoryState.py index 34288f1d..2f095558 100644 --- a/github/GistHistoryState.py +++ b/github/GistHistoryState.py @@ -33,9 +33,6 @@ class GistHistoryState(github.GithubObject.CompletableGithubObject): """ This class represents GistHistoryStates as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def change_status(self): diff --git a/github/MainClass.py b/github/MainClass.py index 8f821567..182c8c2f 100644 --- a/github/MainClass.py +++ b/github/MainClass.py @@ -183,7 +183,7 @@ class Github(object): None, None ) - return github.Gist.Gist(self.__requester, data, completed=True) + return github.Gist.Gist(self.__requester, headers, data, completed=True) def get_gists(self): """ diff --git a/github/NamedUser.py b/github/NamedUser.py index b1e619af..3f979fca 100644 --- a/github/NamedUser.py +++ b/github/NamedUser.py @@ -274,7 +274,7 @@ class NamedUser(github.GithubObject.CompletableGithubObject): None, post_parameters ) - return github.Gist.Gist(self._requester, data, completed=True) + return github.Gist.Gist(self._requester, headers, data, completed=True) def get_events(self): """ From b43de50dc4f4a538e284645b4f83b597d008a8a2 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 15:48:08 +0800 Subject: [PATCH 035/103] Update GitBlob.py --- github/GitBlob.py | 3 --- github/Repository.py | 4 ++-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/github/GitBlob.py b/github/GitBlob.py index e4adf50b..ffb12f98 100644 --- a/github/GitBlob.py +++ b/github/GitBlob.py @@ -30,9 +30,6 @@ class GitBlob(github.GithubObject.CompletableGithubObject): """ This class represents GitBlobs as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def content(self): diff --git a/github/Repository.py b/github/Repository.py index 023a43be..d03ca49a 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -388,7 +388,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, post_parameters ) - return github.GitBlob.GitBlob(self._requester, data, completed=True) + 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): """ @@ -999,7 +999,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, None ) - return github.GitBlob.GitBlob(self._requester, data, completed=True) + return github.GitBlob.GitBlob(self._requester, headers, data, completed=True) def get_git_commit(self, sha): """ From 1dbc2dd38f5c31a8a48082daad4981c79d92f0b7 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 15:51:12 +0800 Subject: [PATCH 036/103] Update GitRef.py --- github/GitRef.py | 3 --- github/Repository.py | 4 ++-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/github/GitRef.py b/github/GitRef.py index fd81e371..9ff4f30f 100644 --- a/github/GitRef.py +++ b/github/GitRef.py @@ -32,9 +32,6 @@ class GitRef(github.GithubObject.CompletableGithubObject): """ This class represents GitRefs as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def object(self): diff --git a/github/Repository.py b/github/Repository.py index d03ca49a..290cd615 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -441,7 +441,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, post_parameters ) - return github.GitRef.GitRef(self._requester, data, completed=True) + return github.GitRef.GitRef(self._requester, headers, data, completed=True) def create_git_tag(self, tag, message, object, type, tagger=github.GithubObject.NotSet): """ @@ -1032,7 +1032,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, None ) - return github.GitRef.GitRef(self._requester, data, completed=True) + return github.GitRef.GitRef(self._requester, headers, data, completed=True) def get_git_refs(self): """ From c89bebc729b48477b0d8949d9179bb2e9a7c3bf8 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 15:52:57 +0800 Subject: [PATCH 037/103] Update GitTag.py --- github/GitTag.py | 3 --- github/Repository.py | 4 ++-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/github/GitTag.py b/github/GitTag.py index 186f8928..58a34598 100644 --- a/github/GitTag.py +++ b/github/GitTag.py @@ -33,9 +33,6 @@ class GitTag(github.GithubObject.CompletableGithubObject): """ This class represents GitTags as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def message(self): diff --git a/github/Repository.py b/github/Repository.py index 290cd615..c9757d5e 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -472,7 +472,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, post_parameters ) - return github.GitTag.GitTag(self._requester, data, completed=True) + return github.GitTag.GitTag(self._requester, headers, data, completed=True) def create_git_tree(self, tree, base_tree=github.GithubObject.NotSet): """ @@ -1059,7 +1059,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, None ) - return github.GitTag.GitTag(self._requester, data, completed=True) + return github.GitTag.GitTag(self._requester, headers, data, completed=True) def get_git_tree(self, sha, recursive=github.GithubObject.NotSet): """ From 038e35cb3d40f85b35b6fbe0807f9c761c474310 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 15:55:42 +0800 Subject: [PATCH 038/103] Update GitTree --- github/GitCommit.py | 14 +++++++++++++- github/GitTree.py | 3 --- github/Repository.py | 4 ++-- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/github/GitCommit.py b/github/GitCommit.py index e9272bdc..ab012fba 100644 --- a/github/GitCommit.py +++ b/github/GitCommit.py @@ -124,7 +124,19 @@ class GitCommit(github.GithubObject.CompletableGithubObject): self._sha = attributes["sha"] if "tree" in attributes: # pragma no branch assert attributes["tree"] is None or isinstance(attributes["tree"], dict), attributes["tree"] - self._tree = None if attributes["tree"] is None else github.GitTree.GitTree(self._requester, attributes["tree"], completed=False) + self._tree = None if attributes["tree"] is None else github.GitTree.GitTree(self._requester, self._headers, attributes["tree"], completed=False) if "url" in attributes: # pragma no branch assert attributes["url"] is None or isinstance(attributes["url"], (str, unicode)), attributes["url"] self._url = attributes["url"] + + + + + + + + + + + + diff --git a/github/GitTree.py b/github/GitTree.py index 741180f2..f999de89 100644 --- a/github/GitTree.py +++ b/github/GitTree.py @@ -32,9 +32,6 @@ class GitTree(github.GithubObject.CompletableGithubObject): """ This class represents GitTrees as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def sha(self): diff --git a/github/Repository.py b/github/Repository.py index c9757d5e..e733d891 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -494,7 +494,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, post_parameters ) - return github.GitTree.GitTree(self._requester, data, completed=True) + return github.GitTree.GitTree(self._requester, headers, data, completed=True) def create_hook(self, name, config, events=github.GithubObject.NotSet, active=github.GithubObject.NotSet): """ @@ -1079,7 +1079,7 @@ class Repository(github.GithubObject.CompletableGithubObject): url_parameters, None ) - return github.GitTree.GitTree(self._requester, data, completed=True) + return github.GitTree.GitTree(self._requester, headers, data, completed=True) def get_hook(self, id): """ From 044a000d7647e9134c69378f760ff1a2bd141f4d Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 15:58:07 +0800 Subject: [PATCH 039/103] Update Hook.py --- github/Hook.py | 3 --- github/Repository.py | 4 ++-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/github/Hook.py b/github/Hook.py index 965cc2ae..4366b559 100644 --- a/github/Hook.py +++ b/github/Hook.py @@ -32,9 +32,6 @@ class Hook(github.GithubObject.CompletableGithubObject): """ This class represents Hooks as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def active(self): diff --git a/github/Repository.py b/github/Repository.py index e733d891..a58a5990 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -523,7 +523,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, post_parameters ) - return github.Hook.Hook(self._requester, data, completed=True) + 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): """ @@ -1094,7 +1094,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, None ) - return github.Hook.Hook(self._requester, data, completed=True) + return github.Hook.Hook(self._requester, headers, data, completed=True) def get_hooks(self): """ From 49a69c9425789cfb21c49888a144b123ae564cf3 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 16:08:54 +0800 Subject: [PATCH 040/103] Update Issue.py --- github/Issue.py | 3 --- github/IssueEvent.py | 14 +++++++++++++- github/Repository.py | 6 +++--- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/github/Issue.py b/github/Issue.py index 6c4c9161..502263de 100644 --- a/github/Issue.py +++ b/github/Issue.py @@ -41,9 +41,6 @@ class Issue(github.GithubObject.CompletableGithubObject): """ This class represents Issues as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def assignee(self): diff --git a/github/IssueEvent.py b/github/IssueEvent.py index 2a5677af..aa64f355 100644 --- a/github/IssueEvent.py +++ b/github/IssueEvent.py @@ -120,7 +120,19 @@ class IssueEvent(github.GithubObject.CompletableGithubObject): self._id = attributes["id"] if "issue" in attributes: # pragma no branch assert attributes["issue"] is None or isinstance(attributes["issue"], dict), attributes["issue"] - self._issue = None if attributes["issue"] is None else github.Issue.Issue(self._requester, attributes["issue"], completed=False) + self._issue = None if attributes["issue"] is None else github.Issue.Issue(self._requester, self._headers, attributes["issue"], completed=False) if "url" in attributes: # pragma no branch assert attributes["url"] is None or isinstance(attributes["url"], (str, unicode)), attributes["url"] self._url = attributes["url"] + + + + + + + + + + + + diff --git a/github/Repository.py b/github/Repository.py index a58a5990..c364b058 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -557,7 +557,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, post_parameters ) - return github.Issue.Issue(self._requester, data, completed=True) + return github.Issue.Issue(self._requester, headers, data, completed=True) def create_key(self, title, key): """ @@ -1121,7 +1121,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, None ) - return github.Issue.Issue(self._requester, data, completed=True) + 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): """ @@ -1536,7 +1536,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None ) return [ - github.Issue.Issue(self._requester, github.Legacy.convertIssue(element), completed=False) + github.Issue.Issue(self._requester, headers, github.Legacy.convertIssue(element), completed=False) for element in data["issues"] ] From 8f2ba4f522dbae090b8287663a9a1a88283803b4 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 16:13:22 +0800 Subject: [PATCH 041/103] Update IssueComment.py --- github/Issue.py | 4 ++-- github/IssueComment.py | 3 --- github/PullRequest.py | 4 ++-- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/github/Issue.py b/github/Issue.py index 502263de..0c2dfc21 100644 --- a/github/Issue.py +++ b/github/Issue.py @@ -217,7 +217,7 @@ class Issue(github.GithubObject.CompletableGithubObject): None, post_parameters ) - return github.IssueComment.IssueComment(self._requester, data, completed=True) + return github.IssueComment.IssueComment(self._requester, headers, data, completed=True) def delete_labels(self): """ @@ -282,7 +282,7 @@ class Issue(github.GithubObject.CompletableGithubObject): None, None ) - return github.IssueComment.IssueComment(self._requester, data, completed=True) + return github.IssueComment.IssueComment(self._requester, headers, data, completed=True) def get_comments(self): """ diff --git a/github/IssueComment.py b/github/IssueComment.py index d39470ab..5e9e5099 100644 --- a/github/IssueComment.py +++ b/github/IssueComment.py @@ -33,9 +33,6 @@ class IssueComment(github.GithubObject.CompletableGithubObject): """ This class represents IssueComments as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def body(self): diff --git a/github/PullRequest.py b/github/PullRequest.py index 32c213c5..aeaa2508 100644 --- a/github/PullRequest.py +++ b/github/PullRequest.py @@ -315,7 +315,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject): None, post_parameters ) - return github.IssueComment.IssueComment(self._requester, data, completed=True) + return github.IssueComment.IssueComment(self._requester, headers, data, completed=True) def edit(self, title=github.GithubObject.NotSet, body=github.GithubObject.NotSet, state=github.GithubObject.NotSet): """ @@ -422,7 +422,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject): None, None ) - return github.IssueComment.IssueComment(self._requester, data, completed=True) + return github.IssueComment.IssueComment(self._requester, headers, data, completed=True) def get_issue_comments(self): """ From 7d40b9eae87fb1631f358e3c09a9d691a942f258 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 16:17:26 +0800 Subject: [PATCH 042/103] Update IssueEvent.py --- github/IssueEvent.py | 3 --- github/Repository.py | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/github/IssueEvent.py b/github/IssueEvent.py index aa64f355..3d05a8c7 100644 --- a/github/IssueEvent.py +++ b/github/IssueEvent.py @@ -33,9 +33,6 @@ class IssueEvent(github.GithubObject.CompletableGithubObject): """ This class represents IssueEvents as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def actor(self): diff --git a/github/Repository.py b/github/Repository.py index c364b058..49530a69 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -1212,7 +1212,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, None ) - return github.IssueEvent.IssueEvent(self._requester, data, completed=True) + return github.IssueEvent.IssueEvent(self._requester, headers, data, completed=True) def get_issues_events(self): """ From 175488270a65a97a42c7bc3fd0bf42676ea4a6e3 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 16:21:22 +0800 Subject: [PATCH 043/103] Update Label.py --- github/Issue.py | 2 +- github/Label.py | 3 --- github/Repository.py | 4 ++-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/github/Issue.py b/github/Issue.py index 0c2dfc21..6a863638 100644 --- a/github/Issue.py +++ b/github/Issue.py @@ -401,7 +401,7 @@ class Issue(github.GithubObject.CompletableGithubObject): if "labels" in attributes: # pragma no branch assert attributes["labels"] is None or all(isinstance(element, dict) for element in attributes["labels"]), attributes["labels"] self._labels = None if attributes["labels"] is None else [ - github.Label.Label(self._requester, element, completed=False) + github.Label.Label(self._requester, self._headers, element, completed=False) for element in attributes["labels"] ] if "milestone" in attributes: # pragma no branch diff --git a/github/Label.py b/github/Label.py index e09082ff..e2d42335 100644 --- a/github/Label.py +++ b/github/Label.py @@ -33,9 +33,6 @@ class Label(github.GithubObject.CompletableGithubObject): """ This class represents Labels. The reference can be found here http://developer.github.com/v3/issues/labels/ """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def color(self): diff --git a/github/Repository.py b/github/Repository.py index 49530a69..12de729f 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -599,7 +599,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, post_parameters ) - return github.Label.Label(self._requester, data, completed=True) + 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): """ @@ -1266,7 +1266,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, None ) - return github.Label.Label(self._requester, data, completed=True) + return github.Label.Label(self._requester, headers, data, completed=True) def get_labels(self): """ From e4baf577ed5445bbc156c123ccbd7da3c1a3b650 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 16:24:27 +0800 Subject: [PATCH 044/103] Update Milestone.py --- github/Issue.py | 2 +- github/Milestone.py | 3 --- github/Repository.py | 4 ++-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/github/Issue.py b/github/Issue.py index 6a863638..e539cef4 100644 --- a/github/Issue.py +++ b/github/Issue.py @@ -406,7 +406,7 @@ class Issue(github.GithubObject.CompletableGithubObject): ] if "milestone" in attributes: # pragma no branch assert attributes["milestone"] is None or isinstance(attributes["milestone"], dict), attributes["milestone"] - self._milestone = None if attributes["milestone"] is None else github.Milestone.Milestone(self._requester, attributes["milestone"], completed=False) + self._milestone = None if attributes["milestone"] is None else github.Milestone.Milestone(self._requester, self._headers, attributes["milestone"], completed=False) if "number" in attributes: # pragma no branch assert attributes["number"] is None or isinstance(attributes["number"], (int, long)), attributes["number"] self._number = attributes["number"] diff --git a/github/Milestone.py b/github/Milestone.py index 2650d24b..9611d7b7 100644 --- a/github/Milestone.py +++ b/github/Milestone.py @@ -37,9 +37,6 @@ class Milestone(github.GithubObject.CompletableGithubObject): """ This class represents Milestones. The reference can be found here http://developer.github.com/v3/issues/milestones/ """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def closed_issues(self): diff --git a/github/Repository.py b/github/Repository.py index 12de729f..93fa581a 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -629,7 +629,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, post_parameters ) - return github.Milestone.Milestone(self._requester, data, completed=True) + return github.Milestone.Milestone(self._requester, headers, data, completed=True) def create_pull(self, *args, **kwds): """ @@ -1306,7 +1306,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, None ) - return github.Milestone.Milestone(self._requester, data, completed=True) + 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): """ From ba6800ada4213828bdb4f5d54d14e0d4c3c25c4c Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 16:57:10 +0800 Subject: [PATCH 045/103] Update NamedUser.py --- github/Commit.py | 4 ++-- github/CommitComment.py | 17 ++++++++++++++++- github/CommitStatus.py | 2 +- github/Event.py | 2 +- github/Gist.py | 17 ++++++++++++++++- github/GistComment.py | 17 ++++++++++++++++- github/GistHistoryState.py | 14 +++++++++++++- github/Issue.py | 21 ++++++++++++++++++--- github/IssueComment.py | 17 ++++++++++++++++- github/IssueEvent.py | 2 +- github/Legacy.py | 14 ++++++++++---- github/MainClass.py | 18 ++++++++++++++---- github/Milestone.py | 2 +- github/NamedUser.py | 3 --- github/PullRequest.py | 21 ++++++++++++++++++--- github/PullRequestComment.py | 17 ++++++++++++++++- github/PullRequestPart.py | 12 +++++++++++- github/Repository.py | 2 +- 18 files changed, 171 insertions(+), 31 deletions(-) diff --git a/github/Commit.py b/github/Commit.py index 0fba1935..e71399fd 100644 --- a/github/Commit.py +++ b/github/Commit.py @@ -201,13 +201,13 @@ class Commit(github.GithubObject.CompletableGithubObject): def _useAttributes(self, attributes): if "author" in attributes: # pragma no branch assert attributes["author"] is None or isinstance(attributes["author"], dict), attributes["author"] - self._author = None if attributes["author"] is None else github.NamedUser.NamedUser(self._requester, attributes["author"], completed=False) + self._author = None if attributes["author"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["author"], completed=False) if "commit" in attributes: # pragma no branch assert attributes["commit"] is None or isinstance(attributes["commit"], dict), attributes["commit"] self._commit = None if attributes["commit"] is None else github.GitCommit.GitCommit(self._requester, self._headers, attributes["commit"], completed=False) if "committer" in attributes: # pragma no branch assert attributes["committer"] is None or isinstance(attributes["committer"], dict), attributes["committer"] - self._committer = None if attributes["committer"] is None else github.NamedUser.NamedUser(self._requester, attributes["committer"], completed=False) + self._committer = None if attributes["committer"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["committer"], completed=False) if "files" in attributes: # pragma no branch assert attributes["files"] is None or all(isinstance(element, dict) for element in attributes["files"]), attributes["files"] self._files = None if attributes["files"] is None else [ diff --git a/github/CommitComment.py b/github/CommitComment.py index 30f1df3a..e5dcc883 100644 --- a/github/CommitComment.py +++ b/github/CommitComment.py @@ -197,4 +197,19 @@ class CommitComment(github.GithubObject.CompletableGithubObject): self._url = attributes["url"] if "user" in attributes: # pragma no branch assert attributes["user"] is None or isinstance(attributes["user"], dict), attributes["user"] - self._user = None if attributes["user"] is None else github.NamedUser.NamedUser(self._requester, attributes["user"], completed=False) + self._user = None if attributes["user"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["user"], completed=False) + + + + + + + + + + + + + + + diff --git a/github/CommitStatus.py b/github/CommitStatus.py index 122c55c4..e40af474 100644 --- a/github/CommitStatus.py +++ b/github/CommitStatus.py @@ -97,7 +97,7 @@ class CommitStatus(github.GithubObject.NonCompletableGithubObject): self._created_at = self._parseDatetime(attributes["created_at"]) if "creator" in attributes: # pragma no branch assert attributes["creator"] is None or isinstance(attributes["creator"], dict), attributes["creator"] - self._creator = None if attributes["creator"] is None else github.NamedUser.NamedUser(self._requester, attributes["creator"], completed=False) + self._creator = None if attributes["creator"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["creator"], completed=False) if "description" in attributes: # pragma no branch assert attributes["description"] is None or isinstance(attributes["description"], (str, unicode)), attributes["description"] self._description = attributes["description"] diff --git a/github/Event.py b/github/Event.py index 60e7c863..1670782e 100644 --- a/github/Event.py +++ b/github/Event.py @@ -105,7 +105,7 @@ class Event(github.GithubObject.NonCompletableGithubObject): def _useAttributes(self, attributes): if "actor" in attributes: # pragma no branch assert attributes["actor"] is None or isinstance(attributes["actor"], dict), attributes["actor"] - self._actor = None if attributes["actor"] is None else github.NamedUser.NamedUser(self._requester, attributes["actor"], completed=False) + self._actor = None if attributes["actor"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["actor"], completed=False) if "created_at" in attributes: # pragma no branch assert attributes["created_at"] is None or isinstance(attributes["created_at"], (str, unicode)), attributes["created_at"] self._created_at = self._parseDatetime(attributes["created_at"]) diff --git a/github/Gist.py b/github/Gist.py index 69498746..3dcf1d18 100644 --- a/github/Gist.py +++ b/github/Gist.py @@ -358,4 +358,19 @@ class Gist(github.GithubObject.CompletableGithubObject): self._url = attributes["url"] if "user" in attributes: # pragma no branch assert attributes["user"] is None or isinstance(attributes["user"], dict), attributes["user"] - self._user = None if attributes["user"] is None else github.NamedUser.NamedUser(self._requester, attributes["user"], completed=False) + self._user = None if attributes["user"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["user"], completed=False) + + + + + + + + + + + + + + + diff --git a/github/GistComment.py b/github/GistComment.py index 2bb28abd..c2e3e3bd 100644 --- a/github/GistComment.py +++ b/github/GistComment.py @@ -137,4 +137,19 @@ class GistComment(github.GithubObject.CompletableGithubObject): self._url = attributes["url"] if "user" in attributes: # pragma no branch assert attributes["user"] is None or isinstance(attributes["user"], dict), attributes["user"] - self._user = None if attributes["user"] is None else github.NamedUser.NamedUser(self._requester, attributes["user"], completed=False) + self._user = None if attributes["user"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["user"], completed=False) + + + + + + + + + + + + + + + diff --git a/github/GistHistoryState.py b/github/GistHistoryState.py index 2f095558..374782b7 100644 --- a/github/GistHistoryState.py +++ b/github/GistHistoryState.py @@ -93,7 +93,19 @@ class GistHistoryState(github.GithubObject.CompletableGithubObject): self._url = attributes["url"] if "user" in attributes: # pragma no branch assert attributes["user"] is None or isinstance(attributes["user"], dict), attributes["user"] - self._user = None if attributes["user"] is None else github.NamedUser.NamedUser(self._requester, attributes["user"], completed=False) + self._user = None if attributes["user"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["user"], completed=False) if "version" in attributes: # pragma no branch assert attributes["version"] is None or isinstance(attributes["version"], (str, unicode)), attributes["version"] self._version = attributes["version"] + + + + + + + + + + + + diff --git a/github/Issue.py b/github/Issue.py index e539cef4..ec3923b9 100644 --- a/github/Issue.py +++ b/github/Issue.py @@ -376,7 +376,7 @@ class Issue(github.GithubObject.CompletableGithubObject): def _useAttributes(self, attributes): if "assignee" in attributes: # pragma no branch assert attributes["assignee"] is None or isinstance(attributes["assignee"], dict), attributes["assignee"] - self._assignee = None if attributes["assignee"] is None else github.NamedUser.NamedUser(self._requester, attributes["assignee"], completed=False) + self._assignee = None if attributes["assignee"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["assignee"], completed=False) if "body" in attributes: # pragma no branch assert attributes["body"] is None or isinstance(attributes["body"], (str, unicode)), attributes["body"] self._body = attributes["body"] @@ -385,7 +385,7 @@ class Issue(github.GithubObject.CompletableGithubObject): self._closed_at = self._parseDatetime(attributes["closed_at"]) if "closed_by" in attributes: # pragma no branch assert attributes["closed_by"] is None or isinstance(attributes["closed_by"], dict), attributes["closed_by"] - self._closed_by = None if attributes["closed_by"] is None else github.NamedUser.NamedUser(self._requester, attributes["closed_by"], completed=False) + self._closed_by = None if attributes["closed_by"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["closed_by"], completed=False) if "comments" in attributes: # pragma no branch assert attributes["comments"] is None or isinstance(attributes["comments"], (int, long)), attributes["comments"] self._comments = attributes["comments"] @@ -430,4 +430,19 @@ class Issue(github.GithubObject.CompletableGithubObject): self._url = attributes["url"] if "user" in attributes: # pragma no branch assert attributes["user"] is None or isinstance(attributes["user"], dict), attributes["user"] - self._user = None if attributes["user"] is None else github.NamedUser.NamedUser(self._requester, attributes["user"], completed=False) + self._user = None if attributes["user"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["user"], completed=False) + + + + + + + + + + + + + + + diff --git a/github/IssueComment.py b/github/IssueComment.py index 5e9e5099..419af317 100644 --- a/github/IssueComment.py +++ b/github/IssueComment.py @@ -150,4 +150,19 @@ class IssueComment(github.GithubObject.CompletableGithubObject): self._html_url = attributes["html_url"] if "user" in attributes: # pragma no branch assert attributes["user"] is None or isinstance(attributes["user"], dict), attributes["user"] - self._user = None if attributes["user"] is None else github.NamedUser.NamedUser(self._requester, attributes["user"], completed=False) + self._user = None if attributes["user"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["user"], completed=False) + + + + + + + + + + + + + + + diff --git a/github/IssueEvent.py b/github/IssueEvent.py index 3d05a8c7..0fb54291 100644 --- a/github/IssueEvent.py +++ b/github/IssueEvent.py @@ -102,7 +102,7 @@ class IssueEvent(github.GithubObject.CompletableGithubObject): def _useAttributes(self, attributes): if "actor" in attributes: # pragma no branch assert attributes["actor"] is None or isinstance(attributes["actor"], dict), attributes["actor"] - self._actor = None if attributes["actor"] is None else github.NamedUser.NamedUser(self._requester, attributes["actor"], completed=False) + self._actor = None if attributes["actor"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["actor"], completed=False) if "commit_id" in attributes: # pragma no branch assert attributes["commit_id"] is None or isinstance(attributes["commit_id"], (str, unicode)), attributes["commit_id"] self._commit_id = attributes["commit_id"] diff --git a/github/Legacy.py b/github/Legacy.py index 599ca605..2f36f4a3 100644 --- a/github/Legacy.py +++ b/github/Legacy.py @@ -61,10 +61,16 @@ class PaginatedList(github.PaginatedList.PaginatedListBase): None ) self.__continue = len(data[self.__key]) > 0 - return [ - self.__contentClass(self.__requester, self.__convert(element), completed=False) - for element in data[self.__key] - ] + try: + return [ + self.__contentClass(self.__requester, headers, self.__convert(element), completed=False) + for element in data[self.__key] + ] + except TypeError: + return [ + self.__contentClass(self.__requester, self.__convert(element), completed=False) + for element in data[self.__key] + ] def convertUser(attributes): diff --git a/github/MainClass.py b/github/MainClass.py index 182c8c2f..394eddb0 100644 --- a/github/MainClass.py +++ b/github/MainClass.py @@ -122,7 +122,7 @@ class Github(object): None, None ) - return github.NamedUser.NamedUser(self.__requester, data, completed=True) + return github.NamedUser.NamedUser(self.__requester, headers, data, completed=True) def get_users(self, since=github.GithubObject.NotSet): """ @@ -245,7 +245,7 @@ class Github(object): None, None ) - return github.NamedUser.NamedUser(self.__requester, Legacy.convertUser(data["user"]), completed=False) + return github.NamedUser.NamedUser(self.__requester, headers, Legacy.convertUser(data["user"]), completed=False) def render_markdown(self, text, context=github.GithubObject.NotSet): """ @@ -310,7 +310,7 @@ class Github(object): ) return GitignoreTemplate.GitignoreTemplate(self.__requester, headers, attributes, completed=True) - def create_from_raw_data(self, klass, raw_data): + def create_from_raw_data(self, klass, raw_data, headers = {}): """ Creates an object from raw_data previously obtained by :attr:`github.GithubObject.GithubObject.raw_data` @@ -318,4 +318,14 @@ class Github(object): :param raw_data: dict :rtype: instance of class ``klass`` """ - return klass(self.__requester, raw_data, completed=True) + return klass(self.__requester, headers, raw_data, completed=True) + + + + + + + + + + diff --git a/github/Milestone.py b/github/Milestone.py index 9611d7b7..614b8d0e 100644 --- a/github/Milestone.py +++ b/github/Milestone.py @@ -206,7 +206,7 @@ class Milestone(github.GithubObject.CompletableGithubObject): self._created_at = self._parseDatetime(attributes["created_at"]) if "creator" in attributes: # pragma no branch assert attributes["creator"] is None or isinstance(attributes["creator"], dict), attributes["creator"] - self._creator = None if attributes["creator"] is None else github.NamedUser.NamedUser(self._requester, attributes["creator"], completed=False) + self._creator = None if attributes["creator"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["creator"], completed=False) if "description" in attributes: # pragma no branch assert attributes["description"] is None or isinstance(attributes["description"], (str, unicode)), attributes["description"] self._description = attributes["description"] diff --git a/github/NamedUser.py b/github/NamedUser.py index 3f979fca..7bfa3ff1 100644 --- a/github/NamedUser.py +++ b/github/NamedUser.py @@ -39,9 +39,6 @@ class NamedUser(github.GithubObject.CompletableGithubObject): """ This class represents NamedUsers as returned for example by http://developer.github.com/v3/todo """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def avatar_url(self): diff --git a/github/PullRequest.py b/github/PullRequest.py index aeaa2508..2dc0e82c 100644 --- a/github/PullRequest.py +++ b/github/PullRequest.py @@ -502,7 +502,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject): self._additions = attributes["additions"] if "assignee" in attributes: # pragma no branch assert attributes["assignee"] is None or isinstance(attributes["assignee"], dict), attributes["assignee"] - self._assignee = None if attributes["assignee"] is None else github.NamedUser.NamedUser(self._requester, attributes["assignee"], completed=False) + self._assignee = None if attributes["assignee"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["assignee"], completed=False) if "base" in attributes: # pragma no branch assert attributes["base"] is None or isinstance(attributes["base"], dict), attributes["base"] self._base = None if attributes["base"] is None else github.PullRequestPart.PullRequestPart(self._requester, self._headers, attributes["base"], completed=False) @@ -553,7 +553,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject): self._merged_at = self._parseDatetime(attributes["merged_at"]) if "merged_by" in attributes: # pragma no branch assert attributes["merged_by"] is None or isinstance(attributes["merged_by"], dict), attributes["merged_by"] - self._merged_by = None if attributes["merged_by"] is None else github.NamedUser.NamedUser(self._requester, attributes["merged_by"], completed=False) + self._merged_by = None if attributes["merged_by"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["merged_by"], completed=False) if "number" in attributes: # pragma no branch assert attributes["number"] is None or isinstance(attributes["number"], (int, long)), attributes["number"] self._number = attributes["number"] @@ -577,4 +577,19 @@ class PullRequest(github.GithubObject.CompletableGithubObject): self._url = attributes["url"] if "user" in attributes: # pragma no branch assert attributes["user"] is None or isinstance(attributes["user"], dict), attributes["user"] - self._user = None if attributes["user"] is None else github.NamedUser.NamedUser(self._requester, attributes["user"], completed=False) + self._user = None if attributes["user"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["user"], completed=False) + + + + + + + + + + + + + + + diff --git a/github/PullRequestComment.py b/github/PullRequestComment.py index 31be092b..4cf15d63 100644 --- a/github/PullRequestComment.py +++ b/github/PullRequestComment.py @@ -214,4 +214,19 @@ class PullRequestComment(github.GithubObject.CompletableGithubObject): self._html_url = attributes["html_url"] if "user" in attributes: # pragma no branch assert attributes["user"] is None or isinstance(attributes["user"], dict), attributes["user"] - self._user = None if attributes["user"] is None else github.NamedUser.NamedUser(self._requester, attributes["user"], completed=False) + self._user = None if attributes["user"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["user"], completed=False) + + + + + + + + + + + + + + + diff --git a/github/PullRequestPart.py b/github/PullRequestPart.py index 99778645..837b7bf0 100644 --- a/github/PullRequestPart.py +++ b/github/PullRequestPart.py @@ -91,4 +91,14 @@ class PullRequestPart(github.GithubObject.NonCompletableGithubObject): self._sha = attributes["sha"] if "user" in attributes: # pragma no branch assert attributes["user"] is None or isinstance(attributes["user"], dict), attributes["user"] - self._user = None if attributes["user"] is None else github.NamedUser.NamedUser(self._requester, attributes["user"], completed=False) + self._user = None if attributes["user"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["user"], completed=False) + + + + + + + + + + diff --git a/github/Repository.py b/github/Repository.py index 93fa581a..3319d30a 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -1716,7 +1716,7 @@ class Repository(github.GithubObject.CompletableGithubObject): self._organization = None if attributes["organization"] is None else github.Organization.Organization(self._requester, attributes["organization"], completed=False) if "owner" in attributes: # pragma no branch assert attributes["owner"] is None or isinstance(attributes["owner"], dict), attributes["owner"] - self._owner = None if attributes["owner"] is None else github.NamedUser.NamedUser(self._requester, attributes["owner"], completed=False) + self._owner = None if attributes["owner"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["owner"], completed=False) if "parent" in attributes: # pragma no branch assert attributes["parent"] is None or isinstance(attributes["parent"], dict), attributes["parent"] self._parent = None if attributes["parent"] is None else Repository(self._requester, attributes["parent"], completed=False) From 6cb6e8d232f84e7456c184a4cd055281bb0dba07 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 16:58:25 +0800 Subject: [PATCH 046/103] Update Notification.py --- github/AuthenticatedUser.py | 2 +- github/Notification.py | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/github/AuthenticatedUser.py b/github/AuthenticatedUser.py index 93417fe4..75caa57c 100644 --- a/github/AuthenticatedUser.py +++ b/github/AuthenticatedUser.py @@ -707,7 +707,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): None, None ) - return github.Notification.Notification(self._requester, data, completed=True) + return github.Notification.Notification(self._requester, headers, data, completed=True) def get_notifications(self, all=github.GithubObject.NotSet, participating=github.GithubObject.NotSet): """ diff --git a/github/Notification.py b/github/Notification.py index 433cfcd3..f6f89fa5 100644 --- a/github/Notification.py +++ b/github/Notification.py @@ -33,9 +33,6 @@ class Notification(github.GithubObject.CompletableGithubObject): """ This class represents Notifications. The reference can be found here http://developer.github.com/v3/activity/notifications/ """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def id(self): From ef912af6b79414351de245aa7a6919cad461ca50 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 17:01:13 +0800 Subject: [PATCH 047/103] Update Organization.py --- github/Event.py | 5 ++++- github/MainClass.py | 2 +- github/Organization.py | 3 --- github/Repository.py | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/github/Event.py b/github/Event.py index 1670782e..cd45e14c 100644 --- a/github/Event.py +++ b/github/Event.py @@ -114,7 +114,7 @@ class Event(github.GithubObject.NonCompletableGithubObject): self._id = attributes["id"] if "org" in attributes: # pragma no branch assert attributes["org"] is None or isinstance(attributes["org"], dict), attributes["org"] - self._org = None if attributes["org"] is None else github.Organization.Organization(self._requester, attributes["org"], completed=False) + self._org = None if attributes["org"] is None else github.Organization.Organization(self._requester, self._headers, attributes["org"], completed=False) if "payload" in attributes: # pragma no branch assert attributes["payload"] is None or isinstance(attributes["payload"], dict), attributes["payload"] self._payload = attributes["payload"] @@ -127,3 +127,6 @@ class Event(github.GithubObject.NonCompletableGithubObject): if "type" in attributes: # pragma no branch assert attributes["type"] is None or isinstance(attributes["type"], (str, unicode)), attributes["type"] self._type = attributes["type"] + + + diff --git a/github/MainClass.py b/github/MainClass.py index 394eddb0..44e22df1 100644 --- a/github/MainClass.py +++ b/github/MainClass.py @@ -154,7 +154,7 @@ class Github(object): None, None ) - return github.Organization.Organization(self.__requester, data, completed=True) + return github.Organization.Organization(self.__requester, headers, data, completed=True) def get_repo(self, full_name): """ diff --git a/github/Organization.py b/github/Organization.py index 16db918d..bf341419 100644 --- a/github/Organization.py +++ b/github/Organization.py @@ -41,9 +41,6 @@ class Organization(github.GithubObject.CompletableGithubObject): """ This class represents Organizations. The reference can be found here http://developer.github.com/v3/orgs/ """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def avatar_url(self): diff --git a/github/Repository.py b/github/Repository.py index 3319d30a..32c93e5a 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -1713,7 +1713,7 @@ class Repository(github.GithubObject.CompletableGithubObject): self._open_issues = attributes["open_issues"] if "organization" in attributes: # pragma no branch assert attributes["organization"] is None or isinstance(attributes["organization"], dict), attributes["organization"] - self._organization = None if attributes["organization"] is None else github.Organization.Organization(self._requester, attributes["organization"], completed=False) + self._organization = None if attributes["organization"] is None else github.Organization.Organization(self._requester, self._headers, attributes["organization"], completed=False) if "owner" in attributes: # pragma no branch assert attributes["owner"] is None or isinstance(attributes["owner"], dict), attributes["owner"] self._owner = None if attributes["owner"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["owner"], completed=False) From 0e842637a6052129b1706419a66597f419b4b2ba Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 17:03:41 +0800 Subject: [PATCH 048/103] Update PullRequest.py --- github/PullRequest.py | 7 ++----- github/PullRequestComment.py | 3 --- github/Repository.py | 4 ++-- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/github/PullRequest.py b/github/PullRequest.py index 2dc0e82c..fa36d470 100644 --- a/github/PullRequest.py +++ b/github/PullRequest.py @@ -41,9 +41,6 @@ class PullRequest(github.GithubObject.CompletableGithubObject): """ This class represents PullRequests. The reference can be found here http://developer.github.com/v3/pulls/ """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def additions(self): @@ -297,7 +294,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject): None, post_parameters ) - return github.PullRequestComment.PullRequestComment(self._requester, data, completed=True) + return github.PullRequestComment.PullRequestComment(self._requester, headers, data, completed=True) def create_issue_comment(self, body): """ @@ -364,7 +361,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject): None, None ) - return github.PullRequestComment.PullRequestComment(self._requester, data, completed=True) + return github.PullRequestComment.PullRequestComment(self._requester, headers, data, completed=True) def get_comments(self): """ diff --git a/github/PullRequestComment.py b/github/PullRequestComment.py index 4cf15d63..dcddc247 100644 --- a/github/PullRequestComment.py +++ b/github/PullRequestComment.py @@ -34,9 +34,6 @@ class PullRequestComment(github.GithubObject.CompletableGithubObject): """ This class represents PullRequestComments. The reference can be found here http://developer.github.com/v3/pulls/comments/ """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def body(self): diff --git a/github/Repository.py b/github/Repository.py index 32c93e5a..5c305d9e 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -667,7 +667,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, post_parameters ) - return github.PullRequest.PullRequest(self._requester, data, completed=True) + return github.PullRequest.PullRequest(self._requester, headers, data, completed=True) def delete(self): """ @@ -1358,7 +1358,7 @@ class Repository(github.GithubObject.CompletableGithubObject): None, None ) - return github.PullRequest.PullRequest(self._requester, data, completed=True) + return github.PullRequest.PullRequest(self._requester, headers, data, completed=True) def get_pulls(self, state=github.GithubObject.NotSet): """ From 3c1d17cd649e79ff7c97d2c68daffbf6529ed969 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 17:13:03 +0800 Subject: [PATCH 049/103] Update Repository.py --- github/AuthenticatedUser.py | 6 +++--- github/Event.py | 6 +++++- github/Issue.py | 2 +- github/MainClass.py | 2 +- github/NamedUser.py | 2 +- github/Notification.py | 2 +- github/Organization.py | 6 +++--- github/PullRequestPart.py | 2 +- github/Repository.py | 7 ++----- 9 files changed, 18 insertions(+), 17 deletions(-) diff --git a/github/AuthenticatedUser.py b/github/AuthenticatedUser.py index 75caa57c..6fd4c16b 100644 --- a/github/AuthenticatedUser.py +++ b/github/AuthenticatedUser.py @@ -363,7 +363,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): None, None ) - return github.Repository.Repository(self._requester, data, completed=True) + return github.Repository.Repository(self._requester, headers, data, completed=True) def create_gist(self, public, files, description=github.GithubObject.NotSet): """ @@ -459,7 +459,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): None, post_parameters ) - return github.Repository.Repository(self._requester, data, completed=True) + return github.Repository.Repository(self._requester, headers, data, completed=True) def edit(self, name=github.GithubObject.NotSet, email=github.GithubObject.NotSet, blog=github.GithubObject.NotSet, company=github.GithubObject.NotSet, location=github.GithubObject.NotSet, hireable=github.GithubObject.NotSet, bio=github.GithubObject.NotSet): """ @@ -771,7 +771,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): None, None ) - return github.Repository.Repository(self._requester, data, completed=True) + return github.Repository.Repository(self._requester, headers, data, completed=True) def get_repos(self, type=github.GithubObject.NotSet, sort=github.GithubObject.NotSet, direction=github.GithubObject.NotSet): """ diff --git a/github/Event.py b/github/Event.py index cd45e14c..aefc3ca9 100644 --- a/github/Event.py +++ b/github/Event.py @@ -123,10 +123,14 @@ class Event(github.GithubObject.NonCompletableGithubObject): self._public = attributes["public"] if "repo" in attributes: # pragma no branch assert attributes["repo"] is None or isinstance(attributes["repo"], dict), attributes["repo"] - self._repo = None if attributes["repo"] is None else github.Repository.Repository(self._requester, attributes["repo"], completed=False) + self._repo = None if attributes["repo"] is None else github.Repository.Repository(self._requester, self._headers, attributes["repo"], completed=False) if "type" in attributes: # pragma no branch assert attributes["type"] is None or isinstance(attributes["type"], (str, unicode)), attributes["type"] self._type = attributes["type"] + + + + diff --git a/github/Issue.py b/github/Issue.py index ec3923b9..01bffcfd 100644 --- a/github/Issue.py +++ b/github/Issue.py @@ -415,7 +415,7 @@ class Issue(github.GithubObject.CompletableGithubObject): self._pull_request = None if attributes["pull_request"] is None else github.IssuePullRequest.IssuePullRequest(self._requester, self._headers, attributes["pull_request"], completed=False) if "repository" in attributes: # pragma no branch assert attributes["repository"] is None or isinstance(attributes["repository"], dict), attributes["repository"] - self._repository = None if attributes["repository"] is None else github.Repository.Repository(self._requester, attributes["repository"], completed=False) + self._repository = None if attributes["repository"] is None else github.Repository.Repository(self._requester, self._headers, attributes["repository"], completed=False) if "state" in attributes: # pragma no branch assert attributes["state"] is None or isinstance(attributes["state"], (str, unicode)), attributes["state"] self._state = attributes["state"] diff --git a/github/MainClass.py b/github/MainClass.py index 44e22df1..2b1db292 100644 --- a/github/MainClass.py +++ b/github/MainClass.py @@ -168,7 +168,7 @@ class Github(object): None, None ) - return Repository.Repository(self.__requester, data, completed=True) + return Repository.Repository(self.__requester, headers, data, completed=True) def get_gist(self, id): """ diff --git a/github/NamedUser.py b/github/NamedUser.py index 7bfa3ff1..09927bae 100644 --- a/github/NamedUser.py +++ b/github/NamedUser.py @@ -394,7 +394,7 @@ class NamedUser(github.GithubObject.CompletableGithubObject): None, None ) - return github.Repository.Repository(self._requester, data, completed=True) + return github.Repository.Repository(self._requester, headers, data, completed=True) def get_repos(self, type=github.GithubObject.NotSet): """ diff --git a/github/Notification.py b/github/Notification.py index f6f89fa5..58957495 100644 --- a/github/Notification.py +++ b/github/Notification.py @@ -104,7 +104,7 @@ class Notification(github.GithubObject.CompletableGithubObject): self._id = attributes["id"] if "repository" in attributes: # pragma no branch assert attributes["repository"] is None or isinstance(attributes["repository"], dict), attributes["repository"] - self._repository = None if attributes["repository"] is None else github.Repository.Repository(self._requester, attributes["repository"], completed=False) + self._repository = None if attributes["repository"] is None else github.Repository.Repository(self._requester, self._headers, attributes["repository"], completed=False) if "subject" in attributes: # pragma no branch assert attributes["subject"] is None or isinstance(attributes["subject"], dict), attributes["subject"] self._subject = None if attributes["subject"] is None else github.NotificationSubject.NotificationSubject(self._requester, self._headers, attributes["subject"], completed=False) diff --git a/github/Organization.py b/github/Organization.py index bf341419..43112110 100644 --- a/github/Organization.py +++ b/github/Organization.py @@ -264,7 +264,7 @@ class Organization(github.GithubObject.CompletableGithubObject): url_parameters, None ) - return github.Repository.Repository(self._requester, data, completed=True) + return github.Repository.Repository(self._requester, headers, data, completed=True) def create_repo(self, name, description=github.GithubObject.NotSet, homepage=github.GithubObject.NotSet, private=github.GithubObject.NotSet, has_issues=github.GithubObject.NotSet, has_wiki=github.GithubObject.NotSet, has_downloads=github.GithubObject.NotSet, team_id=github.GithubObject.NotSet, auto_init=github.GithubObject.NotSet, gitignore_template=github.GithubObject.NotSet): """ @@ -318,7 +318,7 @@ class Organization(github.GithubObject.CompletableGithubObject): None, post_parameters ) - return github.Repository.Repository(self._requester, data, completed=True) + return github.Repository.Repository(self._requester, headers, data, completed=True) def create_team(self, name, repo_names=github.GithubObject.NotSet, permission=github.GithubObject.NotSet): """ @@ -471,7 +471,7 @@ class Organization(github.GithubObject.CompletableGithubObject): None, None ) - return github.Repository.Repository(self._requester, data, completed=True) + return github.Repository.Repository(self._requester, headers, data, completed=True) def get_repos(self, type=github.GithubObject.NotSet): """ diff --git a/github/PullRequestPart.py b/github/PullRequestPart.py index 837b7bf0..3c770025 100644 --- a/github/PullRequestPart.py +++ b/github/PullRequestPart.py @@ -85,7 +85,7 @@ class PullRequestPart(github.GithubObject.NonCompletableGithubObject): self._ref = attributes["ref"] if "repo" in attributes: # pragma no branch assert attributes["repo"] is None or isinstance(attributes["repo"], dict), attributes["repo"] - self._repo = None if attributes["repo"] is None else github.Repository.Repository(self._requester, attributes["repo"], completed=False) + self._repo = None if attributes["repo"] is None else github.Repository.Repository(self._requester, self._headers, attributes["repo"], completed=False) if "sha" in attributes: # pragma no branch assert attributes["sha"] is None or isinstance(attributes["sha"], (str, unicode)), attributes["sha"] self._sha = attributes["sha"] diff --git a/github/Repository.py b/github/Repository.py index 5c305d9e..b4bbb476 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -65,9 +65,6 @@ class Repository(github.GithubObject.CompletableGithubObject): """ This class represents Repositorys. The reference can be found here http://developer.github.com/v3/repos/ """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def clone_url(self): @@ -1719,7 +1716,7 @@ class Repository(github.GithubObject.CompletableGithubObject): self._owner = None if attributes["owner"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["owner"], completed=False) if "parent" in attributes: # pragma no branch assert attributes["parent"] is None or isinstance(attributes["parent"], dict), attributes["parent"] - self._parent = None if attributes["parent"] is None else Repository(self._requester, attributes["parent"], completed=False) + self._parent = None if attributes["parent"] is None else Repository(self._requester, self._headers, attributes["parent"], completed=False) if "permissions" in attributes: # pragma no branch assert attributes["permissions"] is None or isinstance(attributes["permissions"], dict), attributes["permissions"] self._permissions = None if attributes["permissions"] is None else github.Permissions.Permissions(self._requester, self._headers, attributes["permissions"], completed=False) @@ -1734,7 +1731,7 @@ class Repository(github.GithubObject.CompletableGithubObject): self._size = attributes["size"] if "source" in attributes: # pragma no branch assert attributes["source"] is None or isinstance(attributes["source"], dict), attributes["source"] - self._source = None if attributes["source"] is None else Repository(self._requester, attributes["source"], completed=False) + self._source = None if attributes["source"] is None else Repository(self._requester, self._headers, attributes["source"], completed=False) if "ssh_url" in attributes: # pragma no branch assert attributes["ssh_url"] is None or isinstance(attributes["ssh_url"], (str, unicode)), attributes["ssh_url"] self._ssh_url = attributes["ssh_url"] From 1070631c73f02e1ee6b03c55155086d33791499e Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 17:18:01 +0800 Subject: [PATCH 050/103] Update Team.py --- github/Organization.py | 4 ++-- github/Team.py | 3 --- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/github/Organization.py b/github/Organization.py index 43112110..ad5ef571 100644 --- a/github/Organization.py +++ b/github/Organization.py @@ -344,7 +344,7 @@ class Organization(github.GithubObject.CompletableGithubObject): None, post_parameters ) - return github.Team.Team(self._requester, data, completed=True) + return github.Team.Team(self._requester, headers, data, completed=True) def edit(self, billing_email=github.GithubObject.NotSet, blog=github.GithubObject.NotSet, company=github.GithubObject.NotSet, email=github.GithubObject.NotSet, location=github.GithubObject.NotSet, name=github.GithubObject.NotSet): """ @@ -503,7 +503,7 @@ class Organization(github.GithubObject.CompletableGithubObject): None, None ) - return github.Team.Team(self._requester, data, completed=True) + return github.Team.Team(self._requester, headers, data, completed=True) def get_teams(self): """ diff --git a/github/Team.py b/github/Team.py index 0637d057..b6d681d6 100644 --- a/github/Team.py +++ b/github/Team.py @@ -35,9 +35,6 @@ class Team(github.GithubObject.CompletableGithubObject): """ This class represents Teams. The reference can be found here http://developer.github.com/v3/orgs/teams/ """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def id(self): From c4e8972be12ba249a06cd4c40499e0b32011e7f5 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 17:19:11 +0800 Subject: [PATCH 051/103] Update UserKey.py --- github/AuthenticatedUser.py | 4 ++-- github/UserKey.py | 3 --- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/github/AuthenticatedUser.py b/github/AuthenticatedUser.py index 6fd4c16b..151124e1 100644 --- a/github/AuthenticatedUser.py +++ b/github/AuthenticatedUser.py @@ -409,7 +409,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): None, post_parameters ) - return github.UserKey.UserKey(self._requester, data, completed=True) + return github.UserKey.UserKey(self._requester, headers, data, completed=True) def create_repo(self, name, description=github.GithubObject.NotSet, homepage=github.GithubObject.NotSet, private=github.GithubObject.NotSet, has_issues=github.GithubObject.NotSet, has_wiki=github.GithubObject.NotSet, has_downloads=github.GithubObject.NotSet, auto_init=github.GithubObject.NotSet, gitignore_template=github.GithubObject.NotSet): """ @@ -680,7 +680,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): None, None ) - return github.UserKey.UserKey(self._requester, data, completed=True) + return github.UserKey.UserKey(self._requester, headers, data, completed=True) def get_keys(self): """ diff --git a/github/UserKey.py b/github/UserKey.py index 392a0b64..222cd1a5 100644 --- a/github/UserKey.py +++ b/github/UserKey.py @@ -31,9 +31,6 @@ class UserKey(github.GithubObject.CompletableGithubObject): """ This class represents UserKeys. The reference can be found here http://developer.github.com/v3/users/keys/ """ - def __init__(self, requester, attributes, completed): - # Adapte for __init__ change, remove later - github.GithubObject.CompletableGithubObject.__init__(self, requester, {}, attributes, completed) @property def id(self): From 8a301701db354408b63273f78ece6887a1677e55 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 17:25:29 +0800 Subject: [PATCH 052/103] Remove helper method in PaginatedList.py --- github/PaginatedList.py | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/github/PaginatedList.py b/github/PaginatedList.py index 1ab477e1..ff4a306e 100644 --- a/github/PaginatedList.py +++ b/github/PaginatedList.py @@ -113,23 +113,6 @@ class PaginatedList(PaginatedListBase): def _couldGrow(self): return self.__nextUrl is not None - - def makePage(self, headers, data): - ''' - Adapte for diffrent __init__ signature in refactoring, remove when done - ''' - - try: # Try use old __init__ signature - return [ - self.__contentClass(self.__requester, element, completed=False) - for element in data] - except TypeError: # must be new - return [ - self.__contentClass(self.__requester, headers, element, completed=False) - for element in data] - - - def _fetchNextPage(self): headers, data = self.__requester.requestJsonAndCheck("GET", self.__nextUrl, self.__nextParams, None) @@ -141,7 +124,10 @@ class PaginatedList(PaginatedListBase): self.__nextUrl = None self.__nextParams = None - return self.makePage(headers, data) + return [ + self.__contentClass(self.__requester, headers, element, completed=False) + for element in data] + def __parseLinkHeader(self, headers): links = {} @@ -162,4 +148,7 @@ class PaginatedList(PaginatedListBase): params["per_page"] = self.__requester.per_page headers, data = self.__requester.requestJsonAndCheck("GET", self.__firstUrl, params, None) - return self.makePage(headers, data) + return [ + self.__contentClass(self.__requester, headers, element, completed=False) + for element in data] + From 3f6d1b6b705de6ea9632021987e55d41875f0102 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 17:27:37 +0800 Subject: [PATCH 053/103] Remove helper method in Legacy.py --- github/Legacy.py | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/github/Legacy.py b/github/Legacy.py index 2f36f4a3..9789e673 100644 --- a/github/Legacy.py +++ b/github/Legacy.py @@ -61,16 +61,12 @@ class PaginatedList(github.PaginatedList.PaginatedListBase): None ) self.__continue = len(data[self.__key]) > 0 - try: - return [ - self.__contentClass(self.__requester, headers, self.__convert(element), completed=False) - for element in data[self.__key] - ] - except TypeError: - return [ - self.__contentClass(self.__requester, self.__convert(element), completed=False) - for element in data[self.__key] - ] + + return [ + self.__contentClass(self.__requester, headers, self.__convert(element), completed=False) + for element in data[self.__key] + ] + def convertUser(attributes): From 30d9d499a1b44552ab9a28ef7317aa2098daafd7 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 17:32:32 +0800 Subject: [PATCH 054/103] Clean up --- github/GithubObject.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/github/GithubObject.py b/github/GithubObject.py index 077cc5c2..efc7dcef 100644 --- a/github/GithubObject.py +++ b/github/GithubObject.py @@ -40,6 +40,8 @@ class GithubObject(object): """ def __init__(self, requester, headers, attributes, completed): self._requester = requester + # Make sure headers are signed before any operations on attributes + # Object creatation requires headers as parameter self._headers = headers; self._initAttributes() self._storeAndUseAttributes(attributes) @@ -86,7 +88,6 @@ class NonCompletableGithubObject(GithubObject): class CompletableGithubObject(GithubObject): def __init__(self, requester, headers, attributes, completed): - # Adapte for __init__ change, remove later GithubObject.__init__(self, requester, headers, attributes, completed) self.__completed = completed From 912bec79d2dd2479e5e32118c66ee9a647b46332 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 17:45:01 +0800 Subject: [PATCH 055/103] Update copyright information --- github/AuthenticatedUser.py | 1 + github/Authorization.py | 1 + github/Branch.py | 1 + github/Commit.py | 1 + github/CommitComment.py | 1 + github/CommitStatus.py | 1 + github/Comparison.py | 1 + github/Event.py | 1 + github/Gist.py | 1 + github/GistComment.py | 1 + github/GistHistoryState.py | 1 + github/GitCommit.py | 1 + github/GitRef.py | 1 + github/GitTag.py | 1 + github/GitTree.py | 1 + github/GithubObject.py | 1 + github/Hook.py | 1 + github/Issue.py | 1 + github/IssueComment.py | 1 + github/IssueEvent.py | 1 + github/Legacy.py | 1 + github/MainClass.py | 1 + github/Milestone.py | 1 + github/NamedUser.py | 1 + github/Notification.py | 1 + github/Organization.py | 1 + github/PaginatedList.py | 1 + github/PullRequest.py | 1 + github/PullRequestComment.py | 1 + github/PullRequestPart.py | 1 + github/Repository.py | 1 + github/RepositoryKey.py | 1 + github/Tag.py | 1 + 33 files changed, 33 insertions(+) diff --git a/github/AuthenticatedUser.py b/github/AuthenticatedUser.py index 151124e1..57e792da 100644 --- a/github/AuthenticatedUser.py +++ b/github/AuthenticatedUser.py @@ -6,6 +6,7 @@ # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # # Copyright 2013 Vincent Jacques # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/Authorization.py b/github/Authorization.py index ef61ed84..5228ed31 100644 --- a/github/Authorization.py +++ b/github/Authorization.py @@ -5,6 +5,7 @@ # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # # Copyright 2013 Vincent Jacques # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/Branch.py b/github/Branch.py index 5004f2f6..fef7aa8a 100644 --- a/github/Branch.py +++ b/github/Branch.py @@ -6,6 +6,7 @@ # Copyright 2012 Zearin # # Copyright 2013 Vincent Jacques # # Copyright 2013 martinqt # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/Commit.py b/github/Commit.py index e71399fd..9e2b266b 100644 --- a/github/Commit.py +++ b/github/Commit.py @@ -6,6 +6,7 @@ # Copyright 2012 Zearin # # Copyright 2013 Vincent Jacques # # Copyright 2013 martinqt # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/CommitComment.py b/github/CommitComment.py index e5dcc883..5ce52f75 100644 --- a/github/CommitComment.py +++ b/github/CommitComment.py @@ -5,6 +5,7 @@ # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # # Copyright 2013 Vincent Jacques # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/CommitStatus.py b/github/CommitStatus.py index e40af474..4b9602a7 100644 --- a/github/CommitStatus.py +++ b/github/CommitStatus.py @@ -5,6 +5,7 @@ # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # # Copyright 2013 Vincent Jacques # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/Comparison.py b/github/Comparison.py index a0a3d6de..cfebc0c0 100644 --- a/github/Comparison.py +++ b/github/Comparison.py @@ -5,6 +5,7 @@ # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # # Copyright 2013 Vincent Jacques # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/Event.py b/github/Event.py index aefc3ca9..b9752ec1 100644 --- a/github/Event.py +++ b/github/Event.py @@ -6,6 +6,7 @@ # Copyright 2012 Zearin # # Copyright 2013 Vincent Jacques # # Copyright 2013 martinqt # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/Gist.py b/github/Gist.py index 3dcf1d18..c7294a08 100644 --- a/github/Gist.py +++ b/github/Gist.py @@ -6,6 +6,7 @@ # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # # Copyright 2013 Vincent Jacques # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/GistComment.py b/github/GistComment.py index c2e3e3bd..c832338a 100644 --- a/github/GistComment.py +++ b/github/GistComment.py @@ -5,6 +5,7 @@ # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # # Copyright 2013 Vincent Jacques # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/GistHistoryState.py b/github/GistHistoryState.py index 374782b7..13762e2a 100644 --- a/github/GistHistoryState.py +++ b/github/GistHistoryState.py @@ -5,6 +5,7 @@ # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # # Copyright 2013 Vincent Jacques # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/GitCommit.py b/github/GitCommit.py index ab012fba..a281e491 100644 --- a/github/GitCommit.py +++ b/github/GitCommit.py @@ -5,6 +5,7 @@ # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # # Copyright 2013 Vincent Jacques # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/GitRef.py b/github/GitRef.py index 9ff4f30f..8fe1945e 100644 --- a/github/GitRef.py +++ b/github/GitRef.py @@ -5,6 +5,7 @@ # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # # Copyright 2013 Vincent Jacques # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/GitTag.py b/github/GitTag.py index 58a34598..0ffb00e0 100644 --- a/github/GitTag.py +++ b/github/GitTag.py @@ -5,6 +5,7 @@ # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # # Copyright 2013 Vincent Jacques # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/GitTree.py b/github/GitTree.py index f999de89..570bfee4 100644 --- a/github/GitTree.py +++ b/github/GitTree.py @@ -5,6 +5,7 @@ # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # # Copyright 2013 Vincent Jacques # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/GithubObject.py b/github/GithubObject.py index efc7dcef..ab55d52a 100644 --- a/github/GithubObject.py +++ b/github/GithubObject.py @@ -5,6 +5,7 @@ # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # # Copyright 2013 Vincent Jacques # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/Hook.py b/github/Hook.py index 4366b559..d59b5afd 100644 --- a/github/Hook.py +++ b/github/Hook.py @@ -5,6 +5,7 @@ # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # # Copyright 2013 Vincent Jacques # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/Issue.py b/github/Issue.py index 01bffcfd..eb58e20e 100644 --- a/github/Issue.py +++ b/github/Issue.py @@ -7,6 +7,7 @@ # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # # Copyright 2013 Vincent Jacques # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/IssueComment.py b/github/IssueComment.py index 419af317..254398c1 100644 --- a/github/IssueComment.py +++ b/github/IssueComment.py @@ -6,6 +6,7 @@ # Copyright 2012 Zearin # # Copyright 2013 Michael Stead # # Copyright 2013 Vincent Jacques # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/IssueEvent.py b/github/IssueEvent.py index 0fb54291..0a897a69 100644 --- a/github/IssueEvent.py +++ b/github/IssueEvent.py @@ -5,6 +5,7 @@ # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # # Copyright 2013 Vincent Jacques # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/Legacy.py b/github/Legacy.py index 9789e673..4270f7a5 100644 --- a/github/Legacy.py +++ b/github/Legacy.py @@ -6,6 +6,7 @@ # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # # Copyright 2013 Vincent Jacques # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/MainClass.py b/github/MainClass.py index 2b1db292..19531a48 100644 --- a/github/MainClass.py +++ b/github/MainClass.py @@ -5,6 +5,7 @@ # Copyright 2013 Jonathan J Hunt # # Copyright 2013 Peter Golm # # Copyright 2013 Vincent Jacques # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/Milestone.py b/github/Milestone.py index 614b8d0e..47b7c0bb 100644 --- a/github/Milestone.py +++ b/github/Milestone.py @@ -6,6 +6,7 @@ # Copyright 2012 Zearin # # Copyright 2013 Vincent Jacques # # Copyright 2013 martinqt # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/NamedUser.py b/github/NamedUser.py index 09927bae..df30b919 100644 --- a/github/NamedUser.py +++ b/github/NamedUser.py @@ -6,6 +6,7 @@ # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # # Copyright 2013 Vincent Jacques # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/Notification.py b/github/Notification.py index 58957495..29c06b53 100644 --- a/github/Notification.py +++ b/github/Notification.py @@ -5,6 +5,7 @@ # Copyright 2013 Peter Golm # # Copyright 2013 Vincent Jacques # # Copyright 2013 martinqt # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/Organization.py b/github/Organization.py index ad5ef571..fb2fe969 100644 --- a/github/Organization.py +++ b/github/Organization.py @@ -7,6 +7,7 @@ # Copyright 2012 Zearin # # Copyright 2013 Vincent Jacques # # Copyright 2013 martinqt # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/PaginatedList.py b/github/PaginatedList.py index ff4a306e..f4f81d85 100644 --- a/github/PaginatedList.py +++ b/github/PaginatedList.py @@ -7,6 +7,7 @@ # Copyright 2013 Bill Mill # # Copyright 2013 Vincent Jacques # # Copyright 2013 davidbrai # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/PullRequest.py b/github/PullRequest.py index fa36d470..05438de8 100644 --- a/github/PullRequest.py +++ b/github/PullRequest.py @@ -7,6 +7,7 @@ # Copyright 2012 Zearin # # Copyright 2013 Vincent Jacques # # Copyright 2013 martinqt # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/PullRequestComment.py b/github/PullRequestComment.py index dcddc247..b51eb8a1 100644 --- a/github/PullRequestComment.py +++ b/github/PullRequestComment.py @@ -7,6 +7,7 @@ # Copyright 2013 Michael Stead # # Copyright 2013 Vincent Jacques # # Copyright 2013 martinqt # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/PullRequestPart.py b/github/PullRequestPart.py index 3c770025..8c5dcb43 100644 --- a/github/PullRequestPart.py +++ b/github/PullRequestPart.py @@ -5,6 +5,7 @@ # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # # Copyright 2013 Vincent Jacques # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/Repository.py b/github/Repository.py index b4bbb476..4bbad55c 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -9,6 +9,7 @@ # Copyright 2013 Mark Roddy # # Copyright 2013 Vincent Jacques # # Copyright 2013 martinqt # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/RepositoryKey.py b/github/RepositoryKey.py index 9a7c7b28..91efacf2 100644 --- a/github/RepositoryKey.py +++ b/github/RepositoryKey.py @@ -7,6 +7,7 @@ # Copyright 2013 Srijan Choudhary # # Copyright 2013 Vincent Jacques # # Copyright 2013 martinqt # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/Tag.py b/github/Tag.py index 9300b607..4ac411ab 100644 --- a/github/Tag.py +++ b/github/Tag.py @@ -6,6 +6,7 @@ # Copyright 2012 Zearin # # Copyright 2013 Vincent Jacques # # Copyright 2013 martinqt # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # From 1d18ea75cce3ca6aeff03d0343e65b2f13b97f80 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 19:25:05 +0800 Subject: [PATCH 056/103] Add debug / test mechanism --- github/GithubObject.py | 11 ++++++++ github/Requester.py | 63 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) diff --git a/github/GithubObject.py b/github/GithubObject.py index ab55d52a..760afad9 100644 --- a/github/GithubObject.py +++ b/github/GithubObject.py @@ -39,6 +39,12 @@ class GithubObject(object): """ Base class for all classes representing objects returned by the API. """ + + ''' + A global debug flag to enable header validation by requester for all objects + ''' + CHECK_AFTER_INIT_FLAG = False + def __init__(self, requester, headers, attributes, completed): self._requester = requester # Make sure headers are signed before any operations on attributes @@ -47,6 +53,11 @@ class GithubObject(object): self._initAttributes() self._storeAndUseAttributes(attributes) + # Ask requester to do some checking, for debug and test purpose + # Since it's most handy to access and kinda all-knowing + if (GithubObject.CHECK_AFTER_INIT_FLAG): + requester.check_me(self); + def _storeAndUseAttributes(self, attributes): self._useAttributes(attributes) self._rawData = attributes diff --git a/github/Requester.py b/github/Requester.py index ca263e0a..c08940ba 100644 --- a/github/Requester.py +++ b/github/Requester.py @@ -11,6 +11,7 @@ # Copyright 2012 Zearin # # Copyright 2013 Jonathan J Hunt # # Copyright 2013 Vincent Jacques # +# Copyright 2013 akfish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # @@ -60,8 +61,65 @@ class Requester: def resetConnectionClasses(cls): cls.__httpConnectionClass = httplib.HTTPConnection cls.__httpsConnectionClass = httplib.HTTPSConnection + + ############################################################# + # For Debug + + DEBUG_FLAG = False + + DEBUG_FRAME_BUFFER_SIZE = 1024 + + DEBUG_HEADER_KEY = "DEBUG_FRAME" + + def NEW_DEBUG_FRAME(self, requestHeader): + ''' + Initialize a debug frame with requestHeader + Frame count is updated and will be attached to respond header + The structure of a frame: [requestHeader, statusCode, responseHeader, raw_data] + Some of them may be None + ''' + if not self.DEBUG_FLAG: + return + + new_frame = [requestHeader, None, None, None] + if self._frameCount < self.DEBUG_FRAME_BUFFER_SIZE - 1: + self._frameBuffer.append(new_frame) + else: + self._frameBuffer[0] = new_frame + + self._frameCount = len(self._frameBuffer) - 1 + + def DEBUG_ON_RESPONSE(self, statusCode, responseHeader, data): + ''' + Update current frame with response + Current frame index will be attached to responseHeader + ''' + if not self.DEBUG_FLAG: + return + + self._frameBuffer[self._frameCount][1:4] = [statusCode, responseHeader, data] + responseHeader[self.DEBUG_HEADER_KEY] = self._frameCount + + + def check_me(self, obj): + if self.DEBUG_FLAG and self.onCheckMe is not None: + frame = None + if self.DEBUG_HEADER_KEY in obj._headers: + frame_index = obj._headers[self.DEBUG_HEADER_KEY] + frame = self._frameBuffer[frame_index] + onCheckMe(self, obj, frame) + + def _initializeDebugFeature(self): + if not self.DEBUG_FLAG: + return + self.onCheckMe = None + self._frameCount = 0 + self._frameBuffer = [] + ############################################################# def __init__(self, login_or_token, password, base_url, timeout, client_id, client_secret, user_agent, per_page): + self._initializeDebugFeature() + if password is not None: login = login_or_token if atLeastPython3: @@ -108,6 +166,9 @@ class Requester: def __check(self, status, responseHeaders, output): output = self.__structuredFromJson(output) + # Log frame + self.DEBUG_ON_RESPONSE(status, responseHeaders, output) + if status >= 400: raise self.__createException(status, output) return responseHeaders, output @@ -171,6 +232,8 @@ class Requester: if input is not None: requestHeaders["Content-Type"], encoded_input = encode(input) + self.NEW_DEBUG_FRAME(requestHeaders) + status, responseHeaders, output = self.__requestRaw(verb, url, requestHeaders, encoded_input) if "x-ratelimit-remaining" in responseHeaders and "x-ratelimit-limit" in responseHeaders: From e06257d06017b72bb57b15b043e6f16d4b6eb568 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 20:58:29 +0800 Subject: [PATCH 057/103] Enable debug in TestCase --- github/GithubObject.py | 6 +++++- github/Requester.py | 16 +++++++++++----- github/tests/Framework.py | 20 ++++++++++++++++++++ 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/github/GithubObject.py b/github/GithubObject.py index 760afad9..3fc89992 100644 --- a/github/GithubObject.py +++ b/github/GithubObject.py @@ -45,6 +45,10 @@ class GithubObject(object): ''' CHECK_AFTER_INIT_FLAG = False + @classmethod + def setCheckAfterInitFlag(cls, flag): + cls.CHECK_AFTER_INIT_FLAG = flag + def __init__(self, requester, headers, attributes, completed): self._requester = requester # Make sure headers are signed before any operations on attributes @@ -55,7 +59,7 @@ class GithubObject(object): # Ask requester to do some checking, for debug and test purpose # Since it's most handy to access and kinda all-knowing - if (GithubObject.CHECK_AFTER_INIT_FLAG): + if (self.CHECK_AFTER_INIT_FLAG): requester.check_me(self); def _storeAndUseAttributes(self, attributes): diff --git a/github/Requester.py b/github/Requester.py index c08940ba..7d944c3e 100644 --- a/github/Requester.py +++ b/github/Requester.py @@ -64,6 +64,13 @@ class Requester: ############################################################# # For Debug + @classmethod + def setDebugFlag(cls, flag): + cls.DEBUG_FLAG = flag + + @classmethod + def setOnCheckMe(cls, onCheckMe): + cls.ON_CHECK_ME = onCheckMe DEBUG_FLAG = False @@ -71,6 +78,8 @@ class Requester: DEBUG_HEADER_KEY = "DEBUG_FRAME" + ON_CHECK_ME = None + def NEW_DEBUG_FRAME(self, requestHeader): ''' Initialize a debug frame with requestHeader @@ -102,17 +111,14 @@ class Requester: def check_me(self, obj): - if self.DEBUG_FLAG and self.onCheckMe is not None: + if self.DEBUG_FLAG and self.ON_CHECK_ME is not None: frame = None if self.DEBUG_HEADER_KEY in obj._headers: frame_index = obj._headers[self.DEBUG_HEADER_KEY] frame = self._frameBuffer[frame_index] - onCheckMe(self, obj, frame) + self.ON_CHECK_ME(obj, frame) def _initializeDebugFeature(self): - if not self.DEBUG_FLAG: - return - self.onCheckMe = None self._frameCount = 0 self._frameBuffer = [] ############################################################# diff --git a/github/tests/Framework.py b/github/tests/Framework.py index 706bdbdd..bc0f5028 100644 --- a/github/tests/Framework.py +++ b/github/tests/Framework.py @@ -244,10 +244,30 @@ class BasicTestCase(unittest.TestCase): class TestCase(BasicTestCase): + def doCheckFrame(self, obj, frame): + pass + + + def getFrameChecker(self): + return lambda requester, obj, frame: self.doCheckFrame(obj, frame) + def setUp(self): BasicTestCase.setUp(self) + + # Set up frame debugging + + github.GithubObject.GithubObject.setCheckAfterInitFlag(True) + + github.Requester.Requester.setDebugFlag(True) + + github.Requester.Requester.setOnCheckMe(self.getFrameChecker()) + self.g = github.Github(self.login, self.password) + + + def activateRecordMode(): # pragma no cover (Function useful only when recording new tests, not used during automated tests) BasicTestCase.recordMode = True + From aa3025271cd918883b31a42fb7b4ce03027b805c Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 21:11:12 +0800 Subject: [PATCH 058/103] Assert response headers --- github/tests/Framework.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/github/tests/Framework.py b/github/tests/Framework.py index bc0f5028..24a359bd 100644 --- a/github/tests/Framework.py +++ b/github/tests/Framework.py @@ -245,7 +245,11 @@ class BasicTestCase(unittest.TestCase): class TestCase(BasicTestCase): def doCheckFrame(self, obj, frame): - pass + if obj._headers == {} and frame is None: + return + if obj._headers is None and frame == {}: + return + self.assertEqual(obj._headers, frame[2]); def getFrameChecker(self): From b71329e560795a4df84cb419178ef660824f4c0d Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 22:25:20 +0800 Subject: [PATCH 059/103] Implement data persistence --- github/GithubObject.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/github/GithubObject.py b/github/GithubObject.py index 3fc89992..f20873b9 100644 --- a/github/GithubObject.py +++ b/github/GithubObject.py @@ -24,10 +24,13 @@ # # ################################################################################ +from __future__ import with_statement + import datetime import GithubException +import pickle class _NotSetType: def __repr__(self): @@ -96,6 +99,27 @@ class GithubObject(object): else: return datetime.datetime.strptime(s, "%Y-%m-%dT%H:%M:%SZ") + def save(self, file_name): + ''' + Save instance to a file + + :param file_name: the full path of target file + ''' + + with open(file_name, 'wb') as f: + pickle.dump(self, f) + + @classmethod + def load(cls, file_name): + ''' + Load saved instance from file + :param file_name: the full path to saved file + :rtype: saved instance. The type of loaded instance remains its orginal one and will not be affected by from which derived class the method is called. + ''' + with open(file_name, 'rb') as f: + return pickle.load(f) + + class NonCompletableGithubObject(GithubObject): def _completeIfNeeded(self): From bd7abb58772ae1a61fd7eb44308a3a2f60432ad6 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 23:01:40 +0800 Subject: [PATCH 060/103] Add update() method --- .gitignore | 1 + github/Consts.py | 49 ++++++++++++++++++++++++++++++++++++++++++ github/GithubObject.py | 41 ++++++++++++++++++++++++++++++++++- 3 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 github/Consts.py diff --git a/.gitignore b/.gitignore index 3a7eff09..733d3ccd 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,4 @@ GithubCredentials.py *.cfg *.bat +*.py~ diff --git a/github/Consts.py b/github/Consts.py new file mode 100644 index 00000000..2e551756 --- /dev/null +++ b/github/Consts.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- + +############################ Copyrights and license ############################ +# # +# Copyright 2013 AKFish # +# # +# 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 . # +# # +################################################################################ + +# TODO: As of Thu Aug 21 22:40:13 (BJT) Chinese Standard Time 2013 +# lots of consts in this project are explict +# should realy round them up and reference them by consts + +################################################################################ +# Helper Function # +################################################################################ +def get(dic, key): + if key in dic: + return key[dic] + return None + + +################################################################################ +# Request Header # +# (Case sensitive) # +################################################################################ +REQ_IF_NONE_MATCH = "If-None-Match" +REQ_IF_MODIFIED_SINCE = "If-Modified-Since" + +################################################################################ +# Response Header # +# (Lower Case) # +################################################################################ +RES_ETAG = "etag" +RES_LAST_MODIFED = "last-modified" diff --git a/github/GithubObject.py b/github/GithubObject.py index f20873b9..ae71cf7c 100644 --- a/github/GithubObject.py +++ b/github/GithubObject.py @@ -32,6 +32,8 @@ import GithubException import pickle +import Consts + class _NotSetType: def __repr__(self): return "NotSet" @@ -118,8 +120,45 @@ class GithubObject(object): ''' with open(file_name, 'rb') as f: return pickle.load(f) - + @property + def etag(self): + ''' + :type str + ''' + return Consts.get(self._headers, Consts.RES_ETAG) + + @property + def last_modified(self): + ''' + :type str + ''' + return Consts.get(self._headers, Consts.RES_LAST_MODIFED) + + + def update(self): + ''' + Check and update the object with conditional request + :rtype: Boolean value indicating whether the object is changed + ''' + conditionalRequestHeader = dict() + if self.etag is not None: + conditionalRequestHeader[Consts.REQ_IF_NONE_MATCH] = self.etag + if self.last_modified is not None: + conditionalRequestHeader[Consts.REQ_IF_MODIFIED_SINCE] = self.last_modified + + try: + headers, data = self._requester.requestJsonAndCheck( + "GET", + self._url, + conditionalRequestHeader, + None + ) + self._storeAndUseAttributes(data) + self.__completed = True + return True + except: #GithubException.NotModifiedException: + return False class NonCompletableGithubObject(GithubObject): def _completeIfNeeded(self): From 1e9ec2df089973db73aaf99b4ef147efd4614e7c Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 23:04:07 +0800 Subject: [PATCH 061/103] Add NotModifiedException class --- github/GithubException.py | 6 ++++++ github/GithubObject.py | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/github/GithubException.py b/github/GithubException.py index 12c9af62..53e2d302 100644 --- a/github/GithubException.py +++ b/github/GithubException.py @@ -5,6 +5,7 @@ # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # # Copyright 2013 Vincent Jacques # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # @@ -76,3 +77,8 @@ class RateLimitExceededException(GithubException): """ Exception raised when the rate limit is exceeded (when Github API replies with a 403 rate limit exceeded HTML status) """ + +class NotModifiedException(GithubException): + """ + Exception raised when conditional request is made to a resoure that has not changed + """ diff --git a/github/GithubObject.py b/github/GithubObject.py index ae71cf7c..6c68ce1f 100644 --- a/github/GithubObject.py +++ b/github/GithubObject.py @@ -157,7 +157,7 @@ class GithubObject(object): self._storeAndUseAttributes(data) self.__completed = True return True - except: #GithubException.NotModifiedException: + except GithubException.NotModifiedException: return False class NonCompletableGithubObject(GithubObject): From 6fd05baf6bea732dd846e08c40891c28060e7c64 Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 23:09:30 +0800 Subject: [PATCH 062/103] Handle response code 304 --- github/Requester.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/github/Requester.py b/github/Requester.py index 7d944c3e..a739cdf3 100644 --- a/github/Requester.py +++ b/github/Requester.py @@ -11,7 +11,7 @@ # Copyright 2012 Zearin # # Copyright 2013 Jonathan J Hunt # # Copyright 2013 Vincent Jacques # -# Copyright 2013 akfish # +# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # @@ -175,6 +175,8 @@ class Requester: # Log frame self.DEBUG_ON_RESPONSE(status, responseHeaders, output) + if status == 304: + raise GithubException.NotModifiedException(sttatus, output) if status >= 400: raise self.__createException(status, output) return responseHeaders, output From 5b09f6c82191601cad92076ad4761fe927c511ed Mon Sep 17 00:00:00 2001 From: AKFish Date: Wed, 21 Aug 2013 23:17:59 +0800 Subject: [PATCH 063/103] Implement conditional request --- github/Requester.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/github/Requester.py b/github/Requester.py index a739cdf3..215e2c38 100644 --- a/github/Requester.py +++ b/github/Requester.py @@ -36,6 +36,7 @@ import base64 import urllib import urlparse import sys +import Consts atLeastPython26 = sys.hexversion >= 0x02060000 atLeastPython3 = sys.hexversion >= 0x03000000 @@ -231,6 +232,7 @@ class Requester: requestHeaders = dict() self.__authenticate(url, requestHeaders, parameters) + self.__conditional(requestHeaders, parameters) requestHeaders["User-Agent"] = self.__userAgent url = self.__makeAbsoluteUrl(url) @@ -279,6 +281,16 @@ class Requester: if self.__authorizationHeader is not None: requestHeaders["Authorization"] = self.__authorizationHeader + def __conditional(self, requestHeaders, parameters): + etag = Consts.get(requestHeaders, Consts.REQ_IF_NONE_MATCH) + last_modified = Consts.get(requestHeaders, Consts.REQ_IF_MODIFIED_SINCE) + if etag is not None: + requestHeaders[Consts.REQ_IF_NONE_MATCH] = etag + del parameters[Consts.REQ_IF_NONE_MATCH] + if last_modified is not None: + requestHeaders[Consts.REQ_IF_MODIFIED_SINCE] = last_modified + del parameters[Consts.REQ_IF_MODIFIED_SINCE] + def __makeAbsoluteUrl(self, url): # URLs generated locally will be relative to __base_url # URLs returned from the server will start with __base_url From 1955f7b39d4aeef19356a8269e6430537fcc3006 Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Wed, 21 Aug 2013 18:40:21 +0200 Subject: [PATCH 064/103] Use POST /gists/:id/forks instead of POST /gists/:id/fork --- README.rst | 14 ++------------ github/Gist.py | 4 ++-- github/tests/Gist.py | 8 ++++---- github/tests/ReplayData/Gist.testFork.txt | 18 +++++++++--------- 4 files changed, 17 insertions(+), 27 deletions(-) diff --git a/README.rst b/README.rst index 7b03e11c..b47dcbbf 100644 --- a/README.rst +++ b/README.rst @@ -10,15 +10,9 @@ PyGithub is stable. I will maintain it up to date with the API, and fix bugs if What's new? =========== +`Version 1.19.0 `_ (?? ??th, 2013) -`Version 1.18.0 `_ (August 21st, 2013) (Bénodet edition) -------------------------------------------------------------------------------------------------------------------------------- - -* `Issues `_' ``repository`` attribute will never be ``None``. Thank you `stuglaser `_ for the pull request -* No more false assumption on `rate_limiting `_, and creation of ``rate_limiting_resettime``. Thank you `edjackson `_ for the pull request -* `New `_ parameters ``since`` and ``until`` to ``Repository.get_commits``. Thank you `apetresc `_ for the pull request -* `Catch `_ Json parsing exception for some internal server errors, and throw a better exception. Thank you `MarkRoddy `_ for the pull request -* `Allow `_ reversed iteration of ``PaginatedList``s. Thank you `davidbrai `_ for the pull request +* Use the new URL to fork gists (minor change) What's missing? =============== @@ -30,10 +24,6 @@ Github API v3 URLs not (yet) covered by PyGithub * ``/applications/:client_id/tokens/:access_token`` (GET) * ``/feeds`` (GET) -* ``/gists/:id/forks`` (POST) - - * instead, ``Gist.create_fork`` calls the old URL ``/gists/:id/fork`` - * ``/meta`` (GET) * ``/notifications`` (PUT) * ``/notifications/emails`` (GET) diff --git a/github/Gist.py b/github/Gist.py index 66866a81..be9465f6 100644 --- a/github/Gist.py +++ b/github/Gist.py @@ -178,12 +178,12 @@ class Gist(github.GithubObject.CompletableGithubObject): def create_fork(self): """ - :calls: `POST /gists/:id/fork `_ + :calls: `POST /gists/:id/forks `_ :rtype: :class:`github.Gist.Gist` """ headers, data = self._requester.requestJsonAndCheck( "POST", - self.url + "/fork", + self.url + "/forks", None, None ) diff --git a/github/tests/Gist.py b/github/tests/Gist.py index 0b32678f..d74dbac3 100644 --- a/github/tests/Gist.py +++ b/github/tests/Gist.py @@ -108,12 +108,12 @@ class Gist(Framework.TestCase): self.assertFalse(self.gist.is_starred()) def testFork(self): - gist = self.g.get_gist("2729818") # Random gist + gist = self.g.get_gist("6296553") # Random gist myGist = gist.create_fork() - self.assertEqual(myGist.id, "2729865") + self.assertEqual(myGist.id, "6296732") self.assertEqual(myGist.fork_of, None) # WTF - sameGist = self.g.get_gist("2729865") - self.assertEqual(sameGist.fork_of.id, "2729818") + sameGist = self.g.get_gist("6296732") + self.assertEqual(sameGist.fork_of.id, "6296553") def testDelete(self): self.gist.delete() diff --git a/github/tests/ReplayData/Gist.testFork.txt b/github/tests/ReplayData/Gist.testFork.txt index 48f011ec..0589aa6c 100644 --- a/github/tests/ReplayData/Gist.testFork.txt +++ b/github/tests/ReplayData/Gist.testFork.txt @@ -2,32 +2,32 @@ https GET api.github.com None -/gists/2729818 +/gists/6296553 {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} null 200 -[('status', '200 OK'), ('x-ratelimit-remaining', '4970'), ('content-length', '2576'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '"fda4eb92e9b9a245bccf9efd47857766"'), ('date', 'Sat, 19 May 2012 07:25:30 GMT'), ('content-type', 'application/json; charset=utf-8')] -{"git_push_url":"git@gist.github.com:2729818.git","updated_at":"2012-05-19T07:06:08Z","forks":[],"url":"https://api.github.com/gists/2729818","comments":0,"public":true,"files":{"ror.markdown":{"type":"text/plain","raw_url":"https://gist.github.com/raw/2729818/1284e70f4c16550ef32a26aa4f5f0c78edaa7008/ror.markdown","size":1076,"filename":"ror.markdown","content":"## create user\n\nsudo useradd -m username\nvisudo\n\n## delete default user\n\nsudo userdel ubuntu\nsudo rm -Rf ubuntu\n\n## setup ssh\n\nmkdir ~/.ssh\nvi /etc/ssh/authorized_keys\nsudo vi /etc/ssh/sshd_config\n\n\n## install packages\n\nsudo apt-get update\n\nsudo apt-get install sysv-rc-init git-core apache2-utils wget vim\nsudo apt-get install mysql-client mysql-server libmysqld-dev\nsudo apt-get install g++ openssl zlib1g readline-common libyaml-dev libssl-dev zlib1g-dev libxml2-dev libxslt1-dev libjson0-dev libgcc1 libreadline-dev\n\n\n## install nginx\n\nwget http://nginx.org/keys/nginx_signing.key\nsudo apt-key add nginx_signing.key\n\n### add /etc/sources.list\n> \"deb http://nginx.org/packages/ubuntu/ lucid nginx\ndeb-src http://nginx.org/packages/ubuntu/ lucid nginx\"\n\napt-get update\napt-get install nginx\n\n\n## setup system\n\nsudo sysv-rc-init\n\n\n## install ruby\n\ncd /usr/local/src\nsudo wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz\nsudo tar zxvf ruby-1.9.3-p194.tar.gz\ncd ruby-1.9.3-p194\nsudo ./configure\nsudo make && make install\n\n\n## install RoR\n\nsudo gem install rails","language":"Markdown"}},"html_url":"https://gist.github.com/2729818","user":{"url":"https://api.github.com/users/Kechol","gravatar_id":"f2a6400b393749ccd9ad3f24d4995f77","login":"Kechol","avatar_url":"https://secure.gravatar.com/avatar/f2a6400b393749ccd9ad3f24d4995f77?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":625489},"description":"RoR setup in AWS EC2(Ubuntu 12.04 LTS)","created_at":"2012-05-19T07:06:08Z","git_pull_url":"git://gist.github.com/2729818.git","id":"2729818","history":[{"url":"https://api.github.com/gists/2729818/a655d19a12233e5e5615deb714eae95c433eed57","version":"a655d19a12233e5e5615deb714eae95c433eed57","change_status":{"deletions":0,"additions":57,"total":57},"committed_at":"2012-05-19T07:06:08Z","user":{"url":"https://api.github.com/users/Kechol","gravatar_id":"f2a6400b393749ccd9ad3f24d4995f77","login":"Kechol","avatar_url":"https://secure.gravatar.com/avatar/f2a6400b393749ccd9ad3f24d4995f77?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":625489}}]} +[('status', '200 OK'), ('x-ratelimit-remaining', '4966'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '25285'), ('server', 'GitHub.com'), ('last-modified', 'Wed, 21 Aug 2013 16:26:50 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"b96b3895f5da8f5e9533f0db72748a49"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Wed, 21 Aug 2013 16:28:20 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1377104997')] +{"url":"https://api.github.com/gists/6296553","forks_url":"https://api.github.com/gists/6296553/forks","commits_url":"https://api.github.com/gists/6296553/commits","id":"6296553","git_pull_url":"https://gist.github.com/6296553.git","git_push_url":"https://gist.github.com/6296553.git","html_url":"https://gist.github.com/6296553","files":{"GithubAPI.lua":{"filename":"GithubAPI.lua","type":"text/plain","language":"Lua","raw_url":"https://gist.github.com/raw/6296553/88aafa25fb28e17013054a117354a37f0d78963c/GithubAPI.lua","size":21229,"content":"-- GithubAPI\n-- @Author : Hyro Vitaly Protago\n-- @Version : 1.0.0\n\n--[[\n\nINFOS :\n - Cannot delete an anonymous gist\n]]--\n\nGithubAPI = {\n\tlocation = \"https://api.github.com/\",\n\ttoken = nil,\n\tOAuth = {\n\t\tauthorizations = {}\n\t},\n\tgist = {\n\t\tlist = {},\n\t\tcomment = {}\n\t},\n\tgithub = {}\n}\n\n----------------------------------------------------------------------------\n------------------------------ Github API ----------------------------------\n----------------------------------------------------------------------------\n\n--- Authentication ---\n\n--[[ Scopes --\n\nScopes let you specify exactly what type of access you need. Scopes limit access for OAuth tokens.\nThey do not grant any additional permission beyond that which the user already has.\n\nFor the web flow, requested scopes will be displayed to the user on the authorize form.\n\nCheck headers to see what OAuth scopes you have, and what the API action accepts.\n\n~~~\n$ curl -H \"Authorization: token OAUTH-TOKEN\" https://api.github.com/users/technoweenie -I\nHTTP/1.1 200 OK\nX-OAuth-Scopes: repo, user\nX-Accepted-OAuth-Scopes: user\nX-OAuth-Scopes lists the scopes your token has authorized. X-Accepted-OAuth-Scopes lists the scopes that the action checks for.\n~~~\n\n- (no scope)\npublic read-only access (includes public user profile info, public repo info, and gists).\n- user\nRead/write access to profile info only. Note: this scope includes user:email and user:follow.\n- user:email\nRead access to a user’s email addresses.\n- user:follow\nAccess to follow or unfollow other users.\n- public_repo\nRead/write access to public repos and organizations.\n- repo\nRead/write access to public and private repos and organizations.\n- repo:status\nRead/write access to public and private repository commit statuses.\nThis scope is only necessary to grant other users or services access to private repository commit statuses without granting access to the code.\nThe repo and public_repo scopes already include access to commit status for private and public repositories respectively.\n- delete_repo\nDelete access to adminable repositories.\n- notifications\nRead access to a user’s notifications. repo is accepted too.\n- gist\nWrite access to gists.\n\nNOTE: Your application can request the scopes in the initial redirection. You can specify multiple scopes by separating them by a comma.\n~~~\nhttps://github.com/login/oauth/authorize?\n client_id=...&\n scope=user,public_repo\n~~~\n]]--\n\n-- Redirect users to request GitHub access --\nfunction GithubAPI.OAuth.getToken(client_id, scope, callback)\n\tGithubAPI.http_request(\"https://github.com/login/oauth/authorize?client_id=\"..client_id..\"&scope=\"..scope, function(data, status, headers)\n\t\tGithubAPI.OAuth._getToken(client_id, client_secret, data, callback)\n\tend, nil, true)\nend\n-- GitHub redirects back to your site --\nfunction GithubAPI.OAuth._getToken(client_id, client_secret, code, callback)\n\tGithubAPI.http_request(\"https://github.com/login/oauth/access_token\", callback, {\n\t\tmethod = \"POST\",\n\t\tdata = {\n\t\t\tclient_id = client_id,\n\t\t\tclient_secret = client_secret,\n\t\t\tcode = code\n\t\t}\n\t}, true)\nend\n\n-- List your authorizations --\nfunction GithubAPI.OAuth.authorizations.list(callback)\n\tGithubAPI.http_request(\"authorizations\", callback)\nend\n\n--[[ Response --\nStatus: 200 OK\nLink: ; rel=\"next\",\n ; rel=\"last\"\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n[\n {\n \"id\": 1,\n \"url\": \"https://api.github.com/authorizations/1\",\n \"scopes\": [\n \"public_repo\"\n ],\n \"token\": \"abc123\",\n \"app\": {\n \"url\": \"http://my-github-app.com\",\n \"name\": \"my github app\",\n \"client_id\": \"abcde12345fghij67890\"\n },\n \"note\": \"optional note\",\n \"note_url\": \"http://optional/note/url\",\n \"updated_at\": \"2011-09-06T20:39:23Z\",\n \"created_at\": \"2011-09-06T17:26:27Z\"\n }\n]\n]]--\n\n-- Get a single authorization --\nfunction GithubAPI.OAuth.authorizations.get(id, callback)\n\tGithubAPI.http_request(\"authorizations/\"..id, callback)\nend\n\n--[[ Response --\nStatus: 200 OK\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n{\n \"id\": 1,\n \"url\": \"https://api.github.com/authorizations/1\",\n \"scopes\": [\n \"public_repo\"\n ],\n \"token\": \"abc123\",\n \"app\": {\n \"url\": \"http://my-github-app.com\",\n \"name\": \"my github app\",\n \"client_id\": \"abcde12345fghij67890\"\n },\n \"note\": \"optional note\",\n \"note_url\": \"http://optional/note/url\",\n \"updated_at\": \"2011-09-06T20:39:23Z\",\n \"created_at\": \"2011-09-06T17:26:27Z\"\n}\n]]--\n\n-- Create a new authorization --\nfunction GithubAPI.OAuth.authorizations.create(callback, scopes, note, note_url, client_id, client_secret)\n\tGithubAPI.http_request(\"authorizations/\", callback, {\n\t\tmethod = \"POST\",\n\t\tdata = {\n\t\t\tscopes = scopes,\n\t\t\tnote = note,\n\t\t\tnote_url = note_url,\n\t\t\tclient_id = client_id,\n\t\t\tclient_secret = client_secret\n\t\t}\n\t})\nend\n\n--[[ Input --\nscopes\nOptional array - A list of scopes that this authorization is in.\n\nnote\nOptional string - A note to remind you what the OAuth token is for.\n\nnote_url\nOptional string - A URL to remind you what app the OAuth token is for.\n\nclient_id\nOptional String - The 20 character OAuth app client key for which to create the token.\n\nclient_secret\nOptional String - The 40 character OAuth app client secret for which to create the token.\n~~~\n{\n \"scopes\": [\n \"public_repo\"\n ],\n \"note\": \"admin script\"\n}\n~~~\n]]--\n\n--[[ Response --\nStatus: 201 Created\nLocation: https://api.github.com/authorizations/1\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n{\n \"id\": 1,\n \"url\": \"https://api.github.com/authorizations/1\",\n \"scopes\": [\n \"public_repo\"\n ],\n \"token\": \"abc123\",\n \"app\": {\n \"url\": \"http://my-github-app.com\",\n \"name\": \"my github app\",\n \"client_id\": \"abcde12345fghij67890\"\n },\n \"note\": \"optional note\",\n \"note_url\": \"http://optional/note/url\",\n \"updated_at\": \"2011-09-06T20:39:23Z\",\n \"created_at\": \"2011-09-06T17:26:27Z\"\n}\n]]--\n\n-- TODO\n-- Update\n-- Check\n-- Delete\n\n--- GISTS ---\n\n-- List gists --\nfunction GithubAPI.gist.list.user(user, callback)\n\tGithubAPI.http_request(\"users/\"..user..\"/gists\", callback)\nend\nfunction GithubAPI.gist.list.all(callback) -- return all public gists if called anonymously\n\tGithubAPI.http_request(\"gists\", callback)\nend\nfunction GithubAPI.gist.list.allPublic(callback)\n\tGithubAPI.http_request(\"gists/public\", callback)\nend\nfunction GithubAPI.gist.list.starred(callback)\n\tGithubAPI.http_request(\"gists/starred\", callback)\nend\n\n--[[ Response --\nStatus: 200 OK\nLink: ; rel=\"next\",\n ; rel=\"last\"\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n[\n {\n \"url\": \"https://api.github.com/gists/88a3112be74ba6ad701e\",\n \"id\": \"1\",\n \"description\": \"description of gist\",\n \"public\": true,\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"files\": {\n \"ring.erl\": {\n \"size\": 932,\n \"filename\": \"ring.erl\",\n \"raw_url\": \"https://gist.github.com/raw/365370/8c4d2d43d178df44f4c03a7f2ac0ff512853564e/ring.erl\"\n }\n },\n \"comments\": 0,\n \"comments_url\": \"https://api.github.com/gists/8438e99468ee9a4ab10e/comments/\",\n \"html_url\": \"https://gist.github.com/1\",\n \"git_pull_url\": \"git://gist.github.com/1.git\",\n \"git_push_url\": \"git@gist.github.com:1.git\",\n \"created_at\": \"2010-04-14T02:15:15Z\"\n }\n]\n]]--\n\n-- Get a single gist --\nfunction GithubAPI.gist.get(id, callback)\n\tGithubAPI.http_request(\"gists/\"..id, callback)\nend\n\n--[[ Response --\nStatus: 200 OK\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n{\n \"url\": \"https://api.github.com/gists/88a3112be74ba6ad701e\",\n \"id\": \"1\",\n \"description\": \"description of gist\",\n \"public\": true,\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"files\": {\n \"ring.erl\": {\n \"size\": 932,\n \"filename\": \"ring.erl\",\n \"raw_url\": \"https://gist.github.com/raw/365370/8c4d2d43d178df44f4c03a7f2ac0ff512853564e/ring.erl\"\n }\n },\n \"comments\": 0,\n \"comments_url\": \"https://api.github.com/gists/8438e99468ee9a4ab10e/comments/\",\n \"html_url\": \"https://gist.github.com/1\",\n \"git_pull_url\": \"git://gist.github.com/1.git\",\n \"git_push_url\": \"git@gist.github.com:1.git\",\n \"created_at\": \"2010-04-14T02:15:15Z\",\n \"forks\": [\n {\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"url\": \"https://api.github.com/gists/add0d71b065f55c46f60\",\n \"created_at\": \"2011-04-14T16:00:49Z\"\n }\n ],\n \"history\": [\n {\n \"url\": \"https://api.github.com/gists/80bdb0d081c447600e18\",\n \"version\": \"57a7f021a713b1c5a6a199b54cc514735d2d462f\",\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"change_status\": {\n \"deletions\": 0,\n \"additions\": 180,\n \"total\": 180\n },\n \"committed_at\": \"2010-04-14T02:15:15Z\"\n }\n ]\n}\n]]--\n\n-- Create a gist --\nfunction GithubAPI.gist.create(public, files, callback ,description)\n\tGithubAPI.http_request(\"gists/\"..id, callback, {\n\t\tmethod = \"POST\",\n\t\tdata = {\n\t\t\tpublic = public,\n\t\t\tfiles = files,\n\t\t\tdescription = description\n\t\t}\n\t})\nend\n\n--[[ Input --\n{\n \"description\": \"the description for this gist\",\n \"public\": true,\n \"files\": {\n \"file1.txt\": {\n \"content\": \"String file contents\"\n }\n }\n}\n]]--\n\n--[[ Response --\nStatus: 201 Created\nLocation: https://api.github.com/gists/1\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n{\n \"url\": \"https://api.github.com/gists/88a3112be74ba6ad701e\",\n \"id\": \"1\",\n \"description\": \"description of gist\",\n \"public\": true,\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"files\": {\n \"ring.erl\": {\n \"size\": 932,\n \"filename\": \"ring.erl\",\n \"raw_url\": \"https://gist.github.com/raw/365370/8c4d2d43d178df44f4c03a7f2ac0ff512853564e/ring.erl\"\n }\n },\n \"comments\": 0,\n \"comments_url\": \"https://api.github.com/gists/8438e99468ee9a4ab10e/comments/\",\n \"html_url\": \"https://gist.github.com/1\",\n \"git_pull_url\": \"git://gist.github.com/1.git\",\n \"git_push_url\": \"git@gist.github.com:1.git\",\n \"created_at\": \"2010-04-14T02:15:15Z\",\n \"forks\": [\n {\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"url\": \"https://api.github.com/gists/add0d71b065f55c46f60\",\n \"created_at\": \"2011-04-14T16:00:49Z\"\n }\n ],\n \"history\": [\n {\n \"url\": \"https://api.github.com/gists/80bdb0d081c447600e18\",\n \"version\": \"57a7f021a713b1c5a6a199b54cc514735d2d462f\",\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"change_status\": {\n \"deletions\": 0,\n \"additions\": 180,\n \"total\": 180\n },\n \"committed_at\": \"2010-04-14T02:15:15Z\"\n }\n ]\n}\n]]--\n\n-- Edit a gist --\nfunction GithubAPI.gist.edit(id, files, callback, description)\n\tGithubAPI.http_request(\"gists/\"..id, callback, {\n\t\tmethod = \"PATCH\",\n\t\tdata = {\n\t\t\tid = id,\n\t\t\tfiles = files,\n\t\t\tdescription = description\n\t\t}\n\t})\nend\n\n--[[ Input --\n{\n \"description\": \"the description for this gist\",\n \"files\": {\n \"file1.txt\": {\n \"content\": \"updated file contents\"\n },\n \"old_name.txt\": {\n \"filename\": \"new_name.txt\",\n \"content\": \"modified contents\"\n },\n \"new_file.txt\": {\n \"content\": \"a new file\"\n },\n \"delete_this_file.txt\": null\n }\n}\n]]--\n\n--[[ Response --\nStatus: 200 OK\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n{\n \"url\": \"https://api.github.com/gists/88a3112be74ba6ad701e\",\n \"id\": \"1\",\n \"description\": \"description of gist\",\n \"public\": true,\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"files\": {\n \"ring.erl\": {\n \"size\": 932,\n \"filename\": \"ring.erl\",\n \"raw_url\": \"https://gist.github.com/raw/365370/8c4d2d43d178df44f4c03a7f2ac0ff512853564e/ring.erl\"\n }\n },\n \"comments\": 0,\n \"comments_url\": \"https://api.github.com/gists/8438e99468ee9a4ab10e/comments/\",\n \"html_url\": \"https://gist.github.com/1\",\n \"git_pull_url\": \"git://gist.github.com/1.git\",\n \"git_push_url\": \"git@gist.github.com:1.git\",\n \"created_at\": \"2010-04-14T02:15:15Z\",\n \"forks\": [\n {\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"url\": \"https://api.github.com/gists/add0d71b065f55c46f60\",\n \"created_at\": \"2011-04-14T16:00:49Z\"\n }\n ],\n \"history\": [\n {\n \"url\": \"https://api.github.com/gists/80bdb0d081c447600e18\",\n \"version\": \"57a7f021a713b1c5a6a199b54cc514735d2d462f\",\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"change_status\": {\n \"deletions\": 0,\n \"additions\": 180,\n \"total\": 180\n },\n \"committed_at\": \"2010-04-14T02:15:15Z\"\n }\n ]\n}\n]]--\n\n-- Star a gist --\nfunction GithubAPI.gist.star(id, callback)\n\tGithubAPI.http_request(\"gists/\"..id..\"/star\", callback, {method=\"PUT\"})\nend\n\n--[[ Response --\nStatus: 204 No Content\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n]]--\n\n-- Unstar a gist --\nfunction GithubAPI.gist.unstar(id, callback)\n\tGithubAPI.http_request(\"gists/\"..id..\"/star\", callback, {method=\"DELETE\"})\nend\n\n--[[ Response --\nStatus: 204 No Content\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n]]--\n\n-- Check if a gist is starred --\nfunction GithubAPI.gist.checkStar(id, callback)\n\tGithubAPI.http_request(\"gists/\"..id..\"/star\", callback)\nend\n\n--[[\n-- Response if gist is starred --\nStatus: 204 No Content\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n\n-- Response if gist is not starred --\nStatus: 404 Not Found\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n]]--\n\n-- Fork a gist --\nfunction GithubAPI.gist.fork(id, callback)\n\tGithubAPI.http_request(\"gists/\"..id..\"/forks\", callback, {method=\"POST\"})\nend\n\n--[[ Response --\nStatus: 201 Created\nLocation: https://api.github.com/gists/2\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n{\n \"url\": \"https://api.github.com/gists/88a3112be74ba6ad701e\",\n \"id\": \"1\",\n \"description\": \"description of gist\",\n \"public\": true,\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"files\": {\n \"ring.erl\": {\n \"size\": 932,\n \"filename\": \"ring.erl\",\n \"raw_url\": \"https://gist.github.com/raw/365370/8c4d2d43d178df44f4c03a7f2ac0ff512853564e/ring.erl\"\n }\n },\n \"comments\": 0,\n \"comments_url\": \"https://api.github.com/gists/8438e99468ee9a4ab10e/comments/\",\n \"html_url\": \"https://gist.github.com/1\",\n \"git_pull_url\": \"git://gist.github.com/1.git\",\n \"git_push_url\": \"git@gist.github.com:1.git\",\n \"created_at\": \"2010-04-14T02:15:15Z\"\n}\n]]--\n\n-- Delete a gist --\nfunction GithubAPI.gist.delete(id, callback)\n\tGithubAPI.http_request(\"gists/\"..id, callback, {method=\"DELETE\"})\nend\n\n--[[ Response --\nStatus: 204 No Content\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n]]--\n\n--- GISTS COMMENTS ---\n\n-- List comments on a gist --\nfunction GithubAPI.gist.comment.list(gist_id, callback)\n\tGithubAPI.http_request(\"gists/..\"gist_id\"../comments\", callback)\nend\n\n--[[ Response --\nStatus: 200 OK\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n[\n {\n \"id\": 1,\n \"url\": \"https://api.github.com/gists/ae709e9cf889e485e65f/comments/1\",\n \"body\": \"Just commenting for the sake of commenting\",\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"created_at\": \"2011-04-18T23:23:56Z\"\n }\n]\n]]--\n\n-- Get a single comment --\nfunction GithubAPI.gist.comment.get(gist_id, id, callback)\n\tGithubAPI.http_request(\"gists/..\"gist_id\"../comments/\"..id, callback)\nend\n\n--[[ Response --\nStatus: 200 OK\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n{\n \"id\": 1,\n \"url\": \"https://api.github.com/gists/ae709e9cf889e485e65f/comments/1\",\n \"body\": \"Just commenting for the sake of commenting\",\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"created_at\": \"2011-04-18T23:23:56Z\"\n}\n]]--\n\n-- Create a comment --\nfunction GithubAPI.gist.comment.create(gist_id, body, callback)\n\tGithubAPI.http_request(\"gists/..\"gist_id\"../comments/\"..id, callback, {\n\t\tmethod = \"POST\",\n\t\tdata = {\n\t\t\tbody = body\n\t\t}\n\t})\nend\n\n--[[ Input --\n{\n \"body\": \"Just commenting for the sake of commenting\"\n}\n]]--\n--[[ Response --\nStatus: 201 Created\nLocation: https://api.github.com/gists/comments/1\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n{\n \"id\": 1,\n \"url\": \"https://api.github.com/gists/ae709e9cf889e485e65f/comments/1\",\n \"body\": \"Just commenting for the sake of commenting\",\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"created_at\": \"2011-04-18T23:23:56Z\"\n}\n]]--\n\n-- Edit a comment --\nfunction GithubAPI.gist.comment.edit(gist_id, id, body, callback)\n\tGithubAPI.http_request(\"gists/..\"gist_id\"../comments/\"..id, callback, {\n\t\tmethod = \"PATCH\",\n\t\tdata = {\n\t\t\tbody = body\n\t\t}\n\t})\nend\n\n--[[ Input --\n{\n \"body\": \"Just commenting for the sake of commenting\"\n}\n]]--\n--[[ Response --\nStatus: 200 OK\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n{\n \"id\": 1,\n \"url\": \"https://api.github.com/gists/ae709e9cf889e485e65f/comments/1\",\n \"body\": \"Just commenting for the sake of commenting\",\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"created_at\": \"2011-04-18T23:23:56Z\"\n}\n]]--\n\n-- Delete a comment --\nfunction GithubAPI.gist.comment.delete(gist_id, id, callback)\n\tGithubAPI.http_request(\"gists/..\"gist_id\"../comments/\"..id, callback, {method = \"DELETE\"})\nend\n\n--[[ Response --\nStatus: 204 No Content\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n]]--\n\n----------------------------------------------------------------------------\n-------------------------------- TOOLS -------------------------------------\n----------------------------------------------------------------------------\n\nfunction GithubAPI.http_request(url, callback, opts, fullUrl)\n\topts = opts or {}\n\t-- if GithubAPI.token then opts.headers = TOKEN BEARER\n\tif opts.data then opts.data = json.encode(opts.data) end\n\n\tlocal _url\n\tif (fullUrl) then _url = url else _url = GithubAPI.location .. url end\n\n\thttp.request(_url, function(data, status, headers)\n\t\tif (status == 500) then error(\"Github: Internal Server Error ...\") end\n\t\tdata = json.decode(data)\n\t\tcallback(data, status, headers)\n\tend, alert, opts)\nend\n\nfunction GithubAPI.explode(div,str) -- credit: http://richard.warburton.it\n if (div=='') then return false end\n local pos,arr = 0,{}\n for st,sp in function() return string.find(str,div,pos,true) end do\n table.insert(arr,string.sub(str,pos,st-1))\n pos = sp + 1\n end\n table.insert(arr,string.sub(str,pos))\n return arr\nend\n\n-- GITHUB TIMESTAMP (YYYY-MM-DDTHH:MM:SSZ) to os.time\nfunction GithubAPI.gtimestamp(githubTime)\n\tgithubTime = githubTime:sub(1, #githubTime-1) -- remove Z\n\tgithubTime = GithubAPI.explode(\"T\", githubTime)\n\tgithubTime[1] = GithubAPI.explode(\"-\", githubTime[1])\n\tgithubTime[2] = GithubAPI.explode(\":\", githubTime[2])\n\treturn os.time({\n\t\tyear = tonumber(githubTime[1][1]),\n\t\tmonth = tonumber(githubTime[1][2]),\n\t\tday = tonumber(githubTime[1][3]),\n\t\thour = tonumber(githubTime[2][1]),\n\t\tmin = tonumber(githubTime[2][2]),\n\t\tsec = tonumber(githubTime[2][3])\n\t})\nend"}},"public":true,"created_at":"2013-08-21T16:12:27Z","updated_at":"2013-08-21T16:26:50Z","description":"Github API","comments":0,"user":{"login":"HyroVitalyProtago","id":3470988,"avatar_url":"https://2.gravatar.com/avatar/ed59562b231a649345f38703948f76f4?d=https%3A%2F%2Fidenticons.github.com%2F6582cb986b7a730b12f7c18dfcc865f0.png","gravatar_id":"ed59562b231a649345f38703948f76f4","url":"https://api.github.com/users/HyroVitalyProtago","html_url":"https://github.com/HyroVitalyProtago","followers_url":"https://api.github.com/users/HyroVitalyProtago/followers","following_url":"https://api.github.com/users/HyroVitalyProtago/following{/other_user}","gists_url":"https://api.github.com/users/HyroVitalyProtago/gists{/gist_id}","starred_url":"https://api.github.com/users/HyroVitalyProtago/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/HyroVitalyProtago/subscriptions","organizations_url":"https://api.github.com/users/HyroVitalyProtago/orgs","repos_url":"https://api.github.com/users/HyroVitalyProtago/repos","events_url":"https://api.github.com/users/HyroVitalyProtago/events{/privacy}","received_events_url":"https://api.github.com/users/HyroVitalyProtago/received_events","type":"User"},"comments_url":"https://api.github.com/gists/6296553/comments","forks":[],"history":[{"user":null,"version":"c464aecd7fea16684e935607eeea7ae4f8caa0e2","committed_at":"2013-08-21T16:12:27Z","change_status":{"total":793,"additions":793,"deletions":0},"url":"https://api.github.com/gists/6296553/c464aecd7fea16684e935607eeea7ae4f8caa0e2"}]} https POST api.github.com None -/gists/2729818/fork +/gists/6296553/forks {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} null 201 -[('status', '201 Created'), ('x-ratelimit-remaining', '4969'), ('content-length', '873'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '"502531cd2afdff81b572c8565b17f601"'), ('date', 'Sat, 19 May 2012 07:25:30 GMT'), ('content-type', 'application/json; charset=utf-8'), ('location', 'https://api.github.com/gists/2729865')] -{"updated_at":"2012-05-19T07:25:30Z","url":"https://api.github.com/gists/2729865","comments":0,"public":true,"git_pull_url":"git://gist.github.com/2729865.git","files":{"ror.markdown":{"raw_url":"https://gist.github.com/raw/2729865/1284e70f4c16550ef32a26aa4f5f0c78edaa7008/ror.markdown","type":"text/plain","size":1076,"filename":"ror.markdown","language":"Markdown"}},"html_url":"https://gist.github.com/2729865","user":{"url":"https://api.github.com/users/jacquev6","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","login":"jacquev6","id":327146},"description":"RoR setup in AWS EC2(Ubuntu 12.04 LTS)","created_at":"2012-05-19T07:25:30Z","git_push_url":"git@gist.github.com:2729865.git","id":"2729865"} +[('status', '201 Created'), ('x-ratelimit-remaining', '4965'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('cache-control', 'max-age=0, private, must-revalidate'), ('content-length', '1510'), ('server', 'GitHub.com'), ('x-ratelimit-limit', '5000'), ('location', 'https://api.github.com/gists/6296732'), ('access-control-allow-credentials', 'true'), ('date', 'Wed, 21 Aug 2013 16:28:24 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('etag', '"ceb086d4f395719d1124cade5cedbfd4"'), ('x-ratelimit-reset', '1377104997')] +{"url":"https://api.github.com/gists/6296732","forks_url":"https://api.github.com/gists/6296732/forks","commits_url":"https://api.github.com/gists/6296732/commits","id":"6296732","git_pull_url":"https://gist.github.com/6296732.git","git_push_url":"https://gist.github.com/6296732.git","html_url":"https://gist.github.com/6296732","files":{},"public":true,"created_at":"2013-08-21T16:28:24Z","updated_at":"2013-08-21T16:28:24Z","description":"Github API","comments":0,"user":{"login":"jacquev6","id":327146,"avatar_url":"https://1.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"comments_url":"https://api.github.com/gists/6296732/comments"} https GET api.github.com None -/gists/2729865 +/gists/6296732 {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} null 200 -[('status', '200 OK'), ('x-ratelimit-remaining', '4966'), ('content-length', '3460'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '"e829012f18db493a69740de762186eb5"'), ('date', 'Sat, 19 May 2012 07:26:54 GMT'), ('content-type', 'application/json; charset=utf-8')] -{"user":{"url":"https://api.github.com/users/jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","id":327146},"description":"RoR setup in AWS EC2(Ubuntu 12.04 LTS)","comments":0,"updated_at":"2012-05-19T07:25:30Z","public":true,"git_pull_url":"git://gist.github.com/2729865.git","history":[{"user":{"url":"https://api.github.com/users/Kechol","avatar_url":"https://secure.gravatar.com/avatar/f2a6400b393749ccd9ad3f24d4995f77?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","gravatar_id":"f2a6400b393749ccd9ad3f24d4995f77","login":"Kechol","id":625489},"change_status":{"total":57,"deletions":0,"additions":57},"committed_at":"2012-05-19T07:06:08Z","version":"a655d19a12233e5e5615deb714eae95c433eed57","url":"https://api.github.com/gists/2729865/a655d19a12233e5e5615deb714eae95c433eed57"}],"git_push_url":"git@gist.github.com:2729865.git","url":"https://api.github.com/gists/2729865","fork_of":{"user":{"url":"https://api.github.com/users/Kechol","avatar_url":"https://secure.gravatar.com/avatar/f2a6400b393749ccd9ad3f24d4995f77?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","gravatar_id":"f2a6400b393749ccd9ad3f24d4995f77","login":"Kechol","id":625489},"description":"RoR setup in AWS EC2(Ubuntu 12.04 LTS)","comments":0,"updated_at":"2012-05-19T07:06:08Z","public":true,"git_pull_url":"git://gist.github.com/2729818.git","git_push_url":"git@gist.github.com:2729818.git","url":"https://api.github.com/gists/2729818","html_url":"https://gist.github.com/2729818","id":"2729818","created_at":"2012-05-19T07:06:08Z","files":{"ror.markdown":{"type":"text/plain","size":1076,"filename":"ror.markdown","raw_url":"https://gist.github.com/raw/2729818/1284e70f4c16550ef32a26aa4f5f0c78edaa7008/ror.markdown","language":"Markdown"}}},"html_url":"https://gist.github.com/2729865","id":"2729865","forks":[],"created_at":"2012-05-19T07:25:30Z","files":{"ror.markdown":{"content":"## create user\n\nsudo useradd -m username\nvisudo\n\n## delete default user\n\nsudo userdel ubuntu\nsudo rm -Rf ubuntu\n\n## setup ssh\n\nmkdir ~/.ssh\nvi /etc/ssh/authorized_keys\nsudo vi /etc/ssh/sshd_config\n\n\n## install packages\n\nsudo apt-get update\n\nsudo apt-get install sysv-rc-init git-core apache2-utils wget vim\nsudo apt-get install mysql-client mysql-server libmysqld-dev\nsudo apt-get install g++ openssl zlib1g readline-common libyaml-dev libssl-dev zlib1g-dev libxml2-dev libxslt1-dev libjson0-dev libgcc1 libreadline-dev\n\n\n## install nginx\n\nwget http://nginx.org/keys/nginx_signing.key\nsudo apt-key add nginx_signing.key\n\n### add /etc/sources.list\n> \"deb http://nginx.org/packages/ubuntu/ lucid nginx\ndeb-src http://nginx.org/packages/ubuntu/ lucid nginx\"\n\napt-get update\napt-get install nginx\n\n\n## setup system\n\nsudo sysv-rc-init\n\n\n## install ruby\n\ncd /usr/local/src\nsudo wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz\nsudo tar zxvf ruby-1.9.3-p194.tar.gz\ncd ruby-1.9.3-p194\nsudo ./configure\nsudo make && make install\n\n\n## install RoR\n\nsudo gem install rails","type":"text/plain","size":1076,"filename":"ror.markdown","raw_url":"https://gist.github.com/raw/2729865/1284e70f4c16550ef32a26aa4f5f0c78edaa7008/ror.markdown","language":"Markdown"}}} +[('status', '200 OK'), ('x-ratelimit-remaining', '4964'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '26806'), ('server', 'GitHub.com'), ('last-modified', 'Wed, 21 Aug 2013 16:28:24 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"f2916c23435522156274bed022a322e7"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Wed, 21 Aug 2013 16:28:25 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1377104997')] +{"url":"https://api.github.com/gists/6296732","forks_url":"https://api.github.com/gists/6296732/forks","commits_url":"https://api.github.com/gists/6296732/commits","id":"6296732","git_pull_url":"https://gist.github.com/6296732.git","git_push_url":"https://gist.github.com/6296732.git","html_url":"https://gist.github.com/6296732","files":{"GithubAPI.lua":{"filename":"GithubAPI.lua","type":"text/plain","language":"Lua","raw_url":"https://gist.github.com/raw/6296732/88aafa25fb28e17013054a117354a37f0d78963c/GithubAPI.lua","size":21229,"content":"-- GithubAPI\n-- @Author : Hyro Vitaly Protago\n-- @Version : 1.0.0\n\n--[[\n\nINFOS :\n - Cannot delete an anonymous gist\n]]--\n\nGithubAPI = {\n\tlocation = \"https://api.github.com/\",\n\ttoken = nil,\n\tOAuth = {\n\t\tauthorizations = {}\n\t},\n\tgist = {\n\t\tlist = {},\n\t\tcomment = {}\n\t},\n\tgithub = {}\n}\n\n----------------------------------------------------------------------------\n------------------------------ Github API ----------------------------------\n----------------------------------------------------------------------------\n\n--- Authentication ---\n\n--[[ Scopes --\n\nScopes let you specify exactly what type of access you need. Scopes limit access for OAuth tokens.\nThey do not grant any additional permission beyond that which the user already has.\n\nFor the web flow, requested scopes will be displayed to the user on the authorize form.\n\nCheck headers to see what OAuth scopes you have, and what the API action accepts.\n\n~~~\n$ curl -H \"Authorization: token OAUTH-TOKEN\" https://api.github.com/users/technoweenie -I\nHTTP/1.1 200 OK\nX-OAuth-Scopes: repo, user\nX-Accepted-OAuth-Scopes: user\nX-OAuth-Scopes lists the scopes your token has authorized. X-Accepted-OAuth-Scopes lists the scopes that the action checks for.\n~~~\n\n- (no scope)\npublic read-only access (includes public user profile info, public repo info, and gists).\n- user\nRead/write access to profile info only. Note: this scope includes user:email and user:follow.\n- user:email\nRead access to a user’s email addresses.\n- user:follow\nAccess to follow or unfollow other users.\n- public_repo\nRead/write access to public repos and organizations.\n- repo\nRead/write access to public and private repos and organizations.\n- repo:status\nRead/write access to public and private repository commit statuses.\nThis scope is only necessary to grant other users or services access to private repository commit statuses without granting access to the code.\nThe repo and public_repo scopes already include access to commit status for private and public repositories respectively.\n- delete_repo\nDelete access to adminable repositories.\n- notifications\nRead access to a user’s notifications. repo is accepted too.\n- gist\nWrite access to gists.\n\nNOTE: Your application can request the scopes in the initial redirection. You can specify multiple scopes by separating them by a comma.\n~~~\nhttps://github.com/login/oauth/authorize?\n client_id=...&\n scope=user,public_repo\n~~~\n]]--\n\n-- Redirect users to request GitHub access --\nfunction GithubAPI.OAuth.getToken(client_id, scope, callback)\n\tGithubAPI.http_request(\"https://github.com/login/oauth/authorize?client_id=\"..client_id..\"&scope=\"..scope, function(data, status, headers)\n\t\tGithubAPI.OAuth._getToken(client_id, client_secret, data, callback)\n\tend, nil, true)\nend\n-- GitHub redirects back to your site --\nfunction GithubAPI.OAuth._getToken(client_id, client_secret, code, callback)\n\tGithubAPI.http_request(\"https://github.com/login/oauth/access_token\", callback, {\n\t\tmethod = \"POST\",\n\t\tdata = {\n\t\t\tclient_id = client_id,\n\t\t\tclient_secret = client_secret,\n\t\t\tcode = code\n\t\t}\n\t}, true)\nend\n\n-- List your authorizations --\nfunction GithubAPI.OAuth.authorizations.list(callback)\n\tGithubAPI.http_request(\"authorizations\", callback)\nend\n\n--[[ Response --\nStatus: 200 OK\nLink: ; rel=\"next\",\n ; rel=\"last\"\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n[\n {\n \"id\": 1,\n \"url\": \"https://api.github.com/authorizations/1\",\n \"scopes\": [\n \"public_repo\"\n ],\n \"token\": \"abc123\",\n \"app\": {\n \"url\": \"http://my-github-app.com\",\n \"name\": \"my github app\",\n \"client_id\": \"abcde12345fghij67890\"\n },\n \"note\": \"optional note\",\n \"note_url\": \"http://optional/note/url\",\n \"updated_at\": \"2011-09-06T20:39:23Z\",\n \"created_at\": \"2011-09-06T17:26:27Z\"\n }\n]\n]]--\n\n-- Get a single authorization --\nfunction GithubAPI.OAuth.authorizations.get(id, callback)\n\tGithubAPI.http_request(\"authorizations/\"..id, callback)\nend\n\n--[[ Response --\nStatus: 200 OK\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n{\n \"id\": 1,\n \"url\": \"https://api.github.com/authorizations/1\",\n \"scopes\": [\n \"public_repo\"\n ],\n \"token\": \"abc123\",\n \"app\": {\n \"url\": \"http://my-github-app.com\",\n \"name\": \"my github app\",\n \"client_id\": \"abcde12345fghij67890\"\n },\n \"note\": \"optional note\",\n \"note_url\": \"http://optional/note/url\",\n \"updated_at\": \"2011-09-06T20:39:23Z\",\n \"created_at\": \"2011-09-06T17:26:27Z\"\n}\n]]--\n\n-- Create a new authorization --\nfunction GithubAPI.OAuth.authorizations.create(callback, scopes, note, note_url, client_id, client_secret)\n\tGithubAPI.http_request(\"authorizations/\", callback, {\n\t\tmethod = \"POST\",\n\t\tdata = {\n\t\t\tscopes = scopes,\n\t\t\tnote = note,\n\t\t\tnote_url = note_url,\n\t\t\tclient_id = client_id,\n\t\t\tclient_secret = client_secret\n\t\t}\n\t})\nend\n\n--[[ Input --\nscopes\nOptional array - A list of scopes that this authorization is in.\n\nnote\nOptional string - A note to remind you what the OAuth token is for.\n\nnote_url\nOptional string - A URL to remind you what app the OAuth token is for.\n\nclient_id\nOptional String - The 20 character OAuth app client key for which to create the token.\n\nclient_secret\nOptional String - The 40 character OAuth app client secret for which to create the token.\n~~~\n{\n \"scopes\": [\n \"public_repo\"\n ],\n \"note\": \"admin script\"\n}\n~~~\n]]--\n\n--[[ Response --\nStatus: 201 Created\nLocation: https://api.github.com/authorizations/1\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n{\n \"id\": 1,\n \"url\": \"https://api.github.com/authorizations/1\",\n \"scopes\": [\n \"public_repo\"\n ],\n \"token\": \"abc123\",\n \"app\": {\n \"url\": \"http://my-github-app.com\",\n \"name\": \"my github app\",\n \"client_id\": \"abcde12345fghij67890\"\n },\n \"note\": \"optional note\",\n \"note_url\": \"http://optional/note/url\",\n \"updated_at\": \"2011-09-06T20:39:23Z\",\n \"created_at\": \"2011-09-06T17:26:27Z\"\n}\n]]--\n\n-- TODO\n-- Update\n-- Check\n-- Delete\n\n--- GISTS ---\n\n-- List gists --\nfunction GithubAPI.gist.list.user(user, callback)\n\tGithubAPI.http_request(\"users/\"..user..\"/gists\", callback)\nend\nfunction GithubAPI.gist.list.all(callback) -- return all public gists if called anonymously\n\tGithubAPI.http_request(\"gists\", callback)\nend\nfunction GithubAPI.gist.list.allPublic(callback)\n\tGithubAPI.http_request(\"gists/public\", callback)\nend\nfunction GithubAPI.gist.list.starred(callback)\n\tGithubAPI.http_request(\"gists/starred\", callback)\nend\n\n--[[ Response --\nStatus: 200 OK\nLink: ; rel=\"next\",\n ; rel=\"last\"\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n[\n {\n \"url\": \"https://api.github.com/gists/88a3112be74ba6ad701e\",\n \"id\": \"1\",\n \"description\": \"description of gist\",\n \"public\": true,\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"files\": {\n \"ring.erl\": {\n \"size\": 932,\n \"filename\": \"ring.erl\",\n \"raw_url\": \"https://gist.github.com/raw/365370/8c4d2d43d178df44f4c03a7f2ac0ff512853564e/ring.erl\"\n }\n },\n \"comments\": 0,\n \"comments_url\": \"https://api.github.com/gists/8438e99468ee9a4ab10e/comments/\",\n \"html_url\": \"https://gist.github.com/1\",\n \"git_pull_url\": \"git://gist.github.com/1.git\",\n \"git_push_url\": \"git@gist.github.com:1.git\",\n \"created_at\": \"2010-04-14T02:15:15Z\"\n }\n]\n]]--\n\n-- Get a single gist --\nfunction GithubAPI.gist.get(id, callback)\n\tGithubAPI.http_request(\"gists/\"..id, callback)\nend\n\n--[[ Response --\nStatus: 200 OK\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n{\n \"url\": \"https://api.github.com/gists/88a3112be74ba6ad701e\",\n \"id\": \"1\",\n \"description\": \"description of gist\",\n \"public\": true,\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"files\": {\n \"ring.erl\": {\n \"size\": 932,\n \"filename\": \"ring.erl\",\n \"raw_url\": \"https://gist.github.com/raw/365370/8c4d2d43d178df44f4c03a7f2ac0ff512853564e/ring.erl\"\n }\n },\n \"comments\": 0,\n \"comments_url\": \"https://api.github.com/gists/8438e99468ee9a4ab10e/comments/\",\n \"html_url\": \"https://gist.github.com/1\",\n \"git_pull_url\": \"git://gist.github.com/1.git\",\n \"git_push_url\": \"git@gist.github.com:1.git\",\n \"created_at\": \"2010-04-14T02:15:15Z\",\n \"forks\": [\n {\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"url\": \"https://api.github.com/gists/add0d71b065f55c46f60\",\n \"created_at\": \"2011-04-14T16:00:49Z\"\n }\n ],\n \"history\": [\n {\n \"url\": \"https://api.github.com/gists/80bdb0d081c447600e18\",\n \"version\": \"57a7f021a713b1c5a6a199b54cc514735d2d462f\",\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"change_status\": {\n \"deletions\": 0,\n \"additions\": 180,\n \"total\": 180\n },\n \"committed_at\": \"2010-04-14T02:15:15Z\"\n }\n ]\n}\n]]--\n\n-- Create a gist --\nfunction GithubAPI.gist.create(public, files, callback ,description)\n\tGithubAPI.http_request(\"gists/\"..id, callback, {\n\t\tmethod = \"POST\",\n\t\tdata = {\n\t\t\tpublic = public,\n\t\t\tfiles = files,\n\t\t\tdescription = description\n\t\t}\n\t})\nend\n\n--[[ Input --\n{\n \"description\": \"the description for this gist\",\n \"public\": true,\n \"files\": {\n \"file1.txt\": {\n \"content\": \"String file contents\"\n }\n }\n}\n]]--\n\n--[[ Response --\nStatus: 201 Created\nLocation: https://api.github.com/gists/1\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n{\n \"url\": \"https://api.github.com/gists/88a3112be74ba6ad701e\",\n \"id\": \"1\",\n \"description\": \"description of gist\",\n \"public\": true,\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"files\": {\n \"ring.erl\": {\n \"size\": 932,\n \"filename\": \"ring.erl\",\n \"raw_url\": \"https://gist.github.com/raw/365370/8c4d2d43d178df44f4c03a7f2ac0ff512853564e/ring.erl\"\n }\n },\n \"comments\": 0,\n \"comments_url\": \"https://api.github.com/gists/8438e99468ee9a4ab10e/comments/\",\n \"html_url\": \"https://gist.github.com/1\",\n \"git_pull_url\": \"git://gist.github.com/1.git\",\n \"git_push_url\": \"git@gist.github.com:1.git\",\n \"created_at\": \"2010-04-14T02:15:15Z\",\n \"forks\": [\n {\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"url\": \"https://api.github.com/gists/add0d71b065f55c46f60\",\n \"created_at\": \"2011-04-14T16:00:49Z\"\n }\n ],\n \"history\": [\n {\n \"url\": \"https://api.github.com/gists/80bdb0d081c447600e18\",\n \"version\": \"57a7f021a713b1c5a6a199b54cc514735d2d462f\",\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"change_status\": {\n \"deletions\": 0,\n \"additions\": 180,\n \"total\": 180\n },\n \"committed_at\": \"2010-04-14T02:15:15Z\"\n }\n ]\n}\n]]--\n\n-- Edit a gist --\nfunction GithubAPI.gist.edit(id, files, callback, description)\n\tGithubAPI.http_request(\"gists/\"..id, callback, {\n\t\tmethod = \"PATCH\",\n\t\tdata = {\n\t\t\tid = id,\n\t\t\tfiles = files,\n\t\t\tdescription = description\n\t\t}\n\t})\nend\n\n--[[ Input --\n{\n \"description\": \"the description for this gist\",\n \"files\": {\n \"file1.txt\": {\n \"content\": \"updated file contents\"\n },\n \"old_name.txt\": {\n \"filename\": \"new_name.txt\",\n \"content\": \"modified contents\"\n },\n \"new_file.txt\": {\n \"content\": \"a new file\"\n },\n \"delete_this_file.txt\": null\n }\n}\n]]--\n\n--[[ Response --\nStatus: 200 OK\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n{\n \"url\": \"https://api.github.com/gists/88a3112be74ba6ad701e\",\n \"id\": \"1\",\n \"description\": \"description of gist\",\n \"public\": true,\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"files\": {\n \"ring.erl\": {\n \"size\": 932,\n \"filename\": \"ring.erl\",\n \"raw_url\": \"https://gist.github.com/raw/365370/8c4d2d43d178df44f4c03a7f2ac0ff512853564e/ring.erl\"\n }\n },\n \"comments\": 0,\n \"comments_url\": \"https://api.github.com/gists/8438e99468ee9a4ab10e/comments/\",\n \"html_url\": \"https://gist.github.com/1\",\n \"git_pull_url\": \"git://gist.github.com/1.git\",\n \"git_push_url\": \"git@gist.github.com:1.git\",\n \"created_at\": \"2010-04-14T02:15:15Z\",\n \"forks\": [\n {\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"url\": \"https://api.github.com/gists/add0d71b065f55c46f60\",\n \"created_at\": \"2011-04-14T16:00:49Z\"\n }\n ],\n \"history\": [\n {\n \"url\": \"https://api.github.com/gists/80bdb0d081c447600e18\",\n \"version\": \"57a7f021a713b1c5a6a199b54cc514735d2d462f\",\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"change_status\": {\n \"deletions\": 0,\n \"additions\": 180,\n \"total\": 180\n },\n \"committed_at\": \"2010-04-14T02:15:15Z\"\n }\n ]\n}\n]]--\n\n-- Star a gist --\nfunction GithubAPI.gist.star(id, callback)\n\tGithubAPI.http_request(\"gists/\"..id..\"/star\", callback, {method=\"PUT\"})\nend\n\n--[[ Response --\nStatus: 204 No Content\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n]]--\n\n-- Unstar a gist --\nfunction GithubAPI.gist.unstar(id, callback)\n\tGithubAPI.http_request(\"gists/\"..id..\"/star\", callback, {method=\"DELETE\"})\nend\n\n--[[ Response --\nStatus: 204 No Content\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n]]--\n\n-- Check if a gist is starred --\nfunction GithubAPI.gist.checkStar(id, callback)\n\tGithubAPI.http_request(\"gists/\"..id..\"/star\", callback)\nend\n\n--[[\n-- Response if gist is starred --\nStatus: 204 No Content\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n\n-- Response if gist is not starred --\nStatus: 404 Not Found\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n]]--\n\n-- Fork a gist --\nfunction GithubAPI.gist.fork(id, callback)\n\tGithubAPI.http_request(\"gists/\"..id..\"/forks\", callback, {method=\"POST\"})\nend\n\n--[[ Response --\nStatus: 201 Created\nLocation: https://api.github.com/gists/2\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n{\n \"url\": \"https://api.github.com/gists/88a3112be74ba6ad701e\",\n \"id\": \"1\",\n \"description\": \"description of gist\",\n \"public\": true,\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"files\": {\n \"ring.erl\": {\n \"size\": 932,\n \"filename\": \"ring.erl\",\n \"raw_url\": \"https://gist.github.com/raw/365370/8c4d2d43d178df44f4c03a7f2ac0ff512853564e/ring.erl\"\n }\n },\n \"comments\": 0,\n \"comments_url\": \"https://api.github.com/gists/8438e99468ee9a4ab10e/comments/\",\n \"html_url\": \"https://gist.github.com/1\",\n \"git_pull_url\": \"git://gist.github.com/1.git\",\n \"git_push_url\": \"git@gist.github.com:1.git\",\n \"created_at\": \"2010-04-14T02:15:15Z\"\n}\n]]--\n\n-- Delete a gist --\nfunction GithubAPI.gist.delete(id, callback)\n\tGithubAPI.http_request(\"gists/\"..id, callback, {method=\"DELETE\"})\nend\n\n--[[ Response --\nStatus: 204 No Content\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n]]--\n\n--- GISTS COMMENTS ---\n\n-- List comments on a gist --\nfunction GithubAPI.gist.comment.list(gist_id, callback)\n\tGithubAPI.http_request(\"gists/..\"gist_id\"../comments\", callback)\nend\n\n--[[ Response --\nStatus: 200 OK\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n[\n {\n \"id\": 1,\n \"url\": \"https://api.github.com/gists/ae709e9cf889e485e65f/comments/1\",\n \"body\": \"Just commenting for the sake of commenting\",\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"created_at\": \"2011-04-18T23:23:56Z\"\n }\n]\n]]--\n\n-- Get a single comment --\nfunction GithubAPI.gist.comment.get(gist_id, id, callback)\n\tGithubAPI.http_request(\"gists/..\"gist_id\"../comments/\"..id, callback)\nend\n\n--[[ Response --\nStatus: 200 OK\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n{\n \"id\": 1,\n \"url\": \"https://api.github.com/gists/ae709e9cf889e485e65f/comments/1\",\n \"body\": \"Just commenting for the sake of commenting\",\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"created_at\": \"2011-04-18T23:23:56Z\"\n}\n]]--\n\n-- Create a comment --\nfunction GithubAPI.gist.comment.create(gist_id, body, callback)\n\tGithubAPI.http_request(\"gists/..\"gist_id\"../comments/\"..id, callback, {\n\t\tmethod = \"POST\",\n\t\tdata = {\n\t\t\tbody = body\n\t\t}\n\t})\nend\n\n--[[ Input --\n{\n \"body\": \"Just commenting for the sake of commenting\"\n}\n]]--\n--[[ Response --\nStatus: 201 Created\nLocation: https://api.github.com/gists/comments/1\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n{\n \"id\": 1,\n \"url\": \"https://api.github.com/gists/ae709e9cf889e485e65f/comments/1\",\n \"body\": \"Just commenting for the sake of commenting\",\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"created_at\": \"2011-04-18T23:23:56Z\"\n}\n]]--\n\n-- Edit a comment --\nfunction GithubAPI.gist.comment.edit(gist_id, id, body, callback)\n\tGithubAPI.http_request(\"gists/..\"gist_id\"../comments/\"..id, callback, {\n\t\tmethod = \"PATCH\",\n\t\tdata = {\n\t\t\tbody = body\n\t\t}\n\t})\nend\n\n--[[ Input --\n{\n \"body\": \"Just commenting for the sake of commenting\"\n}\n]]--\n--[[ Response --\nStatus: 200 OK\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n{\n \"id\": 1,\n \"url\": \"https://api.github.com/gists/ae709e9cf889e485e65f/comments/1\",\n \"body\": \"Just commenting for the sake of commenting\",\n \"user\": {\n \"login\": \"octocat\",\n \"id\": 1,\n \"avatar_url\": \"https://github.com/images/error/octocat_happy.gif\",\n \"gravatar_id\": \"somehexcode\",\n \"url\": \"https://api.github.com/users/octocat\"\n },\n \"created_at\": \"2011-04-18T23:23:56Z\"\n}\n]]--\n\n-- Delete a comment --\nfunction GithubAPI.gist.comment.delete(gist_id, id, callback)\n\tGithubAPI.http_request(\"gists/..\"gist_id\"../comments/\"..id, callback, {method = \"DELETE\"})\nend\n\n--[[ Response --\nStatus: 204 No Content\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4999\n]]--\n\n----------------------------------------------------------------------------\n-------------------------------- TOOLS -------------------------------------\n----------------------------------------------------------------------------\n\nfunction GithubAPI.http_request(url, callback, opts, fullUrl)\n\topts = opts or {}\n\t-- if GithubAPI.token then opts.headers = TOKEN BEARER\n\tif opts.data then opts.data = json.encode(opts.data) end\n\n\tlocal _url\n\tif (fullUrl) then _url = url else _url = GithubAPI.location .. url end\n\n\thttp.request(_url, function(data, status, headers)\n\t\tif (status == 500) then error(\"Github: Internal Server Error ...\") end\n\t\tdata = json.decode(data)\n\t\tcallback(data, status, headers)\n\tend, alert, opts)\nend\n\nfunction GithubAPI.explode(div,str) -- credit: http://richard.warburton.it\n if (div=='') then return false end\n local pos,arr = 0,{}\n for st,sp in function() return string.find(str,div,pos,true) end do\n table.insert(arr,string.sub(str,pos,st-1))\n pos = sp + 1\n end\n table.insert(arr,string.sub(str,pos))\n return arr\nend\n\n-- GITHUB TIMESTAMP (YYYY-MM-DDTHH:MM:SSZ) to os.time\nfunction GithubAPI.gtimestamp(githubTime)\n\tgithubTime = githubTime:sub(1, #githubTime-1) -- remove Z\n\tgithubTime = GithubAPI.explode(\"T\", githubTime)\n\tgithubTime[1] = GithubAPI.explode(\"-\", githubTime[1])\n\tgithubTime[2] = GithubAPI.explode(\":\", githubTime[2])\n\treturn os.time({\n\t\tyear = tonumber(githubTime[1][1]),\n\t\tmonth = tonumber(githubTime[1][2]),\n\t\tday = tonumber(githubTime[1][3]),\n\t\thour = tonumber(githubTime[2][1]),\n\t\tmin = tonumber(githubTime[2][2]),\n\t\tsec = tonumber(githubTime[2][3])\n\t})\nend"}},"public":true,"created_at":"2013-08-21T16:28:24Z","updated_at":"2013-08-21T16:28:24Z","description":"Github API","comments":0,"user":{"login":"jacquev6","id":327146,"avatar_url":"https://2.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"comments_url":"https://api.github.com/gists/6296732/comments","forks":[],"history":[{"user":null,"version":"c464aecd7fea16684e935607eeea7ae4f8caa0e2","committed_at":"2013-08-21T16:12:27Z","change_status":{"total":793,"additions":793,"deletions":0},"url":"https://api.github.com/gists/6296732/c464aecd7fea16684e935607eeea7ae4f8caa0e2"}],"fork_of":{"url":"https://api.github.com/gists/6296553","forks_url":"https://api.github.com/gists/6296553/forks","commits_url":"https://api.github.com/gists/6296553/commits","id":"6296553","git_pull_url":"https://gist.github.com/6296553.git","git_push_url":"https://gist.github.com/6296553.git","html_url":"https://gist.github.com/6296553","files":{},"public":true,"created_at":"2013-08-21T16:12:27Z","updated_at":"2013-08-21T16:28:24Z","description":"Github API","comments":0,"user":{"login":"HyroVitalyProtago","id":3470988,"avatar_url":"https://1.gravatar.com/avatar/ed59562b231a649345f38703948f76f4?d=https%3A%2F%2Fidenticons.github.com%2F6582cb986b7a730b12f7c18dfcc865f0.png","gravatar_id":"ed59562b231a649345f38703948f76f4","url":"https://api.github.com/users/HyroVitalyProtago","html_url":"https://github.com/HyroVitalyProtago","followers_url":"https://api.github.com/users/HyroVitalyProtago/followers","following_url":"https://api.github.com/users/HyroVitalyProtago/following{/other_user}","gists_url":"https://api.github.com/users/HyroVitalyProtago/gists{/gist_id}","starred_url":"https://api.github.com/users/HyroVitalyProtago/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/HyroVitalyProtago/subscriptions","organizations_url":"https://api.github.com/users/HyroVitalyProtago/orgs","repos_url":"https://api.github.com/users/HyroVitalyProtago/repos","events_url":"https://api.github.com/users/HyroVitalyProtago/events{/privacy}","received_events_url":"https://api.github.com/users/HyroVitalyProtago/received_events","type":"User"},"comments_url":"https://api.github.com/gists/6296553/comments"}} From 0f369ba218414beb8d782904b1f09d4711c82cb7 Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Wed, 21 Aug 2013 18:51:09 +0200 Subject: [PATCH 065/103] Use POST /repos/:owner/:repo/hooks/:id/tests instead of POST /repos/:owner/:repo/hooks/:id/test --- README.rst | 5 +---- github/Hook.py | 6 +++--- github/tests/ReplayData/Hook.testTest.txt | 2 +- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/README.rst b/README.rst index b47dcbbf..e80811ef 100644 --- a/README.rst +++ b/README.rst @@ -13,6 +13,7 @@ What's new? `Version 1.19.0 `_ (?? ??th, 2013) * Use the new URL to fork gists (minor change) +* Use the new URL to test hooks (minor change) What's missing? =============== @@ -44,10 +45,6 @@ Github API v3 URLs not (yet) covered by PyGithub * ``/repos/:owner/:repo/contents/:path`` (DELETE) * ``/repos/:owner/:repo/contents/:path`` (PUT) -* ``/repos/:owner/:repo/hooks/:id/tests`` (POST) - - * instead, ``Hook.test`` calls the old URL ``/repos/:owner/:repo/hooks/:id/test`` - * ``/repos/:owner/:repo/notifications`` (GET) * ``/repos/:owner/:repo/notifications`` (PUT) * ``/repos/:owner/:repo/stats/code_frequency`` (GET) diff --git a/github/Hook.py b/github/Hook.py index e3a955d3..922f718a 100644 --- a/github/Hook.py +++ b/github/Hook.py @@ -30,7 +30,7 @@ import github.HookResponse class Hook(github.GithubObject.CompletableGithubObject): """ - This class represents Hooks as returned for example by http://developer.github.com/v3/todo + This class represents Hooks as returned for example by http://developer.github.com/v3/repos/hooks """ @property @@ -156,12 +156,12 @@ class Hook(github.GithubObject.CompletableGithubObject): def test(self): """ - :calls: `POST /repos/:owner/:repo/hooks/:id/test `_ + :calls: `POST /repos/:owner/:repo/hooks/:id/tests `_ :rtype: None """ headers, data = self._requester.requestJsonAndCheck( "POST", - self.url + "/test", + self.url + "/tests", None, None ) diff --git a/github/tests/ReplayData/Hook.testTest.txt b/github/tests/ReplayData/Hook.testTest.txt index 516f6a64..6f6e2549 100644 --- a/github/tests/ReplayData/Hook.testTest.txt +++ b/github/tests/ReplayData/Hook.testTest.txt @@ -2,7 +2,7 @@ https POST api.github.com None -/repos/jacquev6/PyGithub/hooks/257993/test +/repos/jacquev6/PyGithub/hooks/257993/tests {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} null 204 From e384a52971a8452b9c8eb32ed862e88cd828ee8e Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Wed, 21 Aug 2013 21:43:08 +0200 Subject: [PATCH 066/103] NamedUser.has_in_following --- README.rst | 4 +--- github/NamedUser.py | 15 +++++++++++++ github/tests/NamedUser.py | 4 ++++ .../NamedUser.testHasInFollowing.txt | 22 +++++++++++++++++++ 4 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 github/tests/ReplayData/NamedUser.testHasInFollowing.txt diff --git a/README.rst b/README.rst index e80811ef..fde0bf28 100644 --- a/README.rst +++ b/README.rst @@ -12,6 +12,7 @@ What's new? `Version 1.19.0 `_ (?? ??th, 2013) +* Implement ``NamedUser.has_in_following`` * Use the new URL to fork gists (minor change) * Use the new URL to test hooks (minor change) @@ -63,9 +64,6 @@ Github API v3 URLs not (yet) covered by PyGithub * ``/search/issues`` (GET) * ``/search/repositories`` (GET) * ``/search/users`` (GET) -* ``/users/:user/following/:target_user`` (GET) - - * should be called in method ``NamedUser.has_in_following`` Documentation ============= diff --git a/github/NamedUser.py b/github/NamedUser.py index a8016a15..b2a6dc48 100644 --- a/github/NamedUser.py +++ b/github/NamedUser.py @@ -449,6 +449,21 @@ class NamedUser(github.GithubObject.CompletableGithubObject): None ) + def has_in_following(self, following): + """ + :calls: `GET /user/:user/following/:target_user `_ + :param following: :class:`github.NamedUser.NamedUser` + :rtype: bool + """ + assert isinstance(following, github.NamedUser.NamedUser), following + status, headers, data = self._requester.requestJson( + "GET", + self.url + "/following/" + following._identity, + None, + None + ) + return status == 204 + @property def _identity(self): return self.login diff --git a/github/tests/NamedUser.py b/github/tests/NamedUser.py index 2ea6944d..5a56bd19 100644 --- a/github/tests/NamedUser.py +++ b/github/tests/NamedUser.py @@ -109,6 +109,10 @@ class NamedUser(Framework.TestCase): def testGetFollowing(self): self.assertListKeyEqual(self.user.get_following(), lambda f: f.login, ["nvie", "schacon", "jamis", "chad", "unclebob", "dabrahams", "jnorthrup", "brugidou", "regisb", "walidk", "tanzilli", "fjardon", "r3c", "sdanzan", "vineus", "cjuniet", "gturri", "ant9000", "asquini", "claudyus", "jardon-u", "s-bernard", "kamaradclimber", "Lyloa"]) + def testHasInFollowing(self): + nvie = self.g.get_user("nvie") + self.assertTrue(self.user.has_in_following(nvie)) + def testGetOrgs(self): self.assertListKeyEqual(self.user.get_orgs(), lambda o: o.login, ["BeaverSoftware"]) diff --git a/github/tests/ReplayData/NamedUser.testHasInFollowing.txt b/github/tests/ReplayData/NamedUser.testHasInFollowing.txt new file mode 100644 index 00000000..08c61a84 --- /dev/null +++ b/github/tests/ReplayData/NamedUser.testHasInFollowing.txt @@ -0,0 +1,22 @@ +https +GET +api.github.com +None +/users/nvie +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4996'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '1218'), ('server', 'GitHub.com'), ('last-modified', 'Wed, 21 Aug 2013 16:26:40 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"8e2b307f8fb4186bfb512febd7215fc8"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Wed, 21 Aug 2013 17:20:44 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1377108637')] +{"login":"nvie","id":83844,"avatar_url":"https://2.gravatar.com/avatar/466ef7561a0b100dc5a1021959962d28?d=https%3A%2F%2Fidenticons.github.com%2Fe6d0513ce49cc06cb956251623cb8fd9.png","gravatar_id":"466ef7561a0b100dc5a1021959962d28","url":"https://api.github.com/users/nvie","html_url":"https://github.com/nvie","followers_url":"https://api.github.com/users/nvie/followers","following_url":"https://api.github.com/users/nvie/following{/other_user}","gists_url":"https://api.github.com/users/nvie/gists{/gist_id}","starred_url":"https://api.github.com/users/nvie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nvie/subscriptions","organizations_url":"https://api.github.com/users/nvie/orgs","repos_url":"https://api.github.com/users/nvie/repos","events_url":"https://api.github.com/users/nvie/events{/privacy}","received_events_url":"https://api.github.com/users/nvie/received_events","type":"User","name":"Vincent Driessen","company":"3rd Cloud","blog":"http://nvie.com","location":"Netherlands","email":"vincent@3rdcloud.com","hireable":true,"bio":null,"public_repos":86,"followers":530,"following":45,"created_at":"2009-05-12T21:19:38Z","updated_at":"2013-08-21T16:26:40Z","public_gists":38} + +https +GET +api.github.com +None +/users/jacquev6/following/nvie +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +204 +[('status', '204 No Content'), ('x-ratelimit-remaining', '4995'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('x-ratelimit-limit', '5000'), ('access-control-allow-credentials', 'true'), ('date', 'Wed, 21 Aug 2013 17:20:48 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1377108637')] + + From 1c993d3a5f54cd5c30c6e3407dfc216bdcf7c7cb Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Wed, 21 Aug 2013 21:54:00 +0200 Subject: [PATCH 067/103] Github.get_repos (to get all public repositories) --- README.rst | 5 +---- github/MainClass.py | 17 +++++++++++++++++ github/tests/Github_.py | 6 ++++++ github/tests/ReplayData/Github.testGetRepos.txt | 11 +++++++++++ .../ReplayData/Github.testGetReposSince.txt | 11 +++++++++++ 5 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 github/tests/ReplayData/Github.testGetRepos.txt create mode 100644 github/tests/ReplayData/Github.testGetReposSince.txt diff --git a/README.rst b/README.rst index fde0bf28..f96d4849 100644 --- a/README.rst +++ b/README.rst @@ -12,6 +12,7 @@ What's new? `Version 1.19.0 `_ (?? ??th, 2013) +* Implement ``Github.get_repos`` to get all public repositories * Implement ``NamedUser.has_in_following`` * Use the new URL to fork gists (minor change) * Use the new URL to test hooks (minor change) @@ -56,10 +57,6 @@ Github API v3 URLs not (yet) covered by PyGithub * ``/repos/:owner/:repo/subscription`` (DELETE) * ``/repos/:owner/:repo/subscription`` (GET) * ``/repos/:owner/:repo/subscription`` (PUT) -* ``/repositories`` (GET) - - * should be called in method ``Github.get_repos`` - * ``/search/code`` (GET) * ``/search/issues`` (GET) * ``/search/repositories`` (GET) diff --git a/github/MainClass.py b/github/MainClass.py index 787ce791..82d07b93 100644 --- a/github/MainClass.py +++ b/github/MainClass.py @@ -195,6 +195,23 @@ class Github(object): ) return Repository.Repository(self.__requester, data, completed=True) + def get_repos(self, since=github.GithubObject.NotSet): + """ + :calls: `GET /repositories `_ + :param since: integer + :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Repository.Repository` + """ + assert since is github.GithubObject.NotSet or isinstance(since, (int, long)), since + url_parameters = dict() + if since is not github.GithubObject.NotSet: + url_parameters["since"] = since + return github.PaginatedList.PaginatedList( + github.Repository.Repository, + self.__requester, + "/repositories", + url_parameters + ) + def get_gist(self, id): """ :calls: `GET /gists/:id `_ diff --git a/github/tests/Github_.py b/github/tests/Github_.py index 4b6cfbc5..dec6a805 100644 --- a/github/tests/Github_.py +++ b/github/tests/Github_.py @@ -128,3 +128,9 @@ class Github(Framework.TestCase): def testGetUsersSince(self): self.assertListKeyBegin(self.g.get_users(since=1000), lambda u: u.login, ["sbecker"]) + + def testGetRepos(self): + self.assertListKeyBegin(self.g.get_repos(), lambda r: r.name, ["grit", "merb-core", "rubinius", "god", "jsawesome", "jspec", "exception_logger", "ambition"]) + + def testGetReposSince(self): + self.assertListKeyBegin(self.g.get_repos(since=1000), lambda r: r.name, ["jquery-humanize-messages-plugin", "4slicer", "fixture-scenarios", "mongrel_proctitle", "rails-plugins"]) diff --git a/github/tests/ReplayData/Github.testGetRepos.txt b/github/tests/ReplayData/Github.testGetRepos.txt new file mode 100644 index 00000000..7d335ffc --- /dev/null +++ b/github/tests/ReplayData/Github.testGetRepos.txt @@ -0,0 +1,11 @@ +https +GET +api.github.com +None +/repositories +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4999'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('cache-control', 'max-age=0, private, must-revalidate'), ('vary', 'Accept-Encoding'), ('content-length', '404193'), ('server', 'GitHub.com'), ('x-ratelimit-limit', '5000'), ('link', '; rel="next", ; rel="first"'), ('etag', '"ce99e4ff5256ec5157ddea4a067b40b5"'), ('access-control-allow-credentials', 'true'), ('date', 'Wed, 21 Aug 2013 19:37:39 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1377117459')] +[{"id":1,"name":"grit","full_name":"mojombo/grit","owner":{"login":"mojombo","id":1,"avatar_url":"https://1.gravatar.com/avatar/25c7c18223fb42a4c6ae1c8db6f50f9b?d=https%3A%2F%2Fidenticons.github.com%2Fc4ca4238a0b923820dcc509a6f75849b.png","gravatar_id":"25c7c18223fb42a4c6ae1c8db6f50f9b","url":"https://api.github.com/users/mojombo","html_url":"https://github.com/mojombo","followers_url":"https://api.github.com/users/mojombo/followers","following_url":"https://api.github.com/users/mojombo/following{/other_user}","gists_url":"https://api.github.com/users/mojombo/gists{/gist_id}","starred_url":"https://api.github.com/users/mojombo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mojombo/subscriptions","organizations_url":"https://api.github.com/users/mojombo/orgs","repos_url":"https://api.github.com/users/mojombo/repos","events_url":"https://api.github.com/users/mojombo/events{/privacy}","received_events_url":"https://api.github.com/users/mojombo/received_events","type":"User"},"private":false,"html_url":"https://github.com/mojombo/grit","description":"Grit gives you object oriented read/write access to Git repositories via Ruby.","fork":false,"url":"https://api.github.com/repos/mojombo/grit","forks_url":"https://api.github.com/repos/mojombo/grit/forks","keys_url":"https://api.github.com/repos/mojombo/grit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mojombo/grit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mojombo/grit/teams","hooks_url":"https://api.github.com/repos/mojombo/grit/hooks","issue_events_url":"https://api.github.com/repos/mojombo/grit/issues/events{/number}","events_url":"https://api.github.com/repos/mojombo/grit/events","assignees_url":"https://api.github.com/repos/mojombo/grit/assignees{/user}","branches_url":"https://api.github.com/repos/mojombo/grit/branches{/branch}","tags_url":"https://api.github.com/repos/mojombo/grit/tags","blobs_url":"https://api.github.com/repos/mojombo/grit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mojombo/grit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mojombo/grit/git/refs{/sha}","trees_url":"https://api.github.com/repos/mojombo/grit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mojombo/grit/statuses/{sha}","languages_url":"https://api.github.com/repos/mojombo/grit/languages","stargazers_url":"https://api.github.com/repos/mojombo/grit/stargazers","contributors_url":"https://api.github.com/repos/mojombo/grit/contributors","subscribers_url":"https://api.github.com/repos/mojombo/grit/subscribers","subscription_url":"https://api.github.com/repos/mojombo/grit/subscription","commits_url":"https://api.github.com/repos/mojombo/grit/commits{/sha}","git_commits_url":"https://api.github.com/repos/mojombo/grit/git/commits{/sha}","comments_url":"https://api.github.com/repos/mojombo/grit/comments{/number}","issue_comment_url":"https://api.github.com/repos/mojombo/grit/issues/comments/{number}","contents_url":"https://api.github.com/repos/mojombo/grit/contents/{+path}","compare_url":"https://api.github.com/repos/mojombo/grit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mojombo/grit/merges","archive_url":"https://api.github.com/repos/mojombo/grit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mojombo/grit/downloads","issues_url":"https://api.github.com/repos/mojombo/grit/issues{/number}","pulls_url":"https://api.github.com/repos/mojombo/grit/pulls{/number}","milestones_url":"https://api.github.com/repos/mojombo/grit/milestones{/number}","notifications_url":"https://api.github.com/repos/mojombo/grit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mojombo/grit/labels{/name}"},{"id":26,"name":"merb-core","full_name":"wycats/merb-core","owner":{"login":"wycats","id":4,"avatar_url":"https://2.gravatar.com/avatar/428167a3ec72235ba971162924492609?d=https%3A%2F%2Fidenticons.github.com%2Fa87ff679a2f3e71d9181a67b7542122c.png","gravatar_id":"428167a3ec72235ba971162924492609","url":"https://api.github.com/users/wycats","html_url":"https://github.com/wycats","followers_url":"https://api.github.com/users/wycats/followers","following_url":"https://api.github.com/users/wycats/following{/other_user}","gists_url":"https://api.github.com/users/wycats/gists{/gist_id}","starred_url":"https://api.github.com/users/wycats/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wycats/subscriptions","organizations_url":"https://api.github.com/users/wycats/orgs","repos_url":"https://api.github.com/users/wycats/repos","events_url":"https://api.github.com/users/wycats/events{/privacy}","received_events_url":"https://api.github.com/users/wycats/received_events","type":"User"},"private":false,"html_url":"https://github.com/wycats/merb-core","description":"Merb Core: All you need. None you don't.","fork":false,"url":"https://api.github.com/repos/wycats/merb-core","forks_url":"https://api.github.com/repos/wycats/merb-core/forks","keys_url":"https://api.github.com/repos/wycats/merb-core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wycats/merb-core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wycats/merb-core/teams","hooks_url":"https://api.github.com/repos/wycats/merb-core/hooks","issue_events_url":"https://api.github.com/repos/wycats/merb-core/issues/events{/number}","events_url":"https://api.github.com/repos/wycats/merb-core/events","assignees_url":"https://api.github.com/repos/wycats/merb-core/assignees{/user}","branches_url":"https://api.github.com/repos/wycats/merb-core/branches{/branch}","tags_url":"https://api.github.com/repos/wycats/merb-core/tags","blobs_url":"https://api.github.com/repos/wycats/merb-core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wycats/merb-core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wycats/merb-core/git/refs{/sha}","trees_url":"https://api.github.com/repos/wycats/merb-core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wycats/merb-core/statuses/{sha}","languages_url":"https://api.github.com/repos/wycats/merb-core/languages","stargazers_url":"https://api.github.com/repos/wycats/merb-core/stargazers","contributors_url":"https://api.github.com/repos/wycats/merb-core/contributors","subscribers_url":"https://api.github.com/repos/wycats/merb-core/subscribers","subscription_url":"https://api.github.com/repos/wycats/merb-core/subscription","commits_url":"https://api.github.com/repos/wycats/merb-core/commits{/sha}","git_commits_url":"https://api.github.com/repos/wycats/merb-core/git/commits{/sha}","comments_url":"https://api.github.com/repos/wycats/merb-core/comments{/number}","issue_comment_url":"https://api.github.com/repos/wycats/merb-core/issues/comments/{number}","contents_url":"https://api.github.com/repos/wycats/merb-core/contents/{+path}","compare_url":"https://api.github.com/repos/wycats/merb-core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wycats/merb-core/merges","archive_url":"https://api.github.com/repos/wycats/merb-core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wycats/merb-core/downloads","issues_url":"https://api.github.com/repos/wycats/merb-core/issues{/number}","pulls_url":"https://api.github.com/repos/wycats/merb-core/pulls{/number}","milestones_url":"https://api.github.com/repos/wycats/merb-core/milestones{/number}","notifications_url":"https://api.github.com/repos/wycats/merb-core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wycats/merb-core/labels{/name}"},{"id":27,"name":"rubinius","full_name":"rubinius/rubinius","owner":{"login":"rubinius","id":317747,"avatar_url":"https://0.gravatar.com/avatar/8a664b7c5ca834af3e7e49d3a6160082?d=https%3A%2F%2Fidenticons.github.com%2F8a2a02b12e404a00b49c0154892fd9c0.png","gravatar_id":"8a664b7c5ca834af3e7e49d3a6160082","url":"https://api.github.com/users/rubinius","html_url":"https://github.com/rubinius","followers_url":"https://api.github.com/users/rubinius/followers","following_url":"https://api.github.com/users/rubinius/following{/other_user}","gists_url":"https://api.github.com/users/rubinius/gists{/gist_id}","starred_url":"https://api.github.com/users/rubinius/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rubinius/subscriptions","organizations_url":"https://api.github.com/users/rubinius/orgs","repos_url":"https://api.github.com/users/rubinius/repos","events_url":"https://api.github.com/users/rubinius/events{/privacy}","received_events_url":"https://api.github.com/users/rubinius/received_events","type":"Organization"},"private":false,"html_url":"https://github.com/rubinius/rubinius","description":"Rubinius, the Ruby Environment","fork":false,"url":"https://api.github.com/repos/rubinius/rubinius","forks_url":"https://api.github.com/repos/rubinius/rubinius/forks","keys_url":"https://api.github.com/repos/rubinius/rubinius/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rubinius/rubinius/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rubinius/rubinius/teams","hooks_url":"https://api.github.com/repos/rubinius/rubinius/hooks","issue_events_url":"https://api.github.com/repos/rubinius/rubinius/issues/events{/number}","events_url":"https://api.github.com/repos/rubinius/rubinius/events","assignees_url":"https://api.github.com/repos/rubinius/rubinius/assignees{/user}","branches_url":"https://api.github.com/repos/rubinius/rubinius/branches{/branch}","tags_url":"https://api.github.com/repos/rubinius/rubinius/tags","blobs_url":"https://api.github.com/repos/rubinius/rubinius/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rubinius/rubinius/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rubinius/rubinius/git/refs{/sha}","trees_url":"https://api.github.com/repos/rubinius/rubinius/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rubinius/rubinius/statuses/{sha}","languages_url":"https://api.github.com/repos/rubinius/rubinius/languages","stargazers_url":"https://api.github.com/repos/rubinius/rubinius/stargazers","contributors_url":"https://api.github.com/repos/rubinius/rubinius/contributors","subscribers_url":"https://api.github.com/repos/rubinius/rubinius/subscribers","subscription_url":"https://api.github.com/repos/rubinius/rubinius/subscription","commits_url":"https://api.github.com/repos/rubinius/rubinius/commits{/sha}","git_commits_url":"https://api.github.com/repos/rubinius/rubinius/git/commits{/sha}","comments_url":"https://api.github.com/repos/rubinius/rubinius/comments{/number}","issue_comment_url":"https://api.github.com/repos/rubinius/rubinius/issues/comments/{number}","contents_url":"https://api.github.com/repos/rubinius/rubinius/contents/{+path}","compare_url":"https://api.github.com/repos/rubinius/rubinius/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rubinius/rubinius/merges","archive_url":"https://api.github.com/repos/rubinius/rubinius/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rubinius/rubinius/downloads","issues_url":"https://api.github.com/repos/rubinius/rubinius/issues{/number}","pulls_url":"https://api.github.com/repos/rubinius/rubinius/pulls{/number}","milestones_url":"https://api.github.com/repos/rubinius/rubinius/milestones{/number}","notifications_url":"https://api.github.com/repos/rubinius/rubinius/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rubinius/rubinius/labels{/name}"},{"id":28,"name":"god","full_name":"mojombo/god","owner":{"login":"mojombo","id":1,"avatar_url":"https://1.gravatar.com/avatar/25c7c18223fb42a4c6ae1c8db6f50f9b?d=https%3A%2F%2Fidenticons.github.com%2Fc4ca4238a0b923820dcc509a6f75849b.png","gravatar_id":"25c7c18223fb42a4c6ae1c8db6f50f9b","url":"https://api.github.com/users/mojombo","html_url":"https://github.com/mojombo","followers_url":"https://api.github.com/users/mojombo/followers","following_url":"https://api.github.com/users/mojombo/following{/other_user}","gists_url":"https://api.github.com/users/mojombo/gists{/gist_id}","starred_url":"https://api.github.com/users/mojombo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mojombo/subscriptions","organizations_url":"https://api.github.com/users/mojombo/orgs","repos_url":"https://api.github.com/users/mojombo/repos","events_url":"https://api.github.com/users/mojombo/events{/privacy}","received_events_url":"https://api.github.com/users/mojombo/received_events","type":"User"},"private":false,"html_url":"https://github.com/mojombo/god","description":"Ruby process monitor","fork":false,"url":"https://api.github.com/repos/mojombo/god","forks_url":"https://api.github.com/repos/mojombo/god/forks","keys_url":"https://api.github.com/repos/mojombo/god/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mojombo/god/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mojombo/god/teams","hooks_url":"https://api.github.com/repos/mojombo/god/hooks","issue_events_url":"https://api.github.com/repos/mojombo/god/issues/events{/number}","events_url":"https://api.github.com/repos/mojombo/god/events","assignees_url":"https://api.github.com/repos/mojombo/god/assignees{/user}","branches_url":"https://api.github.com/repos/mojombo/god/branches{/branch}","tags_url":"https://api.github.com/repos/mojombo/god/tags","blobs_url":"https://api.github.com/repos/mojombo/god/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mojombo/god/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mojombo/god/git/refs{/sha}","trees_url":"https://api.github.com/repos/mojombo/god/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mojombo/god/statuses/{sha}","languages_url":"https://api.github.com/repos/mojombo/god/languages","stargazers_url":"https://api.github.com/repos/mojombo/god/stargazers","contributors_url":"https://api.github.com/repos/mojombo/god/contributors","subscribers_url":"https://api.github.com/repos/mojombo/god/subscribers","subscription_url":"https://api.github.com/repos/mojombo/god/subscription","commits_url":"https://api.github.com/repos/mojombo/god/commits{/sha}","git_commits_url":"https://api.github.com/repos/mojombo/god/git/commits{/sha}","comments_url":"https://api.github.com/repos/mojombo/god/comments{/number}","issue_comment_url":"https://api.github.com/repos/mojombo/god/issues/comments/{number}","contents_url":"https://api.github.com/repos/mojombo/god/contents/{+path}","compare_url":"https://api.github.com/repos/mojombo/god/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mojombo/god/merges","archive_url":"https://api.github.com/repos/mojombo/god/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mojombo/god/downloads","issues_url":"https://api.github.com/repos/mojombo/god/issues{/number}","pulls_url":"https://api.github.com/repos/mojombo/god/pulls{/number}","milestones_url":"https://api.github.com/repos/mojombo/god/milestones{/number}","notifications_url":"https://api.github.com/repos/mojombo/god/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mojombo/god/labels{/name}"},{"id":29,"name":"jsawesome","full_name":"vanpelt/jsawesome","owner":{"login":"vanpelt","id":17,"avatar_url":"https://1.gravatar.com/avatar/1da36d4c1f34454de6c07855098675f6?d=https%3A%2F%2Fidenticons.github.com%2F70efdf2ec9b086079795c442636b55fb.png","gravatar_id":"1da36d4c1f34454de6c07855098675f6","url":"https://api.github.com/users/vanpelt","html_url":"https://github.com/vanpelt","followers_url":"https://api.github.com/users/vanpelt/followers","following_url":"https://api.github.com/users/vanpelt/following{/other_user}","gists_url":"https://api.github.com/users/vanpelt/gists{/gist_id}","starred_url":"https://api.github.com/users/vanpelt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vanpelt/subscriptions","organizations_url":"https://api.github.com/users/vanpelt/orgs","repos_url":"https://api.github.com/users/vanpelt/repos","events_url":"https://api.github.com/users/vanpelt/events{/privacy}","received_events_url":"https://api.github.com/users/vanpelt/received_events","type":"User"},"private":false,"html_url":"https://github.com/vanpelt/jsawesome","description":"Awesome JSON","fork":false,"url":"https://api.github.com/repos/vanpelt/jsawesome","forks_url":"https://api.github.com/repos/vanpelt/jsawesome/forks","keys_url":"https://api.github.com/repos/vanpelt/jsawesome/keys{/key_id}","collaborators_url":"https://api.github.com/repos/vanpelt/jsawesome/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/vanpelt/jsawesome/teams","hooks_url":"https://api.github.com/repos/vanpelt/jsawesome/hooks","issue_events_url":"https://api.github.com/repos/vanpelt/jsawesome/issues/events{/number}","events_url":"https://api.github.com/repos/vanpelt/jsawesome/events","assignees_url":"https://api.github.com/repos/vanpelt/jsawesome/assignees{/user}","branches_url":"https://api.github.com/repos/vanpelt/jsawesome/branches{/branch}","tags_url":"https://api.github.com/repos/vanpelt/jsawesome/tags","blobs_url":"https://api.github.com/repos/vanpelt/jsawesome/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/vanpelt/jsawesome/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/vanpelt/jsawesome/git/refs{/sha}","trees_url":"https://api.github.com/repos/vanpelt/jsawesome/git/trees{/sha}","statuses_url":"https://api.github.com/repos/vanpelt/jsawesome/statuses/{sha}","languages_url":"https://api.github.com/repos/vanpelt/jsawesome/languages","stargazers_url":"https://api.github.com/repos/vanpelt/jsawesome/stargazers","contributors_url":"https://api.github.com/repos/vanpelt/jsawesome/contributors","subscribers_url":"https://api.github.com/repos/vanpelt/jsawesome/subscribers","subscription_url":"https://api.github.com/repos/vanpelt/jsawesome/subscription","commits_url":"https://api.github.com/repos/vanpelt/jsawesome/commits{/sha}","git_commits_url":"https://api.github.com/repos/vanpelt/jsawesome/git/commits{/sha}","comments_url":"https://api.github.com/repos/vanpelt/jsawesome/comments{/number}","issue_comment_url":"https://api.github.com/repos/vanpelt/jsawesome/issues/comments/{number}","contents_url":"https://api.github.com/repos/vanpelt/jsawesome/contents/{+path}","compare_url":"https://api.github.com/repos/vanpelt/jsawesome/compare/{base}...{head}","merges_url":"https://api.github.com/repos/vanpelt/jsawesome/merges","archive_url":"https://api.github.com/repos/vanpelt/jsawesome/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/vanpelt/jsawesome/downloads","issues_url":"https://api.github.com/repos/vanpelt/jsawesome/issues{/number}","pulls_url":"https://api.github.com/repos/vanpelt/jsawesome/pulls{/number}","milestones_url":"https://api.github.com/repos/vanpelt/jsawesome/milestones{/number}","notifications_url":"https://api.github.com/repos/vanpelt/jsawesome/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/vanpelt/jsawesome/labels{/name}"},{"id":31,"name":"jspec","full_name":"wycats/jspec","owner":{"login":"wycats","id":4,"avatar_url":"https://2.gravatar.com/avatar/428167a3ec72235ba971162924492609?d=https%3A%2F%2Fidenticons.github.com%2Fa87ff679a2f3e71d9181a67b7542122c.png","gravatar_id":"428167a3ec72235ba971162924492609","url":"https://api.github.com/users/wycats","html_url":"https://github.com/wycats","followers_url":"https://api.github.com/users/wycats/followers","following_url":"https://api.github.com/users/wycats/following{/other_user}","gists_url":"https://api.github.com/users/wycats/gists{/gist_id}","starred_url":"https://api.github.com/users/wycats/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wycats/subscriptions","organizations_url":"https://api.github.com/users/wycats/orgs","repos_url":"https://api.github.com/users/wycats/repos","events_url":"https://api.github.com/users/wycats/events{/privacy}","received_events_url":"https://api.github.com/users/wycats/received_events","type":"User"},"private":false,"html_url":"https://github.com/wycats/jspec","description":"A JavaScript BDD Testing Library","fork":false,"url":"https://api.github.com/repos/wycats/jspec","forks_url":"https://api.github.com/repos/wycats/jspec/forks","keys_url":"https://api.github.com/repos/wycats/jspec/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wycats/jspec/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wycats/jspec/teams","hooks_url":"https://api.github.com/repos/wycats/jspec/hooks","issue_events_url":"https://api.github.com/repos/wycats/jspec/issues/events{/number}","events_url":"https://api.github.com/repos/wycats/jspec/events","assignees_url":"https://api.github.com/repos/wycats/jspec/assignees{/user}","branches_url":"https://api.github.com/repos/wycats/jspec/branches{/branch}","tags_url":"https://api.github.com/repos/wycats/jspec/tags","blobs_url":"https://api.github.com/repos/wycats/jspec/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wycats/jspec/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wycats/jspec/git/refs{/sha}","trees_url":"https://api.github.com/repos/wycats/jspec/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wycats/jspec/statuses/{sha}","languages_url":"https://api.github.com/repos/wycats/jspec/languages","stargazers_url":"https://api.github.com/repos/wycats/jspec/stargazers","contributors_url":"https://api.github.com/repos/wycats/jspec/contributors","subscribers_url":"https://api.github.com/repos/wycats/jspec/subscribers","subscription_url":"https://api.github.com/repos/wycats/jspec/subscription","commits_url":"https://api.github.com/repos/wycats/jspec/commits{/sha}","git_commits_url":"https://api.github.com/repos/wycats/jspec/git/commits{/sha}","comments_url":"https://api.github.com/repos/wycats/jspec/comments{/number}","issue_comment_url":"https://api.github.com/repos/wycats/jspec/issues/comments/{number}","contents_url":"https://api.github.com/repos/wycats/jspec/contents/{+path}","compare_url":"https://api.github.com/repos/wycats/jspec/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wycats/jspec/merges","archive_url":"https://api.github.com/repos/wycats/jspec/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wycats/jspec/downloads","issues_url":"https://api.github.com/repos/wycats/jspec/issues{/number}","pulls_url":"https://api.github.com/repos/wycats/jspec/pulls{/number}","milestones_url":"https://api.github.com/repos/wycats/jspec/milestones{/number}","notifications_url":"https://api.github.com/repos/wycats/jspec/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wycats/jspec/labels{/name}"},{"id":35,"name":"exception_logger","full_name":"defunkt/exception_logger","owner":{"login":"defunkt","id":2,"avatar_url":"https://2.gravatar.com/avatar/b8dbb1987e8e5318584865f880036796?d=https%3A%2F%2Fidenticons.github.com%2Fc81e728d9d4c2f636f067f89cc14862c.png","gravatar_id":"b8dbb1987e8e5318584865f880036796","url":"https://api.github.com/users/defunkt","html_url":"https://github.com/defunkt","followers_url":"https://api.github.com/users/defunkt/followers","following_url":"https://api.github.com/users/defunkt/following{/other_user}","gists_url":"https://api.github.com/users/defunkt/gists{/gist_id}","starred_url":"https://api.github.com/users/defunkt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/defunkt/subscriptions","organizations_url":"https://api.github.com/users/defunkt/orgs","repos_url":"https://api.github.com/users/defunkt/repos","events_url":"https://api.github.com/users/defunkt/events{/privacy}","received_events_url":"https://api.github.com/users/defunkt/received_events","type":"User"},"private":false,"html_url":"https://github.com/defunkt/exception_logger","description":"Unmaintained. Sorry.","fork":false,"url":"https://api.github.com/repos/defunkt/exception_logger","forks_url":"https://api.github.com/repos/defunkt/exception_logger/forks","keys_url":"https://api.github.com/repos/defunkt/exception_logger/keys{/key_id}","collaborators_url":"https://api.github.com/repos/defunkt/exception_logger/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/defunkt/exception_logger/teams","hooks_url":"https://api.github.com/repos/defunkt/exception_logger/hooks","issue_events_url":"https://api.github.com/repos/defunkt/exception_logger/issues/events{/number}","events_url":"https://api.github.com/repos/defunkt/exception_logger/events","assignees_url":"https://api.github.com/repos/defunkt/exception_logger/assignees{/user}","branches_url":"https://api.github.com/repos/defunkt/exception_logger/branches{/branch}","tags_url":"https://api.github.com/repos/defunkt/exception_logger/tags","blobs_url":"https://api.github.com/repos/defunkt/exception_logger/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/defunkt/exception_logger/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/defunkt/exception_logger/git/refs{/sha}","trees_url":"https://api.github.com/repos/defunkt/exception_logger/git/trees{/sha}","statuses_url":"https://api.github.com/repos/defunkt/exception_logger/statuses/{sha}","languages_url":"https://api.github.com/repos/defunkt/exception_logger/languages","stargazers_url":"https://api.github.com/repos/defunkt/exception_logger/stargazers","contributors_url":"https://api.github.com/repos/defunkt/exception_logger/contributors","subscribers_url":"https://api.github.com/repos/defunkt/exception_logger/subscribers","subscription_url":"https://api.github.com/repos/defunkt/exception_logger/subscription","commits_url":"https://api.github.com/repos/defunkt/exception_logger/commits{/sha}","git_commits_url":"https://api.github.com/repos/defunkt/exception_logger/git/commits{/sha}","comments_url":"https://api.github.com/repos/defunkt/exception_logger/comments{/number}","issue_comment_url":"https://api.github.com/repos/defunkt/exception_logger/issues/comments/{number}","contents_url":"https://api.github.com/repos/defunkt/exception_logger/contents/{+path}","compare_url":"https://api.github.com/repos/defunkt/exception_logger/compare/{base}...{head}","merges_url":"https://api.github.com/repos/defunkt/exception_logger/merges","archive_url":"https://api.github.com/repos/defunkt/exception_logger/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/defunkt/exception_logger/downloads","issues_url":"https://api.github.com/repos/defunkt/exception_logger/issues{/number}","pulls_url":"https://api.github.com/repos/defunkt/exception_logger/pulls{/number}","milestones_url":"https://api.github.com/repos/defunkt/exception_logger/milestones{/number}","notifications_url":"https://api.github.com/repos/defunkt/exception_logger/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/defunkt/exception_logger/labels{/name}"},{"id":36,"name":"ambition","full_name":"defunkt/ambition","owner":{"login":"defunkt","id":2,"avatar_url":"https://2.gravatar.com/avatar/b8dbb1987e8e5318584865f880036796?d=https%3A%2F%2Fidenticons.github.com%2Fc81e728d9d4c2f636f067f89cc14862c.png","gravatar_id":"b8dbb1987e8e5318584865f880036796","url":"https://api.github.com/users/defunkt","html_url":"https://github.com/defunkt","followers_url":"https://api.github.com/users/defunkt/followers","following_url":"https://api.github.com/users/defunkt/following{/other_user}","gists_url":"https://api.github.com/users/defunkt/gists{/gist_id}","starred_url":"https://api.github.com/users/defunkt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/defunkt/subscriptions","organizations_url":"https://api.github.com/users/defunkt/orgs","repos_url":"https://api.github.com/users/defunkt/repos","events_url":"https://api.github.com/users/defunkt/events{/privacy}","received_events_url":"https://api.github.com/users/defunkt/received_events","type":"User"},"private":false,"html_url":"https://github.com/defunkt/ambition","description":"include Enumerable — Unmaintained","fork":false,"url":"https://api.github.com/repos/defunkt/ambition","forks_url":"https://api.github.com/repos/defunkt/ambition/forks","keys_url":"https://api.github.com/repos/defunkt/ambition/keys{/key_id}","collaborators_url":"https://api.github.com/repos/defunkt/ambition/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/defunkt/ambition/teams","hooks_url":"https://api.github.com/repos/defunkt/ambition/hooks","issue_events_url":"https://api.github.com/repos/defunkt/ambition/issues/events{/number}","events_url":"https://api.github.com/repos/defunkt/ambition/events","assignees_url":"https://api.github.com/repos/defunkt/ambition/assignees{/user}","branches_url":"https://api.github.com/repos/defunkt/ambition/branches{/branch}","tags_url":"https://api.github.com/repos/defunkt/ambition/tags","blobs_url":"https://api.github.com/repos/defunkt/ambition/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/defunkt/ambition/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/defunkt/ambition/git/refs{/sha}","trees_url":"https://api.github.com/repos/defunkt/ambition/git/trees{/sha}","statuses_url":"https://api.github.com/repos/defunkt/ambition/statuses/{sha}","languages_url":"https://api.github.com/repos/defunkt/ambition/languages","stargazers_url":"https://api.github.com/repos/defunkt/ambition/stargazers","contributors_url":"https://api.github.com/repos/defunkt/ambition/contributors","subscribers_url":"https://api.github.com/repos/defunkt/ambition/subscribers","subscription_url":"https://api.github.com/repos/defunkt/ambition/subscription","commits_url":"https://api.github.com/repos/defunkt/ambition/commits{/sha}","git_commits_url":"https://api.github.com/repos/defunkt/ambition/git/commits{/sha}","comments_url":"https://api.github.com/repos/defunkt/ambition/comments{/number}","issue_comment_url":"https://api.github.com/repos/defunkt/ambition/issues/comments/{number}","contents_url":"https://api.github.com/repos/defunkt/ambition/contents/{+path}","compare_url":"https://api.github.com/repos/defunkt/ambition/compare/{base}...{head}","merges_url":"https://api.github.com/repos/defunkt/ambition/merges","archive_url":"https://api.github.com/repos/defunkt/ambition/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/defunkt/ambition/downloads","issues_url":"https://api.github.com/repos/defunkt/ambition/issues{/number}","pulls_url":"https://api.github.com/repos/defunkt/ambition/pulls{/number}","milestones_url":"https://api.github.com/repos/defunkt/ambition/milestones{/number}","notifications_url":"https://api.github.com/repos/defunkt/ambition/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/defunkt/ambition/labels{/name}"},{"id":42,"name":"restful-authentication","full_name":"technoweenie/restful-authentication","owner":{"login":"technoweenie","id":21,"avatar_url":"https://1.gravatar.com/avatar/821395fe70906c8290df7f18ac4ac6cf?d=https%3A%2F%2Fidenticons.github.com%2F3c59dc048e8850243be8079a5c74d079.png","gravatar_id":"821395fe70906c8290df7f18ac4ac6cf","url":"https://api.github.com/users/technoweenie","html_url":"https://github.com/technoweenie","followers_url":"https://api.github.com/users/technoweenie/followers","following_url":"https://api.github.com/users/technoweenie/following{/other_user}","gists_url":"https://api.github.com/users/technoweenie/gists{/gist_id}","starred_url":"https://api.github.com/users/technoweenie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/technoweenie/subscriptions","organizations_url":"https://api.github.com/users/technoweenie/orgs","repos_url":"https://api.github.com/users/technoweenie/repos","events_url":"https://api.github.com/users/technoweenie/events{/privacy}","received_events_url":"https://api.github.com/users/technoweenie/received_events","type":"User"},"private":false,"html_url":"https://github.com/technoweenie/restful-authentication","description":"Generates common user authentication code for Rails/Merb, with a full test/unit and rspec suite and optional Acts as State Machine support built-in.","fork":false,"url":"https://api.github.com/repos/technoweenie/restful-authentication","forks_url":"https://api.github.com/repos/technoweenie/restful-authentication/forks","keys_url":"https://api.github.com/repos/technoweenie/restful-authentication/keys{/key_id}","collaborators_url":"https://api.github.com/repos/technoweenie/restful-authentication/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/technoweenie/restful-authentication/teams","hooks_url":"https://api.github.com/repos/technoweenie/restful-authentication/hooks","issue_events_url":"https://api.github.com/repos/technoweenie/restful-authentication/issues/events{/number}","events_url":"https://api.github.com/repos/technoweenie/restful-authentication/events","assignees_url":"https://api.github.com/repos/technoweenie/restful-authentication/assignees{/user}","branches_url":"https://api.github.com/repos/technoweenie/restful-authentication/branches{/branch}","tags_url":"https://api.github.com/repos/technoweenie/restful-authentication/tags","blobs_url":"https://api.github.com/repos/technoweenie/restful-authentication/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/technoweenie/restful-authentication/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/technoweenie/restful-authentication/git/refs{/sha}","trees_url":"https://api.github.com/repos/technoweenie/restful-authentication/git/trees{/sha}","statuses_url":"https://api.github.com/repos/technoweenie/restful-authentication/statuses/{sha}","languages_url":"https://api.github.com/repos/technoweenie/restful-authentication/languages","stargazers_url":"https://api.github.com/repos/technoweenie/restful-authentication/stargazers","contributors_url":"https://api.github.com/repos/technoweenie/restful-authentication/contributors","subscribers_url":"https://api.github.com/repos/technoweenie/restful-authentication/subscribers","subscription_url":"https://api.github.com/repos/technoweenie/restful-authentication/subscription","commits_url":"https://api.github.com/repos/technoweenie/restful-authentication/commits{/sha}","git_commits_url":"https://api.github.com/repos/technoweenie/restful-authentication/git/commits{/sha}","comments_url":"https://api.github.com/repos/technoweenie/restful-authentication/comments{/number}","issue_comment_url":"https://api.github.com/repos/technoweenie/restful-authentication/issues/comments/{number}","contents_url":"https://api.github.com/repos/technoweenie/restful-authentication/contents/{+path}","compare_url":"https://api.github.com/repos/technoweenie/restful-authentication/compare/{base}...{head}","merges_url":"https://api.github.com/repos/technoweenie/restful-authentication/merges","archive_url":"https://api.github.com/repos/technoweenie/restful-authentication/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/technoweenie/restful-authentication/downloads","issues_url":"https://api.github.com/repos/technoweenie/restful-authentication/issues{/number}","pulls_url":"https://api.github.com/repos/technoweenie/restful-authentication/pulls{/number}","milestones_url":"https://api.github.com/repos/technoweenie/restful-authentication/milestones{/number}","notifications_url":"https://api.github.com/repos/technoweenie/restful-authentication/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/technoweenie/restful-authentication/labels{/name}"},{"id":43,"name":"attachment_fu","full_name":"technoweenie/attachment_fu","owner":{"login":"technoweenie","id":21,"avatar_url":"https://1.gravatar.com/avatar/821395fe70906c8290df7f18ac4ac6cf?d=https%3A%2F%2Fidenticons.github.com%2F3c59dc048e8850243be8079a5c74d079.png","gravatar_id":"821395fe70906c8290df7f18ac4ac6cf","url":"https://api.github.com/users/technoweenie","html_url":"https://github.com/technoweenie","followers_url":"https://api.github.com/users/technoweenie/followers","following_url":"https://api.github.com/users/technoweenie/following{/other_user}","gists_url":"https://api.github.com/users/technoweenie/gists{/gist_id}","starred_url":"https://api.github.com/users/technoweenie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/technoweenie/subscriptions","organizations_url":"https://api.github.com/users/technoweenie/orgs","repos_url":"https://api.github.com/users/technoweenie/repos","events_url":"https://api.github.com/users/technoweenie/events{/privacy}","received_events_url":"https://api.github.com/users/technoweenie/received_events","type":"User"},"private":false,"html_url":"https://github.com/technoweenie/attachment_fu","description":"Treat an ActiveRecord model as a file attachment, storing its patch, size, content type, etc.","fork":false,"url":"https://api.github.com/repos/technoweenie/attachment_fu","forks_url":"https://api.github.com/repos/technoweenie/attachment_fu/forks","keys_url":"https://api.github.com/repos/technoweenie/attachment_fu/keys{/key_id}","collaborators_url":"https://api.github.com/repos/technoweenie/attachment_fu/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/technoweenie/attachment_fu/teams","hooks_url":"https://api.github.com/repos/technoweenie/attachment_fu/hooks","issue_events_url":"https://api.github.com/repos/technoweenie/attachment_fu/issues/events{/number}","events_url":"https://api.github.com/repos/technoweenie/attachment_fu/events","assignees_url":"https://api.github.com/repos/technoweenie/attachment_fu/assignees{/user}","branches_url":"https://api.github.com/repos/technoweenie/attachment_fu/branches{/branch}","tags_url":"https://api.github.com/repos/technoweenie/attachment_fu/tags","blobs_url":"https://api.github.com/repos/technoweenie/attachment_fu/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/technoweenie/attachment_fu/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/technoweenie/attachment_fu/git/refs{/sha}","trees_url":"https://api.github.com/repos/technoweenie/attachment_fu/git/trees{/sha}","statuses_url":"https://api.github.com/repos/technoweenie/attachment_fu/statuses/{sha}","languages_url":"https://api.github.com/repos/technoweenie/attachment_fu/languages","stargazers_url":"https://api.github.com/repos/technoweenie/attachment_fu/stargazers","contributors_url":"https://api.github.com/repos/technoweenie/attachment_fu/contributors","subscribers_url":"https://api.github.com/repos/technoweenie/attachment_fu/subscribers","subscription_url":"https://api.github.com/repos/technoweenie/attachment_fu/subscription","commits_url":"https://api.github.com/repos/technoweenie/attachment_fu/commits{/sha}","git_commits_url":"https://api.github.com/repos/technoweenie/attachment_fu/git/commits{/sha}","comments_url":"https://api.github.com/repos/technoweenie/attachment_fu/comments{/number}","issue_comment_url":"https://api.github.com/repos/technoweenie/attachment_fu/issues/comments/{number}","contents_url":"https://api.github.com/repos/technoweenie/attachment_fu/contents/{+path}","compare_url":"https://api.github.com/repos/technoweenie/attachment_fu/compare/{base}...{head}","merges_url":"https://api.github.com/repos/technoweenie/attachment_fu/merges","archive_url":"https://api.github.com/repos/technoweenie/attachment_fu/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/technoweenie/attachment_fu/downloads","issues_url":"https://api.github.com/repos/technoweenie/attachment_fu/issues{/number}","pulls_url":"https://api.github.com/repos/technoweenie/attachment_fu/pulls{/number}","milestones_url":"https://api.github.com/repos/technoweenie/attachment_fu/milestones{/number}","notifications_url":"https://api.github.com/repos/technoweenie/attachment_fu/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/technoweenie/attachment_fu/labels{/name}"},{"id":47,"name":"bong","full_name":"topfunky/bong","owner":{"login":"topfunky","id":26,"avatar_url":"https://2.gravatar.com/avatar/a9d024f5032b8de04d7c74528beb77ab?d=https%3A%2F%2Fidenticons.github.com%2F4e732ced3463d06de0ca9a15b6153677.png","gravatar_id":"a9d024f5032b8de04d7c74528beb77ab","url":"https://api.github.com/users/topfunky","html_url":"https://github.com/topfunky","followers_url":"https://api.github.com/users/topfunky/followers","following_url":"https://api.github.com/users/topfunky/following{/other_user}","gists_url":"https://api.github.com/users/topfunky/gists{/gist_id}","starred_url":"https://api.github.com/users/topfunky/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/topfunky/subscriptions","organizations_url":"https://api.github.com/users/topfunky/orgs","repos_url":"https://api.github.com/users/topfunky/repos","events_url":"https://api.github.com/users/topfunky/events{/privacy}","received_events_url":"https://api.github.com/users/topfunky/received_events","type":"User"},"private":false,"html_url":"https://github.com/topfunky/bong","description":"A benchmarking helper for httperf.","fork":false,"url":"https://api.github.com/repos/topfunky/bong","forks_url":"https://api.github.com/repos/topfunky/bong/forks","keys_url":"https://api.github.com/repos/topfunky/bong/keys{/key_id}","collaborators_url":"https://api.github.com/repos/topfunky/bong/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/topfunky/bong/teams","hooks_url":"https://api.github.com/repos/topfunky/bong/hooks","issue_events_url":"https://api.github.com/repos/topfunky/bong/issues/events{/number}","events_url":"https://api.github.com/repos/topfunky/bong/events","assignees_url":"https://api.github.com/repos/topfunky/bong/assignees{/user}","branches_url":"https://api.github.com/repos/topfunky/bong/branches{/branch}","tags_url":"https://api.github.com/repos/topfunky/bong/tags","blobs_url":"https://api.github.com/repos/topfunky/bong/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/topfunky/bong/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/topfunky/bong/git/refs{/sha}","trees_url":"https://api.github.com/repos/topfunky/bong/git/trees{/sha}","statuses_url":"https://api.github.com/repos/topfunky/bong/statuses/{sha}","languages_url":"https://api.github.com/repos/topfunky/bong/languages","stargazers_url":"https://api.github.com/repos/topfunky/bong/stargazers","contributors_url":"https://api.github.com/repos/topfunky/bong/contributors","subscribers_url":"https://api.github.com/repos/topfunky/bong/subscribers","subscription_url":"https://api.github.com/repos/topfunky/bong/subscription","commits_url":"https://api.github.com/repos/topfunky/bong/commits{/sha}","git_commits_url":"https://api.github.com/repos/topfunky/bong/git/commits{/sha}","comments_url":"https://api.github.com/repos/topfunky/bong/comments{/number}","issue_comment_url":"https://api.github.com/repos/topfunky/bong/issues/comments/{number}","contents_url":"https://api.github.com/repos/topfunky/bong/contents/{+path}","compare_url":"https://api.github.com/repos/topfunky/bong/compare/{base}...{head}","merges_url":"https://api.github.com/repos/topfunky/bong/merges","archive_url":"https://api.github.com/repos/topfunky/bong/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/topfunky/bong/downloads","issues_url":"https://api.github.com/repos/topfunky/bong/issues{/number}","pulls_url":"https://api.github.com/repos/topfunky/bong/pulls{/number}","milestones_url":"https://api.github.com/repos/topfunky/bong/milestones{/number}","notifications_url":"https://api.github.com/repos/topfunky/bong/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/topfunky/bong/labels{/name}"},{"id":48,"name":"microsis","full_name":"Caged/microsis","owner":{"login":"Caged","id":25,"avatar_url":"https://2.gravatar.com/avatar/97c3a8eea9b7eaa9e1e93ea3cd47399f?d=https%3A%2F%2Fidenticons.github.com%2F8e296a067a37563370ded05f5a3bf3ec.png","gravatar_id":"97c3a8eea9b7eaa9e1e93ea3cd47399f","url":"https://api.github.com/users/Caged","html_url":"https://github.com/Caged","followers_url":"https://api.github.com/users/Caged/followers","following_url":"https://api.github.com/users/Caged/following{/other_user}","gists_url":"https://api.github.com/users/Caged/gists{/gist_id}","starred_url":"https://api.github.com/users/Caged/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Caged/subscriptions","organizations_url":"https://api.github.com/users/Caged/orgs","repos_url":"https://api.github.com/users/Caged/repos","events_url":"https://api.github.com/users/Caged/events{/privacy}","received_events_url":"https://api.github.com/users/Caged/received_events","type":"User"},"private":false,"html_url":"https://github.com/Caged/microsis","description":"SUPER OLD STUFF","fork":false,"url":"https://api.github.com/repos/Caged/microsis","forks_url":"https://api.github.com/repos/Caged/microsis/forks","keys_url":"https://api.github.com/repos/Caged/microsis/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Caged/microsis/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Caged/microsis/teams","hooks_url":"https://api.github.com/repos/Caged/microsis/hooks","issue_events_url":"https://api.github.com/repos/Caged/microsis/issues/events{/number}","events_url":"https://api.github.com/repos/Caged/microsis/events","assignees_url":"https://api.github.com/repos/Caged/microsis/assignees{/user}","branches_url":"https://api.github.com/repos/Caged/microsis/branches{/branch}","tags_url":"https://api.github.com/repos/Caged/microsis/tags","blobs_url":"https://api.github.com/repos/Caged/microsis/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Caged/microsis/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Caged/microsis/git/refs{/sha}","trees_url":"https://api.github.com/repos/Caged/microsis/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Caged/microsis/statuses/{sha}","languages_url":"https://api.github.com/repos/Caged/microsis/languages","stargazers_url":"https://api.github.com/repos/Caged/microsis/stargazers","contributors_url":"https://api.github.com/repos/Caged/microsis/contributors","subscribers_url":"https://api.github.com/repos/Caged/microsis/subscribers","subscription_url":"https://api.github.com/repos/Caged/microsis/subscription","commits_url":"https://api.github.com/repos/Caged/microsis/commits{/sha}","git_commits_url":"https://api.github.com/repos/Caged/microsis/git/commits{/sha}","comments_url":"https://api.github.com/repos/Caged/microsis/comments{/number}","issue_comment_url":"https://api.github.com/repos/Caged/microsis/issues/comments/{number}","contents_url":"https://api.github.com/repos/Caged/microsis/contents/{+path}","compare_url":"https://api.github.com/repos/Caged/microsis/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Caged/microsis/merges","archive_url":"https://api.github.com/repos/Caged/microsis/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Caged/microsis/downloads","issues_url":"https://api.github.com/repos/Caged/microsis/issues{/number}","pulls_url":"https://api.github.com/repos/Caged/microsis/pulls{/number}","milestones_url":"https://api.github.com/repos/Caged/microsis/milestones{/number}","notifications_url":"https://api.github.com/repos/Caged/microsis/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Caged/microsis/labels{/name}"},{"id":52,"name":"s3","full_name":"anotherjesse/s3","owner":{"login":"anotherjesse","id":27,"avatar_url":"https://2.gravatar.com/avatar/50d10a8864accf0b2522c326381a4702?d=https%3A%2F%2Fidenticons.github.com%2F02e74f10e0327ad868d138f2b4fdd6f0.png","gravatar_id":"50d10a8864accf0b2522c326381a4702","url":"https://api.github.com/users/anotherjesse","html_url":"https://github.com/anotherjesse","followers_url":"https://api.github.com/users/anotherjesse/followers","following_url":"https://api.github.com/users/anotherjesse/following{/other_user}","gists_url":"https://api.github.com/users/anotherjesse/gists{/gist_id}","starred_url":"https://api.github.com/users/anotherjesse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/anotherjesse/subscriptions","organizations_url":"https://api.github.com/users/anotherjesse/orgs","repos_url":"https://api.github.com/users/anotherjesse/repos","events_url":"https://api.github.com/users/anotherjesse/events{/privacy}","received_events_url":"https://api.github.com/users/anotherjesse/received_events","type":"User"},"private":false,"html_url":"https://github.com/anotherjesse/s3","description":"psuedo s3 protocol for mozilla browsers","fork":false,"url":"https://api.github.com/repos/anotherjesse/s3","forks_url":"https://api.github.com/repos/anotherjesse/s3/forks","keys_url":"https://api.github.com/repos/anotherjesse/s3/keys{/key_id}","collaborators_url":"https://api.github.com/repos/anotherjesse/s3/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/anotherjesse/s3/teams","hooks_url":"https://api.github.com/repos/anotherjesse/s3/hooks","issue_events_url":"https://api.github.com/repos/anotherjesse/s3/issues/events{/number}","events_url":"https://api.github.com/repos/anotherjesse/s3/events","assignees_url":"https://api.github.com/repos/anotherjesse/s3/assignees{/user}","branches_url":"https://api.github.com/repos/anotherjesse/s3/branches{/branch}","tags_url":"https://api.github.com/repos/anotherjesse/s3/tags","blobs_url":"https://api.github.com/repos/anotherjesse/s3/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/anotherjesse/s3/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/anotherjesse/s3/git/refs{/sha}","trees_url":"https://api.github.com/repos/anotherjesse/s3/git/trees{/sha}","statuses_url":"https://api.github.com/repos/anotherjesse/s3/statuses/{sha}","languages_url":"https://api.github.com/repos/anotherjesse/s3/languages","stargazers_url":"https://api.github.com/repos/anotherjesse/s3/stargazers","contributors_url":"https://api.github.com/repos/anotherjesse/s3/contributors","subscribers_url":"https://api.github.com/repos/anotherjesse/s3/subscribers","subscription_url":"https://api.github.com/repos/anotherjesse/s3/subscription","commits_url":"https://api.github.com/repos/anotherjesse/s3/commits{/sha}","git_commits_url":"https://api.github.com/repos/anotherjesse/s3/git/commits{/sha}","comments_url":"https://api.github.com/repos/anotherjesse/s3/comments{/number}","issue_comment_url":"https://api.github.com/repos/anotherjesse/s3/issues/comments/{number}","contents_url":"https://api.github.com/repos/anotherjesse/s3/contents/{+path}","compare_url":"https://api.github.com/repos/anotherjesse/s3/compare/{base}...{head}","merges_url":"https://api.github.com/repos/anotherjesse/s3/merges","archive_url":"https://api.github.com/repos/anotherjesse/s3/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/anotherjesse/s3/downloads","issues_url":"https://api.github.com/repos/anotherjesse/s3/issues{/number}","pulls_url":"https://api.github.com/repos/anotherjesse/s3/pulls{/number}","milestones_url":"https://api.github.com/repos/anotherjesse/s3/milestones{/number}","notifications_url":"https://api.github.com/repos/anotherjesse/s3/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/anotherjesse/s3/labels{/name}"},{"id":53,"name":"taboo","full_name":"anotherjesse/taboo","owner":{"login":"anotherjesse","id":27,"avatar_url":"https://2.gravatar.com/avatar/50d10a8864accf0b2522c326381a4702?d=https%3A%2F%2Fidenticons.github.com%2F02e74f10e0327ad868d138f2b4fdd6f0.png","gravatar_id":"50d10a8864accf0b2522c326381a4702","url":"https://api.github.com/users/anotherjesse","html_url":"https://github.com/anotherjesse","followers_url":"https://api.github.com/users/anotherjesse/followers","following_url":"https://api.github.com/users/anotherjesse/following{/other_user}","gists_url":"https://api.github.com/users/anotherjesse/gists{/gist_id}","starred_url":"https://api.github.com/users/anotherjesse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/anotherjesse/subscriptions","organizations_url":"https://api.github.com/users/anotherjesse/orgs","repos_url":"https://api.github.com/users/anotherjesse/repos","events_url":"https://api.github.com/users/anotherjesse/events{/privacy}","received_events_url":"https://api.github.com/users/anotherjesse/received_events","type":"User"},"private":false,"html_url":"https://github.com/anotherjesse/taboo","description":"The solution for tabitus of the browser ","fork":false,"url":"https://api.github.com/repos/anotherjesse/taboo","forks_url":"https://api.github.com/repos/anotherjesse/taboo/forks","keys_url":"https://api.github.com/repos/anotherjesse/taboo/keys{/key_id}","collaborators_url":"https://api.github.com/repos/anotherjesse/taboo/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/anotherjesse/taboo/teams","hooks_url":"https://api.github.com/repos/anotherjesse/taboo/hooks","issue_events_url":"https://api.github.com/repos/anotherjesse/taboo/issues/events{/number}","events_url":"https://api.github.com/repos/anotherjesse/taboo/events","assignees_url":"https://api.github.com/repos/anotherjesse/taboo/assignees{/user}","branches_url":"https://api.github.com/repos/anotherjesse/taboo/branches{/branch}","tags_url":"https://api.github.com/repos/anotherjesse/taboo/tags","blobs_url":"https://api.github.com/repos/anotherjesse/taboo/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/anotherjesse/taboo/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/anotherjesse/taboo/git/refs{/sha}","trees_url":"https://api.github.com/repos/anotherjesse/taboo/git/trees{/sha}","statuses_url":"https://api.github.com/repos/anotherjesse/taboo/statuses/{sha}","languages_url":"https://api.github.com/repos/anotherjesse/taboo/languages","stargazers_url":"https://api.github.com/repos/anotherjesse/taboo/stargazers","contributors_url":"https://api.github.com/repos/anotherjesse/taboo/contributors","subscribers_url":"https://api.github.com/repos/anotherjesse/taboo/subscribers","subscription_url":"https://api.github.com/repos/anotherjesse/taboo/subscription","commits_url":"https://api.github.com/repos/anotherjesse/taboo/commits{/sha}","git_commits_url":"https://api.github.com/repos/anotherjesse/taboo/git/commits{/sha}","comments_url":"https://api.github.com/repos/anotherjesse/taboo/comments{/number}","issue_comment_url":"https://api.github.com/repos/anotherjesse/taboo/issues/comments/{number}","contents_url":"https://api.github.com/repos/anotherjesse/taboo/contents/{+path}","compare_url":"https://api.github.com/repos/anotherjesse/taboo/compare/{base}...{head}","merges_url":"https://api.github.com/repos/anotherjesse/taboo/merges","archive_url":"https://api.github.com/repos/anotherjesse/taboo/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/anotherjesse/taboo/downloads","issues_url":"https://api.github.com/repos/anotherjesse/taboo/issues{/number}","pulls_url":"https://api.github.com/repos/anotherjesse/taboo/pulls{/number}","milestones_url":"https://api.github.com/repos/anotherjesse/taboo/milestones{/number}","notifications_url":"https://api.github.com/repos/anotherjesse/taboo/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/anotherjesse/taboo/labels{/name}"},{"id":54,"name":"foxtracs","full_name":"anotherjesse/foxtracs","owner":{"login":"anotherjesse","id":27,"avatar_url":"https://2.gravatar.com/avatar/50d10a8864accf0b2522c326381a4702?d=https%3A%2F%2Fidenticons.github.com%2F02e74f10e0327ad868d138f2b4fdd6f0.png","gravatar_id":"50d10a8864accf0b2522c326381a4702","url":"https://api.github.com/users/anotherjesse","html_url":"https://github.com/anotherjesse","followers_url":"https://api.github.com/users/anotherjesse/followers","following_url":"https://api.github.com/users/anotherjesse/following{/other_user}","gists_url":"https://api.github.com/users/anotherjesse/gists{/gist_id}","starred_url":"https://api.github.com/users/anotherjesse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/anotherjesse/subscriptions","organizations_url":"https://api.github.com/users/anotherjesse/orgs","repos_url":"https://api.github.com/users/anotherjesse/repos","events_url":"https://api.github.com/users/anotherjesse/events{/privacy}","received_events_url":"https://api.github.com/users/anotherjesse/received_events","type":"User"},"private":false,"html_url":"https://github.com/anotherjesse/foxtracs","description":"firefox trac integration","fork":false,"url":"https://api.github.com/repos/anotherjesse/foxtracs","forks_url":"https://api.github.com/repos/anotherjesse/foxtracs/forks","keys_url":"https://api.github.com/repos/anotherjesse/foxtracs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/anotherjesse/foxtracs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/anotherjesse/foxtracs/teams","hooks_url":"https://api.github.com/repos/anotherjesse/foxtracs/hooks","issue_events_url":"https://api.github.com/repos/anotherjesse/foxtracs/issues/events{/number}","events_url":"https://api.github.com/repos/anotherjesse/foxtracs/events","assignees_url":"https://api.github.com/repos/anotherjesse/foxtracs/assignees{/user}","branches_url":"https://api.github.com/repos/anotherjesse/foxtracs/branches{/branch}","tags_url":"https://api.github.com/repos/anotherjesse/foxtracs/tags","blobs_url":"https://api.github.com/repos/anotherjesse/foxtracs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/anotherjesse/foxtracs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/anotherjesse/foxtracs/git/refs{/sha}","trees_url":"https://api.github.com/repos/anotherjesse/foxtracs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/anotherjesse/foxtracs/statuses/{sha}","languages_url":"https://api.github.com/repos/anotherjesse/foxtracs/languages","stargazers_url":"https://api.github.com/repos/anotherjesse/foxtracs/stargazers","contributors_url":"https://api.github.com/repos/anotherjesse/foxtracs/contributors","subscribers_url":"https://api.github.com/repos/anotherjesse/foxtracs/subscribers","subscription_url":"https://api.github.com/repos/anotherjesse/foxtracs/subscription","commits_url":"https://api.github.com/repos/anotherjesse/foxtracs/commits{/sha}","git_commits_url":"https://api.github.com/repos/anotherjesse/foxtracs/git/commits{/sha}","comments_url":"https://api.github.com/repos/anotherjesse/foxtracs/comments{/number}","issue_comment_url":"https://api.github.com/repos/anotherjesse/foxtracs/issues/comments/{number}","contents_url":"https://api.github.com/repos/anotherjesse/foxtracs/contents/{+path}","compare_url":"https://api.github.com/repos/anotherjesse/foxtracs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/anotherjesse/foxtracs/merges","archive_url":"https://api.github.com/repos/anotherjesse/foxtracs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/anotherjesse/foxtracs/downloads","issues_url":"https://api.github.com/repos/anotherjesse/foxtracs/issues{/number}","pulls_url":"https://api.github.com/repos/anotherjesse/foxtracs/pulls{/number}","milestones_url":"https://api.github.com/repos/anotherjesse/foxtracs/milestones{/number}","notifications_url":"https://api.github.com/repos/anotherjesse/foxtracs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/anotherjesse/foxtracs/labels{/name}"},{"id":56,"name":"fotomatic","full_name":"anotherjesse/fotomatic","owner":{"login":"anotherjesse","id":27,"avatar_url":"https://2.gravatar.com/avatar/50d10a8864accf0b2522c326381a4702?d=https%3A%2F%2Fidenticons.github.com%2F02e74f10e0327ad868d138f2b4fdd6f0.png","gravatar_id":"50d10a8864accf0b2522c326381a4702","url":"https://api.github.com/users/anotherjesse","html_url":"https://github.com/anotherjesse","followers_url":"https://api.github.com/users/anotherjesse/followers","following_url":"https://api.github.com/users/anotherjesse/following{/other_user}","gists_url":"https://api.github.com/users/anotherjesse/gists{/gist_id}","starred_url":"https://api.github.com/users/anotherjesse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/anotherjesse/subscriptions","organizations_url":"https://api.github.com/users/anotherjesse/orgs","repos_url":"https://api.github.com/users/anotherjesse/repos","events_url":"https://api.github.com/users/anotherjesse/events{/privacy}","received_events_url":"https://api.github.com/users/anotherjesse/received_events","type":"User"},"private":false,"html_url":"https://github.com/anotherjesse/fotomatic","description":"Flash photo widget prototype - hacked at last SHDH of 2007","fork":false,"url":"https://api.github.com/repos/anotherjesse/fotomatic","forks_url":"https://api.github.com/repos/anotherjesse/fotomatic/forks","keys_url":"https://api.github.com/repos/anotherjesse/fotomatic/keys{/key_id}","collaborators_url":"https://api.github.com/repos/anotherjesse/fotomatic/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/anotherjesse/fotomatic/teams","hooks_url":"https://api.github.com/repos/anotherjesse/fotomatic/hooks","issue_events_url":"https://api.github.com/repos/anotherjesse/fotomatic/issues/events{/number}","events_url":"https://api.github.com/repos/anotherjesse/fotomatic/events","assignees_url":"https://api.github.com/repos/anotherjesse/fotomatic/assignees{/user}","branches_url":"https://api.github.com/repos/anotherjesse/fotomatic/branches{/branch}","tags_url":"https://api.github.com/repos/anotherjesse/fotomatic/tags","blobs_url":"https://api.github.com/repos/anotherjesse/fotomatic/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/anotherjesse/fotomatic/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/anotherjesse/fotomatic/git/refs{/sha}","trees_url":"https://api.github.com/repos/anotherjesse/fotomatic/git/trees{/sha}","statuses_url":"https://api.github.com/repos/anotherjesse/fotomatic/statuses/{sha}","languages_url":"https://api.github.com/repos/anotherjesse/fotomatic/languages","stargazers_url":"https://api.github.com/repos/anotherjesse/fotomatic/stargazers","contributors_url":"https://api.github.com/repos/anotherjesse/fotomatic/contributors","subscribers_url":"https://api.github.com/repos/anotherjesse/fotomatic/subscribers","subscription_url":"https://api.github.com/repos/anotherjesse/fotomatic/subscription","commits_url":"https://api.github.com/repos/anotherjesse/fotomatic/commits{/sha}","git_commits_url":"https://api.github.com/repos/anotherjesse/fotomatic/git/commits{/sha}","comments_url":"https://api.github.com/repos/anotherjesse/fotomatic/comments{/number}","issue_comment_url":"https://api.github.com/repos/anotherjesse/fotomatic/issues/comments/{number}","contents_url":"https://api.github.com/repos/anotherjesse/fotomatic/contents/{+path}","compare_url":"https://api.github.com/repos/anotherjesse/fotomatic/compare/{base}...{head}","merges_url":"https://api.github.com/repos/anotherjesse/fotomatic/merges","archive_url":"https://api.github.com/repos/anotherjesse/fotomatic/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/anotherjesse/fotomatic/downloads","issues_url":"https://api.github.com/repos/anotherjesse/fotomatic/issues{/number}","pulls_url":"https://api.github.com/repos/anotherjesse/fotomatic/pulls{/number}","milestones_url":"https://api.github.com/repos/anotherjesse/fotomatic/milestones{/number}","notifications_url":"https://api.github.com/repos/anotherjesse/fotomatic/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/anotherjesse/fotomatic/labels{/name}"},{"id":61,"name":"glowstick","full_name":"mojombo/glowstick","owner":{"login":"mojombo","id":1,"avatar_url":"https://1.gravatar.com/avatar/25c7c18223fb42a4c6ae1c8db6f50f9b?d=https%3A%2F%2Fidenticons.github.com%2Fc4ca4238a0b923820dcc509a6f75849b.png","gravatar_id":"25c7c18223fb42a4c6ae1c8db6f50f9b","url":"https://api.github.com/users/mojombo","html_url":"https://github.com/mojombo","followers_url":"https://api.github.com/users/mojombo/followers","following_url":"https://api.github.com/users/mojombo/following{/other_user}","gists_url":"https://api.github.com/users/mojombo/gists{/gist_id}","starred_url":"https://api.github.com/users/mojombo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mojombo/subscriptions","organizations_url":"https://api.github.com/users/mojombo/orgs","repos_url":"https://api.github.com/users/mojombo/repos","events_url":"https://api.github.com/users/mojombo/events{/privacy}","received_events_url":"https://api.github.com/users/mojombo/received_events","type":"User"},"private":false,"html_url":"https://github.com/mojombo/glowstick","description":"A realtime, OpenGL graphing library for Ruby","fork":false,"url":"https://api.github.com/repos/mojombo/glowstick","forks_url":"https://api.github.com/repos/mojombo/glowstick/forks","keys_url":"https://api.github.com/repos/mojombo/glowstick/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mojombo/glowstick/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mojombo/glowstick/teams","hooks_url":"https://api.github.com/repos/mojombo/glowstick/hooks","issue_events_url":"https://api.github.com/repos/mojombo/glowstick/issues/events{/number}","events_url":"https://api.github.com/repos/mojombo/glowstick/events","assignees_url":"https://api.github.com/repos/mojombo/glowstick/assignees{/user}","branches_url":"https://api.github.com/repos/mojombo/glowstick/branches{/branch}","tags_url":"https://api.github.com/repos/mojombo/glowstick/tags","blobs_url":"https://api.github.com/repos/mojombo/glowstick/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mojombo/glowstick/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mojombo/glowstick/git/refs{/sha}","trees_url":"https://api.github.com/repos/mojombo/glowstick/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mojombo/glowstick/statuses/{sha}","languages_url":"https://api.github.com/repos/mojombo/glowstick/languages","stargazers_url":"https://api.github.com/repos/mojombo/glowstick/stargazers","contributors_url":"https://api.github.com/repos/mojombo/glowstick/contributors","subscribers_url":"https://api.github.com/repos/mojombo/glowstick/subscribers","subscription_url":"https://api.github.com/repos/mojombo/glowstick/subscription","commits_url":"https://api.github.com/repos/mojombo/glowstick/commits{/sha}","git_commits_url":"https://api.github.com/repos/mojombo/glowstick/git/commits{/sha}","comments_url":"https://api.github.com/repos/mojombo/glowstick/comments{/number}","issue_comment_url":"https://api.github.com/repos/mojombo/glowstick/issues/comments/{number}","contents_url":"https://api.github.com/repos/mojombo/glowstick/contents/{+path}","compare_url":"https://api.github.com/repos/mojombo/glowstick/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mojombo/glowstick/merges","archive_url":"https://api.github.com/repos/mojombo/glowstick/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mojombo/glowstick/downloads","issues_url":"https://api.github.com/repos/mojombo/glowstick/issues{/number}","pulls_url":"https://api.github.com/repos/mojombo/glowstick/pulls{/number}","milestones_url":"https://api.github.com/repos/mojombo/glowstick/milestones{/number}","notifications_url":"https://api.github.com/repos/mojombo/glowstick/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mojombo/glowstick/labels{/name}"},{"id":63,"name":"starling","full_name":"defunkt/starling","owner":{"login":"defunkt","id":2,"avatar_url":"https://2.gravatar.com/avatar/b8dbb1987e8e5318584865f880036796?d=https%3A%2F%2Fidenticons.github.com%2Fc81e728d9d4c2f636f067f89cc14862c.png","gravatar_id":"b8dbb1987e8e5318584865f880036796","url":"https://api.github.com/users/defunkt","html_url":"https://github.com/defunkt","followers_url":"https://api.github.com/users/defunkt/followers","following_url":"https://api.github.com/users/defunkt/following{/other_user}","gists_url":"https://api.github.com/users/defunkt/gists{/gist_id}","starred_url":"https://api.github.com/users/defunkt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/defunkt/subscriptions","organizations_url":"https://api.github.com/users/defunkt/orgs","repos_url":"https://api.github.com/users/defunkt/repos","events_url":"https://api.github.com/users/defunkt/events{/privacy}","received_events_url":"https://api.github.com/users/defunkt/received_events","type":"User"},"private":false,"html_url":"https://github.com/defunkt/starling","description":"","fork":false,"url":"https://api.github.com/repos/defunkt/starling","forks_url":"https://api.github.com/repos/defunkt/starling/forks","keys_url":"https://api.github.com/repos/defunkt/starling/keys{/key_id}","collaborators_url":"https://api.github.com/repos/defunkt/starling/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/defunkt/starling/teams","hooks_url":"https://api.github.com/repos/defunkt/starling/hooks","issue_events_url":"https://api.github.com/repos/defunkt/starling/issues/events{/number}","events_url":"https://api.github.com/repos/defunkt/starling/events","assignees_url":"https://api.github.com/repos/defunkt/starling/assignees{/user}","branches_url":"https://api.github.com/repos/defunkt/starling/branches{/branch}","tags_url":"https://api.github.com/repos/defunkt/starling/tags","blobs_url":"https://api.github.com/repos/defunkt/starling/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/defunkt/starling/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/defunkt/starling/git/refs{/sha}","trees_url":"https://api.github.com/repos/defunkt/starling/git/trees{/sha}","statuses_url":"https://api.github.com/repos/defunkt/starling/statuses/{sha}","languages_url":"https://api.github.com/repos/defunkt/starling/languages","stargazers_url":"https://api.github.com/repos/defunkt/starling/stargazers","contributors_url":"https://api.github.com/repos/defunkt/starling/contributors","subscribers_url":"https://api.github.com/repos/defunkt/starling/subscribers","subscription_url":"https://api.github.com/repos/defunkt/starling/subscription","commits_url":"https://api.github.com/repos/defunkt/starling/commits{/sha}","git_commits_url":"https://api.github.com/repos/defunkt/starling/git/commits{/sha}","comments_url":"https://api.github.com/repos/defunkt/starling/comments{/number}","issue_comment_url":"https://api.github.com/repos/defunkt/starling/issues/comments/{number}","contents_url":"https://api.github.com/repos/defunkt/starling/contents/{+path}","compare_url":"https://api.github.com/repos/defunkt/starling/compare/{base}...{head}","merges_url":"https://api.github.com/repos/defunkt/starling/merges","archive_url":"https://api.github.com/repos/defunkt/starling/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/defunkt/starling/downloads","issues_url":"https://api.github.com/repos/defunkt/starling/issues{/number}","pulls_url":"https://api.github.com/repos/defunkt/starling/pulls{/number}","milestones_url":"https://api.github.com/repos/defunkt/starling/milestones{/number}","notifications_url":"https://api.github.com/repos/defunkt/starling/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/defunkt/starling/labels{/name}"},{"id":65,"name":"merb-more","full_name":"wycats/merb-more","owner":{"login":"wycats","id":4,"avatar_url":"https://2.gravatar.com/avatar/428167a3ec72235ba971162924492609?d=https%3A%2F%2Fidenticons.github.com%2Fa87ff679a2f3e71d9181a67b7542122c.png","gravatar_id":"428167a3ec72235ba971162924492609","url":"https://api.github.com/users/wycats","html_url":"https://github.com/wycats","followers_url":"https://api.github.com/users/wycats/followers","following_url":"https://api.github.com/users/wycats/following{/other_user}","gists_url":"https://api.github.com/users/wycats/gists{/gist_id}","starred_url":"https://api.github.com/users/wycats/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wycats/subscriptions","organizations_url":"https://api.github.com/users/wycats/orgs","repos_url":"https://api.github.com/users/wycats/repos","events_url":"https://api.github.com/users/wycats/events{/privacy}","received_events_url":"https://api.github.com/users/wycats/received_events","type":"User"},"private":false,"html_url":"https://github.com/wycats/merb-more","description":"Merb More: The Full Stack. Take what you need; leave what you don't.","fork":false,"url":"https://api.github.com/repos/wycats/merb-more","forks_url":"https://api.github.com/repos/wycats/merb-more/forks","keys_url":"https://api.github.com/repos/wycats/merb-more/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wycats/merb-more/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wycats/merb-more/teams","hooks_url":"https://api.github.com/repos/wycats/merb-more/hooks","issue_events_url":"https://api.github.com/repos/wycats/merb-more/issues/events{/number}","events_url":"https://api.github.com/repos/wycats/merb-more/events","assignees_url":"https://api.github.com/repos/wycats/merb-more/assignees{/user}","branches_url":"https://api.github.com/repos/wycats/merb-more/branches{/branch}","tags_url":"https://api.github.com/repos/wycats/merb-more/tags","blobs_url":"https://api.github.com/repos/wycats/merb-more/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wycats/merb-more/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wycats/merb-more/git/refs{/sha}","trees_url":"https://api.github.com/repos/wycats/merb-more/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wycats/merb-more/statuses/{sha}","languages_url":"https://api.github.com/repos/wycats/merb-more/languages","stargazers_url":"https://api.github.com/repos/wycats/merb-more/stargazers","contributors_url":"https://api.github.com/repos/wycats/merb-more/contributors","subscribers_url":"https://api.github.com/repos/wycats/merb-more/subscribers","subscription_url":"https://api.github.com/repos/wycats/merb-more/subscription","commits_url":"https://api.github.com/repos/wycats/merb-more/commits{/sha}","git_commits_url":"https://api.github.com/repos/wycats/merb-more/git/commits{/sha}","comments_url":"https://api.github.com/repos/wycats/merb-more/comments{/number}","issue_comment_url":"https://api.github.com/repos/wycats/merb-more/issues/comments/{number}","contents_url":"https://api.github.com/repos/wycats/merb-more/contents/{+path}","compare_url":"https://api.github.com/repos/wycats/merb-more/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wycats/merb-more/merges","archive_url":"https://api.github.com/repos/wycats/merb-more/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wycats/merb-more/downloads","issues_url":"https://api.github.com/repos/wycats/merb-more/issues{/number}","pulls_url":"https://api.github.com/repos/wycats/merb-more/pulls{/number}","milestones_url":"https://api.github.com/repos/wycats/merb-more/milestones{/number}","notifications_url":"https://api.github.com/repos/wycats/merb-more/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wycats/merb-more/labels{/name}"},{"id":68,"name":"thin","full_name":"macournoyer/thin","owner":{"login":"macournoyer","id":22,"avatar_url":"https://0.gravatar.com/avatar/0d949b795e64e062c4c001c6f5a6f3f3?d=https%3A%2F%2Fidenticons.github.com%2Fb6d767d2f8ed5d21a44b0e5886680cb9.png","gravatar_id":"0d949b795e64e062c4c001c6f5a6f3f3","url":"https://api.github.com/users/macournoyer","html_url":"https://github.com/macournoyer","followers_url":"https://api.github.com/users/macournoyer/followers","following_url":"https://api.github.com/users/macournoyer/following{/other_user}","gists_url":"https://api.github.com/users/macournoyer/gists{/gist_id}","starred_url":"https://api.github.com/users/macournoyer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/macournoyer/subscriptions","organizations_url":"https://api.github.com/users/macournoyer/orgs","repos_url":"https://api.github.com/users/macournoyer/repos","events_url":"https://api.github.com/users/macournoyer/events{/privacy}","received_events_url":"https://api.github.com/users/macournoyer/received_events","type":"User"},"private":false,"html_url":"https://github.com/macournoyer/thin","description":"A very fast & simple Ruby web server","fork":false,"url":"https://api.github.com/repos/macournoyer/thin","forks_url":"https://api.github.com/repos/macournoyer/thin/forks","keys_url":"https://api.github.com/repos/macournoyer/thin/keys{/key_id}","collaborators_url":"https://api.github.com/repos/macournoyer/thin/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/macournoyer/thin/teams","hooks_url":"https://api.github.com/repos/macournoyer/thin/hooks","issue_events_url":"https://api.github.com/repos/macournoyer/thin/issues/events{/number}","events_url":"https://api.github.com/repos/macournoyer/thin/events","assignees_url":"https://api.github.com/repos/macournoyer/thin/assignees{/user}","branches_url":"https://api.github.com/repos/macournoyer/thin/branches{/branch}","tags_url":"https://api.github.com/repos/macournoyer/thin/tags","blobs_url":"https://api.github.com/repos/macournoyer/thin/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/macournoyer/thin/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/macournoyer/thin/git/refs{/sha}","trees_url":"https://api.github.com/repos/macournoyer/thin/git/trees{/sha}","statuses_url":"https://api.github.com/repos/macournoyer/thin/statuses/{sha}","languages_url":"https://api.github.com/repos/macournoyer/thin/languages","stargazers_url":"https://api.github.com/repos/macournoyer/thin/stargazers","contributors_url":"https://api.github.com/repos/macournoyer/thin/contributors","subscribers_url":"https://api.github.com/repos/macournoyer/thin/subscribers","subscription_url":"https://api.github.com/repos/macournoyer/thin/subscription","commits_url":"https://api.github.com/repos/macournoyer/thin/commits{/sha}","git_commits_url":"https://api.github.com/repos/macournoyer/thin/git/commits{/sha}","comments_url":"https://api.github.com/repos/macournoyer/thin/comments{/number}","issue_comment_url":"https://api.github.com/repos/macournoyer/thin/issues/comments/{number}","contents_url":"https://api.github.com/repos/macournoyer/thin/contents/{+path}","compare_url":"https://api.github.com/repos/macournoyer/thin/compare/{base}...{head}","merges_url":"https://api.github.com/repos/macournoyer/thin/merges","archive_url":"https://api.github.com/repos/macournoyer/thin/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/macournoyer/thin/downloads","issues_url":"https://api.github.com/repos/macournoyer/thin/issues{/number}","pulls_url":"https://api.github.com/repos/macournoyer/thin/pulls{/number}","milestones_url":"https://api.github.com/repos/macournoyer/thin/milestones{/number}","notifications_url":"https://api.github.com/repos/macournoyer/thin/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/macournoyer/thin/labels{/name}"},{"id":71,"name":"resource_controller","full_name":"jamesgolick/resource_controller","owner":{"login":"jamesgolick","id":37,"avatar_url":"https://2.gravatar.com/avatar/f6eddf2f983d23c2d031e407852625e9?d=https%3A%2F%2Fidenticons.github.com%2Fa5bfc9e07964f8dddeb95fc584cd965d.png","gravatar_id":"f6eddf2f983d23c2d031e407852625e9","url":"https://api.github.com/users/jamesgolick","html_url":"https://github.com/jamesgolick","followers_url":"https://api.github.com/users/jamesgolick/followers","following_url":"https://api.github.com/users/jamesgolick/following{/other_user}","gists_url":"https://api.github.com/users/jamesgolick/gists{/gist_id}","starred_url":"https://api.github.com/users/jamesgolick/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jamesgolick/subscriptions","organizations_url":"https://api.github.com/users/jamesgolick/orgs","repos_url":"https://api.github.com/users/jamesgolick/repos","events_url":"https://api.github.com/users/jamesgolick/events{/privacy}","received_events_url":"https://api.github.com/users/jamesgolick/received_events","type":"User"},"private":false,"html_url":"https://github.com/jamesgolick/resource_controller","description":"Rails RESTful controller abstraction plugin.","fork":false,"url":"https://api.github.com/repos/jamesgolick/resource_controller","forks_url":"https://api.github.com/repos/jamesgolick/resource_controller/forks","keys_url":"https://api.github.com/repos/jamesgolick/resource_controller/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jamesgolick/resource_controller/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jamesgolick/resource_controller/teams","hooks_url":"https://api.github.com/repos/jamesgolick/resource_controller/hooks","issue_events_url":"https://api.github.com/repos/jamesgolick/resource_controller/issues/events{/number}","events_url":"https://api.github.com/repos/jamesgolick/resource_controller/events","assignees_url":"https://api.github.com/repos/jamesgolick/resource_controller/assignees{/user}","branches_url":"https://api.github.com/repos/jamesgolick/resource_controller/branches{/branch}","tags_url":"https://api.github.com/repos/jamesgolick/resource_controller/tags","blobs_url":"https://api.github.com/repos/jamesgolick/resource_controller/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jamesgolick/resource_controller/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jamesgolick/resource_controller/git/refs{/sha}","trees_url":"https://api.github.com/repos/jamesgolick/resource_controller/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jamesgolick/resource_controller/statuses/{sha}","languages_url":"https://api.github.com/repos/jamesgolick/resource_controller/languages","stargazers_url":"https://api.github.com/repos/jamesgolick/resource_controller/stargazers","contributors_url":"https://api.github.com/repos/jamesgolick/resource_controller/contributors","subscribers_url":"https://api.github.com/repos/jamesgolick/resource_controller/subscribers","subscription_url":"https://api.github.com/repos/jamesgolick/resource_controller/subscription","commits_url":"https://api.github.com/repos/jamesgolick/resource_controller/commits{/sha}","git_commits_url":"https://api.github.com/repos/jamesgolick/resource_controller/git/commits{/sha}","comments_url":"https://api.github.com/repos/jamesgolick/resource_controller/comments{/number}","issue_comment_url":"https://api.github.com/repos/jamesgolick/resource_controller/issues/comments/{number}","contents_url":"https://api.github.com/repos/jamesgolick/resource_controller/contents/{+path}","compare_url":"https://api.github.com/repos/jamesgolick/resource_controller/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jamesgolick/resource_controller/merges","archive_url":"https://api.github.com/repos/jamesgolick/resource_controller/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jamesgolick/resource_controller/downloads","issues_url":"https://api.github.com/repos/jamesgolick/resource_controller/issues{/number}","pulls_url":"https://api.github.com/repos/jamesgolick/resource_controller/pulls{/number}","milestones_url":"https://api.github.com/repos/jamesgolick/resource_controller/milestones{/number}","notifications_url":"https://api.github.com/repos/jamesgolick/resource_controller/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jamesgolick/resource_controller/labels{/name}"},{"id":73,"name":"markaby","full_name":"jamesgolick/markaby","owner":{"login":"jamesgolick","id":37,"avatar_url":"https://2.gravatar.com/avatar/f6eddf2f983d23c2d031e407852625e9?d=https%3A%2F%2Fidenticons.github.com%2Fa5bfc9e07964f8dddeb95fc584cd965d.png","gravatar_id":"f6eddf2f983d23c2d031e407852625e9","url":"https://api.github.com/users/jamesgolick","html_url":"https://github.com/jamesgolick","followers_url":"https://api.github.com/users/jamesgolick/followers","following_url":"https://api.github.com/users/jamesgolick/following{/other_user}","gists_url":"https://api.github.com/users/jamesgolick/gists{/gist_id}","starred_url":"https://api.github.com/users/jamesgolick/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jamesgolick/subscriptions","organizations_url":"https://api.github.com/users/jamesgolick/orgs","repos_url":"https://api.github.com/users/jamesgolick/repos","events_url":"https://api.github.com/users/jamesgolick/events{/privacy}","received_events_url":"https://api.github.com/users/jamesgolick/received_events","type":"User"},"private":false,"html_url":"https://github.com/jamesgolick/markaby","description":"Markaby patched to run on rails 2.0.2","fork":false,"url":"https://api.github.com/repos/jamesgolick/markaby","forks_url":"https://api.github.com/repos/jamesgolick/markaby/forks","keys_url":"https://api.github.com/repos/jamesgolick/markaby/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jamesgolick/markaby/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jamesgolick/markaby/teams","hooks_url":"https://api.github.com/repos/jamesgolick/markaby/hooks","issue_events_url":"https://api.github.com/repos/jamesgolick/markaby/issues/events{/number}","events_url":"https://api.github.com/repos/jamesgolick/markaby/events","assignees_url":"https://api.github.com/repos/jamesgolick/markaby/assignees{/user}","branches_url":"https://api.github.com/repos/jamesgolick/markaby/branches{/branch}","tags_url":"https://api.github.com/repos/jamesgolick/markaby/tags","blobs_url":"https://api.github.com/repos/jamesgolick/markaby/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jamesgolick/markaby/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jamesgolick/markaby/git/refs{/sha}","trees_url":"https://api.github.com/repos/jamesgolick/markaby/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jamesgolick/markaby/statuses/{sha}","languages_url":"https://api.github.com/repos/jamesgolick/markaby/languages","stargazers_url":"https://api.github.com/repos/jamesgolick/markaby/stargazers","contributors_url":"https://api.github.com/repos/jamesgolick/markaby/contributors","subscribers_url":"https://api.github.com/repos/jamesgolick/markaby/subscribers","subscription_url":"https://api.github.com/repos/jamesgolick/markaby/subscription","commits_url":"https://api.github.com/repos/jamesgolick/markaby/commits{/sha}","git_commits_url":"https://api.github.com/repos/jamesgolick/markaby/git/commits{/sha}","comments_url":"https://api.github.com/repos/jamesgolick/markaby/comments{/number}","issue_comment_url":"https://api.github.com/repos/jamesgolick/markaby/issues/comments/{number}","contents_url":"https://api.github.com/repos/jamesgolick/markaby/contents/{+path}","compare_url":"https://api.github.com/repos/jamesgolick/markaby/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jamesgolick/markaby/merges","archive_url":"https://api.github.com/repos/jamesgolick/markaby/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jamesgolick/markaby/downloads","issues_url":"https://api.github.com/repos/jamesgolick/markaby/issues{/number}","pulls_url":"https://api.github.com/repos/jamesgolick/markaby/pulls{/number}","milestones_url":"https://api.github.com/repos/jamesgolick/markaby/milestones{/number}","notifications_url":"https://api.github.com/repos/jamesgolick/markaby/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jamesgolick/markaby/labels{/name}"},{"id":74,"name":"enum_field","full_name":"jamesgolick/enum_field","owner":{"login":"jamesgolick","id":37,"avatar_url":"https://2.gravatar.com/avatar/f6eddf2f983d23c2d031e407852625e9?d=https%3A%2F%2Fidenticons.github.com%2Fa5bfc9e07964f8dddeb95fc584cd965d.png","gravatar_id":"f6eddf2f983d23c2d031e407852625e9","url":"https://api.github.com/users/jamesgolick","html_url":"https://github.com/jamesgolick","followers_url":"https://api.github.com/users/jamesgolick/followers","following_url":"https://api.github.com/users/jamesgolick/following{/other_user}","gists_url":"https://api.github.com/users/jamesgolick/gists{/gist_id}","starred_url":"https://api.github.com/users/jamesgolick/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jamesgolick/subscriptions","organizations_url":"https://api.github.com/users/jamesgolick/orgs","repos_url":"https://api.github.com/users/jamesgolick/repos","events_url":"https://api.github.com/users/jamesgolick/events{/privacy}","received_events_url":"https://api.github.com/users/jamesgolick/received_events","type":"User"},"private":false,"html_url":"https://github.com/jamesgolick/enum_field","description":"","fork":false,"url":"https://api.github.com/repos/jamesgolick/enum_field","forks_url":"https://api.github.com/repos/jamesgolick/enum_field/forks","keys_url":"https://api.github.com/repos/jamesgolick/enum_field/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jamesgolick/enum_field/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jamesgolick/enum_field/teams","hooks_url":"https://api.github.com/repos/jamesgolick/enum_field/hooks","issue_events_url":"https://api.github.com/repos/jamesgolick/enum_field/issues/events{/number}","events_url":"https://api.github.com/repos/jamesgolick/enum_field/events","assignees_url":"https://api.github.com/repos/jamesgolick/enum_field/assignees{/user}","branches_url":"https://api.github.com/repos/jamesgolick/enum_field/branches{/branch}","tags_url":"https://api.github.com/repos/jamesgolick/enum_field/tags","blobs_url":"https://api.github.com/repos/jamesgolick/enum_field/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jamesgolick/enum_field/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jamesgolick/enum_field/git/refs{/sha}","trees_url":"https://api.github.com/repos/jamesgolick/enum_field/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jamesgolick/enum_field/statuses/{sha}","languages_url":"https://api.github.com/repos/jamesgolick/enum_field/languages","stargazers_url":"https://api.github.com/repos/jamesgolick/enum_field/stargazers","contributors_url":"https://api.github.com/repos/jamesgolick/enum_field/contributors","subscribers_url":"https://api.github.com/repos/jamesgolick/enum_field/subscribers","subscription_url":"https://api.github.com/repos/jamesgolick/enum_field/subscription","commits_url":"https://api.github.com/repos/jamesgolick/enum_field/commits{/sha}","git_commits_url":"https://api.github.com/repos/jamesgolick/enum_field/git/commits{/sha}","comments_url":"https://api.github.com/repos/jamesgolick/enum_field/comments{/number}","issue_comment_url":"https://api.github.com/repos/jamesgolick/enum_field/issues/comments/{number}","contents_url":"https://api.github.com/repos/jamesgolick/enum_field/contents/{+path}","compare_url":"https://api.github.com/repos/jamesgolick/enum_field/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jamesgolick/enum_field/merges","archive_url":"https://api.github.com/repos/jamesgolick/enum_field/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jamesgolick/enum_field/downloads","issues_url":"https://api.github.com/repos/jamesgolick/enum_field/issues{/number}","pulls_url":"https://api.github.com/repos/jamesgolick/enum_field/pulls{/number}","milestones_url":"https://api.github.com/repos/jamesgolick/enum_field/milestones{/number}","notifications_url":"https://api.github.com/repos/jamesgolick/enum_field/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jamesgolick/enum_field/labels{/name}"},{"id":75,"name":"subtlety","full_name":"defunkt/subtlety","owner":{"login":"defunkt","id":2,"avatar_url":"https://2.gravatar.com/avatar/b8dbb1987e8e5318584865f880036796?d=https%3A%2F%2Fidenticons.github.com%2Fc81e728d9d4c2f636f067f89cc14862c.png","gravatar_id":"b8dbb1987e8e5318584865f880036796","url":"https://api.github.com/users/defunkt","html_url":"https://github.com/defunkt","followers_url":"https://api.github.com/users/defunkt/followers","following_url":"https://api.github.com/users/defunkt/following{/other_user}","gists_url":"https://api.github.com/users/defunkt/gists{/gist_id}","starred_url":"https://api.github.com/users/defunkt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/defunkt/subscriptions","organizations_url":"https://api.github.com/users/defunkt/orgs","repos_url":"https://api.github.com/users/defunkt/repos","events_url":"https://api.github.com/users/defunkt/events{/privacy}","received_events_url":"https://api.github.com/users/defunkt/received_events","type":"User"},"private":false,"html_url":"https://github.com/defunkt/subtlety","description":"Subtlety: SVN => RSS, hAtom => Atom","fork":false,"url":"https://api.github.com/repos/defunkt/subtlety","forks_url":"https://api.github.com/repos/defunkt/subtlety/forks","keys_url":"https://api.github.com/repos/defunkt/subtlety/keys{/key_id}","collaborators_url":"https://api.github.com/repos/defunkt/subtlety/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/defunkt/subtlety/teams","hooks_url":"https://api.github.com/repos/defunkt/subtlety/hooks","issue_events_url":"https://api.github.com/repos/defunkt/subtlety/issues/events{/number}","events_url":"https://api.github.com/repos/defunkt/subtlety/events","assignees_url":"https://api.github.com/repos/defunkt/subtlety/assignees{/user}","branches_url":"https://api.github.com/repos/defunkt/subtlety/branches{/branch}","tags_url":"https://api.github.com/repos/defunkt/subtlety/tags","blobs_url":"https://api.github.com/repos/defunkt/subtlety/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/defunkt/subtlety/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/defunkt/subtlety/git/refs{/sha}","trees_url":"https://api.github.com/repos/defunkt/subtlety/git/trees{/sha}","statuses_url":"https://api.github.com/repos/defunkt/subtlety/statuses/{sha}","languages_url":"https://api.github.com/repos/defunkt/subtlety/languages","stargazers_url":"https://api.github.com/repos/defunkt/subtlety/stargazers","contributors_url":"https://api.github.com/repos/defunkt/subtlety/contributors","subscribers_url":"https://api.github.com/repos/defunkt/subtlety/subscribers","subscription_url":"https://api.github.com/repos/defunkt/subtlety/subscription","commits_url":"https://api.github.com/repos/defunkt/subtlety/commits{/sha}","git_commits_url":"https://api.github.com/repos/defunkt/subtlety/git/commits{/sha}","comments_url":"https://api.github.com/repos/defunkt/subtlety/comments{/number}","issue_comment_url":"https://api.github.com/repos/defunkt/subtlety/issues/comments/{number}","contents_url":"https://api.github.com/repos/defunkt/subtlety/contents/{+path}","compare_url":"https://api.github.com/repos/defunkt/subtlety/compare/{base}...{head}","merges_url":"https://api.github.com/repos/defunkt/subtlety/merges","archive_url":"https://api.github.com/repos/defunkt/subtlety/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/defunkt/subtlety/downloads","issues_url":"https://api.github.com/repos/defunkt/subtlety/issues{/number}","pulls_url":"https://api.github.com/repos/defunkt/subtlety/pulls{/number}","milestones_url":"https://api.github.com/repos/defunkt/subtlety/milestones{/number}","notifications_url":"https://api.github.com/repos/defunkt/subtlety/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/defunkt/subtlety/labels{/name}"},{"id":92,"name":"zippy","full_name":"defunkt/zippy","owner":{"login":"defunkt","id":2,"avatar_url":"https://2.gravatar.com/avatar/b8dbb1987e8e5318584865f880036796?d=https%3A%2F%2Fidenticons.github.com%2Fc81e728d9d4c2f636f067f89cc14862c.png","gravatar_id":"b8dbb1987e8e5318584865f880036796","url":"https://api.github.com/users/defunkt","html_url":"https://github.com/defunkt","followers_url":"https://api.github.com/users/defunkt/followers","following_url":"https://api.github.com/users/defunkt/following{/other_user}","gists_url":"https://api.github.com/users/defunkt/gists{/gist_id}","starred_url":"https://api.github.com/users/defunkt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/defunkt/subscriptions","organizations_url":"https://api.github.com/users/defunkt/orgs","repos_url":"https://api.github.com/users/defunkt/repos","events_url":"https://api.github.com/users/defunkt/events{/privacy}","received_events_url":"https://api.github.com/users/defunkt/received_events","type":"User"},"private":false,"html_url":"https://github.com/defunkt/zippy","description":"Zippy lil’ zipcode lib.","fork":false,"url":"https://api.github.com/repos/defunkt/zippy","forks_url":"https://api.github.com/repos/defunkt/zippy/forks","keys_url":"https://api.github.com/repos/defunkt/zippy/keys{/key_id}","collaborators_url":"https://api.github.com/repos/defunkt/zippy/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/defunkt/zippy/teams","hooks_url":"https://api.github.com/repos/defunkt/zippy/hooks","issue_events_url":"https://api.github.com/repos/defunkt/zippy/issues/events{/number}","events_url":"https://api.github.com/repos/defunkt/zippy/events","assignees_url":"https://api.github.com/repos/defunkt/zippy/assignees{/user}","branches_url":"https://api.github.com/repos/defunkt/zippy/branches{/branch}","tags_url":"https://api.github.com/repos/defunkt/zippy/tags","blobs_url":"https://api.github.com/repos/defunkt/zippy/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/defunkt/zippy/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/defunkt/zippy/git/refs{/sha}","trees_url":"https://api.github.com/repos/defunkt/zippy/git/trees{/sha}","statuses_url":"https://api.github.com/repos/defunkt/zippy/statuses/{sha}","languages_url":"https://api.github.com/repos/defunkt/zippy/languages","stargazers_url":"https://api.github.com/repos/defunkt/zippy/stargazers","contributors_url":"https://api.github.com/repos/defunkt/zippy/contributors","subscribers_url":"https://api.github.com/repos/defunkt/zippy/subscribers","subscription_url":"https://api.github.com/repos/defunkt/zippy/subscription","commits_url":"https://api.github.com/repos/defunkt/zippy/commits{/sha}","git_commits_url":"https://api.github.com/repos/defunkt/zippy/git/commits{/sha}","comments_url":"https://api.github.com/repos/defunkt/zippy/comments{/number}","issue_comment_url":"https://api.github.com/repos/defunkt/zippy/issues/comments/{number}","contents_url":"https://api.github.com/repos/defunkt/zippy/contents/{+path}","compare_url":"https://api.github.com/repos/defunkt/zippy/compare/{base}...{head}","merges_url":"https://api.github.com/repos/defunkt/zippy/merges","archive_url":"https://api.github.com/repos/defunkt/zippy/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/defunkt/zippy/downloads","issues_url":"https://api.github.com/repos/defunkt/zippy/issues{/number}","pulls_url":"https://api.github.com/repos/defunkt/zippy/pulls{/number}","milestones_url":"https://api.github.com/repos/defunkt/zippy/milestones{/number}","notifications_url":"https://api.github.com/repos/defunkt/zippy/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/defunkt/zippy/labels{/name}"},{"id":93,"name":"cache_fu","full_name":"defunkt/cache_fu","owner":{"login":"defunkt","id":2,"avatar_url":"https://2.gravatar.com/avatar/b8dbb1987e8e5318584865f880036796?d=https%3A%2F%2Fidenticons.github.com%2Fc81e728d9d4c2f636f067f89cc14862c.png","gravatar_id":"b8dbb1987e8e5318584865f880036796","url":"https://api.github.com/users/defunkt","html_url":"https://github.com/defunkt","followers_url":"https://api.github.com/users/defunkt/followers","following_url":"https://api.github.com/users/defunkt/following{/other_user}","gists_url":"https://api.github.com/users/defunkt/gists{/gist_id}","starred_url":"https://api.github.com/users/defunkt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/defunkt/subscriptions","organizations_url":"https://api.github.com/users/defunkt/orgs","repos_url":"https://api.github.com/users/defunkt/repos","events_url":"https://api.github.com/users/defunkt/events{/privacy}","received_events_url":"https://api.github.com/users/defunkt/received_events","type":"User"},"private":false,"html_url":"https://github.com/defunkt/cache_fu","description":"Ghost from Christmas past. Unmaintained.","fork":false,"url":"https://api.github.com/repos/defunkt/cache_fu","forks_url":"https://api.github.com/repos/defunkt/cache_fu/forks","keys_url":"https://api.github.com/repos/defunkt/cache_fu/keys{/key_id}","collaborators_url":"https://api.github.com/repos/defunkt/cache_fu/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/defunkt/cache_fu/teams","hooks_url":"https://api.github.com/repos/defunkt/cache_fu/hooks","issue_events_url":"https://api.github.com/repos/defunkt/cache_fu/issues/events{/number}","events_url":"https://api.github.com/repos/defunkt/cache_fu/events","assignees_url":"https://api.github.com/repos/defunkt/cache_fu/assignees{/user}","branches_url":"https://api.github.com/repos/defunkt/cache_fu/branches{/branch}","tags_url":"https://api.github.com/repos/defunkt/cache_fu/tags","blobs_url":"https://api.github.com/repos/defunkt/cache_fu/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/defunkt/cache_fu/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/defunkt/cache_fu/git/refs{/sha}","trees_url":"https://api.github.com/repos/defunkt/cache_fu/git/trees{/sha}","statuses_url":"https://api.github.com/repos/defunkt/cache_fu/statuses/{sha}","languages_url":"https://api.github.com/repos/defunkt/cache_fu/languages","stargazers_url":"https://api.github.com/repos/defunkt/cache_fu/stargazers","contributors_url":"https://api.github.com/repos/defunkt/cache_fu/contributors","subscribers_url":"https://api.github.com/repos/defunkt/cache_fu/subscribers","subscription_url":"https://api.github.com/repos/defunkt/cache_fu/subscription","commits_url":"https://api.github.com/repos/defunkt/cache_fu/commits{/sha}","git_commits_url":"https://api.github.com/repos/defunkt/cache_fu/git/commits{/sha}","comments_url":"https://api.github.com/repos/defunkt/cache_fu/comments{/number}","issue_comment_url":"https://api.github.com/repos/defunkt/cache_fu/issues/comments/{number}","contents_url":"https://api.github.com/repos/defunkt/cache_fu/contents/{+path}","compare_url":"https://api.github.com/repos/defunkt/cache_fu/compare/{base}...{head}","merges_url":"https://api.github.com/repos/defunkt/cache_fu/merges","archive_url":"https://api.github.com/repos/defunkt/cache_fu/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/defunkt/cache_fu/downloads","issues_url":"https://api.github.com/repos/defunkt/cache_fu/issues{/number}","pulls_url":"https://api.github.com/repos/defunkt/cache_fu/pulls{/number}","milestones_url":"https://api.github.com/repos/defunkt/cache_fu/milestones{/number}","notifications_url":"https://api.github.com/repos/defunkt/cache_fu/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/defunkt/cache_fu/labels{/name}"},{"id":95,"name":"phosphor","full_name":"KirinDave/phosphor","owner":{"login":"KirinDave","id":36,"avatar_url":"https://2.gravatar.com/avatar/d4fabd6c08ac228a3ff846d9d0d1580e?d=https%3A%2F%2Fidenticons.github.com%2F19ca14e7ea6328a42e0eb13d585e4c22.png","gravatar_id":"d4fabd6c08ac228a3ff846d9d0d1580e","url":"https://api.github.com/users/KirinDave","html_url":"https://github.com/KirinDave","followers_url":"https://api.github.com/users/KirinDave/followers","following_url":"https://api.github.com/users/KirinDave/following{/other_user}","gists_url":"https://api.github.com/users/KirinDave/gists{/gist_id}","starred_url":"https://api.github.com/users/KirinDave/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KirinDave/subscriptions","organizations_url":"https://api.github.com/users/KirinDave/orgs","repos_url":"https://api.github.com/users/KirinDave/repos","events_url":"https://api.github.com/users/KirinDave/events{/privacy}","received_events_url":"https://api.github.com/users/KirinDave/received_events","type":"User"},"private":false,"html_url":"https://github.com/KirinDave/phosphor","description":" A ruby library to inexpensively emit runtime events via Dtrace","fork":false,"url":"https://api.github.com/repos/KirinDave/phosphor","forks_url":"https://api.github.com/repos/KirinDave/phosphor/forks","keys_url":"https://api.github.com/repos/KirinDave/phosphor/keys{/key_id}","collaborators_url":"https://api.github.com/repos/KirinDave/phosphor/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/KirinDave/phosphor/teams","hooks_url":"https://api.github.com/repos/KirinDave/phosphor/hooks","issue_events_url":"https://api.github.com/repos/KirinDave/phosphor/issues/events{/number}","events_url":"https://api.github.com/repos/KirinDave/phosphor/events","assignees_url":"https://api.github.com/repos/KirinDave/phosphor/assignees{/user}","branches_url":"https://api.github.com/repos/KirinDave/phosphor/branches{/branch}","tags_url":"https://api.github.com/repos/KirinDave/phosphor/tags","blobs_url":"https://api.github.com/repos/KirinDave/phosphor/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/KirinDave/phosphor/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/KirinDave/phosphor/git/refs{/sha}","trees_url":"https://api.github.com/repos/KirinDave/phosphor/git/trees{/sha}","statuses_url":"https://api.github.com/repos/KirinDave/phosphor/statuses/{sha}","languages_url":"https://api.github.com/repos/KirinDave/phosphor/languages","stargazers_url":"https://api.github.com/repos/KirinDave/phosphor/stargazers","contributors_url":"https://api.github.com/repos/KirinDave/phosphor/contributors","subscribers_url":"https://api.github.com/repos/KirinDave/phosphor/subscribers","subscription_url":"https://api.github.com/repos/KirinDave/phosphor/subscription","commits_url":"https://api.github.com/repos/KirinDave/phosphor/commits{/sha}","git_commits_url":"https://api.github.com/repos/KirinDave/phosphor/git/commits{/sha}","comments_url":"https://api.github.com/repos/KirinDave/phosphor/comments{/number}","issue_comment_url":"https://api.github.com/repos/KirinDave/phosphor/issues/comments/{number}","contents_url":"https://api.github.com/repos/KirinDave/phosphor/contents/{+path}","compare_url":"https://api.github.com/repos/KirinDave/phosphor/compare/{base}...{head}","merges_url":"https://api.github.com/repos/KirinDave/phosphor/merges","archive_url":"https://api.github.com/repos/KirinDave/phosphor/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/KirinDave/phosphor/downloads","issues_url":"https://api.github.com/repos/KirinDave/phosphor/issues{/number}","pulls_url":"https://api.github.com/repos/KirinDave/phosphor/pulls{/number}","milestones_url":"https://api.github.com/repos/KirinDave/phosphor/milestones{/number}","notifications_url":"https://api.github.com/repos/KirinDave/phosphor/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/KirinDave/phosphor/labels{/name}"},{"id":98,"name":"sinatra","full_name":"bmizerany/sinatra","owner":{"login":"bmizerany","id":46,"avatar_url":"https://2.gravatar.com/avatar/1a250566b475961b9b36abf359950c76?d=https%3A%2F%2Fidenticons.github.com%2Fd9d4f495e875a2e075a1a4a6e1b9770f.png","gravatar_id":"1a250566b475961b9b36abf359950c76","url":"https://api.github.com/users/bmizerany","html_url":"https://github.com/bmizerany","followers_url":"https://api.github.com/users/bmizerany/followers","following_url":"https://api.github.com/users/bmizerany/following{/other_user}","gists_url":"https://api.github.com/users/bmizerany/gists{/gist_id}","starred_url":"https://api.github.com/users/bmizerany/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bmizerany/subscriptions","organizations_url":"https://api.github.com/users/bmizerany/orgs","repos_url":"https://api.github.com/users/bmizerany/repos","events_url":"https://api.github.com/users/bmizerany/events{/privacy}","received_events_url":"https://api.github.com/users/bmizerany/received_events","type":"User"},"private":false,"html_url":"https://github.com/bmizerany/sinatra","description":"(offically at github.com/sinatra/sinatra) Classy web-development dressed in a DSL","fork":false,"url":"https://api.github.com/repos/bmizerany/sinatra","forks_url":"https://api.github.com/repos/bmizerany/sinatra/forks","keys_url":"https://api.github.com/repos/bmizerany/sinatra/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bmizerany/sinatra/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bmizerany/sinatra/teams","hooks_url":"https://api.github.com/repos/bmizerany/sinatra/hooks","issue_events_url":"https://api.github.com/repos/bmizerany/sinatra/issues/events{/number}","events_url":"https://api.github.com/repos/bmizerany/sinatra/events","assignees_url":"https://api.github.com/repos/bmizerany/sinatra/assignees{/user}","branches_url":"https://api.github.com/repos/bmizerany/sinatra/branches{/branch}","tags_url":"https://api.github.com/repos/bmizerany/sinatra/tags","blobs_url":"https://api.github.com/repos/bmizerany/sinatra/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bmizerany/sinatra/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bmizerany/sinatra/git/refs{/sha}","trees_url":"https://api.github.com/repos/bmizerany/sinatra/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bmizerany/sinatra/statuses/{sha}","languages_url":"https://api.github.com/repos/bmizerany/sinatra/languages","stargazers_url":"https://api.github.com/repos/bmizerany/sinatra/stargazers","contributors_url":"https://api.github.com/repos/bmizerany/sinatra/contributors","subscribers_url":"https://api.github.com/repos/bmizerany/sinatra/subscribers","subscription_url":"https://api.github.com/repos/bmizerany/sinatra/subscription","commits_url":"https://api.github.com/repos/bmizerany/sinatra/commits{/sha}","git_commits_url":"https://api.github.com/repos/bmizerany/sinatra/git/commits{/sha}","comments_url":"https://api.github.com/repos/bmizerany/sinatra/comments{/number}","issue_comment_url":"https://api.github.com/repos/bmizerany/sinatra/issues/comments/{number}","contents_url":"https://api.github.com/repos/bmizerany/sinatra/contents/{+path}","compare_url":"https://api.github.com/repos/bmizerany/sinatra/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bmizerany/sinatra/merges","archive_url":"https://api.github.com/repos/bmizerany/sinatra/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bmizerany/sinatra/downloads","issues_url":"https://api.github.com/repos/bmizerany/sinatra/issues{/number}","pulls_url":"https://api.github.com/repos/bmizerany/sinatra/pulls{/number}","milestones_url":"https://api.github.com/repos/bmizerany/sinatra/milestones{/number}","notifications_url":"https://api.github.com/repos/bmizerany/sinatra/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bmizerany/sinatra/labels{/name}"},{"id":102,"name":"gsa-prototype","full_name":"jnewland/gsa-prototype","owner":{"login":"jnewland","id":47,"avatar_url":"https://1.gravatar.com/avatar/f317439da90c3176adc8938bcf5181ff?d=https%3A%2F%2Fidenticons.github.com%2F67c6a1e7ce56d3d6fa748ab6d9af3fd7.png","gravatar_id":"f317439da90c3176adc8938bcf5181ff","url":"https://api.github.com/users/jnewland","html_url":"https://github.com/jnewland","followers_url":"https://api.github.com/users/jnewland/followers","following_url":"https://api.github.com/users/jnewland/following{/other_user}","gists_url":"https://api.github.com/users/jnewland/gists{/gist_id}","starred_url":"https://api.github.com/users/jnewland/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jnewland/subscriptions","organizations_url":"https://api.github.com/users/jnewland/orgs","repos_url":"https://api.github.com/users/jnewland/repos","events_url":"https://api.github.com/users/jnewland/events{/privacy}","received_events_url":"https://api.github.com/users/jnewland/received_events","type":"User"},"private":false,"html_url":"https://github.com/jnewland/gsa-prototype","description":"Prototype/Javascript wrapper for the Google Search Appliance Search Protocol. Fancy cross-domain JSON support included.","fork":false,"url":"https://api.github.com/repos/jnewland/gsa-prototype","forks_url":"https://api.github.com/repos/jnewland/gsa-prototype/forks","keys_url":"https://api.github.com/repos/jnewland/gsa-prototype/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jnewland/gsa-prototype/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jnewland/gsa-prototype/teams","hooks_url":"https://api.github.com/repos/jnewland/gsa-prototype/hooks","issue_events_url":"https://api.github.com/repos/jnewland/gsa-prototype/issues/events{/number}","events_url":"https://api.github.com/repos/jnewland/gsa-prototype/events","assignees_url":"https://api.github.com/repos/jnewland/gsa-prototype/assignees{/user}","branches_url":"https://api.github.com/repos/jnewland/gsa-prototype/branches{/branch}","tags_url":"https://api.github.com/repos/jnewland/gsa-prototype/tags","blobs_url":"https://api.github.com/repos/jnewland/gsa-prototype/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jnewland/gsa-prototype/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jnewland/gsa-prototype/git/refs{/sha}","trees_url":"https://api.github.com/repos/jnewland/gsa-prototype/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jnewland/gsa-prototype/statuses/{sha}","languages_url":"https://api.github.com/repos/jnewland/gsa-prototype/languages","stargazers_url":"https://api.github.com/repos/jnewland/gsa-prototype/stargazers","contributors_url":"https://api.github.com/repos/jnewland/gsa-prototype/contributors","subscribers_url":"https://api.github.com/repos/jnewland/gsa-prototype/subscribers","subscription_url":"https://api.github.com/repos/jnewland/gsa-prototype/subscription","commits_url":"https://api.github.com/repos/jnewland/gsa-prototype/commits{/sha}","git_commits_url":"https://api.github.com/repos/jnewland/gsa-prototype/git/commits{/sha}","comments_url":"https://api.github.com/repos/jnewland/gsa-prototype/comments{/number}","issue_comment_url":"https://api.github.com/repos/jnewland/gsa-prototype/issues/comments/{number}","contents_url":"https://api.github.com/repos/jnewland/gsa-prototype/contents/{+path}","compare_url":"https://api.github.com/repos/jnewland/gsa-prototype/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jnewland/gsa-prototype/merges","archive_url":"https://api.github.com/repos/jnewland/gsa-prototype/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jnewland/gsa-prototype/downloads","issues_url":"https://api.github.com/repos/jnewland/gsa-prototype/issues{/number}","pulls_url":"https://api.github.com/repos/jnewland/gsa-prototype/pulls{/number}","milestones_url":"https://api.github.com/repos/jnewland/gsa-prototype/milestones{/number}","notifications_url":"https://api.github.com/repos/jnewland/gsa-prototype/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jnewland/gsa-prototype/labels{/name}"},{"id":105,"name":"duplikate","full_name":"technoweenie/duplikate","owner":{"login":"technoweenie","id":21,"avatar_url":"https://1.gravatar.com/avatar/821395fe70906c8290df7f18ac4ac6cf?d=https%3A%2F%2Fidenticons.github.com%2F3c59dc048e8850243be8079a5c74d079.png","gravatar_id":"821395fe70906c8290df7f18ac4ac6cf","url":"https://api.github.com/users/technoweenie","html_url":"https://github.com/technoweenie","followers_url":"https://api.github.com/users/technoweenie/followers","following_url":"https://api.github.com/users/technoweenie/following{/other_user}","gists_url":"https://api.github.com/users/technoweenie/gists{/gist_id}","starred_url":"https://api.github.com/users/technoweenie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/technoweenie/subscriptions","organizations_url":"https://api.github.com/users/technoweenie/orgs","repos_url":"https://api.github.com/users/technoweenie/repos","events_url":"https://api.github.com/users/technoweenie/events{/privacy}","received_events_url":"https://api.github.com/users/technoweenie/received_events","type":"User"},"private":false,"html_url":"https://github.com/technoweenie/duplikate","description":"Syncs one directory to another (example: a git project to an svn repo)","fork":false,"url":"https://api.github.com/repos/technoweenie/duplikate","forks_url":"https://api.github.com/repos/technoweenie/duplikate/forks","keys_url":"https://api.github.com/repos/technoweenie/duplikate/keys{/key_id}","collaborators_url":"https://api.github.com/repos/technoweenie/duplikate/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/technoweenie/duplikate/teams","hooks_url":"https://api.github.com/repos/technoweenie/duplikate/hooks","issue_events_url":"https://api.github.com/repos/technoweenie/duplikate/issues/events{/number}","events_url":"https://api.github.com/repos/technoweenie/duplikate/events","assignees_url":"https://api.github.com/repos/technoweenie/duplikate/assignees{/user}","branches_url":"https://api.github.com/repos/technoweenie/duplikate/branches{/branch}","tags_url":"https://api.github.com/repos/technoweenie/duplikate/tags","blobs_url":"https://api.github.com/repos/technoweenie/duplikate/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/technoweenie/duplikate/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/technoweenie/duplikate/git/refs{/sha}","trees_url":"https://api.github.com/repos/technoweenie/duplikate/git/trees{/sha}","statuses_url":"https://api.github.com/repos/technoweenie/duplikate/statuses/{sha}","languages_url":"https://api.github.com/repos/technoweenie/duplikate/languages","stargazers_url":"https://api.github.com/repos/technoweenie/duplikate/stargazers","contributors_url":"https://api.github.com/repos/technoweenie/duplikate/contributors","subscribers_url":"https://api.github.com/repos/technoweenie/duplikate/subscribers","subscription_url":"https://api.github.com/repos/technoweenie/duplikate/subscription","commits_url":"https://api.github.com/repos/technoweenie/duplikate/commits{/sha}","git_commits_url":"https://api.github.com/repos/technoweenie/duplikate/git/commits{/sha}","comments_url":"https://api.github.com/repos/technoweenie/duplikate/comments{/number}","issue_comment_url":"https://api.github.com/repos/technoweenie/duplikate/issues/comments/{number}","contents_url":"https://api.github.com/repos/technoweenie/duplikate/contents/{+path}","compare_url":"https://api.github.com/repos/technoweenie/duplikate/compare/{base}...{head}","merges_url":"https://api.github.com/repos/technoweenie/duplikate/merges","archive_url":"https://api.github.com/repos/technoweenie/duplikate/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/technoweenie/duplikate/downloads","issues_url":"https://api.github.com/repos/technoweenie/duplikate/issues{/number}","pulls_url":"https://api.github.com/repos/technoweenie/duplikate/pulls{/number}","milestones_url":"https://api.github.com/repos/technoweenie/duplikate/milestones{/number}","notifications_url":"https://api.github.com/repos/technoweenie/duplikate/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/technoweenie/duplikate/labels{/name}"},{"id":118,"name":"lazy_record","full_name":"jnewland/lazy_record","owner":{"login":"jnewland","id":47,"avatar_url":"https://1.gravatar.com/avatar/f317439da90c3176adc8938bcf5181ff?d=https%3A%2F%2Fidenticons.github.com%2F67c6a1e7ce56d3d6fa748ab6d9af3fd7.png","gravatar_id":"f317439da90c3176adc8938bcf5181ff","url":"https://api.github.com/users/jnewland","html_url":"https://github.com/jnewland","followers_url":"https://api.github.com/users/jnewland/followers","following_url":"https://api.github.com/users/jnewland/following{/other_user}","gists_url":"https://api.github.com/users/jnewland/gists{/gist_id}","starred_url":"https://api.github.com/users/jnewland/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jnewland/subscriptions","organizations_url":"https://api.github.com/users/jnewland/orgs","repos_url":"https://api.github.com/users/jnewland/repos","events_url":"https://api.github.com/users/jnewland/events{/privacy}","received_events_url":"https://api.github.com/users/jnewland/received_events","type":"User"},"private":false,"html_url":"https://github.com/jnewland/lazy_record","description":"Proof of concept Lazy-Loading for ActiveRecord. Inspired by the 'kickers' of Ambition.","fork":false,"url":"https://api.github.com/repos/jnewland/lazy_record","forks_url":"https://api.github.com/repos/jnewland/lazy_record/forks","keys_url":"https://api.github.com/repos/jnewland/lazy_record/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jnewland/lazy_record/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jnewland/lazy_record/teams","hooks_url":"https://api.github.com/repos/jnewland/lazy_record/hooks","issue_events_url":"https://api.github.com/repos/jnewland/lazy_record/issues/events{/number}","events_url":"https://api.github.com/repos/jnewland/lazy_record/events","assignees_url":"https://api.github.com/repos/jnewland/lazy_record/assignees{/user}","branches_url":"https://api.github.com/repos/jnewland/lazy_record/branches{/branch}","tags_url":"https://api.github.com/repos/jnewland/lazy_record/tags","blobs_url":"https://api.github.com/repos/jnewland/lazy_record/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jnewland/lazy_record/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jnewland/lazy_record/git/refs{/sha}","trees_url":"https://api.github.com/repos/jnewland/lazy_record/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jnewland/lazy_record/statuses/{sha}","languages_url":"https://api.github.com/repos/jnewland/lazy_record/languages","stargazers_url":"https://api.github.com/repos/jnewland/lazy_record/stargazers","contributors_url":"https://api.github.com/repos/jnewland/lazy_record/contributors","subscribers_url":"https://api.github.com/repos/jnewland/lazy_record/subscribers","subscription_url":"https://api.github.com/repos/jnewland/lazy_record/subscription","commits_url":"https://api.github.com/repos/jnewland/lazy_record/commits{/sha}","git_commits_url":"https://api.github.com/repos/jnewland/lazy_record/git/commits{/sha}","comments_url":"https://api.github.com/repos/jnewland/lazy_record/comments{/number}","issue_comment_url":"https://api.github.com/repos/jnewland/lazy_record/issues/comments/{number}","contents_url":"https://api.github.com/repos/jnewland/lazy_record/contents/{+path}","compare_url":"https://api.github.com/repos/jnewland/lazy_record/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jnewland/lazy_record/merges","archive_url":"https://api.github.com/repos/jnewland/lazy_record/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jnewland/lazy_record/downloads","issues_url":"https://api.github.com/repos/jnewland/lazy_record/issues{/number}","pulls_url":"https://api.github.com/repos/jnewland/lazy_record/pulls{/number}","milestones_url":"https://api.github.com/repos/jnewland/lazy_record/milestones{/number}","notifications_url":"https://api.github.com/repos/jnewland/lazy_record/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jnewland/lazy_record/labels{/name}"},{"id":119,"name":"gsa-feeds","full_name":"jnewland/gsa-feeds","owner":{"login":"jnewland","id":47,"avatar_url":"https://1.gravatar.com/avatar/f317439da90c3176adc8938bcf5181ff?d=https%3A%2F%2Fidenticons.github.com%2F67c6a1e7ce56d3d6fa748ab6d9af3fd7.png","gravatar_id":"f317439da90c3176adc8938bcf5181ff","url":"https://api.github.com/users/jnewland","html_url":"https://github.com/jnewland","followers_url":"https://api.github.com/users/jnewland/followers","following_url":"https://api.github.com/users/jnewland/following{/other_user}","gists_url":"https://api.github.com/users/jnewland/gists{/gist_id}","starred_url":"https://api.github.com/users/jnewland/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jnewland/subscriptions","organizations_url":"https://api.github.com/users/jnewland/orgs","repos_url":"https://api.github.com/users/jnewland/repos","events_url":"https://api.github.com/users/jnewland/events{/privacy}","received_events_url":"https://api.github.com/users/jnewland/received_events","type":"User"},"private":false,"html_url":"https://github.com/jnewland/gsa-feeds","description":"A Ruby wrapper for the Google Search Appliance Feeds Protocol","fork":false,"url":"https://api.github.com/repos/jnewland/gsa-feeds","forks_url":"https://api.github.com/repos/jnewland/gsa-feeds/forks","keys_url":"https://api.github.com/repos/jnewland/gsa-feeds/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jnewland/gsa-feeds/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jnewland/gsa-feeds/teams","hooks_url":"https://api.github.com/repos/jnewland/gsa-feeds/hooks","issue_events_url":"https://api.github.com/repos/jnewland/gsa-feeds/issues/events{/number}","events_url":"https://api.github.com/repos/jnewland/gsa-feeds/events","assignees_url":"https://api.github.com/repos/jnewland/gsa-feeds/assignees{/user}","branches_url":"https://api.github.com/repos/jnewland/gsa-feeds/branches{/branch}","tags_url":"https://api.github.com/repos/jnewland/gsa-feeds/tags","blobs_url":"https://api.github.com/repos/jnewland/gsa-feeds/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jnewland/gsa-feeds/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jnewland/gsa-feeds/git/refs{/sha}","trees_url":"https://api.github.com/repos/jnewland/gsa-feeds/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jnewland/gsa-feeds/statuses/{sha}","languages_url":"https://api.github.com/repos/jnewland/gsa-feeds/languages","stargazers_url":"https://api.github.com/repos/jnewland/gsa-feeds/stargazers","contributors_url":"https://api.github.com/repos/jnewland/gsa-feeds/contributors","subscribers_url":"https://api.github.com/repos/jnewland/gsa-feeds/subscribers","subscription_url":"https://api.github.com/repos/jnewland/gsa-feeds/subscription","commits_url":"https://api.github.com/repos/jnewland/gsa-feeds/commits{/sha}","git_commits_url":"https://api.github.com/repos/jnewland/gsa-feeds/git/commits{/sha}","comments_url":"https://api.github.com/repos/jnewland/gsa-feeds/comments{/number}","issue_comment_url":"https://api.github.com/repos/jnewland/gsa-feeds/issues/comments/{number}","contents_url":"https://api.github.com/repos/jnewland/gsa-feeds/contents/{+path}","compare_url":"https://api.github.com/repos/jnewland/gsa-feeds/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jnewland/gsa-feeds/merges","archive_url":"https://api.github.com/repos/jnewland/gsa-feeds/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jnewland/gsa-feeds/downloads","issues_url":"https://api.github.com/repos/jnewland/gsa-feeds/issues{/number}","pulls_url":"https://api.github.com/repos/jnewland/gsa-feeds/pulls{/number}","milestones_url":"https://api.github.com/repos/jnewland/gsa-feeds/milestones{/number}","notifications_url":"https://api.github.com/repos/jnewland/gsa-feeds/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jnewland/gsa-feeds/labels{/name}"},{"id":120,"name":"votigoto","full_name":"jnewland/votigoto","owner":{"login":"jnewland","id":47,"avatar_url":"https://1.gravatar.com/avatar/f317439da90c3176adc8938bcf5181ff?d=https%3A%2F%2Fidenticons.github.com%2F67c6a1e7ce56d3d6fa748ab6d9af3fd7.png","gravatar_id":"f317439da90c3176adc8938bcf5181ff","url":"https://api.github.com/users/jnewland","html_url":"https://github.com/jnewland","followers_url":"https://api.github.com/users/jnewland/followers","following_url":"https://api.github.com/users/jnewland/following{/other_user}","gists_url":"https://api.github.com/users/jnewland/gists{/gist_id}","starred_url":"https://api.github.com/users/jnewland/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jnewland/subscriptions","organizations_url":"https://api.github.com/users/jnewland/orgs","repos_url":"https://api.github.com/users/jnewland/repos","events_url":"https://api.github.com/users/jnewland/events{/privacy}","received_events_url":"https://api.github.com/users/jnewland/received_events","type":"User"},"private":false,"html_url":"https://github.com/jnewland/votigoto","description":"Ruby API wrapper for the TiVoToGo protocol. Use it to access a list of recorded shows and programs on your Tivo.","fork":false,"url":"https://api.github.com/repos/jnewland/votigoto","forks_url":"https://api.github.com/repos/jnewland/votigoto/forks","keys_url":"https://api.github.com/repos/jnewland/votigoto/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jnewland/votigoto/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jnewland/votigoto/teams","hooks_url":"https://api.github.com/repos/jnewland/votigoto/hooks","issue_events_url":"https://api.github.com/repos/jnewland/votigoto/issues/events{/number}","events_url":"https://api.github.com/repos/jnewland/votigoto/events","assignees_url":"https://api.github.com/repos/jnewland/votigoto/assignees{/user}","branches_url":"https://api.github.com/repos/jnewland/votigoto/branches{/branch}","tags_url":"https://api.github.com/repos/jnewland/votigoto/tags","blobs_url":"https://api.github.com/repos/jnewland/votigoto/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jnewland/votigoto/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jnewland/votigoto/git/refs{/sha}","trees_url":"https://api.github.com/repos/jnewland/votigoto/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jnewland/votigoto/statuses/{sha}","languages_url":"https://api.github.com/repos/jnewland/votigoto/languages","stargazers_url":"https://api.github.com/repos/jnewland/votigoto/stargazers","contributors_url":"https://api.github.com/repos/jnewland/votigoto/contributors","subscribers_url":"https://api.github.com/repos/jnewland/votigoto/subscribers","subscription_url":"https://api.github.com/repos/jnewland/votigoto/subscription","commits_url":"https://api.github.com/repos/jnewland/votigoto/commits{/sha}","git_commits_url":"https://api.github.com/repos/jnewland/votigoto/git/commits{/sha}","comments_url":"https://api.github.com/repos/jnewland/votigoto/comments{/number}","issue_comment_url":"https://api.github.com/repos/jnewland/votigoto/issues/comments/{number}","contents_url":"https://api.github.com/repos/jnewland/votigoto/contents/{+path}","compare_url":"https://api.github.com/repos/jnewland/votigoto/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jnewland/votigoto/merges","archive_url":"https://api.github.com/repos/jnewland/votigoto/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jnewland/votigoto/downloads","issues_url":"https://api.github.com/repos/jnewland/votigoto/issues{/number}","pulls_url":"https://api.github.com/repos/jnewland/votigoto/pulls{/number}","milestones_url":"https://api.github.com/repos/jnewland/votigoto/milestones{/number}","notifications_url":"https://api.github.com/repos/jnewland/votigoto/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jnewland/votigoto/labels{/name}"},{"id":127,"name":"mofo","full_name":"defunkt/mofo","owner":{"login":"defunkt","id":2,"avatar_url":"https://2.gravatar.com/avatar/b8dbb1987e8e5318584865f880036796?d=https%3A%2F%2Fidenticons.github.com%2Fc81e728d9d4c2f636f067f89cc14862c.png","gravatar_id":"b8dbb1987e8e5318584865f880036796","url":"https://api.github.com/users/defunkt","html_url":"https://github.com/defunkt","followers_url":"https://api.github.com/users/defunkt/followers","following_url":"https://api.github.com/users/defunkt/following{/other_user}","gists_url":"https://api.github.com/users/defunkt/gists{/gist_id}","starred_url":"https://api.github.com/users/defunkt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/defunkt/subscriptions","organizations_url":"https://api.github.com/users/defunkt/orgs","repos_url":"https://api.github.com/users/defunkt/repos","events_url":"https://api.github.com/users/defunkt/events{/privacy}","received_events_url":"https://api.github.com/users/defunkt/received_events","type":"User"},"private":false,"html_url":"https://github.com/defunkt/mofo","description":"Mofo was a fast and simple microformat parser, based on a concise DSL and Hpricot. No longer maintained.","fork":false,"url":"https://api.github.com/repos/defunkt/mofo","forks_url":"https://api.github.com/repos/defunkt/mofo/forks","keys_url":"https://api.github.com/repos/defunkt/mofo/keys{/key_id}","collaborators_url":"https://api.github.com/repos/defunkt/mofo/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/defunkt/mofo/teams","hooks_url":"https://api.github.com/repos/defunkt/mofo/hooks","issue_events_url":"https://api.github.com/repos/defunkt/mofo/issues/events{/number}","events_url":"https://api.github.com/repos/defunkt/mofo/events","assignees_url":"https://api.github.com/repos/defunkt/mofo/assignees{/user}","branches_url":"https://api.github.com/repos/defunkt/mofo/branches{/branch}","tags_url":"https://api.github.com/repos/defunkt/mofo/tags","blobs_url":"https://api.github.com/repos/defunkt/mofo/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/defunkt/mofo/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/defunkt/mofo/git/refs{/sha}","trees_url":"https://api.github.com/repos/defunkt/mofo/git/trees{/sha}","statuses_url":"https://api.github.com/repos/defunkt/mofo/statuses/{sha}","languages_url":"https://api.github.com/repos/defunkt/mofo/languages","stargazers_url":"https://api.github.com/repos/defunkt/mofo/stargazers","contributors_url":"https://api.github.com/repos/defunkt/mofo/contributors","subscribers_url":"https://api.github.com/repos/defunkt/mofo/subscribers","subscription_url":"https://api.github.com/repos/defunkt/mofo/subscription","commits_url":"https://api.github.com/repos/defunkt/mofo/commits{/sha}","git_commits_url":"https://api.github.com/repos/defunkt/mofo/git/commits{/sha}","comments_url":"https://api.github.com/repos/defunkt/mofo/comments{/number}","issue_comment_url":"https://api.github.com/repos/defunkt/mofo/issues/comments/{number}","contents_url":"https://api.github.com/repos/defunkt/mofo/contents/{+path}","compare_url":"https://api.github.com/repos/defunkt/mofo/compare/{base}...{head}","merges_url":"https://api.github.com/repos/defunkt/mofo/merges","archive_url":"https://api.github.com/repos/defunkt/mofo/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/defunkt/mofo/downloads","issues_url":"https://api.github.com/repos/defunkt/mofo/issues{/number}","pulls_url":"https://api.github.com/repos/defunkt/mofo/pulls{/number}","milestones_url":"https://api.github.com/repos/defunkt/mofo/milestones{/number}","notifications_url":"https://api.github.com/repos/defunkt/mofo/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/defunkt/mofo/labels{/name}"},{"id":129,"name":"xhtmlize","full_name":"jnewland/xhtmlize","owner":{"login":"jnewland","id":47,"avatar_url":"https://1.gravatar.com/avatar/f317439da90c3176adc8938bcf5181ff?d=https%3A%2F%2Fidenticons.github.com%2F67c6a1e7ce56d3d6fa748ab6d9af3fd7.png","gravatar_id":"f317439da90c3176adc8938bcf5181ff","url":"https://api.github.com/users/jnewland","html_url":"https://github.com/jnewland","followers_url":"https://api.github.com/users/jnewland/followers","following_url":"https://api.github.com/users/jnewland/following{/other_user}","gists_url":"https://api.github.com/users/jnewland/gists{/gist_id}","starred_url":"https://api.github.com/users/jnewland/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jnewland/subscriptions","organizations_url":"https://api.github.com/users/jnewland/orgs","repos_url":"https://api.github.com/users/jnewland/repos","events_url":"https://api.github.com/users/jnewland/events{/privacy}","received_events_url":"https://api.github.com/users/jnewland/received_events","type":"User"},"private":false,"html_url":"https://github.com/jnewland/xhtmlize","description":"Rails helper to XHTML-ize chunks of user submitted HTML. For the standardista in all of us","fork":false,"url":"https://api.github.com/repos/jnewland/xhtmlize","forks_url":"https://api.github.com/repos/jnewland/xhtmlize/forks","keys_url":"https://api.github.com/repos/jnewland/xhtmlize/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jnewland/xhtmlize/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jnewland/xhtmlize/teams","hooks_url":"https://api.github.com/repos/jnewland/xhtmlize/hooks","issue_events_url":"https://api.github.com/repos/jnewland/xhtmlize/issues/events{/number}","events_url":"https://api.github.com/repos/jnewland/xhtmlize/events","assignees_url":"https://api.github.com/repos/jnewland/xhtmlize/assignees{/user}","branches_url":"https://api.github.com/repos/jnewland/xhtmlize/branches{/branch}","tags_url":"https://api.github.com/repos/jnewland/xhtmlize/tags","blobs_url":"https://api.github.com/repos/jnewland/xhtmlize/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jnewland/xhtmlize/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jnewland/xhtmlize/git/refs{/sha}","trees_url":"https://api.github.com/repos/jnewland/xhtmlize/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jnewland/xhtmlize/statuses/{sha}","languages_url":"https://api.github.com/repos/jnewland/xhtmlize/languages","stargazers_url":"https://api.github.com/repos/jnewland/xhtmlize/stargazers","contributors_url":"https://api.github.com/repos/jnewland/xhtmlize/contributors","subscribers_url":"https://api.github.com/repos/jnewland/xhtmlize/subscribers","subscription_url":"https://api.github.com/repos/jnewland/xhtmlize/subscription","commits_url":"https://api.github.com/repos/jnewland/xhtmlize/commits{/sha}","git_commits_url":"https://api.github.com/repos/jnewland/xhtmlize/git/commits{/sha}","comments_url":"https://api.github.com/repos/jnewland/xhtmlize/comments{/number}","issue_comment_url":"https://api.github.com/repos/jnewland/xhtmlize/issues/comments/{number}","contents_url":"https://api.github.com/repos/jnewland/xhtmlize/contents/{+path}","compare_url":"https://api.github.com/repos/jnewland/xhtmlize/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jnewland/xhtmlize/merges","archive_url":"https://api.github.com/repos/jnewland/xhtmlize/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jnewland/xhtmlize/downloads","issues_url":"https://api.github.com/repos/jnewland/xhtmlize/issues{/number}","pulls_url":"https://api.github.com/repos/jnewland/xhtmlize/pulls{/number}","milestones_url":"https://api.github.com/repos/jnewland/xhtmlize/milestones{/number}","notifications_url":"https://api.github.com/repos/jnewland/xhtmlize/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jnewland/xhtmlize/labels{/name}"},{"id":130,"name":"ruby-git","full_name":"schacon/ruby-git","owner":{"login":"schacon","id":70,"avatar_url":"https://2.gravatar.com/avatar/9375a9529679f1b42b567a640d775e7d?d=https%3A%2F%2Fidenticons.github.com%2F7cbbc409ec990f19c78c75bd1e06f215.png","gravatar_id":"9375a9529679f1b42b567a640d775e7d","url":"https://api.github.com/users/schacon","html_url":"https://github.com/schacon","followers_url":"https://api.github.com/users/schacon/followers","following_url":"https://api.github.com/users/schacon/following{/other_user}","gists_url":"https://api.github.com/users/schacon/gists{/gist_id}","starred_url":"https://api.github.com/users/schacon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/schacon/subscriptions","organizations_url":"https://api.github.com/users/schacon/orgs","repos_url":"https://api.github.com/users/schacon/repos","events_url":"https://api.github.com/users/schacon/events{/privacy}","received_events_url":"https://api.github.com/users/schacon/received_events","type":"User"},"private":false,"html_url":"https://github.com/schacon/ruby-git","description":"Ruby/Git is a Ruby library that can be used to create, read and manipulate Git repositories by wrapping system calls to the git binary.","fork":false,"url":"https://api.github.com/repos/schacon/ruby-git","forks_url":"https://api.github.com/repos/schacon/ruby-git/forks","keys_url":"https://api.github.com/repos/schacon/ruby-git/keys{/key_id}","collaborators_url":"https://api.github.com/repos/schacon/ruby-git/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/schacon/ruby-git/teams","hooks_url":"https://api.github.com/repos/schacon/ruby-git/hooks","issue_events_url":"https://api.github.com/repos/schacon/ruby-git/issues/events{/number}","events_url":"https://api.github.com/repos/schacon/ruby-git/events","assignees_url":"https://api.github.com/repos/schacon/ruby-git/assignees{/user}","branches_url":"https://api.github.com/repos/schacon/ruby-git/branches{/branch}","tags_url":"https://api.github.com/repos/schacon/ruby-git/tags","blobs_url":"https://api.github.com/repos/schacon/ruby-git/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/schacon/ruby-git/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/schacon/ruby-git/git/refs{/sha}","trees_url":"https://api.github.com/repos/schacon/ruby-git/git/trees{/sha}","statuses_url":"https://api.github.com/repos/schacon/ruby-git/statuses/{sha}","languages_url":"https://api.github.com/repos/schacon/ruby-git/languages","stargazers_url":"https://api.github.com/repos/schacon/ruby-git/stargazers","contributors_url":"https://api.github.com/repos/schacon/ruby-git/contributors","subscribers_url":"https://api.github.com/repos/schacon/ruby-git/subscribers","subscription_url":"https://api.github.com/repos/schacon/ruby-git/subscription","commits_url":"https://api.github.com/repos/schacon/ruby-git/commits{/sha}","git_commits_url":"https://api.github.com/repos/schacon/ruby-git/git/commits{/sha}","comments_url":"https://api.github.com/repos/schacon/ruby-git/comments{/number}","issue_comment_url":"https://api.github.com/repos/schacon/ruby-git/issues/comments/{number}","contents_url":"https://api.github.com/repos/schacon/ruby-git/contents/{+path}","compare_url":"https://api.github.com/repos/schacon/ruby-git/compare/{base}...{head}","merges_url":"https://api.github.com/repos/schacon/ruby-git/merges","archive_url":"https://api.github.com/repos/schacon/ruby-git/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/schacon/ruby-git/downloads","issues_url":"https://api.github.com/repos/schacon/ruby-git/issues{/number}","pulls_url":"https://api.github.com/repos/schacon/ruby-git/pulls{/number}","milestones_url":"https://api.github.com/repos/schacon/ruby-git/milestones{/number}","notifications_url":"https://api.github.com/repos/schacon/ruby-git/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/schacon/ruby-git/labels{/name}"},{"id":131,"name":"bmhsearch","full_name":"ezmobius/bmhsearch","owner":{"login":"ezmobius","id":5,"avatar_url":"https://1.gravatar.com/avatar/6a3a6e3da2d97be8df476187ff151f04?d=https%3A%2F%2Fidenticons.github.com%2Fe4da3b7fbbce2345d7772b0674a318d5.png","gravatar_id":"6a3a6e3da2d97be8df476187ff151f04","url":"https://api.github.com/users/ezmobius","html_url":"https://github.com/ezmobius","followers_url":"https://api.github.com/users/ezmobius/followers","following_url":"https://api.github.com/users/ezmobius/following{/other_user}","gists_url":"https://api.github.com/users/ezmobius/gists{/gist_id}","starred_url":"https://api.github.com/users/ezmobius/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ezmobius/subscriptions","organizations_url":"https://api.github.com/users/ezmobius/orgs","repos_url":"https://api.github.com/users/ezmobius/repos","events_url":"https://api.github.com/users/ezmobius/events{/privacy}","received_events_url":"https://api.github.com/users/ezmobius/received_events","type":"User"},"private":false,"html_url":"https://github.com/ezmobius/bmhsearch","description":"Fast string searcher, useful for multi-part post parsing","fork":false,"url":"https://api.github.com/repos/ezmobius/bmhsearch","forks_url":"https://api.github.com/repos/ezmobius/bmhsearch/forks","keys_url":"https://api.github.com/repos/ezmobius/bmhsearch/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ezmobius/bmhsearch/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ezmobius/bmhsearch/teams","hooks_url":"https://api.github.com/repos/ezmobius/bmhsearch/hooks","issue_events_url":"https://api.github.com/repos/ezmobius/bmhsearch/issues/events{/number}","events_url":"https://api.github.com/repos/ezmobius/bmhsearch/events","assignees_url":"https://api.github.com/repos/ezmobius/bmhsearch/assignees{/user}","branches_url":"https://api.github.com/repos/ezmobius/bmhsearch/branches{/branch}","tags_url":"https://api.github.com/repos/ezmobius/bmhsearch/tags","blobs_url":"https://api.github.com/repos/ezmobius/bmhsearch/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ezmobius/bmhsearch/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ezmobius/bmhsearch/git/refs{/sha}","trees_url":"https://api.github.com/repos/ezmobius/bmhsearch/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ezmobius/bmhsearch/statuses/{sha}","languages_url":"https://api.github.com/repos/ezmobius/bmhsearch/languages","stargazers_url":"https://api.github.com/repos/ezmobius/bmhsearch/stargazers","contributors_url":"https://api.github.com/repos/ezmobius/bmhsearch/contributors","subscribers_url":"https://api.github.com/repos/ezmobius/bmhsearch/subscribers","subscription_url":"https://api.github.com/repos/ezmobius/bmhsearch/subscription","commits_url":"https://api.github.com/repos/ezmobius/bmhsearch/commits{/sha}","git_commits_url":"https://api.github.com/repos/ezmobius/bmhsearch/git/commits{/sha}","comments_url":"https://api.github.com/repos/ezmobius/bmhsearch/comments{/number}","issue_comment_url":"https://api.github.com/repos/ezmobius/bmhsearch/issues/comments/{number}","contents_url":"https://api.github.com/repos/ezmobius/bmhsearch/contents/{+path}","compare_url":"https://api.github.com/repos/ezmobius/bmhsearch/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ezmobius/bmhsearch/merges","archive_url":"https://api.github.com/repos/ezmobius/bmhsearch/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ezmobius/bmhsearch/downloads","issues_url":"https://api.github.com/repos/ezmobius/bmhsearch/issues{/number}","pulls_url":"https://api.github.com/repos/ezmobius/bmhsearch/pulls{/number}","milestones_url":"https://api.github.com/repos/ezmobius/bmhsearch/milestones{/number}","notifications_url":"https://api.github.com/repos/ezmobius/bmhsearch/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ezmobius/bmhsearch/labels{/name}"},{"id":137,"name":"mofo","full_name":"uggedal/mofo","owner":{"login":"uggedal","id":71,"avatar_url":"https://1.gravatar.com/avatar/0339e3df937c32000f9e2cf1de04298d?d=https%3A%2F%2Fidenticons.github.com%2Fe2c420d928d4bf8ce0ff2ec19b371514.png","gravatar_id":"0339e3df937c32000f9e2cf1de04298d","url":"https://api.github.com/users/uggedal","html_url":"https://github.com/uggedal","followers_url":"https://api.github.com/users/uggedal/followers","following_url":"https://api.github.com/users/uggedal/following{/other_user}","gists_url":"https://api.github.com/users/uggedal/gists{/gist_id}","starred_url":"https://api.github.com/users/uggedal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/uggedal/subscriptions","organizations_url":"https://api.github.com/users/uggedal/orgs","repos_url":"https://api.github.com/users/uggedal/repos","events_url":"https://api.github.com/users/uggedal/events{/privacy}","received_events_url":"https://api.github.com/users/uggedal/received_events","type":"User"},"private":false,"html_url":"https://github.com/uggedal/mofo","description":"Mofo is a fast and simple microformat parser, based on a concise DSL and Hpricot.","fork":true,"url":"https://api.github.com/repos/uggedal/mofo","forks_url":"https://api.github.com/repos/uggedal/mofo/forks","keys_url":"https://api.github.com/repos/uggedal/mofo/keys{/key_id}","collaborators_url":"https://api.github.com/repos/uggedal/mofo/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/uggedal/mofo/teams","hooks_url":"https://api.github.com/repos/uggedal/mofo/hooks","issue_events_url":"https://api.github.com/repos/uggedal/mofo/issues/events{/number}","events_url":"https://api.github.com/repos/uggedal/mofo/events","assignees_url":"https://api.github.com/repos/uggedal/mofo/assignees{/user}","branches_url":"https://api.github.com/repos/uggedal/mofo/branches{/branch}","tags_url":"https://api.github.com/repos/uggedal/mofo/tags","blobs_url":"https://api.github.com/repos/uggedal/mofo/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/uggedal/mofo/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/uggedal/mofo/git/refs{/sha}","trees_url":"https://api.github.com/repos/uggedal/mofo/git/trees{/sha}","statuses_url":"https://api.github.com/repos/uggedal/mofo/statuses/{sha}","languages_url":"https://api.github.com/repos/uggedal/mofo/languages","stargazers_url":"https://api.github.com/repos/uggedal/mofo/stargazers","contributors_url":"https://api.github.com/repos/uggedal/mofo/contributors","subscribers_url":"https://api.github.com/repos/uggedal/mofo/subscribers","subscription_url":"https://api.github.com/repos/uggedal/mofo/subscription","commits_url":"https://api.github.com/repos/uggedal/mofo/commits{/sha}","git_commits_url":"https://api.github.com/repos/uggedal/mofo/git/commits{/sha}","comments_url":"https://api.github.com/repos/uggedal/mofo/comments{/number}","issue_comment_url":"https://api.github.com/repos/uggedal/mofo/issues/comments/{number}","contents_url":"https://api.github.com/repos/uggedal/mofo/contents/{+path}","compare_url":"https://api.github.com/repos/uggedal/mofo/compare/{base}...{head}","merges_url":"https://api.github.com/repos/uggedal/mofo/merges","archive_url":"https://api.github.com/repos/uggedal/mofo/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/uggedal/mofo/downloads","issues_url":"https://api.github.com/repos/uggedal/mofo/issues{/number}","pulls_url":"https://api.github.com/repos/uggedal/mofo/pulls{/number}","milestones_url":"https://api.github.com/repos/uggedal/mofo/milestones{/number}","notifications_url":"https://api.github.com/repos/uggedal/mofo/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/uggedal/mofo/labels{/name}"},{"id":139,"name":"simply_versioned","full_name":"mmower/simply_versioned","owner":{"login":"mmower","id":74,"avatar_url":"https://2.gravatar.com/avatar/9d89c1c7a998c1f6f6e3fa9ac1753d29?d=https%3A%2F%2Fidenticons.github.com%2Fad61ab143223efbc24c7d2583be69251.png","gravatar_id":"9d89c1c7a998c1f6f6e3fa9ac1753d29","url":"https://api.github.com/users/mmower","html_url":"https://github.com/mmower","followers_url":"https://api.github.com/users/mmower/followers","following_url":"https://api.github.com/users/mmower/following{/other_user}","gists_url":"https://api.github.com/users/mmower/gists{/gist_id}","starred_url":"https://api.github.com/users/mmower/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mmower/subscriptions","organizations_url":"https://api.github.com/users/mmower/orgs","repos_url":"https://api.github.com/users/mmower/repos","events_url":"https://api.github.com/users/mmower/events{/privacy}","received_events_url":"https://api.github.com/users/mmower/received_events","type":"User"},"private":false,"html_url":"https://github.com/mmower/simply_versioned","description":"A simple, non-invasive, approach to versioning ActiveRecord models","fork":false,"url":"https://api.github.com/repos/mmower/simply_versioned","forks_url":"https://api.github.com/repos/mmower/simply_versioned/forks","keys_url":"https://api.github.com/repos/mmower/simply_versioned/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mmower/simply_versioned/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mmower/simply_versioned/teams","hooks_url":"https://api.github.com/repos/mmower/simply_versioned/hooks","issue_events_url":"https://api.github.com/repos/mmower/simply_versioned/issues/events{/number}","events_url":"https://api.github.com/repos/mmower/simply_versioned/events","assignees_url":"https://api.github.com/repos/mmower/simply_versioned/assignees{/user}","branches_url":"https://api.github.com/repos/mmower/simply_versioned/branches{/branch}","tags_url":"https://api.github.com/repos/mmower/simply_versioned/tags","blobs_url":"https://api.github.com/repos/mmower/simply_versioned/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mmower/simply_versioned/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mmower/simply_versioned/git/refs{/sha}","trees_url":"https://api.github.com/repos/mmower/simply_versioned/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mmower/simply_versioned/statuses/{sha}","languages_url":"https://api.github.com/repos/mmower/simply_versioned/languages","stargazers_url":"https://api.github.com/repos/mmower/simply_versioned/stargazers","contributors_url":"https://api.github.com/repos/mmower/simply_versioned/contributors","subscribers_url":"https://api.github.com/repos/mmower/simply_versioned/subscribers","subscription_url":"https://api.github.com/repos/mmower/simply_versioned/subscription","commits_url":"https://api.github.com/repos/mmower/simply_versioned/commits{/sha}","git_commits_url":"https://api.github.com/repos/mmower/simply_versioned/git/commits{/sha}","comments_url":"https://api.github.com/repos/mmower/simply_versioned/comments{/number}","issue_comment_url":"https://api.github.com/repos/mmower/simply_versioned/issues/comments/{number}","contents_url":"https://api.github.com/repos/mmower/simply_versioned/contents/{+path}","compare_url":"https://api.github.com/repos/mmower/simply_versioned/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mmower/simply_versioned/merges","archive_url":"https://api.github.com/repos/mmower/simply_versioned/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mmower/simply_versioned/downloads","issues_url":"https://api.github.com/repos/mmower/simply_versioned/issues{/number}","pulls_url":"https://api.github.com/repos/mmower/simply_versioned/pulls{/number}","milestones_url":"https://api.github.com/repos/mmower/simply_versioned/milestones{/number}","notifications_url":"https://api.github.com/repos/mmower/simply_versioned/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mmower/simply_versioned/labels{/name}"},{"id":140,"name":"gchart","full_name":"abhay/gchart","owner":{"login":"abhay","id":75,"avatar_url":"https://1.gravatar.com/avatar/012b62cf82e7956ffe8f47086be831de?d=https%3A%2F%2Fidenticons.github.com%2Fd09bf41544a3365a46c9077ebb5e35c3.png","gravatar_id":"012b62cf82e7956ffe8f47086be831de","url":"https://api.github.com/users/abhay","html_url":"https://github.com/abhay","followers_url":"https://api.github.com/users/abhay/followers","following_url":"https://api.github.com/users/abhay/following{/other_user}","gists_url":"https://api.github.com/users/abhay/gists{/gist_id}","starred_url":"https://api.github.com/users/abhay/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/abhay/subscriptions","organizations_url":"https://api.github.com/users/abhay/orgs","repos_url":"https://api.github.com/users/abhay/repos","events_url":"https://api.github.com/users/abhay/events{/privacy}","received_events_url":"https://api.github.com/users/abhay/received_events","type":"User"},"private":false,"html_url":"https://github.com/abhay/gchart","description":"GChart exposes the Google Chart API (http://code.google.com/apis/chart) via a friendly Ruby interface. It can generate the URL for a given chart (for webpage use), or download the generated PNG (for offline use).","fork":false,"url":"https://api.github.com/repos/abhay/gchart","forks_url":"https://api.github.com/repos/abhay/gchart/forks","keys_url":"https://api.github.com/repos/abhay/gchart/keys{/key_id}","collaborators_url":"https://api.github.com/repos/abhay/gchart/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/abhay/gchart/teams","hooks_url":"https://api.github.com/repos/abhay/gchart/hooks","issue_events_url":"https://api.github.com/repos/abhay/gchart/issues/events{/number}","events_url":"https://api.github.com/repos/abhay/gchart/events","assignees_url":"https://api.github.com/repos/abhay/gchart/assignees{/user}","branches_url":"https://api.github.com/repos/abhay/gchart/branches{/branch}","tags_url":"https://api.github.com/repos/abhay/gchart/tags","blobs_url":"https://api.github.com/repos/abhay/gchart/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/abhay/gchart/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/abhay/gchart/git/refs{/sha}","trees_url":"https://api.github.com/repos/abhay/gchart/git/trees{/sha}","statuses_url":"https://api.github.com/repos/abhay/gchart/statuses/{sha}","languages_url":"https://api.github.com/repos/abhay/gchart/languages","stargazers_url":"https://api.github.com/repos/abhay/gchart/stargazers","contributors_url":"https://api.github.com/repos/abhay/gchart/contributors","subscribers_url":"https://api.github.com/repos/abhay/gchart/subscribers","subscription_url":"https://api.github.com/repos/abhay/gchart/subscription","commits_url":"https://api.github.com/repos/abhay/gchart/commits{/sha}","git_commits_url":"https://api.github.com/repos/abhay/gchart/git/commits{/sha}","comments_url":"https://api.github.com/repos/abhay/gchart/comments{/number}","issue_comment_url":"https://api.github.com/repos/abhay/gchart/issues/comments/{number}","contents_url":"https://api.github.com/repos/abhay/gchart/contents/{+path}","compare_url":"https://api.github.com/repos/abhay/gchart/compare/{base}...{head}","merges_url":"https://api.github.com/repos/abhay/gchart/merges","archive_url":"https://api.github.com/repos/abhay/gchart/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/abhay/gchart/downloads","issues_url":"https://api.github.com/repos/abhay/gchart/issues{/number}","pulls_url":"https://api.github.com/repos/abhay/gchart/pulls{/number}","milestones_url":"https://api.github.com/repos/abhay/gchart/milestones{/number}","notifications_url":"https://api.github.com/repos/abhay/gchart/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/abhay/gchart/labels{/name}"},{"id":141,"name":"schemr","full_name":"benburkert/schemr","owner":{"login":"benburkert","id":77,"avatar_url":"https://0.gravatar.com/avatar/4d1c9dad17af98e55cb65b4efce27c42?d=https%3A%2F%2Fidenticons.github.com%2F28dd2c7955ce926456240b2ff0100bde.png","gravatar_id":"4d1c9dad17af98e55cb65b4efce27c42","url":"https://api.github.com/users/benburkert","html_url":"https://github.com/benburkert","followers_url":"https://api.github.com/users/benburkert/followers","following_url":"https://api.github.com/users/benburkert/following{/other_user}","gists_url":"https://api.github.com/users/benburkert/gists{/gist_id}","starred_url":"https://api.github.com/users/benburkert/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/benburkert/subscriptions","organizations_url":"https://api.github.com/users/benburkert/orgs","repos_url":"https://api.github.com/users/benburkert/repos","events_url":"https://api.github.com/users/benburkert/events{/privacy}","received_events_url":"https://api.github.com/users/benburkert/received_events","type":"User"},"private":false,"html_url":"https://github.com/benburkert/schemr","description":"A DSL for creating schema documents in ruby","fork":false,"url":"https://api.github.com/repos/benburkert/schemr","forks_url":"https://api.github.com/repos/benburkert/schemr/forks","keys_url":"https://api.github.com/repos/benburkert/schemr/keys{/key_id}","collaborators_url":"https://api.github.com/repos/benburkert/schemr/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/benburkert/schemr/teams","hooks_url":"https://api.github.com/repos/benburkert/schemr/hooks","issue_events_url":"https://api.github.com/repos/benburkert/schemr/issues/events{/number}","events_url":"https://api.github.com/repos/benburkert/schemr/events","assignees_url":"https://api.github.com/repos/benburkert/schemr/assignees{/user}","branches_url":"https://api.github.com/repos/benburkert/schemr/branches{/branch}","tags_url":"https://api.github.com/repos/benburkert/schemr/tags","blobs_url":"https://api.github.com/repos/benburkert/schemr/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/benburkert/schemr/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/benburkert/schemr/git/refs{/sha}","trees_url":"https://api.github.com/repos/benburkert/schemr/git/trees{/sha}","statuses_url":"https://api.github.com/repos/benburkert/schemr/statuses/{sha}","languages_url":"https://api.github.com/repos/benburkert/schemr/languages","stargazers_url":"https://api.github.com/repos/benburkert/schemr/stargazers","contributors_url":"https://api.github.com/repos/benburkert/schemr/contributors","subscribers_url":"https://api.github.com/repos/benburkert/schemr/subscribers","subscription_url":"https://api.github.com/repos/benburkert/schemr/subscription","commits_url":"https://api.github.com/repos/benburkert/schemr/commits{/sha}","git_commits_url":"https://api.github.com/repos/benburkert/schemr/git/commits{/sha}","comments_url":"https://api.github.com/repos/benburkert/schemr/comments{/number}","issue_comment_url":"https://api.github.com/repos/benburkert/schemr/issues/comments/{number}","contents_url":"https://api.github.com/repos/benburkert/schemr/contents/{+path}","compare_url":"https://api.github.com/repos/benburkert/schemr/compare/{base}...{head}","merges_url":"https://api.github.com/repos/benburkert/schemr/merges","archive_url":"https://api.github.com/repos/benburkert/schemr/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/benburkert/schemr/downloads","issues_url":"https://api.github.com/repos/benburkert/schemr/issues{/number}","pulls_url":"https://api.github.com/repos/benburkert/schemr/pulls{/number}","milestones_url":"https://api.github.com/repos/benburkert/schemr/milestones{/number}","notifications_url":"https://api.github.com/repos/benburkert/schemr/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/benburkert/schemr/labels{/name}"},{"id":142,"name":"calais","full_name":"abhay/calais","owner":{"login":"abhay","id":75,"avatar_url":"https://1.gravatar.com/avatar/012b62cf82e7956ffe8f47086be831de?d=https%3A%2F%2Fidenticons.github.com%2Fd09bf41544a3365a46c9077ebb5e35c3.png","gravatar_id":"012b62cf82e7956ffe8f47086be831de","url":"https://api.github.com/users/abhay","html_url":"https://github.com/abhay","followers_url":"https://api.github.com/users/abhay/followers","following_url":"https://api.github.com/users/abhay/following{/other_user}","gists_url":"https://api.github.com/users/abhay/gists{/gist_id}","starred_url":"https://api.github.com/users/abhay/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/abhay/subscriptions","organizations_url":"https://api.github.com/users/abhay/orgs","repos_url":"https://api.github.com/users/abhay/repos","events_url":"https://api.github.com/users/abhay/events{/privacy}","received_events_url":"https://api.github.com/users/abhay/received_events","type":"User"},"private":false,"html_url":"https://github.com/abhay/calais","description":"A Ruby interface to the Open Calais API (http://opencalais.com)","fork":false,"url":"https://api.github.com/repos/abhay/calais","forks_url":"https://api.github.com/repos/abhay/calais/forks","keys_url":"https://api.github.com/repos/abhay/calais/keys{/key_id}","collaborators_url":"https://api.github.com/repos/abhay/calais/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/abhay/calais/teams","hooks_url":"https://api.github.com/repos/abhay/calais/hooks","issue_events_url":"https://api.github.com/repos/abhay/calais/issues/events{/number}","events_url":"https://api.github.com/repos/abhay/calais/events","assignees_url":"https://api.github.com/repos/abhay/calais/assignees{/user}","branches_url":"https://api.github.com/repos/abhay/calais/branches{/branch}","tags_url":"https://api.github.com/repos/abhay/calais/tags","blobs_url":"https://api.github.com/repos/abhay/calais/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/abhay/calais/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/abhay/calais/git/refs{/sha}","trees_url":"https://api.github.com/repos/abhay/calais/git/trees{/sha}","statuses_url":"https://api.github.com/repos/abhay/calais/statuses/{sha}","languages_url":"https://api.github.com/repos/abhay/calais/languages","stargazers_url":"https://api.github.com/repos/abhay/calais/stargazers","contributors_url":"https://api.github.com/repos/abhay/calais/contributors","subscribers_url":"https://api.github.com/repos/abhay/calais/subscribers","subscription_url":"https://api.github.com/repos/abhay/calais/subscription","commits_url":"https://api.github.com/repos/abhay/calais/commits{/sha}","git_commits_url":"https://api.github.com/repos/abhay/calais/git/commits{/sha}","comments_url":"https://api.github.com/repos/abhay/calais/comments{/number}","issue_comment_url":"https://api.github.com/repos/abhay/calais/issues/comments/{number}","contents_url":"https://api.github.com/repos/abhay/calais/contents/{+path}","compare_url":"https://api.github.com/repos/abhay/calais/compare/{base}...{head}","merges_url":"https://api.github.com/repos/abhay/calais/merges","archive_url":"https://api.github.com/repos/abhay/calais/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/abhay/calais/downloads","issues_url":"https://api.github.com/repos/abhay/calais/issues{/number}","pulls_url":"https://api.github.com/repos/abhay/calais/pulls{/number}","milestones_url":"https://api.github.com/repos/abhay/calais/milestones{/number}","notifications_url":"https://api.github.com/repos/abhay/calais/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/abhay/calais/labels{/name}"},{"id":144,"name":"chronic","full_name":"mojombo/chronic","owner":{"login":"mojombo","id":1,"avatar_url":"https://1.gravatar.com/avatar/25c7c18223fb42a4c6ae1c8db6f50f9b?d=https%3A%2F%2Fidenticons.github.com%2Fc4ca4238a0b923820dcc509a6f75849b.png","gravatar_id":"25c7c18223fb42a4c6ae1c8db6f50f9b","url":"https://api.github.com/users/mojombo","html_url":"https://github.com/mojombo","followers_url":"https://api.github.com/users/mojombo/followers","following_url":"https://api.github.com/users/mojombo/following{/other_user}","gists_url":"https://api.github.com/users/mojombo/gists{/gist_id}","starred_url":"https://api.github.com/users/mojombo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mojombo/subscriptions","organizations_url":"https://api.github.com/users/mojombo/orgs","repos_url":"https://api.github.com/users/mojombo/repos","events_url":"https://api.github.com/users/mojombo/events{/privacy}","received_events_url":"https://api.github.com/users/mojombo/received_events","type":"User"},"private":false,"html_url":"https://github.com/mojombo/chronic","description":"Chronic is a pure Ruby natural language date parser.","fork":false,"url":"https://api.github.com/repos/mojombo/chronic","forks_url":"https://api.github.com/repos/mojombo/chronic/forks","keys_url":"https://api.github.com/repos/mojombo/chronic/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mojombo/chronic/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mojombo/chronic/teams","hooks_url":"https://api.github.com/repos/mojombo/chronic/hooks","issue_events_url":"https://api.github.com/repos/mojombo/chronic/issues/events{/number}","events_url":"https://api.github.com/repos/mojombo/chronic/events","assignees_url":"https://api.github.com/repos/mojombo/chronic/assignees{/user}","branches_url":"https://api.github.com/repos/mojombo/chronic/branches{/branch}","tags_url":"https://api.github.com/repos/mojombo/chronic/tags","blobs_url":"https://api.github.com/repos/mojombo/chronic/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mojombo/chronic/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mojombo/chronic/git/refs{/sha}","trees_url":"https://api.github.com/repos/mojombo/chronic/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mojombo/chronic/statuses/{sha}","languages_url":"https://api.github.com/repos/mojombo/chronic/languages","stargazers_url":"https://api.github.com/repos/mojombo/chronic/stargazers","contributors_url":"https://api.github.com/repos/mojombo/chronic/contributors","subscribers_url":"https://api.github.com/repos/mojombo/chronic/subscribers","subscription_url":"https://api.github.com/repos/mojombo/chronic/subscription","commits_url":"https://api.github.com/repos/mojombo/chronic/commits{/sha}","git_commits_url":"https://api.github.com/repos/mojombo/chronic/git/commits{/sha}","comments_url":"https://api.github.com/repos/mojombo/chronic/comments{/number}","issue_comment_url":"https://api.github.com/repos/mojombo/chronic/issues/comments/{number}","contents_url":"https://api.github.com/repos/mojombo/chronic/contents/{+path}","compare_url":"https://api.github.com/repos/mojombo/chronic/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mojombo/chronic/merges","archive_url":"https://api.github.com/repos/mojombo/chronic/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mojombo/chronic/downloads","issues_url":"https://api.github.com/repos/mojombo/chronic/issues{/number}","pulls_url":"https://api.github.com/repos/mojombo/chronic/pulls{/number}","milestones_url":"https://api.github.com/repos/mojombo/chronic/milestones{/number}","notifications_url":"https://api.github.com/repos/mojombo/chronic/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mojombo/chronic/labels{/name}"},{"id":165,"name":"git-wiki","full_name":"sr/git-wiki","owner":{"login":"sr","id":90,"avatar_url":"https://1.gravatar.com/avatar/8e0adf6f8274375b90a180d256d73bad?d=https%3A%2F%2Fidenticons.github.com%2F8613985ec49eb8f757ae6439e879bb2a.png","gravatar_id":"8e0adf6f8274375b90a180d256d73bad","url":"https://api.github.com/users/sr","html_url":"https://github.com/sr","followers_url":"https://api.github.com/users/sr/followers","following_url":"https://api.github.com/users/sr/following{/other_user}","gists_url":"https://api.github.com/users/sr/gists{/gist_id}","starred_url":"https://api.github.com/users/sr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sr/subscriptions","organizations_url":"https://api.github.com/users/sr/orgs","repos_url":"https://api.github.com/users/sr/repos","events_url":"https://api.github.com/users/sr/events{/privacy}","received_events_url":"https://api.github.com/users/sr/received_events","type":"User"},"private":false,"html_url":"https://github.com/sr/git-wiki","description":"A quick & dirty git-powered Sinatra wiki","fork":false,"url":"https://api.github.com/repos/sr/git-wiki","forks_url":"https://api.github.com/repos/sr/git-wiki/forks","keys_url":"https://api.github.com/repos/sr/git-wiki/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sr/git-wiki/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sr/git-wiki/teams","hooks_url":"https://api.github.com/repos/sr/git-wiki/hooks","issue_events_url":"https://api.github.com/repos/sr/git-wiki/issues/events{/number}","events_url":"https://api.github.com/repos/sr/git-wiki/events","assignees_url":"https://api.github.com/repos/sr/git-wiki/assignees{/user}","branches_url":"https://api.github.com/repos/sr/git-wiki/branches{/branch}","tags_url":"https://api.github.com/repos/sr/git-wiki/tags","blobs_url":"https://api.github.com/repos/sr/git-wiki/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sr/git-wiki/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sr/git-wiki/git/refs{/sha}","trees_url":"https://api.github.com/repos/sr/git-wiki/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sr/git-wiki/statuses/{sha}","languages_url":"https://api.github.com/repos/sr/git-wiki/languages","stargazers_url":"https://api.github.com/repos/sr/git-wiki/stargazers","contributors_url":"https://api.github.com/repos/sr/git-wiki/contributors","subscribers_url":"https://api.github.com/repos/sr/git-wiki/subscribers","subscription_url":"https://api.github.com/repos/sr/git-wiki/subscription","commits_url":"https://api.github.com/repos/sr/git-wiki/commits{/sha}","git_commits_url":"https://api.github.com/repos/sr/git-wiki/git/commits{/sha}","comments_url":"https://api.github.com/repos/sr/git-wiki/comments{/number}","issue_comment_url":"https://api.github.com/repos/sr/git-wiki/issues/comments/{number}","contents_url":"https://api.github.com/repos/sr/git-wiki/contents/{+path}","compare_url":"https://api.github.com/repos/sr/git-wiki/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sr/git-wiki/merges","archive_url":"https://api.github.com/repos/sr/git-wiki/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sr/git-wiki/downloads","issues_url":"https://api.github.com/repos/sr/git-wiki/issues{/number}","pulls_url":"https://api.github.com/repos/sr/git-wiki/pulls{/number}","milestones_url":"https://api.github.com/repos/sr/git-wiki/milestones{/number}","notifications_url":"https://api.github.com/repos/sr/git-wiki/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sr/git-wiki/labels{/name}"},{"id":176,"name":"ambitious_activeldap","full_name":"automatthew/ambitious_activeldap","owner":{"login":"automatthew","id":105,"avatar_url":"https://2.gravatar.com/avatar/491d5a2b6e9c9346e2d67da31a633457?d=https%3A%2F%2Fidenticons.github.com%2F65b9eea6e1cc6bb9f0cd2a47751a186f.png","gravatar_id":"491d5a2b6e9c9346e2d67da31a633457","url":"https://api.github.com/users/automatthew","html_url":"https://github.com/automatthew","followers_url":"https://api.github.com/users/automatthew/followers","following_url":"https://api.github.com/users/automatthew/following{/other_user}","gists_url":"https://api.github.com/users/automatthew/gists{/gist_id}","starred_url":"https://api.github.com/users/automatthew/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/automatthew/subscriptions","organizations_url":"https://api.github.com/users/automatthew/orgs","repos_url":"https://api.github.com/users/automatthew/repos","events_url":"https://api.github.com/users/automatthew/events{/privacy}","received_events_url":"https://api.github.com/users/automatthew/received_events","type":"User"},"private":false,"html_url":"https://github.com/automatthew/ambitious_activeldap","description":"Ambition adapter for ActiveLdap","fork":false,"url":"https://api.github.com/repos/automatthew/ambitious_activeldap","forks_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/forks","keys_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/keys{/key_id}","collaborators_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/teams","hooks_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/hooks","issue_events_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/issues/events{/number}","events_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/events","assignees_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/assignees{/user}","branches_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/branches{/branch}","tags_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/tags","blobs_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/git/refs{/sha}","trees_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/git/trees{/sha}","statuses_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/statuses/{sha}","languages_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/languages","stargazers_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/stargazers","contributors_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/contributors","subscribers_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/subscribers","subscription_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/subscription","commits_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/commits{/sha}","git_commits_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/git/commits{/sha}","comments_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/comments{/number}","issue_comment_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/issues/comments/{number}","contents_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/contents/{+path}","compare_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/compare/{base}...{head}","merges_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/merges","archive_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/downloads","issues_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/issues{/number}","pulls_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/pulls{/number}","milestones_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/milestones{/number}","notifications_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/automatthew/ambitious_activeldap/labels{/name}"},{"id":177,"name":"signal-wiki","full_name":"queso/signal-wiki","owner":{"login":"queso","id":106,"avatar_url":"https://2.gravatar.com/avatar/089ddf30c09022b92363dd0d8ce2bdfd?d=https%3A%2F%2Fidenticons.github.com%2Ff0935e4cd5920aa6c7c996a5ee53a70f.png","gravatar_id":"089ddf30c09022b92363dd0d8ce2bdfd","url":"https://api.github.com/users/queso","html_url":"https://github.com/queso","followers_url":"https://api.github.com/users/queso/followers","following_url":"https://api.github.com/users/queso/following{/other_user}","gists_url":"https://api.github.com/users/queso/gists{/gist_id}","starred_url":"https://api.github.com/users/queso/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/queso/subscriptions","organizations_url":"https://api.github.com/users/queso/orgs","repos_url":"https://api.github.com/users/queso/repos","events_url":"https://api.github.com/users/queso/events{/privacy}","received_events_url":"https://api.github.com/users/queso/received_events","type":"User"},"private":false,"html_url":"https://github.com/queso/signal-wiki","description":"The easy to use rails wiki","fork":false,"url":"https://api.github.com/repos/queso/signal-wiki","forks_url":"https://api.github.com/repos/queso/signal-wiki/forks","keys_url":"https://api.github.com/repos/queso/signal-wiki/keys{/key_id}","collaborators_url":"https://api.github.com/repos/queso/signal-wiki/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/queso/signal-wiki/teams","hooks_url":"https://api.github.com/repos/queso/signal-wiki/hooks","issue_events_url":"https://api.github.com/repos/queso/signal-wiki/issues/events{/number}","events_url":"https://api.github.com/repos/queso/signal-wiki/events","assignees_url":"https://api.github.com/repos/queso/signal-wiki/assignees{/user}","branches_url":"https://api.github.com/repos/queso/signal-wiki/branches{/branch}","tags_url":"https://api.github.com/repos/queso/signal-wiki/tags","blobs_url":"https://api.github.com/repos/queso/signal-wiki/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/queso/signal-wiki/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/queso/signal-wiki/git/refs{/sha}","trees_url":"https://api.github.com/repos/queso/signal-wiki/git/trees{/sha}","statuses_url":"https://api.github.com/repos/queso/signal-wiki/statuses/{sha}","languages_url":"https://api.github.com/repos/queso/signal-wiki/languages","stargazers_url":"https://api.github.com/repos/queso/signal-wiki/stargazers","contributors_url":"https://api.github.com/repos/queso/signal-wiki/contributors","subscribers_url":"https://api.github.com/repos/queso/signal-wiki/subscribers","subscription_url":"https://api.github.com/repos/queso/signal-wiki/subscription","commits_url":"https://api.github.com/repos/queso/signal-wiki/commits{/sha}","git_commits_url":"https://api.github.com/repos/queso/signal-wiki/git/commits{/sha}","comments_url":"https://api.github.com/repos/queso/signal-wiki/comments{/number}","issue_comment_url":"https://api.github.com/repos/queso/signal-wiki/issues/comments/{number}","contents_url":"https://api.github.com/repos/queso/signal-wiki/contents/{+path}","compare_url":"https://api.github.com/repos/queso/signal-wiki/compare/{base}...{head}","merges_url":"https://api.github.com/repos/queso/signal-wiki/merges","archive_url":"https://api.github.com/repos/queso/signal-wiki/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/queso/signal-wiki/downloads","issues_url":"https://api.github.com/repos/queso/signal-wiki/issues{/number}","pulls_url":"https://api.github.com/repos/queso/signal-wiki/pulls{/number}","milestones_url":"https://api.github.com/repos/queso/signal-wiki/milestones{/number}","notifications_url":"https://api.github.com/repos/queso/signal-wiki/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/queso/signal-wiki/labels{/name}"},{"id":179,"name":"ruby-on-rails-tmbundle","full_name":"drnic/ruby-on-rails-tmbundle","owner":{"login":"drnic","id":108,"avatar_url":"https://2.gravatar.com/avatar/cb2b768a5e546b24052ea03334e43676?d=https%3A%2F%2Fidenticons.github.com%2Fa3c65c2974270fd093ee8a9bf8ae7d0b.png","gravatar_id":"cb2b768a5e546b24052ea03334e43676","url":"https://api.github.com/users/drnic","html_url":"https://github.com/drnic","followers_url":"https://api.github.com/users/drnic/followers","following_url":"https://api.github.com/users/drnic/following{/other_user}","gists_url":"https://api.github.com/users/drnic/gists{/gist_id}","starred_url":"https://api.github.com/users/drnic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/drnic/subscriptions","organizations_url":"https://api.github.com/users/drnic/orgs","repos_url":"https://api.github.com/users/drnic/repos","events_url":"https://api.github.com/users/drnic/events{/privacy}","received_events_url":"https://api.github.com/users/drnic/received_events","type":"User"},"private":false,"html_url":"https://github.com/drnic/ruby-on-rails-tmbundle","description":"Ruby on Rails TextMate bundle [Learn it with PeepCode - http://peepcode.com/products/textmate-for-rails-2]","fork":false,"url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle","forks_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/forks","keys_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/keys{/key_id}","collaborators_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/teams","hooks_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/hooks","issue_events_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/issues/events{/number}","events_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/events","assignees_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/assignees{/user}","branches_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/branches{/branch}","tags_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/tags","blobs_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/git/refs{/sha}","trees_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/git/trees{/sha}","statuses_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/statuses/{sha}","languages_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/languages","stargazers_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/stargazers","contributors_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/contributors","subscribers_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/subscribers","subscription_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/subscription","commits_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/commits{/sha}","git_commits_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/git/commits{/sha}","comments_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/comments{/number}","issue_comment_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/issues/comments/{number}","contents_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/contents/{+path}","compare_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/compare/{base}...{head}","merges_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/merges","archive_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/downloads","issues_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/issues{/number}","pulls_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/pulls{/number}","milestones_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/milestones{/number}","notifications_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/drnic/ruby-on-rails-tmbundle/labels{/name}"},{"id":185,"name":"low-pro-for-jquery","full_name":"danwrong/low-pro-for-jquery","owner":{"login":"danwrong","id":110,"avatar_url":"https://1.gravatar.com/avatar/0727907ae68db2e8ebc1ea1b01f00d69?d=https%3A%2F%2Fidenticons.github.com%2F5f93f983524def3dca464469d2cf9f3e.png","gravatar_id":"0727907ae68db2e8ebc1ea1b01f00d69","url":"https://api.github.com/users/danwrong","html_url":"https://github.com/danwrong","followers_url":"https://api.github.com/users/danwrong/followers","following_url":"https://api.github.com/users/danwrong/following{/other_user}","gists_url":"https://api.github.com/users/danwrong/gists{/gist_id}","starred_url":"https://api.github.com/users/danwrong/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danwrong/subscriptions","organizations_url":"https://api.github.com/users/danwrong/orgs","repos_url":"https://api.github.com/users/danwrong/repos","events_url":"https://api.github.com/users/danwrong/events{/privacy}","received_events_url":"https://api.github.com/users/danwrong/received_events","type":"User"},"private":false,"html_url":"https://github.com/danwrong/low-pro-for-jquery","description":"A jQuery plugin version of the Low Pro behavior framework.","fork":false,"url":"https://api.github.com/repos/danwrong/low-pro-for-jquery","forks_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/forks","keys_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/keys{/key_id}","collaborators_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/teams","hooks_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/hooks","issue_events_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/issues/events{/number}","events_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/events","assignees_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/assignees{/user}","branches_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/branches{/branch}","tags_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/tags","blobs_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/git/refs{/sha}","trees_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/git/trees{/sha}","statuses_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/statuses/{sha}","languages_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/languages","stargazers_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/stargazers","contributors_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/contributors","subscribers_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/subscribers","subscription_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/subscription","commits_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/commits{/sha}","git_commits_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/git/commits{/sha}","comments_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/comments{/number}","issue_comment_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/issues/comments/{number}","contents_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/contents/{+path}","compare_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/compare/{base}...{head}","merges_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/merges","archive_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/downloads","issues_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/issues{/number}","pulls_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/pulls{/number}","milestones_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/milestones{/number}","notifications_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/danwrong/low-pro-for-jquery/labels{/name}"},{"id":186,"name":"merb-core","full_name":"wayneeseguin/merb-core","owner":{"login":"wayneeseguin","id":18,"avatar_url":"https://0.gravatar.com/avatar/b9b5ff40232c1dfd61238c2a90467f84?d=https%3A%2F%2Fidenticons.github.com%2F6f4922f45568161a8cdf4ad2299f6d23.png","gravatar_id":"b9b5ff40232c1dfd61238c2a90467f84","url":"https://api.github.com/users/wayneeseguin","html_url":"https://github.com/wayneeseguin","followers_url":"https://api.github.com/users/wayneeseguin/followers","following_url":"https://api.github.com/users/wayneeseguin/following{/other_user}","gists_url":"https://api.github.com/users/wayneeseguin/gists{/gist_id}","starred_url":"https://api.github.com/users/wayneeseguin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wayneeseguin/subscriptions","organizations_url":"https://api.github.com/users/wayneeseguin/orgs","repos_url":"https://api.github.com/users/wayneeseguin/repos","events_url":"https://api.github.com/users/wayneeseguin/events{/privacy}","received_events_url":"https://api.github.com/users/wayneeseguin/received_events","type":"User"},"private":false,"html_url":"https://github.com/wayneeseguin/merb-core","description":"Merb Core: All you need. None you don't.","fork":true,"url":"https://api.github.com/repos/wayneeseguin/merb-core","forks_url":"https://api.github.com/repos/wayneeseguin/merb-core/forks","keys_url":"https://api.github.com/repos/wayneeseguin/merb-core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wayneeseguin/merb-core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wayneeseguin/merb-core/teams","hooks_url":"https://api.github.com/repos/wayneeseguin/merb-core/hooks","issue_events_url":"https://api.github.com/repos/wayneeseguin/merb-core/issues/events{/number}","events_url":"https://api.github.com/repos/wayneeseguin/merb-core/events","assignees_url":"https://api.github.com/repos/wayneeseguin/merb-core/assignees{/user}","branches_url":"https://api.github.com/repos/wayneeseguin/merb-core/branches{/branch}","tags_url":"https://api.github.com/repos/wayneeseguin/merb-core/tags","blobs_url":"https://api.github.com/repos/wayneeseguin/merb-core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wayneeseguin/merb-core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wayneeseguin/merb-core/git/refs{/sha}","trees_url":"https://api.github.com/repos/wayneeseguin/merb-core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wayneeseguin/merb-core/statuses/{sha}","languages_url":"https://api.github.com/repos/wayneeseguin/merb-core/languages","stargazers_url":"https://api.github.com/repos/wayneeseguin/merb-core/stargazers","contributors_url":"https://api.github.com/repos/wayneeseguin/merb-core/contributors","subscribers_url":"https://api.github.com/repos/wayneeseguin/merb-core/subscribers","subscription_url":"https://api.github.com/repos/wayneeseguin/merb-core/subscription","commits_url":"https://api.github.com/repos/wayneeseguin/merb-core/commits{/sha}","git_commits_url":"https://api.github.com/repos/wayneeseguin/merb-core/git/commits{/sha}","comments_url":"https://api.github.com/repos/wayneeseguin/merb-core/comments{/number}","issue_comment_url":"https://api.github.com/repos/wayneeseguin/merb-core/issues/comments/{number}","contents_url":"https://api.github.com/repos/wayneeseguin/merb-core/contents/{+path}","compare_url":"https://api.github.com/repos/wayneeseguin/merb-core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wayneeseguin/merb-core/merges","archive_url":"https://api.github.com/repos/wayneeseguin/merb-core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wayneeseguin/merb-core/downloads","issues_url":"https://api.github.com/repos/wayneeseguin/merb-core/issues{/number}","pulls_url":"https://api.github.com/repos/wayneeseguin/merb-core/pulls{/number}","milestones_url":"https://api.github.com/repos/wayneeseguin/merb-core/milestones{/number}","notifications_url":"https://api.github.com/repos/wayneeseguin/merb-core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wayneeseguin/merb-core/labels{/name}"},{"id":190,"name":"dst","full_name":"sr/dst","owner":{"login":"sr","id":90,"avatar_url":"https://1.gravatar.com/avatar/8e0adf6f8274375b90a180d256d73bad?d=https%3A%2F%2Fidenticons.github.com%2F8613985ec49eb8f757ae6439e879bb2a.png","gravatar_id":"8e0adf6f8274375b90a180d256d73bad","url":"https://api.github.com/users/sr","html_url":"https://github.com/sr","followers_url":"https://api.github.com/users/sr/followers","following_url":"https://api.github.com/users/sr/following{/other_user}","gists_url":"https://api.github.com/users/sr/gists{/gist_id}","starred_url":"https://api.github.com/users/sr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sr/subscriptions","organizations_url":"https://api.github.com/users/sr/orgs","repos_url":"https://api.github.com/users/sr/repos","events_url":"https://api.github.com/users/sr/events{/privacy}","received_events_url":"https://api.github.com/users/sr/received_events","type":"User"},"private":false,"html_url":"https://github.com/sr/dst","description":"todo-list manager I wrote back in 2008 with the help of Gregory Brown in order to learn Ruby and TDD","fork":false,"url":"https://api.github.com/repos/sr/dst","forks_url":"https://api.github.com/repos/sr/dst/forks","keys_url":"https://api.github.com/repos/sr/dst/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sr/dst/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sr/dst/teams","hooks_url":"https://api.github.com/repos/sr/dst/hooks","issue_events_url":"https://api.github.com/repos/sr/dst/issues/events{/number}","events_url":"https://api.github.com/repos/sr/dst/events","assignees_url":"https://api.github.com/repos/sr/dst/assignees{/user}","branches_url":"https://api.github.com/repos/sr/dst/branches{/branch}","tags_url":"https://api.github.com/repos/sr/dst/tags","blobs_url":"https://api.github.com/repos/sr/dst/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sr/dst/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sr/dst/git/refs{/sha}","trees_url":"https://api.github.com/repos/sr/dst/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sr/dst/statuses/{sha}","languages_url":"https://api.github.com/repos/sr/dst/languages","stargazers_url":"https://api.github.com/repos/sr/dst/stargazers","contributors_url":"https://api.github.com/repos/sr/dst/contributors","subscribers_url":"https://api.github.com/repos/sr/dst/subscribers","subscription_url":"https://api.github.com/repos/sr/dst/subscription","commits_url":"https://api.github.com/repos/sr/dst/commits{/sha}","git_commits_url":"https://api.github.com/repos/sr/dst/git/commits{/sha}","comments_url":"https://api.github.com/repos/sr/dst/comments{/number}","issue_comment_url":"https://api.github.com/repos/sr/dst/issues/comments/{number}","contents_url":"https://api.github.com/repos/sr/dst/contents/{+path}","compare_url":"https://api.github.com/repos/sr/dst/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sr/dst/merges","archive_url":"https://api.github.com/repos/sr/dst/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sr/dst/downloads","issues_url":"https://api.github.com/repos/sr/dst/issues{/number}","pulls_url":"https://api.github.com/repos/sr/dst/pulls{/number}","milestones_url":"https://api.github.com/repos/sr/dst/milestones{/number}","notifications_url":"https://api.github.com/repos/sr/dst/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sr/dst/labels{/name}"},{"id":191,"name":"yaws","full_name":"mojombo/yaws","owner":{"login":"mojombo","id":1,"avatar_url":"https://1.gravatar.com/avatar/25c7c18223fb42a4c6ae1c8db6f50f9b?d=https%3A%2F%2Fidenticons.github.com%2Fc4ca4238a0b923820dcc509a6f75849b.png","gravatar_id":"25c7c18223fb42a4c6ae1c8db6f50f9b","url":"https://api.github.com/users/mojombo","html_url":"https://github.com/mojombo","followers_url":"https://api.github.com/users/mojombo/followers","following_url":"https://api.github.com/users/mojombo/following{/other_user}","gists_url":"https://api.github.com/users/mojombo/gists{/gist_id}","starred_url":"https://api.github.com/users/mojombo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mojombo/subscriptions","organizations_url":"https://api.github.com/users/mojombo/orgs","repos_url":"https://api.github.com/users/mojombo/repos","events_url":"https://api.github.com/users/mojombo/events{/privacy}","received_events_url":"https://api.github.com/users/mojombo/received_events","type":"User"},"private":false,"html_url":"https://github.com/mojombo/yaws","description":"YAWS is an erlang web server","fork":false,"url":"https://api.github.com/repos/mojombo/yaws","forks_url":"https://api.github.com/repos/mojombo/yaws/forks","keys_url":"https://api.github.com/repos/mojombo/yaws/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mojombo/yaws/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mojombo/yaws/teams","hooks_url":"https://api.github.com/repos/mojombo/yaws/hooks","issue_events_url":"https://api.github.com/repos/mojombo/yaws/issues/events{/number}","events_url":"https://api.github.com/repos/mojombo/yaws/events","assignees_url":"https://api.github.com/repos/mojombo/yaws/assignees{/user}","branches_url":"https://api.github.com/repos/mojombo/yaws/branches{/branch}","tags_url":"https://api.github.com/repos/mojombo/yaws/tags","blobs_url":"https://api.github.com/repos/mojombo/yaws/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mojombo/yaws/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mojombo/yaws/git/refs{/sha}","trees_url":"https://api.github.com/repos/mojombo/yaws/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mojombo/yaws/statuses/{sha}","languages_url":"https://api.github.com/repos/mojombo/yaws/languages","stargazers_url":"https://api.github.com/repos/mojombo/yaws/stargazers","contributors_url":"https://api.github.com/repos/mojombo/yaws/contributors","subscribers_url":"https://api.github.com/repos/mojombo/yaws/subscribers","subscription_url":"https://api.github.com/repos/mojombo/yaws/subscription","commits_url":"https://api.github.com/repos/mojombo/yaws/commits{/sha}","git_commits_url":"https://api.github.com/repos/mojombo/yaws/git/commits{/sha}","comments_url":"https://api.github.com/repos/mojombo/yaws/comments{/number}","issue_comment_url":"https://api.github.com/repos/mojombo/yaws/issues/comments/{number}","contents_url":"https://api.github.com/repos/mojombo/yaws/contents/{+path}","compare_url":"https://api.github.com/repos/mojombo/yaws/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mojombo/yaws/merges","archive_url":"https://api.github.com/repos/mojombo/yaws/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mojombo/yaws/downloads","issues_url":"https://api.github.com/repos/mojombo/yaws/issues{/number}","pulls_url":"https://api.github.com/repos/mojombo/yaws/pulls{/number}","milestones_url":"https://api.github.com/repos/mojombo/yaws/milestones{/number}","notifications_url":"https://api.github.com/repos/mojombo/yaws/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mojombo/yaws/labels{/name}"},{"id":192,"name":"yaws","full_name":"KirinDave/yaws","owner":{"login":"KirinDave","id":36,"avatar_url":"https://2.gravatar.com/avatar/d4fabd6c08ac228a3ff846d9d0d1580e?d=https%3A%2F%2Fidenticons.github.com%2F19ca14e7ea6328a42e0eb13d585e4c22.png","gravatar_id":"d4fabd6c08ac228a3ff846d9d0d1580e","url":"https://api.github.com/users/KirinDave","html_url":"https://github.com/KirinDave","followers_url":"https://api.github.com/users/KirinDave/followers","following_url":"https://api.github.com/users/KirinDave/following{/other_user}","gists_url":"https://api.github.com/users/KirinDave/gists{/gist_id}","starred_url":"https://api.github.com/users/KirinDave/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KirinDave/subscriptions","organizations_url":"https://api.github.com/users/KirinDave/orgs","repos_url":"https://api.github.com/users/KirinDave/repos","events_url":"https://api.github.com/users/KirinDave/events{/privacy}","received_events_url":"https://api.github.com/users/KirinDave/received_events","type":"User"},"private":false,"html_url":"https://github.com/KirinDave/yaws","description":"YAWS is an erlang web server","fork":true,"url":"https://api.github.com/repos/KirinDave/yaws","forks_url":"https://api.github.com/repos/KirinDave/yaws/forks","keys_url":"https://api.github.com/repos/KirinDave/yaws/keys{/key_id}","collaborators_url":"https://api.github.com/repos/KirinDave/yaws/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/KirinDave/yaws/teams","hooks_url":"https://api.github.com/repos/KirinDave/yaws/hooks","issue_events_url":"https://api.github.com/repos/KirinDave/yaws/issues/events{/number}","events_url":"https://api.github.com/repos/KirinDave/yaws/events","assignees_url":"https://api.github.com/repos/KirinDave/yaws/assignees{/user}","branches_url":"https://api.github.com/repos/KirinDave/yaws/branches{/branch}","tags_url":"https://api.github.com/repos/KirinDave/yaws/tags","blobs_url":"https://api.github.com/repos/KirinDave/yaws/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/KirinDave/yaws/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/KirinDave/yaws/git/refs{/sha}","trees_url":"https://api.github.com/repos/KirinDave/yaws/git/trees{/sha}","statuses_url":"https://api.github.com/repos/KirinDave/yaws/statuses/{sha}","languages_url":"https://api.github.com/repos/KirinDave/yaws/languages","stargazers_url":"https://api.github.com/repos/KirinDave/yaws/stargazers","contributors_url":"https://api.github.com/repos/KirinDave/yaws/contributors","subscribers_url":"https://api.github.com/repos/KirinDave/yaws/subscribers","subscription_url":"https://api.github.com/repos/KirinDave/yaws/subscription","commits_url":"https://api.github.com/repos/KirinDave/yaws/commits{/sha}","git_commits_url":"https://api.github.com/repos/KirinDave/yaws/git/commits{/sha}","comments_url":"https://api.github.com/repos/KirinDave/yaws/comments{/number}","issue_comment_url":"https://api.github.com/repos/KirinDave/yaws/issues/comments/{number}","contents_url":"https://api.github.com/repos/KirinDave/yaws/contents/{+path}","compare_url":"https://api.github.com/repos/KirinDave/yaws/compare/{base}...{head}","merges_url":"https://api.github.com/repos/KirinDave/yaws/merges","archive_url":"https://api.github.com/repos/KirinDave/yaws/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/KirinDave/yaws/downloads","issues_url":"https://api.github.com/repos/KirinDave/yaws/issues{/number}","pulls_url":"https://api.github.com/repos/KirinDave/yaws/pulls{/number}","milestones_url":"https://api.github.com/repos/KirinDave/yaws/milestones{/number}","notifications_url":"https://api.github.com/repos/KirinDave/yaws/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/KirinDave/yaws/labels{/name}"},{"id":193,"name":"tasks","full_name":"sr/tasks","owner":{"login":"sr","id":90,"avatar_url":"https://1.gravatar.com/avatar/8e0adf6f8274375b90a180d256d73bad?d=https%3A%2F%2Fidenticons.github.com%2F8613985ec49eb8f757ae6439e879bb2a.png","gravatar_id":"8e0adf6f8274375b90a180d256d73bad","url":"https://api.github.com/users/sr","html_url":"https://github.com/sr","followers_url":"https://api.github.com/users/sr/followers","following_url":"https://api.github.com/users/sr/following{/other_user}","gists_url":"https://api.github.com/users/sr/gists{/gist_id}","starred_url":"https://api.github.com/users/sr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sr/subscriptions","organizations_url":"https://api.github.com/users/sr/orgs","repos_url":"https://api.github.com/users/sr/repos","events_url":"https://api.github.com/users/sr/events{/privacy}","received_events_url":"https://api.github.com/users/sr/received_events","type":"User"},"private":false,"html_url":"https://github.com/sr/tasks","description":"Some more or less useful rake tasks. Includes tasks to work with git-cvs, convert an Atom collection to a blog, post to an AtomPub server and more.","fork":false,"url":"https://api.github.com/repos/sr/tasks","forks_url":"https://api.github.com/repos/sr/tasks/forks","keys_url":"https://api.github.com/repos/sr/tasks/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sr/tasks/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sr/tasks/teams","hooks_url":"https://api.github.com/repos/sr/tasks/hooks","issue_events_url":"https://api.github.com/repos/sr/tasks/issues/events{/number}","events_url":"https://api.github.com/repos/sr/tasks/events","assignees_url":"https://api.github.com/repos/sr/tasks/assignees{/user}","branches_url":"https://api.github.com/repos/sr/tasks/branches{/branch}","tags_url":"https://api.github.com/repos/sr/tasks/tags","blobs_url":"https://api.github.com/repos/sr/tasks/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sr/tasks/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sr/tasks/git/refs{/sha}","trees_url":"https://api.github.com/repos/sr/tasks/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sr/tasks/statuses/{sha}","languages_url":"https://api.github.com/repos/sr/tasks/languages","stargazers_url":"https://api.github.com/repos/sr/tasks/stargazers","contributors_url":"https://api.github.com/repos/sr/tasks/contributors","subscribers_url":"https://api.github.com/repos/sr/tasks/subscribers","subscription_url":"https://api.github.com/repos/sr/tasks/subscription","commits_url":"https://api.github.com/repos/sr/tasks/commits{/sha}","git_commits_url":"https://api.github.com/repos/sr/tasks/git/commits{/sha}","comments_url":"https://api.github.com/repos/sr/tasks/comments{/number}","issue_comment_url":"https://api.github.com/repos/sr/tasks/issues/comments/{number}","contents_url":"https://api.github.com/repos/sr/tasks/contents/{+path}","compare_url":"https://api.github.com/repos/sr/tasks/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sr/tasks/merges","archive_url":"https://api.github.com/repos/sr/tasks/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sr/tasks/downloads","issues_url":"https://api.github.com/repos/sr/tasks/issues{/number}","pulls_url":"https://api.github.com/repos/sr/tasks/pulls{/number}","milestones_url":"https://api.github.com/repos/sr/tasks/milestones{/number}","notifications_url":"https://api.github.com/repos/sr/tasks/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sr/tasks/labels{/name}"},{"id":195,"name":"ruby-on-rails-tmbundle","full_name":"mattetti/ruby-on-rails-tmbundle","owner":{"login":"mattetti","id":113,"avatar_url":"https://1.gravatar.com/avatar/c69521d6e22fc0bbd69337ec8b1698df?d=https%3A%2F%2Fidenticons.github.com%2F73278a4a86960eeb576a8fd4c9ec6997.png","gravatar_id":"c69521d6e22fc0bbd69337ec8b1698df","url":"https://api.github.com/users/mattetti","html_url":"https://github.com/mattetti","followers_url":"https://api.github.com/users/mattetti/followers","following_url":"https://api.github.com/users/mattetti/following{/other_user}","gists_url":"https://api.github.com/users/mattetti/gists{/gist_id}","starred_url":"https://api.github.com/users/mattetti/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mattetti/subscriptions","organizations_url":"https://api.github.com/users/mattetti/orgs","repos_url":"https://api.github.com/users/mattetti/repos","events_url":"https://api.github.com/users/mattetti/events{/privacy}","received_events_url":"https://api.github.com/users/mattetti/received_events","type":"User"},"private":false,"html_url":"https://github.com/mattetti/ruby-on-rails-tmbundle","description":"Ruby on Rails TextMate bundle [master branch is svn trunk; patches to drnicwilliams@gmail.com]","fork":true,"url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle","forks_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/forks","keys_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/teams","hooks_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/hooks","issue_events_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/issues/events{/number}","events_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/events","assignees_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/assignees{/user}","branches_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/branches{/branch}","tags_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/tags","blobs_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/git/refs{/sha}","trees_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/statuses/{sha}","languages_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/languages","stargazers_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/stargazers","contributors_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/contributors","subscribers_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/subscribers","subscription_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/subscription","commits_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/commits{/sha}","git_commits_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/git/commits{/sha}","comments_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/comments{/number}","issue_comment_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/issues/comments/{number}","contents_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/contents/{+path}","compare_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/merges","archive_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/downloads","issues_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/issues{/number}","pulls_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/pulls{/number}","milestones_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/milestones{/number}","notifications_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mattetti/ruby-on-rails-tmbundle/labels{/name}"},{"id":196,"name":"ruby-on-rails-tmbundle","full_name":"lawrencepit/ruby-on-rails-tmbundle","owner":{"login":"lawrencepit","id":115,"avatar_url":"https://1.gravatar.com/avatar/a31c2c26350e9e2b07fbd99fbd5ff520?d=https%3A%2F%2Fidenticons.github.com%2F2b44928ae11fb9384c4cf38708677c48.png","gravatar_id":"a31c2c26350e9e2b07fbd99fbd5ff520","url":"https://api.github.com/users/lawrencepit","html_url":"https://github.com/lawrencepit","followers_url":"https://api.github.com/users/lawrencepit/followers","following_url":"https://api.github.com/users/lawrencepit/following{/other_user}","gists_url":"https://api.github.com/users/lawrencepit/gists{/gist_id}","starred_url":"https://api.github.com/users/lawrencepit/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lawrencepit/subscriptions","organizations_url":"https://api.github.com/users/lawrencepit/orgs","repos_url":"https://api.github.com/users/lawrencepit/repos","events_url":"https://api.github.com/users/lawrencepit/events{/privacy}","received_events_url":"https://api.github.com/users/lawrencepit/received_events","type":"User"},"private":false,"html_url":"https://github.com/lawrencepit/ruby-on-rails-tmbundle","description":"Ruby on Rails TextMate bundle [master branch is svn trunk; patches to drnicwilliams@gmail.com]","fork":true,"url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle","forks_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/forks","keys_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/teams","hooks_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/hooks","issue_events_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/issues/events{/number}","events_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/events","assignees_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/assignees{/user}","branches_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/branches{/branch}","tags_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/tags","blobs_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/git/refs{/sha}","trees_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/statuses/{sha}","languages_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/languages","stargazers_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/stargazers","contributors_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/contributors","subscribers_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/subscribers","subscription_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/subscription","commits_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/commits{/sha}","git_commits_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/git/commits{/sha}","comments_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/comments{/number}","issue_comment_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/issues/comments/{number}","contents_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/contents/{+path}","compare_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/merges","archive_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/downloads","issues_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/issues{/number}","pulls_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/pulls{/number}","milestones_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/milestones{/number}","notifications_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lawrencepit/ruby-on-rails-tmbundle/labels{/name}"},{"id":199,"name":"amazon-ec2","full_name":"grempe/amazon-ec2","owner":{"login":"grempe","id":117,"avatar_url":"https://2.gravatar.com/avatar/126e4e797131e8bf3adc528c6a4d78ec?d=https%3A%2F%2Fidenticons.github.com%2Feb160de1de89d9058fcb0b968dbbbd68.png","gravatar_id":"126e4e797131e8bf3adc528c6a4d78ec","url":"https://api.github.com/users/grempe","html_url":"https://github.com/grempe","followers_url":"https://api.github.com/users/grempe/followers","following_url":"https://api.github.com/users/grempe/following{/other_user}","gists_url":"https://api.github.com/users/grempe/gists{/gist_id}","starred_url":"https://api.github.com/users/grempe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/grempe/subscriptions","organizations_url":"https://api.github.com/users/grempe/orgs","repos_url":"https://api.github.com/users/grempe/repos","events_url":"https://api.github.com/users/grempe/events{/privacy}","received_events_url":"https://api.github.com/users/grempe/received_events","type":"User"},"private":false,"html_url":"https://github.com/grempe/amazon-ec2","description":"A Ruby Gem that gives you full access to several of the Amazon Web Services API from your Ruby/Ruby on Rails apps","fork":false,"url":"https://api.github.com/repos/grempe/amazon-ec2","forks_url":"https://api.github.com/repos/grempe/amazon-ec2/forks","keys_url":"https://api.github.com/repos/grempe/amazon-ec2/keys{/key_id}","collaborators_url":"https://api.github.com/repos/grempe/amazon-ec2/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/grempe/amazon-ec2/teams","hooks_url":"https://api.github.com/repos/grempe/amazon-ec2/hooks","issue_events_url":"https://api.github.com/repos/grempe/amazon-ec2/issues/events{/number}","events_url":"https://api.github.com/repos/grempe/amazon-ec2/events","assignees_url":"https://api.github.com/repos/grempe/amazon-ec2/assignees{/user}","branches_url":"https://api.github.com/repos/grempe/amazon-ec2/branches{/branch}","tags_url":"https://api.github.com/repos/grempe/amazon-ec2/tags","blobs_url":"https://api.github.com/repos/grempe/amazon-ec2/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/grempe/amazon-ec2/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/grempe/amazon-ec2/git/refs{/sha}","trees_url":"https://api.github.com/repos/grempe/amazon-ec2/git/trees{/sha}","statuses_url":"https://api.github.com/repos/grempe/amazon-ec2/statuses/{sha}","languages_url":"https://api.github.com/repos/grempe/amazon-ec2/languages","stargazers_url":"https://api.github.com/repos/grempe/amazon-ec2/stargazers","contributors_url":"https://api.github.com/repos/grempe/amazon-ec2/contributors","subscribers_url":"https://api.github.com/repos/grempe/amazon-ec2/subscribers","subscription_url":"https://api.github.com/repos/grempe/amazon-ec2/subscription","commits_url":"https://api.github.com/repos/grempe/amazon-ec2/commits{/sha}","git_commits_url":"https://api.github.com/repos/grempe/amazon-ec2/git/commits{/sha}","comments_url":"https://api.github.com/repos/grempe/amazon-ec2/comments{/number}","issue_comment_url":"https://api.github.com/repos/grempe/amazon-ec2/issues/comments/{number}","contents_url":"https://api.github.com/repos/grempe/amazon-ec2/contents/{+path}","compare_url":"https://api.github.com/repos/grempe/amazon-ec2/compare/{base}...{head}","merges_url":"https://api.github.com/repos/grempe/amazon-ec2/merges","archive_url":"https://api.github.com/repos/grempe/amazon-ec2/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/grempe/amazon-ec2/downloads","issues_url":"https://api.github.com/repos/grempe/amazon-ec2/issues{/number}","pulls_url":"https://api.github.com/repos/grempe/amazon-ec2/pulls{/number}","milestones_url":"https://api.github.com/repos/grempe/amazon-ec2/milestones{/number}","notifications_url":"https://api.github.com/repos/grempe/amazon-ec2/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/grempe/amazon-ec2/labels{/name}"},{"id":203,"name":"merblogger","full_name":"wayneeseguin/merblogger","owner":{"login":"wayneeseguin","id":18,"avatar_url":"https://0.gravatar.com/avatar/b9b5ff40232c1dfd61238c2a90467f84?d=https%3A%2F%2Fidenticons.github.com%2F6f4922f45568161a8cdf4ad2299f6d23.png","gravatar_id":"b9b5ff40232c1dfd61238c2a90467f84","url":"https://api.github.com/users/wayneeseguin","html_url":"https://github.com/wayneeseguin","followers_url":"https://api.github.com/users/wayneeseguin/followers","following_url":"https://api.github.com/users/wayneeseguin/following{/other_user}","gists_url":"https://api.github.com/users/wayneeseguin/gists{/gist_id}","starred_url":"https://api.github.com/users/wayneeseguin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wayneeseguin/subscriptions","organizations_url":"https://api.github.com/users/wayneeseguin/orgs","repos_url":"https://api.github.com/users/wayneeseguin/repos","events_url":"https://api.github.com/users/wayneeseguin/events{/privacy}","received_events_url":"https://api.github.com/users/wayneeseguin/received_events","type":"User"},"private":false,"html_url":"https://github.com/wayneeseguin/merblogger","description":"A Merb Blogging & Publishing Platform using Merb, DataMapper, haml and jQuery.","fork":false,"url":"https://api.github.com/repos/wayneeseguin/merblogger","forks_url":"https://api.github.com/repos/wayneeseguin/merblogger/forks","keys_url":"https://api.github.com/repos/wayneeseguin/merblogger/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wayneeseguin/merblogger/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wayneeseguin/merblogger/teams","hooks_url":"https://api.github.com/repos/wayneeseguin/merblogger/hooks","issue_events_url":"https://api.github.com/repos/wayneeseguin/merblogger/issues/events{/number}","events_url":"https://api.github.com/repos/wayneeseguin/merblogger/events","assignees_url":"https://api.github.com/repos/wayneeseguin/merblogger/assignees{/user}","branches_url":"https://api.github.com/repos/wayneeseguin/merblogger/branches{/branch}","tags_url":"https://api.github.com/repos/wayneeseguin/merblogger/tags","blobs_url":"https://api.github.com/repos/wayneeseguin/merblogger/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wayneeseguin/merblogger/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wayneeseguin/merblogger/git/refs{/sha}","trees_url":"https://api.github.com/repos/wayneeseguin/merblogger/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wayneeseguin/merblogger/statuses/{sha}","languages_url":"https://api.github.com/repos/wayneeseguin/merblogger/languages","stargazers_url":"https://api.github.com/repos/wayneeseguin/merblogger/stargazers","contributors_url":"https://api.github.com/repos/wayneeseguin/merblogger/contributors","subscribers_url":"https://api.github.com/repos/wayneeseguin/merblogger/subscribers","subscription_url":"https://api.github.com/repos/wayneeseguin/merblogger/subscription","commits_url":"https://api.github.com/repos/wayneeseguin/merblogger/commits{/sha}","git_commits_url":"https://api.github.com/repos/wayneeseguin/merblogger/git/commits{/sha}","comments_url":"https://api.github.com/repos/wayneeseguin/merblogger/comments{/number}","issue_comment_url":"https://api.github.com/repos/wayneeseguin/merblogger/issues/comments/{number}","contents_url":"https://api.github.com/repos/wayneeseguin/merblogger/contents/{+path}","compare_url":"https://api.github.com/repos/wayneeseguin/merblogger/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wayneeseguin/merblogger/merges","archive_url":"https://api.github.com/repos/wayneeseguin/merblogger/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wayneeseguin/merblogger/downloads","issues_url":"https://api.github.com/repos/wayneeseguin/merblogger/issues{/number}","pulls_url":"https://api.github.com/repos/wayneeseguin/merblogger/pulls{/number}","milestones_url":"https://api.github.com/repos/wayneeseguin/merblogger/milestones{/number}","notifications_url":"https://api.github.com/repos/wayneeseguin/merblogger/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wayneeseguin/merblogger/labels{/name}"},{"id":204,"name":"merbtastic","full_name":"wayneeseguin/merbtastic","owner":{"login":"wayneeseguin","id":18,"avatar_url":"https://0.gravatar.com/avatar/b9b5ff40232c1dfd61238c2a90467f84?d=https%3A%2F%2Fidenticons.github.com%2F6f4922f45568161a8cdf4ad2299f6d23.png","gravatar_id":"b9b5ff40232c1dfd61238c2a90467f84","url":"https://api.github.com/users/wayneeseguin","html_url":"https://github.com/wayneeseguin","followers_url":"https://api.github.com/users/wayneeseguin/followers","following_url":"https://api.github.com/users/wayneeseguin/following{/other_user}","gists_url":"https://api.github.com/users/wayneeseguin/gists{/gist_id}","starred_url":"https://api.github.com/users/wayneeseguin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wayneeseguin/subscriptions","organizations_url":"https://api.github.com/users/wayneeseguin/orgs","repos_url":"https://api.github.com/users/wayneeseguin/repos","events_url":"https://api.github.com/users/wayneeseguin/events{/privacy}","received_events_url":"https://api.github.com/users/wayneeseguin/received_events","type":"User"},"private":false,"html_url":"https://github.com/wayneeseguin/merbtastic","description":"Merb + Webgen CMS system that has dynamic routing, Nginx config and static site generation with haml/sass/erb/... support.","fork":false,"url":"https://api.github.com/repos/wayneeseguin/merbtastic","forks_url":"https://api.github.com/repos/wayneeseguin/merbtastic/forks","keys_url":"https://api.github.com/repos/wayneeseguin/merbtastic/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wayneeseguin/merbtastic/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wayneeseguin/merbtastic/teams","hooks_url":"https://api.github.com/repos/wayneeseguin/merbtastic/hooks","issue_events_url":"https://api.github.com/repos/wayneeseguin/merbtastic/issues/events{/number}","events_url":"https://api.github.com/repos/wayneeseguin/merbtastic/events","assignees_url":"https://api.github.com/repos/wayneeseguin/merbtastic/assignees{/user}","branches_url":"https://api.github.com/repos/wayneeseguin/merbtastic/branches{/branch}","tags_url":"https://api.github.com/repos/wayneeseguin/merbtastic/tags","blobs_url":"https://api.github.com/repos/wayneeseguin/merbtastic/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wayneeseguin/merbtastic/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wayneeseguin/merbtastic/git/refs{/sha}","trees_url":"https://api.github.com/repos/wayneeseguin/merbtastic/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wayneeseguin/merbtastic/statuses/{sha}","languages_url":"https://api.github.com/repos/wayneeseguin/merbtastic/languages","stargazers_url":"https://api.github.com/repos/wayneeseguin/merbtastic/stargazers","contributors_url":"https://api.github.com/repos/wayneeseguin/merbtastic/contributors","subscribers_url":"https://api.github.com/repos/wayneeseguin/merbtastic/subscribers","subscription_url":"https://api.github.com/repos/wayneeseguin/merbtastic/subscription","commits_url":"https://api.github.com/repos/wayneeseguin/merbtastic/commits{/sha}","git_commits_url":"https://api.github.com/repos/wayneeseguin/merbtastic/git/commits{/sha}","comments_url":"https://api.github.com/repos/wayneeseguin/merbtastic/comments{/number}","issue_comment_url":"https://api.github.com/repos/wayneeseguin/merbtastic/issues/comments/{number}","contents_url":"https://api.github.com/repos/wayneeseguin/merbtastic/contents/{+path}","compare_url":"https://api.github.com/repos/wayneeseguin/merbtastic/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wayneeseguin/merbtastic/merges","archive_url":"https://api.github.com/repos/wayneeseguin/merbtastic/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wayneeseguin/merbtastic/downloads","issues_url":"https://api.github.com/repos/wayneeseguin/merbtastic/issues{/number}","pulls_url":"https://api.github.com/repos/wayneeseguin/merbtastic/pulls{/number}","milestones_url":"https://api.github.com/repos/wayneeseguin/merbtastic/milestones{/number}","notifications_url":"https://api.github.com/repos/wayneeseguin/merbtastic/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wayneeseguin/merbtastic/labels{/name}"},{"id":205,"name":"alogr","full_name":"wayneeseguin/alogr","owner":{"login":"wayneeseguin","id":18,"avatar_url":"https://0.gravatar.com/avatar/b9b5ff40232c1dfd61238c2a90467f84?d=https%3A%2F%2Fidenticons.github.com%2F6f4922f45568161a8cdf4ad2299f6d23.png","gravatar_id":"b9b5ff40232c1dfd61238c2a90467f84","url":"https://api.github.com/users/wayneeseguin","html_url":"https://github.com/wayneeseguin","followers_url":"https://api.github.com/users/wayneeseguin/followers","following_url":"https://api.github.com/users/wayneeseguin/following{/other_user}","gists_url":"https://api.github.com/users/wayneeseguin/gists{/gist_id}","starred_url":"https://api.github.com/users/wayneeseguin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wayneeseguin/subscriptions","organizations_url":"https://api.github.com/users/wayneeseguin/orgs","repos_url":"https://api.github.com/users/wayneeseguin/repos","events_url":"https://api.github.com/users/wayneeseguin/events{/privacy}","received_events_url":"https://api.github.com/users/wayneeseguin/received_events","type":"User"},"private":false,"html_url":"https://github.com/wayneeseguin/alogr","description":"AlogR is a threadsafe non-blocking asynchronous configurable logger for Ruby.","fork":false,"url":"https://api.github.com/repos/wayneeseguin/alogr","forks_url":"https://api.github.com/repos/wayneeseguin/alogr/forks","keys_url":"https://api.github.com/repos/wayneeseguin/alogr/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wayneeseguin/alogr/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wayneeseguin/alogr/teams","hooks_url":"https://api.github.com/repos/wayneeseguin/alogr/hooks","issue_events_url":"https://api.github.com/repos/wayneeseguin/alogr/issues/events{/number}","events_url":"https://api.github.com/repos/wayneeseguin/alogr/events","assignees_url":"https://api.github.com/repos/wayneeseguin/alogr/assignees{/user}","branches_url":"https://api.github.com/repos/wayneeseguin/alogr/branches{/branch}","tags_url":"https://api.github.com/repos/wayneeseguin/alogr/tags","blobs_url":"https://api.github.com/repos/wayneeseguin/alogr/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wayneeseguin/alogr/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wayneeseguin/alogr/git/refs{/sha}","trees_url":"https://api.github.com/repos/wayneeseguin/alogr/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wayneeseguin/alogr/statuses/{sha}","languages_url":"https://api.github.com/repos/wayneeseguin/alogr/languages","stargazers_url":"https://api.github.com/repos/wayneeseguin/alogr/stargazers","contributors_url":"https://api.github.com/repos/wayneeseguin/alogr/contributors","subscribers_url":"https://api.github.com/repos/wayneeseguin/alogr/subscribers","subscription_url":"https://api.github.com/repos/wayneeseguin/alogr/subscription","commits_url":"https://api.github.com/repos/wayneeseguin/alogr/commits{/sha}","git_commits_url":"https://api.github.com/repos/wayneeseguin/alogr/git/commits{/sha}","comments_url":"https://api.github.com/repos/wayneeseguin/alogr/comments{/number}","issue_comment_url":"https://api.github.com/repos/wayneeseguin/alogr/issues/comments/{number}","contents_url":"https://api.github.com/repos/wayneeseguin/alogr/contents/{+path}","compare_url":"https://api.github.com/repos/wayneeseguin/alogr/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wayneeseguin/alogr/merges","archive_url":"https://api.github.com/repos/wayneeseguin/alogr/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wayneeseguin/alogr/downloads","issues_url":"https://api.github.com/repos/wayneeseguin/alogr/issues{/number}","pulls_url":"https://api.github.com/repos/wayneeseguin/alogr/pulls{/number}","milestones_url":"https://api.github.com/repos/wayneeseguin/alogr/milestones{/number}","notifications_url":"https://api.github.com/repos/wayneeseguin/alogr/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wayneeseguin/alogr/labels{/name}"},{"id":206,"name":"autozest","full_name":"wayneeseguin/autozest","owner":{"login":"wayneeseguin","id":18,"avatar_url":"https://0.gravatar.com/avatar/b9b5ff40232c1dfd61238c2a90467f84?d=https%3A%2F%2Fidenticons.github.com%2F6f4922f45568161a8cdf4ad2299f6d23.png","gravatar_id":"b9b5ff40232c1dfd61238c2a90467f84","url":"https://api.github.com/users/wayneeseguin","html_url":"https://github.com/wayneeseguin","followers_url":"https://api.github.com/users/wayneeseguin/followers","following_url":"https://api.github.com/users/wayneeseguin/following{/other_user}","gists_url":"https://api.github.com/users/wayneeseguin/gists{/gist_id}","starred_url":"https://api.github.com/users/wayneeseguin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wayneeseguin/subscriptions","organizations_url":"https://api.github.com/users/wayneeseguin/orgs","repos_url":"https://api.github.com/users/wayneeseguin/repos","events_url":"https://api.github.com/users/wayneeseguin/events{/privacy}","received_events_url":"https://api.github.com/users/wayneeseguin/received_events","type":"User"},"private":false,"html_url":"https://github.com/wayneeseguin/autozest","description":"AutoZest is an autotest addon that: * automated growl installation * generation of .autotest with growl & autozest config * generation of .autozest.yml config file * autozest.sqlite3 database file for pulling random messages based on severity","fork":false,"url":"https://api.github.com/repos/wayneeseguin/autozest","forks_url":"https://api.github.com/repos/wayneeseguin/autozest/forks","keys_url":"https://api.github.com/repos/wayneeseguin/autozest/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wayneeseguin/autozest/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wayneeseguin/autozest/teams","hooks_url":"https://api.github.com/repos/wayneeseguin/autozest/hooks","issue_events_url":"https://api.github.com/repos/wayneeseguin/autozest/issues/events{/number}","events_url":"https://api.github.com/repos/wayneeseguin/autozest/events","assignees_url":"https://api.github.com/repos/wayneeseguin/autozest/assignees{/user}","branches_url":"https://api.github.com/repos/wayneeseguin/autozest/branches{/branch}","tags_url":"https://api.github.com/repos/wayneeseguin/autozest/tags","blobs_url":"https://api.github.com/repos/wayneeseguin/autozest/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wayneeseguin/autozest/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wayneeseguin/autozest/git/refs{/sha}","trees_url":"https://api.github.com/repos/wayneeseguin/autozest/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wayneeseguin/autozest/statuses/{sha}","languages_url":"https://api.github.com/repos/wayneeseguin/autozest/languages","stargazers_url":"https://api.github.com/repos/wayneeseguin/autozest/stargazers","contributors_url":"https://api.github.com/repos/wayneeseguin/autozest/contributors","subscribers_url":"https://api.github.com/repos/wayneeseguin/autozest/subscribers","subscription_url":"https://api.github.com/repos/wayneeseguin/autozest/subscription","commits_url":"https://api.github.com/repos/wayneeseguin/autozest/commits{/sha}","git_commits_url":"https://api.github.com/repos/wayneeseguin/autozest/git/commits{/sha}","comments_url":"https://api.github.com/repos/wayneeseguin/autozest/comments{/number}","issue_comment_url":"https://api.github.com/repos/wayneeseguin/autozest/issues/comments/{number}","contents_url":"https://api.github.com/repos/wayneeseguin/autozest/contents/{+path}","compare_url":"https://api.github.com/repos/wayneeseguin/autozest/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wayneeseguin/autozest/merges","archive_url":"https://api.github.com/repos/wayneeseguin/autozest/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wayneeseguin/autozest/downloads","issues_url":"https://api.github.com/repos/wayneeseguin/autozest/issues{/number}","pulls_url":"https://api.github.com/repos/wayneeseguin/autozest/pulls{/number}","milestones_url":"https://api.github.com/repos/wayneeseguin/autozest/milestones{/number}","notifications_url":"https://api.github.com/repos/wayneeseguin/autozest/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wayneeseguin/autozest/labels{/name}"},{"id":207,"name":"rnginx","full_name":"wayneeseguin/rnginx","owner":{"login":"wayneeseguin","id":18,"avatar_url":"https://0.gravatar.com/avatar/b9b5ff40232c1dfd61238c2a90467f84?d=https%3A%2F%2Fidenticons.github.com%2F6f4922f45568161a8cdf4ad2299f6d23.png","gravatar_id":"b9b5ff40232c1dfd61238c2a90467f84","url":"https://api.github.com/users/wayneeseguin","html_url":"https://github.com/wayneeseguin","followers_url":"https://api.github.com/users/wayneeseguin/followers","following_url":"https://api.github.com/users/wayneeseguin/following{/other_user}","gists_url":"https://api.github.com/users/wayneeseguin/gists{/gist_id}","starred_url":"https://api.github.com/users/wayneeseguin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wayneeseguin/subscriptions","organizations_url":"https://api.github.com/users/wayneeseguin/orgs","repos_url":"https://api.github.com/users/wayneeseguin/repos","events_url":"https://api.github.com/users/wayneeseguin/events{/privacy}","received_events_url":"https://api.github.com/users/wayneeseguin/received_events","type":"User"},"private":false,"html_url":"https://github.com/wayneeseguin/rnginx","description":"Command line utility and library for working with Nginx configuration scripts.","fork":false,"url":"https://api.github.com/repos/wayneeseguin/rnginx","forks_url":"https://api.github.com/repos/wayneeseguin/rnginx/forks","keys_url":"https://api.github.com/repos/wayneeseguin/rnginx/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wayneeseguin/rnginx/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wayneeseguin/rnginx/teams","hooks_url":"https://api.github.com/repos/wayneeseguin/rnginx/hooks","issue_events_url":"https://api.github.com/repos/wayneeseguin/rnginx/issues/events{/number}","events_url":"https://api.github.com/repos/wayneeseguin/rnginx/events","assignees_url":"https://api.github.com/repos/wayneeseguin/rnginx/assignees{/user}","branches_url":"https://api.github.com/repos/wayneeseguin/rnginx/branches{/branch}","tags_url":"https://api.github.com/repos/wayneeseguin/rnginx/tags","blobs_url":"https://api.github.com/repos/wayneeseguin/rnginx/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wayneeseguin/rnginx/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wayneeseguin/rnginx/git/refs{/sha}","trees_url":"https://api.github.com/repos/wayneeseguin/rnginx/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wayneeseguin/rnginx/statuses/{sha}","languages_url":"https://api.github.com/repos/wayneeseguin/rnginx/languages","stargazers_url":"https://api.github.com/repos/wayneeseguin/rnginx/stargazers","contributors_url":"https://api.github.com/repos/wayneeseguin/rnginx/contributors","subscribers_url":"https://api.github.com/repos/wayneeseguin/rnginx/subscribers","subscription_url":"https://api.github.com/repos/wayneeseguin/rnginx/subscription","commits_url":"https://api.github.com/repos/wayneeseguin/rnginx/commits{/sha}","git_commits_url":"https://api.github.com/repos/wayneeseguin/rnginx/git/commits{/sha}","comments_url":"https://api.github.com/repos/wayneeseguin/rnginx/comments{/number}","issue_comment_url":"https://api.github.com/repos/wayneeseguin/rnginx/issues/comments/{number}","contents_url":"https://api.github.com/repos/wayneeseguin/rnginx/contents/{+path}","compare_url":"https://api.github.com/repos/wayneeseguin/rnginx/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wayneeseguin/rnginx/merges","archive_url":"https://api.github.com/repos/wayneeseguin/rnginx/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wayneeseguin/rnginx/downloads","issues_url":"https://api.github.com/repos/wayneeseguin/rnginx/issues{/number}","pulls_url":"https://api.github.com/repos/wayneeseguin/rnginx/pulls{/number}","milestones_url":"https://api.github.com/repos/wayneeseguin/rnginx/milestones{/number}","notifications_url":"https://api.github.com/repos/wayneeseguin/rnginx/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wayneeseguin/rnginx/labels{/name}"},{"id":208,"name":"sequel","full_name":"wayneeseguin/sequel","owner":{"login":"wayneeseguin","id":18,"avatar_url":"https://0.gravatar.com/avatar/b9b5ff40232c1dfd61238c2a90467f84?d=https%3A%2F%2Fidenticons.github.com%2F6f4922f45568161a8cdf4ad2299f6d23.png","gravatar_id":"b9b5ff40232c1dfd61238c2a90467f84","url":"https://api.github.com/users/wayneeseguin","html_url":"https://github.com/wayneeseguin","followers_url":"https://api.github.com/users/wayneeseguin/followers","following_url":"https://api.github.com/users/wayneeseguin/following{/other_user}","gists_url":"https://api.github.com/users/wayneeseguin/gists{/gist_id}","starred_url":"https://api.github.com/users/wayneeseguin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wayneeseguin/subscriptions","organizations_url":"https://api.github.com/users/wayneeseguin/orgs","repos_url":"https://api.github.com/users/wayneeseguin/repos","events_url":"https://api.github.com/users/wayneeseguin/events{/privacy}","received_events_url":"https://api.github.com/users/wayneeseguin/received_events","type":"User"},"private":false,"html_url":"https://github.com/wayneeseguin/sequel","description":"Sequel ORM","fork":false,"url":"https://api.github.com/repos/wayneeseguin/sequel","forks_url":"https://api.github.com/repos/wayneeseguin/sequel/forks","keys_url":"https://api.github.com/repos/wayneeseguin/sequel/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wayneeseguin/sequel/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wayneeseguin/sequel/teams","hooks_url":"https://api.github.com/repos/wayneeseguin/sequel/hooks","issue_events_url":"https://api.github.com/repos/wayneeseguin/sequel/issues/events{/number}","events_url":"https://api.github.com/repos/wayneeseguin/sequel/events","assignees_url":"https://api.github.com/repos/wayneeseguin/sequel/assignees{/user}","branches_url":"https://api.github.com/repos/wayneeseguin/sequel/branches{/branch}","tags_url":"https://api.github.com/repos/wayneeseguin/sequel/tags","blobs_url":"https://api.github.com/repos/wayneeseguin/sequel/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wayneeseguin/sequel/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wayneeseguin/sequel/git/refs{/sha}","trees_url":"https://api.github.com/repos/wayneeseguin/sequel/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wayneeseguin/sequel/statuses/{sha}","languages_url":"https://api.github.com/repos/wayneeseguin/sequel/languages","stargazers_url":"https://api.github.com/repos/wayneeseguin/sequel/stargazers","contributors_url":"https://api.github.com/repos/wayneeseguin/sequel/contributors","subscribers_url":"https://api.github.com/repos/wayneeseguin/sequel/subscribers","subscription_url":"https://api.github.com/repos/wayneeseguin/sequel/subscription","commits_url":"https://api.github.com/repos/wayneeseguin/sequel/commits{/sha}","git_commits_url":"https://api.github.com/repos/wayneeseguin/sequel/git/commits{/sha}","comments_url":"https://api.github.com/repos/wayneeseguin/sequel/comments{/number}","issue_comment_url":"https://api.github.com/repos/wayneeseguin/sequel/issues/comments/{number}","contents_url":"https://api.github.com/repos/wayneeseguin/sequel/contents/{+path}","compare_url":"https://api.github.com/repos/wayneeseguin/sequel/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wayneeseguin/sequel/merges","archive_url":"https://api.github.com/repos/wayneeseguin/sequel/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wayneeseguin/sequel/downloads","issues_url":"https://api.github.com/repos/wayneeseguin/sequel/issues{/number}","pulls_url":"https://api.github.com/repos/wayneeseguin/sequel/pulls{/number}","milestones_url":"https://api.github.com/repos/wayneeseguin/sequel/milestones{/number}","notifications_url":"https://api.github.com/repos/wayneeseguin/sequel/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wayneeseguin/sequel/labels{/name}"},{"id":211,"name":"simply_versioned","full_name":"bmizerany/simply_versioned","owner":{"login":"bmizerany","id":46,"avatar_url":"https://2.gravatar.com/avatar/1a250566b475961b9b36abf359950c76?d=https%3A%2F%2Fidenticons.github.com%2Fd9d4f495e875a2e075a1a4a6e1b9770f.png","gravatar_id":"1a250566b475961b9b36abf359950c76","url":"https://api.github.com/users/bmizerany","html_url":"https://github.com/bmizerany","followers_url":"https://api.github.com/users/bmizerany/followers","following_url":"https://api.github.com/users/bmizerany/following{/other_user}","gists_url":"https://api.github.com/users/bmizerany/gists{/gist_id}","starred_url":"https://api.github.com/users/bmizerany/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bmizerany/subscriptions","organizations_url":"https://api.github.com/users/bmizerany/orgs","repos_url":"https://api.github.com/users/bmizerany/repos","events_url":"https://api.github.com/users/bmizerany/events{/privacy}","received_events_url":"https://api.github.com/users/bmizerany/received_events","type":"User"},"private":false,"html_url":"https://github.com/bmizerany/simply_versioned","description":"A simple, non-invasive, approach to versioning ActiveRecord models","fork":true,"url":"https://api.github.com/repos/bmizerany/simply_versioned","forks_url":"https://api.github.com/repos/bmizerany/simply_versioned/forks","keys_url":"https://api.github.com/repos/bmizerany/simply_versioned/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bmizerany/simply_versioned/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bmizerany/simply_versioned/teams","hooks_url":"https://api.github.com/repos/bmizerany/simply_versioned/hooks","issue_events_url":"https://api.github.com/repos/bmizerany/simply_versioned/issues/events{/number}","events_url":"https://api.github.com/repos/bmizerany/simply_versioned/events","assignees_url":"https://api.github.com/repos/bmizerany/simply_versioned/assignees{/user}","branches_url":"https://api.github.com/repos/bmizerany/simply_versioned/branches{/branch}","tags_url":"https://api.github.com/repos/bmizerany/simply_versioned/tags","blobs_url":"https://api.github.com/repos/bmizerany/simply_versioned/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bmizerany/simply_versioned/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bmizerany/simply_versioned/git/refs{/sha}","trees_url":"https://api.github.com/repos/bmizerany/simply_versioned/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bmizerany/simply_versioned/statuses/{sha}","languages_url":"https://api.github.com/repos/bmizerany/simply_versioned/languages","stargazers_url":"https://api.github.com/repos/bmizerany/simply_versioned/stargazers","contributors_url":"https://api.github.com/repos/bmizerany/simply_versioned/contributors","subscribers_url":"https://api.github.com/repos/bmizerany/simply_versioned/subscribers","subscription_url":"https://api.github.com/repos/bmizerany/simply_versioned/subscription","commits_url":"https://api.github.com/repos/bmizerany/simply_versioned/commits{/sha}","git_commits_url":"https://api.github.com/repos/bmizerany/simply_versioned/git/commits{/sha}","comments_url":"https://api.github.com/repos/bmizerany/simply_versioned/comments{/number}","issue_comment_url":"https://api.github.com/repos/bmizerany/simply_versioned/issues/comments/{number}","contents_url":"https://api.github.com/repos/bmizerany/simply_versioned/contents/{+path}","compare_url":"https://api.github.com/repos/bmizerany/simply_versioned/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bmizerany/simply_versioned/merges","archive_url":"https://api.github.com/repos/bmizerany/simply_versioned/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bmizerany/simply_versioned/downloads","issues_url":"https://api.github.com/repos/bmizerany/simply_versioned/issues{/number}","pulls_url":"https://api.github.com/repos/bmizerany/simply_versioned/pulls{/number}","milestones_url":"https://api.github.com/repos/bmizerany/simply_versioned/milestones{/number}","notifications_url":"https://api.github.com/repos/bmizerany/simply_versioned/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bmizerany/simply_versioned/labels{/name}"},{"id":212,"name":"switchpipe","full_name":"peterc/switchpipe","owner":{"login":"peterc","id":118,"avatar_url":"https://1.gravatar.com/avatar/6268c7528d855f1cef5696a00d159909?d=https%3A%2F%2Fidenticons.github.com%2F5ef059938ba799aaa845e1c2e8a762bd.png","gravatar_id":"6268c7528d855f1cef5696a00d159909","url":"https://api.github.com/users/peterc","html_url":"https://github.com/peterc","followers_url":"https://api.github.com/users/peterc/followers","following_url":"https://api.github.com/users/peterc/following{/other_user}","gists_url":"https://api.github.com/users/peterc/gists{/gist_id}","starred_url":"https://api.github.com/users/peterc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/peterc/subscriptions","organizations_url":"https://api.github.com/users/peterc/orgs","repos_url":"https://api.github.com/users/peterc/repos","events_url":"https://api.github.com/users/peterc/events{/privacy}","received_events_url":"https://api.github.com/users/peterc/received_events","type":"User"},"private":false,"html_url":"https://github.com/peterc/switchpipe","description":"SwitchPipe is a backend process manager and HTTP proxy that makes (especially Ruby) web app deployment simple. NOW OBSOLETE. DO NOT USE.","fork":false,"url":"https://api.github.com/repos/peterc/switchpipe","forks_url":"https://api.github.com/repos/peterc/switchpipe/forks","keys_url":"https://api.github.com/repos/peterc/switchpipe/keys{/key_id}","collaborators_url":"https://api.github.com/repos/peterc/switchpipe/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/peterc/switchpipe/teams","hooks_url":"https://api.github.com/repos/peterc/switchpipe/hooks","issue_events_url":"https://api.github.com/repos/peterc/switchpipe/issues/events{/number}","events_url":"https://api.github.com/repos/peterc/switchpipe/events","assignees_url":"https://api.github.com/repos/peterc/switchpipe/assignees{/user}","branches_url":"https://api.github.com/repos/peterc/switchpipe/branches{/branch}","tags_url":"https://api.github.com/repos/peterc/switchpipe/tags","blobs_url":"https://api.github.com/repos/peterc/switchpipe/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/peterc/switchpipe/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/peterc/switchpipe/git/refs{/sha}","trees_url":"https://api.github.com/repos/peterc/switchpipe/git/trees{/sha}","statuses_url":"https://api.github.com/repos/peterc/switchpipe/statuses/{sha}","languages_url":"https://api.github.com/repos/peterc/switchpipe/languages","stargazers_url":"https://api.github.com/repos/peterc/switchpipe/stargazers","contributors_url":"https://api.github.com/repos/peterc/switchpipe/contributors","subscribers_url":"https://api.github.com/repos/peterc/switchpipe/subscribers","subscription_url":"https://api.github.com/repos/peterc/switchpipe/subscription","commits_url":"https://api.github.com/repos/peterc/switchpipe/commits{/sha}","git_commits_url":"https://api.github.com/repos/peterc/switchpipe/git/commits{/sha}","comments_url":"https://api.github.com/repos/peterc/switchpipe/comments{/number}","issue_comment_url":"https://api.github.com/repos/peterc/switchpipe/issues/comments/{number}","contents_url":"https://api.github.com/repos/peterc/switchpipe/contents/{+path}","compare_url":"https://api.github.com/repos/peterc/switchpipe/compare/{base}...{head}","merges_url":"https://api.github.com/repos/peterc/switchpipe/merges","archive_url":"https://api.github.com/repos/peterc/switchpipe/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/peterc/switchpipe/downloads","issues_url":"https://api.github.com/repos/peterc/switchpipe/issues{/number}","pulls_url":"https://api.github.com/repos/peterc/switchpipe/pulls{/number}","milestones_url":"https://api.github.com/repos/peterc/switchpipe/milestones{/number}","notifications_url":"https://api.github.com/repos/peterc/switchpipe/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/peterc/switchpipe/labels{/name}"},{"id":213,"name":"arc","full_name":"hornbeck/arc","owner":{"login":"hornbeck","id":49,"avatar_url":"https://2.gravatar.com/avatar/47093444301bbde90d0aef5fa5c3ac86?d=https%3A%2F%2Fidenticons.github.com%2Ff457c545a9ded88f18ecee47145a72c0.png","gravatar_id":"47093444301bbde90d0aef5fa5c3ac86","url":"https://api.github.com/users/hornbeck","html_url":"https://github.com/hornbeck","followers_url":"https://api.github.com/users/hornbeck/followers","following_url":"https://api.github.com/users/hornbeck/following{/other_user}","gists_url":"https://api.github.com/users/hornbeck/gists{/gist_id}","starred_url":"https://api.github.com/users/hornbeck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hornbeck/subscriptions","organizations_url":"https://api.github.com/users/hornbeck/orgs","repos_url":"https://api.github.com/users/hornbeck/repos","events_url":"https://api.github.com/users/hornbeck/events{/privacy}","received_events_url":"https://api.github.com/users/hornbeck/received_events","type":"User"},"private":false,"html_url":"https://github.com/hornbeck/arc","description":"My arc repo","fork":false,"url":"https://api.github.com/repos/hornbeck/arc","forks_url":"https://api.github.com/repos/hornbeck/arc/forks","keys_url":"https://api.github.com/repos/hornbeck/arc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hornbeck/arc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hornbeck/arc/teams","hooks_url":"https://api.github.com/repos/hornbeck/arc/hooks","issue_events_url":"https://api.github.com/repos/hornbeck/arc/issues/events{/number}","events_url":"https://api.github.com/repos/hornbeck/arc/events","assignees_url":"https://api.github.com/repos/hornbeck/arc/assignees{/user}","branches_url":"https://api.github.com/repos/hornbeck/arc/branches{/branch}","tags_url":"https://api.github.com/repos/hornbeck/arc/tags","blobs_url":"https://api.github.com/repos/hornbeck/arc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hornbeck/arc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hornbeck/arc/git/refs{/sha}","trees_url":"https://api.github.com/repos/hornbeck/arc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hornbeck/arc/statuses/{sha}","languages_url":"https://api.github.com/repos/hornbeck/arc/languages","stargazers_url":"https://api.github.com/repos/hornbeck/arc/stargazers","contributors_url":"https://api.github.com/repos/hornbeck/arc/contributors","subscribers_url":"https://api.github.com/repos/hornbeck/arc/subscribers","subscription_url":"https://api.github.com/repos/hornbeck/arc/subscription","commits_url":"https://api.github.com/repos/hornbeck/arc/commits{/sha}","git_commits_url":"https://api.github.com/repos/hornbeck/arc/git/commits{/sha}","comments_url":"https://api.github.com/repos/hornbeck/arc/comments{/number}","issue_comment_url":"https://api.github.com/repos/hornbeck/arc/issues/comments/{number}","contents_url":"https://api.github.com/repos/hornbeck/arc/contents/{+path}","compare_url":"https://api.github.com/repos/hornbeck/arc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hornbeck/arc/merges","archive_url":"https://api.github.com/repos/hornbeck/arc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hornbeck/arc/downloads","issues_url":"https://api.github.com/repos/hornbeck/arc/issues{/number}","pulls_url":"https://api.github.com/repos/hornbeck/arc/pulls{/number}","milestones_url":"https://api.github.com/repos/hornbeck/arc/milestones{/number}","notifications_url":"https://api.github.com/repos/hornbeck/arc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hornbeck/arc/labels{/name}"},{"id":217,"name":"ebay4r","full_name":"up_the_irons/ebay4r","owner":{"login":"up_the_irons","id":121,"avatar_url":"https://2.gravatar.com/avatar/d9ae72d7364c7909a0a4b02cba72438a?d=https%3A%2F%2Fidenticons.github.com%2F4c56ff4ce4aaf9573aa5dff913df997a.png","gravatar_id":"d9ae72d7364c7909a0a4b02cba72438a","url":"https://api.github.com/users/up_the_irons","html_url":"https://github.com/up_the_irons","followers_url":"https://api.github.com/users/up_the_irons/followers","following_url":"https://api.github.com/users/up_the_irons/following{/other_user}","gists_url":"https://api.github.com/users/up_the_irons/gists{/gist_id}","starred_url":"https://api.github.com/users/up_the_irons/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/up_the_irons/subscriptions","organizations_url":"https://api.github.com/users/up_the_irons/orgs","repos_url":"https://api.github.com/users/up_the_irons/repos","events_url":"https://api.github.com/users/up_the_irons/events{/privacy}","received_events_url":"https://api.github.com/users/up_the_irons/received_events","type":"User"},"private":false,"html_url":"https://github.com/up_the_irons/ebay4r","description":"eBay4R is a Ruby wrapper for eBay's Web Services SOAP API","fork":false,"url":"https://api.github.com/repos/up_the_irons/ebay4r","forks_url":"https://api.github.com/repos/up_the_irons/ebay4r/forks","keys_url":"https://api.github.com/repos/up_the_irons/ebay4r/keys{/key_id}","collaborators_url":"https://api.github.com/repos/up_the_irons/ebay4r/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/up_the_irons/ebay4r/teams","hooks_url":"https://api.github.com/repos/up_the_irons/ebay4r/hooks","issue_events_url":"https://api.github.com/repos/up_the_irons/ebay4r/issues/events{/number}","events_url":"https://api.github.com/repos/up_the_irons/ebay4r/events","assignees_url":"https://api.github.com/repos/up_the_irons/ebay4r/assignees{/user}","branches_url":"https://api.github.com/repos/up_the_irons/ebay4r/branches{/branch}","tags_url":"https://api.github.com/repos/up_the_irons/ebay4r/tags","blobs_url":"https://api.github.com/repos/up_the_irons/ebay4r/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/up_the_irons/ebay4r/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/up_the_irons/ebay4r/git/refs{/sha}","trees_url":"https://api.github.com/repos/up_the_irons/ebay4r/git/trees{/sha}","statuses_url":"https://api.github.com/repos/up_the_irons/ebay4r/statuses/{sha}","languages_url":"https://api.github.com/repos/up_the_irons/ebay4r/languages","stargazers_url":"https://api.github.com/repos/up_the_irons/ebay4r/stargazers","contributors_url":"https://api.github.com/repos/up_the_irons/ebay4r/contributors","subscribers_url":"https://api.github.com/repos/up_the_irons/ebay4r/subscribers","subscription_url":"https://api.github.com/repos/up_the_irons/ebay4r/subscription","commits_url":"https://api.github.com/repos/up_the_irons/ebay4r/commits{/sha}","git_commits_url":"https://api.github.com/repos/up_the_irons/ebay4r/git/commits{/sha}","comments_url":"https://api.github.com/repos/up_the_irons/ebay4r/comments{/number}","issue_comment_url":"https://api.github.com/repos/up_the_irons/ebay4r/issues/comments/{number}","contents_url":"https://api.github.com/repos/up_the_irons/ebay4r/contents/{+path}","compare_url":"https://api.github.com/repos/up_the_irons/ebay4r/compare/{base}...{head}","merges_url":"https://api.github.com/repos/up_the_irons/ebay4r/merges","archive_url":"https://api.github.com/repos/up_the_irons/ebay4r/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/up_the_irons/ebay4r/downloads","issues_url":"https://api.github.com/repos/up_the_irons/ebay4r/issues{/number}","pulls_url":"https://api.github.com/repos/up_the_irons/ebay4r/pulls{/number}","milestones_url":"https://api.github.com/repos/up_the_irons/ebay4r/milestones{/number}","notifications_url":"https://api.github.com/repos/up_the_irons/ebay4r/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/up_the_irons/ebay4r/labels{/name}"},{"id":218,"name":"merb-plugins","full_name":"wycats/merb-plugins","owner":{"login":"wycats","id":4,"avatar_url":"https://2.gravatar.com/avatar/428167a3ec72235ba971162924492609?d=https%3A%2F%2Fidenticons.github.com%2Fa87ff679a2f3e71d9181a67b7542122c.png","gravatar_id":"428167a3ec72235ba971162924492609","url":"https://api.github.com/users/wycats","html_url":"https://github.com/wycats","followers_url":"https://api.github.com/users/wycats/followers","following_url":"https://api.github.com/users/wycats/following{/other_user}","gists_url":"https://api.github.com/users/wycats/gists{/gist_id}","starred_url":"https://api.github.com/users/wycats/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wycats/subscriptions","organizations_url":"https://api.github.com/users/wycats/orgs","repos_url":"https://api.github.com/users/wycats/repos","events_url":"https://api.github.com/users/wycats/events{/privacy}","received_events_url":"https://api.github.com/users/wycats/received_events","type":"User"},"private":false,"html_url":"https://github.com/wycats/merb-plugins","description":"Merb Plugins: Even more modules to hook up your Merb installation","fork":false,"url":"https://api.github.com/repos/wycats/merb-plugins","forks_url":"https://api.github.com/repos/wycats/merb-plugins/forks","keys_url":"https://api.github.com/repos/wycats/merb-plugins/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wycats/merb-plugins/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wycats/merb-plugins/teams","hooks_url":"https://api.github.com/repos/wycats/merb-plugins/hooks","issue_events_url":"https://api.github.com/repos/wycats/merb-plugins/issues/events{/number}","events_url":"https://api.github.com/repos/wycats/merb-plugins/events","assignees_url":"https://api.github.com/repos/wycats/merb-plugins/assignees{/user}","branches_url":"https://api.github.com/repos/wycats/merb-plugins/branches{/branch}","tags_url":"https://api.github.com/repos/wycats/merb-plugins/tags","blobs_url":"https://api.github.com/repos/wycats/merb-plugins/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wycats/merb-plugins/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wycats/merb-plugins/git/refs{/sha}","trees_url":"https://api.github.com/repos/wycats/merb-plugins/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wycats/merb-plugins/statuses/{sha}","languages_url":"https://api.github.com/repos/wycats/merb-plugins/languages","stargazers_url":"https://api.github.com/repos/wycats/merb-plugins/stargazers","contributors_url":"https://api.github.com/repos/wycats/merb-plugins/contributors","subscribers_url":"https://api.github.com/repos/wycats/merb-plugins/subscribers","subscription_url":"https://api.github.com/repos/wycats/merb-plugins/subscription","commits_url":"https://api.github.com/repos/wycats/merb-plugins/commits{/sha}","git_commits_url":"https://api.github.com/repos/wycats/merb-plugins/git/commits{/sha}","comments_url":"https://api.github.com/repos/wycats/merb-plugins/comments{/number}","issue_comment_url":"https://api.github.com/repos/wycats/merb-plugins/issues/comments/{number}","contents_url":"https://api.github.com/repos/wycats/merb-plugins/contents/{+path}","compare_url":"https://api.github.com/repos/wycats/merb-plugins/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wycats/merb-plugins/merges","archive_url":"https://api.github.com/repos/wycats/merb-plugins/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wycats/merb-plugins/downloads","issues_url":"https://api.github.com/repos/wycats/merb-plugins/issues{/number}","pulls_url":"https://api.github.com/repos/wycats/merb-plugins/pulls{/number}","milestones_url":"https://api.github.com/repos/wycats/merb-plugins/milestones{/number}","notifications_url":"https://api.github.com/repos/wycats/merb-plugins/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wycats/merb-plugins/labels{/name}"},{"id":220,"name":"ram","full_name":"up_the_irons/ram","owner":{"login":"up_the_irons","id":121,"avatar_url":"https://2.gravatar.com/avatar/d9ae72d7364c7909a0a4b02cba72438a?d=https%3A%2F%2Fidenticons.github.com%2F4c56ff4ce4aaf9573aa5dff913df997a.png","gravatar_id":"d9ae72d7364c7909a0a4b02cba72438a","url":"https://api.github.com/users/up_the_irons","html_url":"https://github.com/up_the_irons","followers_url":"https://api.github.com/users/up_the_irons/followers","following_url":"https://api.github.com/users/up_the_irons/following{/other_user}","gists_url":"https://api.github.com/users/up_the_irons/gists{/gist_id}","starred_url":"https://api.github.com/users/up_the_irons/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/up_the_irons/subscriptions","organizations_url":"https://api.github.com/users/up_the_irons/orgs","repos_url":"https://api.github.com/users/up_the_irons/repos","events_url":"https://api.github.com/users/up_the_irons/events{/privacy}","received_events_url":"https://api.github.com/users/up_the_irons/received_events","type":"User"},"private":false,"html_url":"https://github.com/up_the_irons/ram","description":"Ruby Asset Manager","fork":false,"url":"https://api.github.com/repos/up_the_irons/ram","forks_url":"https://api.github.com/repos/up_the_irons/ram/forks","keys_url":"https://api.github.com/repos/up_the_irons/ram/keys{/key_id}","collaborators_url":"https://api.github.com/repos/up_the_irons/ram/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/up_the_irons/ram/teams","hooks_url":"https://api.github.com/repos/up_the_irons/ram/hooks","issue_events_url":"https://api.github.com/repos/up_the_irons/ram/issues/events{/number}","events_url":"https://api.github.com/repos/up_the_irons/ram/events","assignees_url":"https://api.github.com/repos/up_the_irons/ram/assignees{/user}","branches_url":"https://api.github.com/repos/up_the_irons/ram/branches{/branch}","tags_url":"https://api.github.com/repos/up_the_irons/ram/tags","blobs_url":"https://api.github.com/repos/up_the_irons/ram/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/up_the_irons/ram/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/up_the_irons/ram/git/refs{/sha}","trees_url":"https://api.github.com/repos/up_the_irons/ram/git/trees{/sha}","statuses_url":"https://api.github.com/repos/up_the_irons/ram/statuses/{sha}","languages_url":"https://api.github.com/repos/up_the_irons/ram/languages","stargazers_url":"https://api.github.com/repos/up_the_irons/ram/stargazers","contributors_url":"https://api.github.com/repos/up_the_irons/ram/contributors","subscribers_url":"https://api.github.com/repos/up_the_irons/ram/subscribers","subscription_url":"https://api.github.com/repos/up_the_irons/ram/subscription","commits_url":"https://api.github.com/repos/up_the_irons/ram/commits{/sha}","git_commits_url":"https://api.github.com/repos/up_the_irons/ram/git/commits{/sha}","comments_url":"https://api.github.com/repos/up_the_irons/ram/comments{/number}","issue_comment_url":"https://api.github.com/repos/up_the_irons/ram/issues/comments/{number}","contents_url":"https://api.github.com/repos/up_the_irons/ram/contents/{+path}","compare_url":"https://api.github.com/repos/up_the_irons/ram/compare/{base}...{head}","merges_url":"https://api.github.com/repos/up_the_irons/ram/merges","archive_url":"https://api.github.com/repos/up_the_irons/ram/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/up_the_irons/ram/downloads","issues_url":"https://api.github.com/repos/up_the_irons/ram/issues{/number}","pulls_url":"https://api.github.com/repos/up_the_irons/ram/pulls{/number}","milestones_url":"https://api.github.com/repos/up_the_irons/ram/milestones{/number}","notifications_url":"https://api.github.com/repos/up_the_irons/ram/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/up_the_irons/ram/labels{/name}"},{"id":230,"name":"ambitious_activeldap","full_name":"defunkt/ambitious_activeldap","owner":{"login":"defunkt","id":2,"avatar_url":"https://2.gravatar.com/avatar/b8dbb1987e8e5318584865f880036796?d=https%3A%2F%2Fidenticons.github.com%2Fc81e728d9d4c2f636f067f89cc14862c.png","gravatar_id":"b8dbb1987e8e5318584865f880036796","url":"https://api.github.com/users/defunkt","html_url":"https://github.com/defunkt","followers_url":"https://api.github.com/users/defunkt/followers","following_url":"https://api.github.com/users/defunkt/following{/other_user}","gists_url":"https://api.github.com/users/defunkt/gists{/gist_id}","starred_url":"https://api.github.com/users/defunkt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/defunkt/subscriptions","organizations_url":"https://api.github.com/users/defunkt/orgs","repos_url":"https://api.github.com/users/defunkt/repos","events_url":"https://api.github.com/users/defunkt/events{/privacy}","received_events_url":"https://api.github.com/users/defunkt/received_events","type":"User"},"private":false,"html_url":"https://github.com/defunkt/ambitious_activeldap","description":"Ambition adapter for ActiveLdap","fork":true,"url":"https://api.github.com/repos/defunkt/ambitious_activeldap","forks_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/forks","keys_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/keys{/key_id}","collaborators_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/teams","hooks_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/hooks","issue_events_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/issues/events{/number}","events_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/events","assignees_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/assignees{/user}","branches_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/branches{/branch}","tags_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/tags","blobs_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/git/refs{/sha}","trees_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/git/trees{/sha}","statuses_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/statuses/{sha}","languages_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/languages","stargazers_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/stargazers","contributors_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/contributors","subscribers_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/subscribers","subscription_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/subscription","commits_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/commits{/sha}","git_commits_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/git/commits{/sha}","comments_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/comments{/number}","issue_comment_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/issues/comments/{number}","contents_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/contents/{+path}","compare_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/compare/{base}...{head}","merges_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/merges","archive_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/downloads","issues_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/issues{/number}","pulls_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/pulls{/number}","milestones_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/milestones{/number}","notifications_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/defunkt/ambitious_activeldap/labels{/name}"},{"id":232,"name":"fitter_happier","full_name":"atmos/fitter_happier","owner":{"login":"atmos","id":38,"avatar_url":"https://0.gravatar.com/avatar/a86224d72ce21cd9f5bee6784d4b06c7?d=https%3A%2F%2Fidenticons.github.com%2Fa5771bce93e200c36f7cd9dfd0e5deaa.png","gravatar_id":"a86224d72ce21cd9f5bee6784d4b06c7","url":"https://api.github.com/users/atmos","html_url":"https://github.com/atmos","followers_url":"https://api.github.com/users/atmos/followers","following_url":"https://api.github.com/users/atmos/following{/other_user}","gists_url":"https://api.github.com/users/atmos/gists{/gist_id}","starred_url":"https://api.github.com/users/atmos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/atmos/subscriptions","organizations_url":"https://api.github.com/users/atmos/orgs","repos_url":"https://api.github.com/users/atmos/repos","events_url":"https://api.github.com/users/atmos/events{/privacy}","received_events_url":"https://api.github.com/users/atmos/received_events","type":"User"},"private":false,"html_url":"https://github.com/atmos/fitter_happier","description":"A Rails Plugin for adding a simple health check to your application","fork":false,"url":"https://api.github.com/repos/atmos/fitter_happier","forks_url":"https://api.github.com/repos/atmos/fitter_happier/forks","keys_url":"https://api.github.com/repos/atmos/fitter_happier/keys{/key_id}","collaborators_url":"https://api.github.com/repos/atmos/fitter_happier/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/atmos/fitter_happier/teams","hooks_url":"https://api.github.com/repos/atmos/fitter_happier/hooks","issue_events_url":"https://api.github.com/repos/atmos/fitter_happier/issues/events{/number}","events_url":"https://api.github.com/repos/atmos/fitter_happier/events","assignees_url":"https://api.github.com/repos/atmos/fitter_happier/assignees{/user}","branches_url":"https://api.github.com/repos/atmos/fitter_happier/branches{/branch}","tags_url":"https://api.github.com/repos/atmos/fitter_happier/tags","blobs_url":"https://api.github.com/repos/atmos/fitter_happier/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/atmos/fitter_happier/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/atmos/fitter_happier/git/refs{/sha}","trees_url":"https://api.github.com/repos/atmos/fitter_happier/git/trees{/sha}","statuses_url":"https://api.github.com/repos/atmos/fitter_happier/statuses/{sha}","languages_url":"https://api.github.com/repos/atmos/fitter_happier/languages","stargazers_url":"https://api.github.com/repos/atmos/fitter_happier/stargazers","contributors_url":"https://api.github.com/repos/atmos/fitter_happier/contributors","subscribers_url":"https://api.github.com/repos/atmos/fitter_happier/subscribers","subscription_url":"https://api.github.com/repos/atmos/fitter_happier/subscription","commits_url":"https://api.github.com/repos/atmos/fitter_happier/commits{/sha}","git_commits_url":"https://api.github.com/repos/atmos/fitter_happier/git/commits{/sha}","comments_url":"https://api.github.com/repos/atmos/fitter_happier/comments{/number}","issue_comment_url":"https://api.github.com/repos/atmos/fitter_happier/issues/comments/{number}","contents_url":"https://api.github.com/repos/atmos/fitter_happier/contents/{+path}","compare_url":"https://api.github.com/repos/atmos/fitter_happier/compare/{base}...{head}","merges_url":"https://api.github.com/repos/atmos/fitter_happier/merges","archive_url":"https://api.github.com/repos/atmos/fitter_happier/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/atmos/fitter_happier/downloads","issues_url":"https://api.github.com/repos/atmos/fitter_happier/issues{/number}","pulls_url":"https://api.github.com/repos/atmos/fitter_happier/pulls{/number}","milestones_url":"https://api.github.com/repos/atmos/fitter_happier/milestones{/number}","notifications_url":"https://api.github.com/repos/atmos/fitter_happier/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/atmos/fitter_happier/labels{/name}"},{"id":237,"name":"oebfare","full_name":"brosner/oebfare","owner":{"login":"brosner","id":124,"avatar_url":"https://0.gravatar.com/avatar/b7472bc7aa45c70641c299e9408b78ab?d=https%3A%2F%2Fidenticons.github.com%2Fc8ffe9a587b126f152ed3d89a146b445.png","gravatar_id":"b7472bc7aa45c70641c299e9408b78ab","url":"https://api.github.com/users/brosner","html_url":"https://github.com/brosner","followers_url":"https://api.github.com/users/brosner/followers","following_url":"https://api.github.com/users/brosner/following{/other_user}","gists_url":"https://api.github.com/users/brosner/gists{/gist_id}","starred_url":"https://api.github.com/users/brosner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brosner/subscriptions","organizations_url":"https://api.github.com/users/brosner/orgs","repos_url":"https://api.github.com/users/brosner/repos","events_url":"https://api.github.com/users/brosner/events{/privacy}","received_events_url":"https://api.github.com/users/brosner/received_events","type":"User"},"private":false,"html_url":"https://github.com/brosner/oebfare","description":"my personal blog written with django","fork":false,"url":"https://api.github.com/repos/brosner/oebfare","forks_url":"https://api.github.com/repos/brosner/oebfare/forks","keys_url":"https://api.github.com/repos/brosner/oebfare/keys{/key_id}","collaborators_url":"https://api.github.com/repos/brosner/oebfare/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/brosner/oebfare/teams","hooks_url":"https://api.github.com/repos/brosner/oebfare/hooks","issue_events_url":"https://api.github.com/repos/brosner/oebfare/issues/events{/number}","events_url":"https://api.github.com/repos/brosner/oebfare/events","assignees_url":"https://api.github.com/repos/brosner/oebfare/assignees{/user}","branches_url":"https://api.github.com/repos/brosner/oebfare/branches{/branch}","tags_url":"https://api.github.com/repos/brosner/oebfare/tags","blobs_url":"https://api.github.com/repos/brosner/oebfare/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/brosner/oebfare/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/brosner/oebfare/git/refs{/sha}","trees_url":"https://api.github.com/repos/brosner/oebfare/git/trees{/sha}","statuses_url":"https://api.github.com/repos/brosner/oebfare/statuses/{sha}","languages_url":"https://api.github.com/repos/brosner/oebfare/languages","stargazers_url":"https://api.github.com/repos/brosner/oebfare/stargazers","contributors_url":"https://api.github.com/repos/brosner/oebfare/contributors","subscribers_url":"https://api.github.com/repos/brosner/oebfare/subscribers","subscription_url":"https://api.github.com/repos/brosner/oebfare/subscription","commits_url":"https://api.github.com/repos/brosner/oebfare/commits{/sha}","git_commits_url":"https://api.github.com/repos/brosner/oebfare/git/commits{/sha}","comments_url":"https://api.github.com/repos/brosner/oebfare/comments{/number}","issue_comment_url":"https://api.github.com/repos/brosner/oebfare/issues/comments/{number}","contents_url":"https://api.github.com/repos/brosner/oebfare/contents/{+path}","compare_url":"https://api.github.com/repos/brosner/oebfare/compare/{base}...{head}","merges_url":"https://api.github.com/repos/brosner/oebfare/merges","archive_url":"https://api.github.com/repos/brosner/oebfare/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/brosner/oebfare/downloads","issues_url":"https://api.github.com/repos/brosner/oebfare/issues{/number}","pulls_url":"https://api.github.com/repos/brosner/oebfare/pulls{/number}","milestones_url":"https://api.github.com/repos/brosner/oebfare/milestones{/number}","notifications_url":"https://api.github.com/repos/brosner/oebfare/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/brosner/oebfare/labels{/name}"},{"id":245,"name":"credit_card_tools","full_name":"up_the_irons/credit_card_tools","owner":{"login":"up_the_irons","id":121,"avatar_url":"https://2.gravatar.com/avatar/d9ae72d7364c7909a0a4b02cba72438a?d=https%3A%2F%2Fidenticons.github.com%2F4c56ff4ce4aaf9573aa5dff913df997a.png","gravatar_id":"d9ae72d7364c7909a0a4b02cba72438a","url":"https://api.github.com/users/up_the_irons","html_url":"https://github.com/up_the_irons","followers_url":"https://api.github.com/users/up_the_irons/followers","following_url":"https://api.github.com/users/up_the_irons/following{/other_user}","gists_url":"https://api.github.com/users/up_the_irons/gists{/gist_id}","starred_url":"https://api.github.com/users/up_the_irons/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/up_the_irons/subscriptions","organizations_url":"https://api.github.com/users/up_the_irons/orgs","repos_url":"https://api.github.com/users/up_the_irons/repos","events_url":"https://api.github.com/users/up_the_irons/events{/privacy}","received_events_url":"https://api.github.com/users/up_the_irons/received_events","type":"User"},"private":false,"html_url":"https://github.com/up_the_irons/credit_card_tools","description":"Tools for processing credit cards on the command line","fork":false,"url":"https://api.github.com/repos/up_the_irons/credit_card_tools","forks_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/forks","keys_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/keys{/key_id}","collaborators_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/teams","hooks_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/hooks","issue_events_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/issues/events{/number}","events_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/events","assignees_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/assignees{/user}","branches_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/branches{/branch}","tags_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/tags","blobs_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/git/refs{/sha}","trees_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/git/trees{/sha}","statuses_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/statuses/{sha}","languages_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/languages","stargazers_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/stargazers","contributors_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/contributors","subscribers_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/subscribers","subscription_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/subscription","commits_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/commits{/sha}","git_commits_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/git/commits{/sha}","comments_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/comments{/number}","issue_comment_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/issues/comments/{number}","contents_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/contents/{+path}","compare_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/compare/{base}...{head}","merges_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/merges","archive_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/downloads","issues_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/issues{/number}","pulls_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/pulls{/number}","milestones_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/milestones{/number}","notifications_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/up_the_irons/credit_card_tools/labels{/name}"},{"id":248,"name":"rorem","full_name":"jnicklas/rorem","owner":{"login":"jnicklas","id":134,"avatar_url":"https://0.gravatar.com/avatar/6c469749d725177dd2837d806c769cd4?d=https%3A%2F%2Fidenticons.github.com%2F02522a2b2726fb0a03bb19f2d8d9524d.png","gravatar_id":"6c469749d725177dd2837d806c769cd4","url":"https://api.github.com/users/jnicklas","html_url":"https://github.com/jnicklas","followers_url":"https://api.github.com/users/jnicklas/followers","following_url":"https://api.github.com/users/jnicklas/following{/other_user}","gists_url":"https://api.github.com/users/jnicklas/gists{/gist_id}","starred_url":"https://api.github.com/users/jnicklas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jnicklas/subscriptions","organizations_url":"https://api.github.com/users/jnicklas/orgs","repos_url":"https://api.github.com/users/jnicklas/repos","events_url":"https://api.github.com/users/jnicklas/events{/privacy}","received_events_url":"https://api.github.com/users/jnicklas/received_events","type":"User"},"private":false,"html_url":"https://github.com/jnicklas/rorem","description":"Rorem is a random data generator","fork":false,"url":"https://api.github.com/repos/jnicklas/rorem","forks_url":"https://api.github.com/repos/jnicklas/rorem/forks","keys_url":"https://api.github.com/repos/jnicklas/rorem/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jnicklas/rorem/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jnicklas/rorem/teams","hooks_url":"https://api.github.com/repos/jnicklas/rorem/hooks","issue_events_url":"https://api.github.com/repos/jnicklas/rorem/issues/events{/number}","events_url":"https://api.github.com/repos/jnicklas/rorem/events","assignees_url":"https://api.github.com/repos/jnicklas/rorem/assignees{/user}","branches_url":"https://api.github.com/repos/jnicklas/rorem/branches{/branch}","tags_url":"https://api.github.com/repos/jnicklas/rorem/tags","blobs_url":"https://api.github.com/repos/jnicklas/rorem/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jnicklas/rorem/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jnicklas/rorem/git/refs{/sha}","trees_url":"https://api.github.com/repos/jnicklas/rorem/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jnicklas/rorem/statuses/{sha}","languages_url":"https://api.github.com/repos/jnicklas/rorem/languages","stargazers_url":"https://api.github.com/repos/jnicklas/rorem/stargazers","contributors_url":"https://api.github.com/repos/jnicklas/rorem/contributors","subscribers_url":"https://api.github.com/repos/jnicklas/rorem/subscribers","subscription_url":"https://api.github.com/repos/jnicklas/rorem/subscription","commits_url":"https://api.github.com/repos/jnicklas/rorem/commits{/sha}","git_commits_url":"https://api.github.com/repos/jnicklas/rorem/git/commits{/sha}","comments_url":"https://api.github.com/repos/jnicklas/rorem/comments{/number}","issue_comment_url":"https://api.github.com/repos/jnicklas/rorem/issues/comments/{number}","contents_url":"https://api.github.com/repos/jnicklas/rorem/contents/{+path}","compare_url":"https://api.github.com/repos/jnicklas/rorem/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jnicklas/rorem/merges","archive_url":"https://api.github.com/repos/jnicklas/rorem/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jnicklas/rorem/downloads","issues_url":"https://api.github.com/repos/jnicklas/rorem/issues{/number}","pulls_url":"https://api.github.com/repos/jnicklas/rorem/pulls{/number}","milestones_url":"https://api.github.com/repos/jnicklas/rorem/milestones{/number}","notifications_url":"https://api.github.com/repos/jnicklas/rorem/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jnicklas/rorem/labels{/name}"},{"id":249,"name":"braid","full_name":"evilchelu/braid","owner":{"login":"evilchelu","id":122,"avatar_url":"https://1.gravatar.com/avatar/0e8c5f8d88cfc1aeeb59acdcc8aad387?d=https%3A%2F%2Fidenticons.github.com%2Fa0a080f42e6f13b3a2df133f073095dd.png","gravatar_id":"0e8c5f8d88cfc1aeeb59acdcc8aad387","url":"https://api.github.com/users/evilchelu","html_url":"https://github.com/evilchelu","followers_url":"https://api.github.com/users/evilchelu/followers","following_url":"https://api.github.com/users/evilchelu/following{/other_user}","gists_url":"https://api.github.com/users/evilchelu/gists{/gist_id}","starred_url":"https://api.github.com/users/evilchelu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/evilchelu/subscriptions","organizations_url":"https://api.github.com/users/evilchelu/orgs","repos_url":"https://api.github.com/users/evilchelu/repos","events_url":"https://api.github.com/users/evilchelu/events{/privacy}","received_events_url":"https://api.github.com/users/evilchelu/received_events","type":"User"},"private":false,"html_url":"https://github.com/evilchelu/braid","description":"Simple tool to help track git and svn vendor branches in a git repository","fork":false,"url":"https://api.github.com/repos/evilchelu/braid","forks_url":"https://api.github.com/repos/evilchelu/braid/forks","keys_url":"https://api.github.com/repos/evilchelu/braid/keys{/key_id}","collaborators_url":"https://api.github.com/repos/evilchelu/braid/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/evilchelu/braid/teams","hooks_url":"https://api.github.com/repos/evilchelu/braid/hooks","issue_events_url":"https://api.github.com/repos/evilchelu/braid/issues/events{/number}","events_url":"https://api.github.com/repos/evilchelu/braid/events","assignees_url":"https://api.github.com/repos/evilchelu/braid/assignees{/user}","branches_url":"https://api.github.com/repos/evilchelu/braid/branches{/branch}","tags_url":"https://api.github.com/repos/evilchelu/braid/tags","blobs_url":"https://api.github.com/repos/evilchelu/braid/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/evilchelu/braid/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/evilchelu/braid/git/refs{/sha}","trees_url":"https://api.github.com/repos/evilchelu/braid/git/trees{/sha}","statuses_url":"https://api.github.com/repos/evilchelu/braid/statuses/{sha}","languages_url":"https://api.github.com/repos/evilchelu/braid/languages","stargazers_url":"https://api.github.com/repos/evilchelu/braid/stargazers","contributors_url":"https://api.github.com/repos/evilchelu/braid/contributors","subscribers_url":"https://api.github.com/repos/evilchelu/braid/subscribers","subscription_url":"https://api.github.com/repos/evilchelu/braid/subscription","commits_url":"https://api.github.com/repos/evilchelu/braid/commits{/sha}","git_commits_url":"https://api.github.com/repos/evilchelu/braid/git/commits{/sha}","comments_url":"https://api.github.com/repos/evilchelu/braid/comments{/number}","issue_comment_url":"https://api.github.com/repos/evilchelu/braid/issues/comments/{number}","contents_url":"https://api.github.com/repos/evilchelu/braid/contents/{+path}","compare_url":"https://api.github.com/repos/evilchelu/braid/compare/{base}...{head}","merges_url":"https://api.github.com/repos/evilchelu/braid/merges","archive_url":"https://api.github.com/repos/evilchelu/braid/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/evilchelu/braid/downloads","issues_url":"https://api.github.com/repos/evilchelu/braid/issues{/number}","pulls_url":"https://api.github.com/repos/evilchelu/braid/pulls{/number}","milestones_url":"https://api.github.com/repos/evilchelu/braid/milestones{/number}","notifications_url":"https://api.github.com/repos/evilchelu/braid/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/evilchelu/braid/labels{/name}"},{"id":251,"name":"uploadcolumn","full_name":"jnicklas/uploadcolumn","owner":{"login":"jnicklas","id":134,"avatar_url":"https://0.gravatar.com/avatar/6c469749d725177dd2837d806c769cd4?d=https%3A%2F%2Fidenticons.github.com%2F02522a2b2726fb0a03bb19f2d8d9524d.png","gravatar_id":"6c469749d725177dd2837d806c769cd4","url":"https://api.github.com/users/jnicklas","html_url":"https://github.com/jnicklas","followers_url":"https://api.github.com/users/jnicklas/followers","following_url":"https://api.github.com/users/jnicklas/following{/other_user}","gists_url":"https://api.github.com/users/jnicklas/gists{/gist_id}","starred_url":"https://api.github.com/users/jnicklas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jnicklas/subscriptions","organizations_url":"https://api.github.com/users/jnicklas/orgs","repos_url":"https://api.github.com/users/jnicklas/repos","events_url":"https://api.github.com/users/jnicklas/events{/privacy}","received_events_url":"https://api.github.com/users/jnicklas/received_events","type":"User"},"private":false,"html_url":"https://github.com/jnicklas/uploadcolumn","description":"UploadColumn is no longer maintained, check out CarrierWave for an alternative","fork":false,"url":"https://api.github.com/repos/jnicklas/uploadcolumn","forks_url":"https://api.github.com/repos/jnicklas/uploadcolumn/forks","keys_url":"https://api.github.com/repos/jnicklas/uploadcolumn/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jnicklas/uploadcolumn/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jnicklas/uploadcolumn/teams","hooks_url":"https://api.github.com/repos/jnicklas/uploadcolumn/hooks","issue_events_url":"https://api.github.com/repos/jnicklas/uploadcolumn/issues/events{/number}","events_url":"https://api.github.com/repos/jnicklas/uploadcolumn/events","assignees_url":"https://api.github.com/repos/jnicklas/uploadcolumn/assignees{/user}","branches_url":"https://api.github.com/repos/jnicklas/uploadcolumn/branches{/branch}","tags_url":"https://api.github.com/repos/jnicklas/uploadcolumn/tags","blobs_url":"https://api.github.com/repos/jnicklas/uploadcolumn/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jnicklas/uploadcolumn/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jnicklas/uploadcolumn/git/refs{/sha}","trees_url":"https://api.github.com/repos/jnicklas/uploadcolumn/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jnicklas/uploadcolumn/statuses/{sha}","languages_url":"https://api.github.com/repos/jnicklas/uploadcolumn/languages","stargazers_url":"https://api.github.com/repos/jnicklas/uploadcolumn/stargazers","contributors_url":"https://api.github.com/repos/jnicklas/uploadcolumn/contributors","subscribers_url":"https://api.github.com/repos/jnicklas/uploadcolumn/subscribers","subscription_url":"https://api.github.com/repos/jnicklas/uploadcolumn/subscription","commits_url":"https://api.github.com/repos/jnicklas/uploadcolumn/commits{/sha}","git_commits_url":"https://api.github.com/repos/jnicklas/uploadcolumn/git/commits{/sha}","comments_url":"https://api.github.com/repos/jnicklas/uploadcolumn/comments{/number}","issue_comment_url":"https://api.github.com/repos/jnicklas/uploadcolumn/issues/comments/{number}","contents_url":"https://api.github.com/repos/jnicklas/uploadcolumn/contents/{+path}","compare_url":"https://api.github.com/repos/jnicklas/uploadcolumn/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jnicklas/uploadcolumn/merges","archive_url":"https://api.github.com/repos/jnicklas/uploadcolumn/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jnicklas/uploadcolumn/downloads","issues_url":"https://api.github.com/repos/jnicklas/uploadcolumn/issues{/number}","pulls_url":"https://api.github.com/repos/jnicklas/uploadcolumn/pulls{/number}","milestones_url":"https://api.github.com/repos/jnicklas/uploadcolumn/milestones{/number}","notifications_url":"https://api.github.com/repos/jnicklas/uploadcolumn/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jnicklas/uploadcolumn/labels{/name}"},{"id":252,"name":"ruby-on-rails-tmbundle","full_name":"simonjefford/ruby-on-rails-tmbundle","owner":{"login":"simonjefford","id":136,"avatar_url":"https://1.gravatar.com/avatar/46fd60ea4dde74f3d46fcfd27ed700bf?d=https%3A%2F%2Fidenticons.github.com%2F42a0e188f5033bc65bf8d78622277c4e.png","gravatar_id":"46fd60ea4dde74f3d46fcfd27ed700bf","url":"https://api.github.com/users/simonjefford","html_url":"https://github.com/simonjefford","followers_url":"https://api.github.com/users/simonjefford/followers","following_url":"https://api.github.com/users/simonjefford/following{/other_user}","gists_url":"https://api.github.com/users/simonjefford/gists{/gist_id}","starred_url":"https://api.github.com/users/simonjefford/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/simonjefford/subscriptions","organizations_url":"https://api.github.com/users/simonjefford/orgs","repos_url":"https://api.github.com/users/simonjefford/repos","events_url":"https://api.github.com/users/simonjefford/events{/privacy}","received_events_url":"https://api.github.com/users/simonjefford/received_events","type":"User"},"private":false,"html_url":"https://github.com/simonjefford/ruby-on-rails-tmbundle","description":"Ruby on Rails TextMate bundle [master branch is svn trunk; patches to drnicwilliams@gmail.com]","fork":true,"url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle","forks_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/forks","keys_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/keys{/key_id}","collaborators_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/teams","hooks_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/hooks","issue_events_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/issues/events{/number}","events_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/events","assignees_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/assignees{/user}","branches_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/branches{/branch}","tags_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/tags","blobs_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/git/refs{/sha}","trees_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/git/trees{/sha}","statuses_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/statuses/{sha}","languages_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/languages","stargazers_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/stargazers","contributors_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/contributors","subscribers_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/subscribers","subscription_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/subscription","commits_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/commits{/sha}","git_commits_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/git/commits{/sha}","comments_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/comments{/number}","issue_comment_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/issues/comments/{number}","contents_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/contents/{+path}","compare_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/compare/{base}...{head}","merges_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/merges","archive_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/downloads","issues_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/issues{/number}","pulls_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/pulls{/number}","milestones_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/milestones{/number}","notifications_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/simonjefford/ruby-on-rails-tmbundle/labels{/name}"},{"id":256,"name":"rack-mirror","full_name":"chneukirchen/rack-mirror","owner":{"login":"chneukirchen","id":139,"avatar_url":"https://0.gravatar.com/avatar/7264fb16beeea92b89bb42023738259d?d=https%3A%2F%2Fidenticons.github.com%2Fe00da03b685a0dd18fb6a08af0923de0.png","gravatar_id":"7264fb16beeea92b89bb42023738259d","url":"https://api.github.com/users/chneukirchen","html_url":"https://github.com/chneukirchen","followers_url":"https://api.github.com/users/chneukirchen/followers","following_url":"https://api.github.com/users/chneukirchen/following{/other_user}","gists_url":"https://api.github.com/users/chneukirchen/gists{/gist_id}","starred_url":"https://api.github.com/users/chneukirchen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chneukirchen/subscriptions","organizations_url":"https://api.github.com/users/chneukirchen/orgs","repos_url":"https://api.github.com/users/chneukirchen/repos","events_url":"https://api.github.com/users/chneukirchen/events{/privacy}","received_events_url":"https://api.github.com/users/chneukirchen/received_events","type":"User"},"private":false,"html_url":"https://github.com/chneukirchen/rack-mirror","description":"OUTDATED mirror of Rack's darcs repository, use github.com/chneukirchen/rack","fork":false,"url":"https://api.github.com/repos/chneukirchen/rack-mirror","forks_url":"https://api.github.com/repos/chneukirchen/rack-mirror/forks","keys_url":"https://api.github.com/repos/chneukirchen/rack-mirror/keys{/key_id}","collaborators_url":"https://api.github.com/repos/chneukirchen/rack-mirror/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/chneukirchen/rack-mirror/teams","hooks_url":"https://api.github.com/repos/chneukirchen/rack-mirror/hooks","issue_events_url":"https://api.github.com/repos/chneukirchen/rack-mirror/issues/events{/number}","events_url":"https://api.github.com/repos/chneukirchen/rack-mirror/events","assignees_url":"https://api.github.com/repos/chneukirchen/rack-mirror/assignees{/user}","branches_url":"https://api.github.com/repos/chneukirchen/rack-mirror/branches{/branch}","tags_url":"https://api.github.com/repos/chneukirchen/rack-mirror/tags","blobs_url":"https://api.github.com/repos/chneukirchen/rack-mirror/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/chneukirchen/rack-mirror/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/chneukirchen/rack-mirror/git/refs{/sha}","trees_url":"https://api.github.com/repos/chneukirchen/rack-mirror/git/trees{/sha}","statuses_url":"https://api.github.com/repos/chneukirchen/rack-mirror/statuses/{sha}","languages_url":"https://api.github.com/repos/chneukirchen/rack-mirror/languages","stargazers_url":"https://api.github.com/repos/chneukirchen/rack-mirror/stargazers","contributors_url":"https://api.github.com/repos/chneukirchen/rack-mirror/contributors","subscribers_url":"https://api.github.com/repos/chneukirchen/rack-mirror/subscribers","subscription_url":"https://api.github.com/repos/chneukirchen/rack-mirror/subscription","commits_url":"https://api.github.com/repos/chneukirchen/rack-mirror/commits{/sha}","git_commits_url":"https://api.github.com/repos/chneukirchen/rack-mirror/git/commits{/sha}","comments_url":"https://api.github.com/repos/chneukirchen/rack-mirror/comments{/number}","issue_comment_url":"https://api.github.com/repos/chneukirchen/rack-mirror/issues/comments/{number}","contents_url":"https://api.github.com/repos/chneukirchen/rack-mirror/contents/{+path}","compare_url":"https://api.github.com/repos/chneukirchen/rack-mirror/compare/{base}...{head}","merges_url":"https://api.github.com/repos/chneukirchen/rack-mirror/merges","archive_url":"https://api.github.com/repos/chneukirchen/rack-mirror/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/chneukirchen/rack-mirror/downloads","issues_url":"https://api.github.com/repos/chneukirchen/rack-mirror/issues{/number}","pulls_url":"https://api.github.com/repos/chneukirchen/rack-mirror/pulls{/number}","milestones_url":"https://api.github.com/repos/chneukirchen/rack-mirror/milestones{/number}","notifications_url":"https://api.github.com/repos/chneukirchen/rack-mirror/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/chneukirchen/rack-mirror/labels{/name}"},{"id":257,"name":"coset-mirror","full_name":"chneukirchen/coset-mirror","owner":{"login":"chneukirchen","id":139,"avatar_url":"https://0.gravatar.com/avatar/7264fb16beeea92b89bb42023738259d?d=https%3A%2F%2Fidenticons.github.com%2Fe00da03b685a0dd18fb6a08af0923de0.png","gravatar_id":"7264fb16beeea92b89bb42023738259d","url":"https://api.github.com/users/chneukirchen","html_url":"https://github.com/chneukirchen","followers_url":"https://api.github.com/users/chneukirchen/followers","following_url":"https://api.github.com/users/chneukirchen/following{/other_user}","gists_url":"https://api.github.com/users/chneukirchen/gists{/gist_id}","starred_url":"https://api.github.com/users/chneukirchen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chneukirchen/subscriptions","organizations_url":"https://api.github.com/users/chneukirchen/orgs","repos_url":"https://api.github.com/users/chneukirchen/repos","events_url":"https://api.github.com/users/chneukirchen/events{/privacy}","received_events_url":"https://api.github.com/users/chneukirchen/received_events","type":"User"},"private":false,"html_url":"https://github.com/chneukirchen/coset-mirror","description":"(experimental) Mirror of the coset darcs repository","fork":false,"url":"https://api.github.com/repos/chneukirchen/coset-mirror","forks_url":"https://api.github.com/repos/chneukirchen/coset-mirror/forks","keys_url":"https://api.github.com/repos/chneukirchen/coset-mirror/keys{/key_id}","collaborators_url":"https://api.github.com/repos/chneukirchen/coset-mirror/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/chneukirchen/coset-mirror/teams","hooks_url":"https://api.github.com/repos/chneukirchen/coset-mirror/hooks","issue_events_url":"https://api.github.com/repos/chneukirchen/coset-mirror/issues/events{/number}","events_url":"https://api.github.com/repos/chneukirchen/coset-mirror/events","assignees_url":"https://api.github.com/repos/chneukirchen/coset-mirror/assignees{/user}","branches_url":"https://api.github.com/repos/chneukirchen/coset-mirror/branches{/branch}","tags_url":"https://api.github.com/repos/chneukirchen/coset-mirror/tags","blobs_url":"https://api.github.com/repos/chneukirchen/coset-mirror/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/chneukirchen/coset-mirror/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/chneukirchen/coset-mirror/git/refs{/sha}","trees_url":"https://api.github.com/repos/chneukirchen/coset-mirror/git/trees{/sha}","statuses_url":"https://api.github.com/repos/chneukirchen/coset-mirror/statuses/{sha}","languages_url":"https://api.github.com/repos/chneukirchen/coset-mirror/languages","stargazers_url":"https://api.github.com/repos/chneukirchen/coset-mirror/stargazers","contributors_url":"https://api.github.com/repos/chneukirchen/coset-mirror/contributors","subscribers_url":"https://api.github.com/repos/chneukirchen/coset-mirror/subscribers","subscription_url":"https://api.github.com/repos/chneukirchen/coset-mirror/subscription","commits_url":"https://api.github.com/repos/chneukirchen/coset-mirror/commits{/sha}","git_commits_url":"https://api.github.com/repos/chneukirchen/coset-mirror/git/commits{/sha}","comments_url":"https://api.github.com/repos/chneukirchen/coset-mirror/comments{/number}","issue_comment_url":"https://api.github.com/repos/chneukirchen/coset-mirror/issues/comments/{number}","contents_url":"https://api.github.com/repos/chneukirchen/coset-mirror/contents/{+path}","compare_url":"https://api.github.com/repos/chneukirchen/coset-mirror/compare/{base}...{head}","merges_url":"https://api.github.com/repos/chneukirchen/coset-mirror/merges","archive_url":"https://api.github.com/repos/chneukirchen/coset-mirror/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/chneukirchen/coset-mirror/downloads","issues_url":"https://api.github.com/repos/chneukirchen/coset-mirror/issues{/number}","pulls_url":"https://api.github.com/repos/chneukirchen/coset-mirror/pulls{/number}","milestones_url":"https://api.github.com/repos/chneukirchen/coset-mirror/milestones{/number}","notifications_url":"https://api.github.com/repos/chneukirchen/coset-mirror/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/chneukirchen/coset-mirror/labels{/name}"},{"id":267,"name":"javascript-unittest-tmbundle","full_name":"drnic/javascript-unittest-tmbundle","owner":{"login":"drnic","id":108,"avatar_url":"https://2.gravatar.com/avatar/cb2b768a5e546b24052ea03334e43676?d=https%3A%2F%2Fidenticons.github.com%2Fa3c65c2974270fd093ee8a9bf8ae7d0b.png","gravatar_id":"cb2b768a5e546b24052ea03334e43676","url":"https://api.github.com/users/drnic","html_url":"https://github.com/drnic","followers_url":"https://api.github.com/users/drnic/followers","following_url":"https://api.github.com/users/drnic/following{/other_user}","gists_url":"https://api.github.com/users/drnic/gists{/gist_id}","starred_url":"https://api.github.com/users/drnic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/drnic/subscriptions","organizations_url":"https://api.github.com/users/drnic/orgs","repos_url":"https://api.github.com/users/drnic/repos","events_url":"https://api.github.com/users/drnic/events{/privacy}","received_events_url":"https://api.github.com/users/drnic/received_events","type":"User"},"private":false,"html_url":"https://github.com/drnic/javascript-unittest-tmbundle","description":"JavaScript Unit Test TextMate Bundle [for prototype's unittest.js library]","fork":false,"url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle","forks_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/forks","keys_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/keys{/key_id}","collaborators_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/teams","hooks_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/hooks","issue_events_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/issues/events{/number}","events_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/events","assignees_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/assignees{/user}","branches_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/branches{/branch}","tags_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/tags","blobs_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/git/refs{/sha}","trees_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/git/trees{/sha}","statuses_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/statuses/{sha}","languages_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/languages","stargazers_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/stargazers","contributors_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/contributors","subscribers_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/subscribers","subscription_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/subscription","commits_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/commits{/sha}","git_commits_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/git/commits{/sha}","comments_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/comments{/number}","issue_comment_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/issues/comments/{number}","contents_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/contents/{+path}","compare_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/compare/{base}...{head}","merges_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/merges","archive_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/downloads","issues_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/issues{/number}","pulls_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/pulls{/number}","milestones_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/milestones{/number}","notifications_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/drnic/javascript-unittest-tmbundle/labels{/name}"},{"id":273,"name":"eycap","full_name":"engineyard/eycap","owner":{"login":"engineyard","id":81,"avatar_url":"https://0.gravatar.com/avatar/27f95ff21f0a4b94a72de0e8f780d4d2?d=https%3A%2F%2Fidenticons.github.com%2F43ec517d68b6edd3015b3edc9a11367b.png","gravatar_id":"27f95ff21f0a4b94a72de0e8f780d4d2","url":"https://api.github.com/users/engineyard","html_url":"https://github.com/engineyard","followers_url":"https://api.github.com/users/engineyard/followers","following_url":"https://api.github.com/users/engineyard/following{/other_user}","gists_url":"https://api.github.com/users/engineyard/gists{/gist_id}","starred_url":"https://api.github.com/users/engineyard/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/engineyard/subscriptions","organizations_url":"https://api.github.com/users/engineyard/orgs","repos_url":"https://api.github.com/users/engineyard/repos","events_url":"https://api.github.com/users/engineyard/events{/privacy}","received_events_url":"https://api.github.com/users/engineyard/received_events","type":"Organization"},"private":false,"html_url":"https://github.com/engineyard/eycap","description":"Engine Yard specific capistrano recipes","fork":false,"url":"https://api.github.com/repos/engineyard/eycap","forks_url":"https://api.github.com/repos/engineyard/eycap/forks","keys_url":"https://api.github.com/repos/engineyard/eycap/keys{/key_id}","collaborators_url":"https://api.github.com/repos/engineyard/eycap/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/engineyard/eycap/teams","hooks_url":"https://api.github.com/repos/engineyard/eycap/hooks","issue_events_url":"https://api.github.com/repos/engineyard/eycap/issues/events{/number}","events_url":"https://api.github.com/repos/engineyard/eycap/events","assignees_url":"https://api.github.com/repos/engineyard/eycap/assignees{/user}","branches_url":"https://api.github.com/repos/engineyard/eycap/branches{/branch}","tags_url":"https://api.github.com/repos/engineyard/eycap/tags","blobs_url":"https://api.github.com/repos/engineyard/eycap/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/engineyard/eycap/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/engineyard/eycap/git/refs{/sha}","trees_url":"https://api.github.com/repos/engineyard/eycap/git/trees{/sha}","statuses_url":"https://api.github.com/repos/engineyard/eycap/statuses/{sha}","languages_url":"https://api.github.com/repos/engineyard/eycap/languages","stargazers_url":"https://api.github.com/repos/engineyard/eycap/stargazers","contributors_url":"https://api.github.com/repos/engineyard/eycap/contributors","subscribers_url":"https://api.github.com/repos/engineyard/eycap/subscribers","subscription_url":"https://api.github.com/repos/engineyard/eycap/subscription","commits_url":"https://api.github.com/repos/engineyard/eycap/commits{/sha}","git_commits_url":"https://api.github.com/repos/engineyard/eycap/git/commits{/sha}","comments_url":"https://api.github.com/repos/engineyard/eycap/comments{/number}","issue_comment_url":"https://api.github.com/repos/engineyard/eycap/issues/comments/{number}","contents_url":"https://api.github.com/repos/engineyard/eycap/contents/{+path}","compare_url":"https://api.github.com/repos/engineyard/eycap/compare/{base}...{head}","merges_url":"https://api.github.com/repos/engineyard/eycap/merges","archive_url":"https://api.github.com/repos/engineyard/eycap/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/engineyard/eycap/downloads","issues_url":"https://api.github.com/repos/engineyard/eycap/issues{/number}","pulls_url":"https://api.github.com/repos/engineyard/eycap/pulls{/number}","milestones_url":"https://api.github.com/repos/engineyard/eycap/milestones{/number}","notifications_url":"https://api.github.com/repos/engineyard/eycap/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/engineyard/eycap/labels{/name}"},{"id":279,"name":"gitsum","full_name":"chneukirchen/gitsum","owner":{"login":"chneukirchen","id":139,"avatar_url":"https://0.gravatar.com/avatar/7264fb16beeea92b89bb42023738259d?d=https%3A%2F%2Fidenticons.github.com%2Fe00da03b685a0dd18fb6a08af0923de0.png","gravatar_id":"7264fb16beeea92b89bb42023738259d","url":"https://api.github.com/users/chneukirchen","html_url":"https://github.com/chneukirchen","followers_url":"https://api.github.com/users/chneukirchen/followers","following_url":"https://api.github.com/users/chneukirchen/following{/other_user}","gists_url":"https://api.github.com/users/chneukirchen/gists{/gist_id}","starred_url":"https://api.github.com/users/chneukirchen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chneukirchen/subscriptions","organizations_url":"https://api.github.com/users/chneukirchen/orgs","repos_url":"https://api.github.com/users/chneukirchen/repos","events_url":"https://api.github.com/users/chneukirchen/events{/privacy}","received_events_url":"https://api.github.com/users/chneukirchen/received_events","type":"User"},"private":false,"html_url":"https://github.com/chneukirchen/gitsum","description":"basic darcsum feelalike for Git","fork":false,"url":"https://api.github.com/repos/chneukirchen/gitsum","forks_url":"https://api.github.com/repos/chneukirchen/gitsum/forks","keys_url":"https://api.github.com/repos/chneukirchen/gitsum/keys{/key_id}","collaborators_url":"https://api.github.com/repos/chneukirchen/gitsum/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/chneukirchen/gitsum/teams","hooks_url":"https://api.github.com/repos/chneukirchen/gitsum/hooks","issue_events_url":"https://api.github.com/repos/chneukirchen/gitsum/issues/events{/number}","events_url":"https://api.github.com/repos/chneukirchen/gitsum/events","assignees_url":"https://api.github.com/repos/chneukirchen/gitsum/assignees{/user}","branches_url":"https://api.github.com/repos/chneukirchen/gitsum/branches{/branch}","tags_url":"https://api.github.com/repos/chneukirchen/gitsum/tags","blobs_url":"https://api.github.com/repos/chneukirchen/gitsum/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/chneukirchen/gitsum/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/chneukirchen/gitsum/git/refs{/sha}","trees_url":"https://api.github.com/repos/chneukirchen/gitsum/git/trees{/sha}","statuses_url":"https://api.github.com/repos/chneukirchen/gitsum/statuses/{sha}","languages_url":"https://api.github.com/repos/chneukirchen/gitsum/languages","stargazers_url":"https://api.github.com/repos/chneukirchen/gitsum/stargazers","contributors_url":"https://api.github.com/repos/chneukirchen/gitsum/contributors","subscribers_url":"https://api.github.com/repos/chneukirchen/gitsum/subscribers","subscription_url":"https://api.github.com/repos/chneukirchen/gitsum/subscription","commits_url":"https://api.github.com/repos/chneukirchen/gitsum/commits{/sha}","git_commits_url":"https://api.github.com/repos/chneukirchen/gitsum/git/commits{/sha}","comments_url":"https://api.github.com/repos/chneukirchen/gitsum/comments{/number}","issue_comment_url":"https://api.github.com/repos/chneukirchen/gitsum/issues/comments/{number}","contents_url":"https://api.github.com/repos/chneukirchen/gitsum/contents/{+path}","compare_url":"https://api.github.com/repos/chneukirchen/gitsum/compare/{base}...{head}","merges_url":"https://api.github.com/repos/chneukirchen/gitsum/merges","archive_url":"https://api.github.com/repos/chneukirchen/gitsum/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/chneukirchen/gitsum/downloads","issues_url":"https://api.github.com/repos/chneukirchen/gitsum/issues{/number}","pulls_url":"https://api.github.com/repos/chneukirchen/gitsum/pulls{/number}","milestones_url":"https://api.github.com/repos/chneukirchen/gitsum/milestones{/number}","notifications_url":"https://api.github.com/repos/chneukirchen/gitsum/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/chneukirchen/gitsum/labels{/name}"},{"id":284,"name":"ambition","full_name":"automatthew/ambition","owner":{"login":"automatthew","id":105,"avatar_url":"https://2.gravatar.com/avatar/491d5a2b6e9c9346e2d67da31a633457?d=https%3A%2F%2Fidenticons.github.com%2F65b9eea6e1cc6bb9f0cd2a47751a186f.png","gravatar_id":"491d5a2b6e9c9346e2d67da31a633457","url":"https://api.github.com/users/automatthew","html_url":"https://github.com/automatthew","followers_url":"https://api.github.com/users/automatthew/followers","following_url":"https://api.github.com/users/automatthew/following{/other_user}","gists_url":"https://api.github.com/users/automatthew/gists{/gist_id}","starred_url":"https://api.github.com/users/automatthew/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/automatthew/subscriptions","organizations_url":"https://api.github.com/users/automatthew/orgs","repos_url":"https://api.github.com/users/automatthew/repos","events_url":"https://api.github.com/users/automatthew/events{/privacy}","received_events_url":"https://api.github.com/users/automatthew/received_events","type":"User"},"private":false,"html_url":"https://github.com/automatthew/ambition","description":"","fork":true,"url":"https://api.github.com/repos/automatthew/ambition","forks_url":"https://api.github.com/repos/automatthew/ambition/forks","keys_url":"https://api.github.com/repos/automatthew/ambition/keys{/key_id}","collaborators_url":"https://api.github.com/repos/automatthew/ambition/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/automatthew/ambition/teams","hooks_url":"https://api.github.com/repos/automatthew/ambition/hooks","issue_events_url":"https://api.github.com/repos/automatthew/ambition/issues/events{/number}","events_url":"https://api.github.com/repos/automatthew/ambition/events","assignees_url":"https://api.github.com/repos/automatthew/ambition/assignees{/user}","branches_url":"https://api.github.com/repos/automatthew/ambition/branches{/branch}","tags_url":"https://api.github.com/repos/automatthew/ambition/tags","blobs_url":"https://api.github.com/repos/automatthew/ambition/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/automatthew/ambition/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/automatthew/ambition/git/refs{/sha}","trees_url":"https://api.github.com/repos/automatthew/ambition/git/trees{/sha}","statuses_url":"https://api.github.com/repos/automatthew/ambition/statuses/{sha}","languages_url":"https://api.github.com/repos/automatthew/ambition/languages","stargazers_url":"https://api.github.com/repos/automatthew/ambition/stargazers","contributors_url":"https://api.github.com/repos/automatthew/ambition/contributors","subscribers_url":"https://api.github.com/repos/automatthew/ambition/subscribers","subscription_url":"https://api.github.com/repos/automatthew/ambition/subscription","commits_url":"https://api.github.com/repos/automatthew/ambition/commits{/sha}","git_commits_url":"https://api.github.com/repos/automatthew/ambition/git/commits{/sha}","comments_url":"https://api.github.com/repos/automatthew/ambition/comments{/number}","issue_comment_url":"https://api.github.com/repos/automatthew/ambition/issues/comments/{number}","contents_url":"https://api.github.com/repos/automatthew/ambition/contents/{+path}","compare_url":"https://api.github.com/repos/automatthew/ambition/compare/{base}...{head}","merges_url":"https://api.github.com/repos/automatthew/ambition/merges","archive_url":"https://api.github.com/repos/automatthew/ambition/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/automatthew/ambition/downloads","issues_url":"https://api.github.com/repos/automatthew/ambition/issues{/number}","pulls_url":"https://api.github.com/repos/automatthew/ambition/pulls{/number}","milestones_url":"https://api.github.com/repos/automatthew/ambition/milestones{/number}","notifications_url":"https://api.github.com/repos/automatthew/ambition/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/automatthew/ambition/labels{/name}"},{"id":293,"name":"sequel-model","full_name":"wayneeseguin/sequel-model","owner":{"login":"wayneeseguin","id":18,"avatar_url":"https://0.gravatar.com/avatar/b9b5ff40232c1dfd61238c2a90467f84?d=https%3A%2F%2Fidenticons.github.com%2F6f4922f45568161a8cdf4ad2299f6d23.png","gravatar_id":"b9b5ff40232c1dfd61238c2a90467f84","url":"https://api.github.com/users/wayneeseguin","html_url":"https://github.com/wayneeseguin","followers_url":"https://api.github.com/users/wayneeseguin/followers","following_url":"https://api.github.com/users/wayneeseguin/following{/other_user}","gists_url":"https://api.github.com/users/wayneeseguin/gists{/gist_id}","starred_url":"https://api.github.com/users/wayneeseguin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wayneeseguin/subscriptions","organizations_url":"https://api.github.com/users/wayneeseguin/orgs","repos_url":"https://api.github.com/users/wayneeseguin/repos","events_url":"https://api.github.com/users/wayneeseguin/events{/privacy}","received_events_url":"https://api.github.com/users/wayneeseguin/received_events","type":"User"},"private":false,"html_url":"https://github.com/wayneeseguin/sequel-model","description":"Sequel::Model (No longer working on this project)","fork":false,"url":"https://api.github.com/repos/wayneeseguin/sequel-model","forks_url":"https://api.github.com/repos/wayneeseguin/sequel-model/forks","keys_url":"https://api.github.com/repos/wayneeseguin/sequel-model/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wayneeseguin/sequel-model/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wayneeseguin/sequel-model/teams","hooks_url":"https://api.github.com/repos/wayneeseguin/sequel-model/hooks","issue_events_url":"https://api.github.com/repos/wayneeseguin/sequel-model/issues/events{/number}","events_url":"https://api.github.com/repos/wayneeseguin/sequel-model/events","assignees_url":"https://api.github.com/repos/wayneeseguin/sequel-model/assignees{/user}","branches_url":"https://api.github.com/repos/wayneeseguin/sequel-model/branches{/branch}","tags_url":"https://api.github.com/repos/wayneeseguin/sequel-model/tags","blobs_url":"https://api.github.com/repos/wayneeseguin/sequel-model/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wayneeseguin/sequel-model/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wayneeseguin/sequel-model/git/refs{/sha}","trees_url":"https://api.github.com/repos/wayneeseguin/sequel-model/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wayneeseguin/sequel-model/statuses/{sha}","languages_url":"https://api.github.com/repos/wayneeseguin/sequel-model/languages","stargazers_url":"https://api.github.com/repos/wayneeseguin/sequel-model/stargazers","contributors_url":"https://api.github.com/repos/wayneeseguin/sequel-model/contributors","subscribers_url":"https://api.github.com/repos/wayneeseguin/sequel-model/subscribers","subscription_url":"https://api.github.com/repos/wayneeseguin/sequel-model/subscription","commits_url":"https://api.github.com/repos/wayneeseguin/sequel-model/commits{/sha}","git_commits_url":"https://api.github.com/repos/wayneeseguin/sequel-model/git/commits{/sha}","comments_url":"https://api.github.com/repos/wayneeseguin/sequel-model/comments{/number}","issue_comment_url":"https://api.github.com/repos/wayneeseguin/sequel-model/issues/comments/{number}","contents_url":"https://api.github.com/repos/wayneeseguin/sequel-model/contents/{+path}","compare_url":"https://api.github.com/repos/wayneeseguin/sequel-model/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wayneeseguin/sequel-model/merges","archive_url":"https://api.github.com/repos/wayneeseguin/sequel-model/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wayneeseguin/sequel-model/downloads","issues_url":"https://api.github.com/repos/wayneeseguin/sequel-model/issues{/number}","pulls_url":"https://api.github.com/repos/wayneeseguin/sequel-model/pulls{/number}","milestones_url":"https://api.github.com/repos/wayneeseguin/sequel-model/milestones{/number}","notifications_url":"https://api.github.com/repos/wayneeseguin/sequel-model/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wayneeseguin/sequel-model/labels{/name}"},{"id":305,"name":"god","full_name":"kevinclark/god","owner":{"login":"kevinclark","id":20,"avatar_url":"https://1.gravatar.com/avatar/6f792b946bbf30845314eb501da5e040?d=https%3A%2F%2Fidenticons.github.com%2F98f13708210194c475687be6106a3b84.png","gravatar_id":"6f792b946bbf30845314eb501da5e040","url":"https://api.github.com/users/kevinclark","html_url":"https://github.com/kevinclark","followers_url":"https://api.github.com/users/kevinclark/followers","following_url":"https://api.github.com/users/kevinclark/following{/other_user}","gists_url":"https://api.github.com/users/kevinclark/gists{/gist_id}","starred_url":"https://api.github.com/users/kevinclark/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kevinclark/subscriptions","organizations_url":"https://api.github.com/users/kevinclark/orgs","repos_url":"https://api.github.com/users/kevinclark/repos","events_url":"https://api.github.com/users/kevinclark/events{/privacy}","received_events_url":"https://api.github.com/users/kevinclark/received_events","type":"User"},"private":false,"html_url":"https://github.com/kevinclark/god","description":"Ruby process monitor","fork":true,"url":"https://api.github.com/repos/kevinclark/god","forks_url":"https://api.github.com/repos/kevinclark/god/forks","keys_url":"https://api.github.com/repos/kevinclark/god/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kevinclark/god/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kevinclark/god/teams","hooks_url":"https://api.github.com/repos/kevinclark/god/hooks","issue_events_url":"https://api.github.com/repos/kevinclark/god/issues/events{/number}","events_url":"https://api.github.com/repos/kevinclark/god/events","assignees_url":"https://api.github.com/repos/kevinclark/god/assignees{/user}","branches_url":"https://api.github.com/repos/kevinclark/god/branches{/branch}","tags_url":"https://api.github.com/repos/kevinclark/god/tags","blobs_url":"https://api.github.com/repos/kevinclark/god/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kevinclark/god/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kevinclark/god/git/refs{/sha}","trees_url":"https://api.github.com/repos/kevinclark/god/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kevinclark/god/statuses/{sha}","languages_url":"https://api.github.com/repos/kevinclark/god/languages","stargazers_url":"https://api.github.com/repos/kevinclark/god/stargazers","contributors_url":"https://api.github.com/repos/kevinclark/god/contributors","subscribers_url":"https://api.github.com/repos/kevinclark/god/subscribers","subscription_url":"https://api.github.com/repos/kevinclark/god/subscription","commits_url":"https://api.github.com/repos/kevinclark/god/commits{/sha}","git_commits_url":"https://api.github.com/repos/kevinclark/god/git/commits{/sha}","comments_url":"https://api.github.com/repos/kevinclark/god/comments{/number}","issue_comment_url":"https://api.github.com/repos/kevinclark/god/issues/comments/{number}","contents_url":"https://api.github.com/repos/kevinclark/god/contents/{+path}","compare_url":"https://api.github.com/repos/kevinclark/god/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kevinclark/god/merges","archive_url":"https://api.github.com/repos/kevinclark/god/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kevinclark/god/downloads","issues_url":"https://api.github.com/repos/kevinclark/god/issues{/number}","pulls_url":"https://api.github.com/repos/kevinclark/god/pulls{/number}","milestones_url":"https://api.github.com/repos/kevinclark/god/milestones{/number}","notifications_url":"https://api.github.com/repos/kevinclark/god/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kevinclark/god/labels{/name}"},{"id":307,"name":"blerb-core","full_name":"hornbeck/blerb-core","owner":{"login":"hornbeck","id":49,"avatar_url":"https://2.gravatar.com/avatar/47093444301bbde90d0aef5fa5c3ac86?d=https%3A%2F%2Fidenticons.github.com%2Ff457c545a9ded88f18ecee47145a72c0.png","gravatar_id":"47093444301bbde90d0aef5fa5c3ac86","url":"https://api.github.com/users/hornbeck","html_url":"https://github.com/hornbeck","followers_url":"https://api.github.com/users/hornbeck/followers","following_url":"https://api.github.com/users/hornbeck/following{/other_user}","gists_url":"https://api.github.com/users/hornbeck/gists{/gist_id}","starred_url":"https://api.github.com/users/hornbeck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hornbeck/subscriptions","organizations_url":"https://api.github.com/users/hornbeck/orgs","repos_url":"https://api.github.com/users/hornbeck/repos","events_url":"https://api.github.com/users/hornbeck/events{/privacy}","received_events_url":"https://api.github.com/users/hornbeck/received_events","type":"User"},"private":false,"html_url":"https://github.com/hornbeck/blerb-core","description":"blerb running on merb-core","fork":false,"url":"https://api.github.com/repos/hornbeck/blerb-core","forks_url":"https://api.github.com/repos/hornbeck/blerb-core/forks","keys_url":"https://api.github.com/repos/hornbeck/blerb-core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hornbeck/blerb-core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hornbeck/blerb-core/teams","hooks_url":"https://api.github.com/repos/hornbeck/blerb-core/hooks","issue_events_url":"https://api.github.com/repos/hornbeck/blerb-core/issues/events{/number}","events_url":"https://api.github.com/repos/hornbeck/blerb-core/events","assignees_url":"https://api.github.com/repos/hornbeck/blerb-core/assignees{/user}","branches_url":"https://api.github.com/repos/hornbeck/blerb-core/branches{/branch}","tags_url":"https://api.github.com/repos/hornbeck/blerb-core/tags","blobs_url":"https://api.github.com/repos/hornbeck/blerb-core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hornbeck/blerb-core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hornbeck/blerb-core/git/refs{/sha}","trees_url":"https://api.github.com/repos/hornbeck/blerb-core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hornbeck/blerb-core/statuses/{sha}","languages_url":"https://api.github.com/repos/hornbeck/blerb-core/languages","stargazers_url":"https://api.github.com/repos/hornbeck/blerb-core/stargazers","contributors_url":"https://api.github.com/repos/hornbeck/blerb-core/contributors","subscribers_url":"https://api.github.com/repos/hornbeck/blerb-core/subscribers","subscription_url":"https://api.github.com/repos/hornbeck/blerb-core/subscription","commits_url":"https://api.github.com/repos/hornbeck/blerb-core/commits{/sha}","git_commits_url":"https://api.github.com/repos/hornbeck/blerb-core/git/commits{/sha}","comments_url":"https://api.github.com/repos/hornbeck/blerb-core/comments{/number}","issue_comment_url":"https://api.github.com/repos/hornbeck/blerb-core/issues/comments/{number}","contents_url":"https://api.github.com/repos/hornbeck/blerb-core/contents/{+path}","compare_url":"https://api.github.com/repos/hornbeck/blerb-core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hornbeck/blerb-core/merges","archive_url":"https://api.github.com/repos/hornbeck/blerb-core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hornbeck/blerb-core/downloads","issues_url":"https://api.github.com/repos/hornbeck/blerb-core/issues{/number}","pulls_url":"https://api.github.com/repos/hornbeck/blerb-core/pulls{/number}","milestones_url":"https://api.github.com/repos/hornbeck/blerb-core/milestones{/number}","notifications_url":"https://api.github.com/repos/hornbeck/blerb-core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hornbeck/blerb-core/labels{/name}"},{"id":312,"name":"django-mptt","full_name":"brosner/django-mptt","owner":{"login":"brosner","id":124,"avatar_url":"https://0.gravatar.com/avatar/b7472bc7aa45c70641c299e9408b78ab?d=https%3A%2F%2Fidenticons.github.com%2Fc8ffe9a587b126f152ed3d89a146b445.png","gravatar_id":"b7472bc7aa45c70641c299e9408b78ab","url":"https://api.github.com/users/brosner","html_url":"https://github.com/brosner","followers_url":"https://api.github.com/users/brosner/followers","following_url":"https://api.github.com/users/brosner/following{/other_user}","gists_url":"https://api.github.com/users/brosner/gists{/gist_id}","starred_url":"https://api.github.com/users/brosner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brosner/subscriptions","organizations_url":"https://api.github.com/users/brosner/orgs","repos_url":"https://api.github.com/users/brosner/repos","events_url":"https://api.github.com/users/brosner/events{/privacy}","received_events_url":"https://api.github.com/users/brosner/received_events","type":"User"},"private":false,"html_url":"https://github.com/brosner/django-mptt","description":"utilities for implementing a modified pre-order traversal tree in django","fork":true,"url":"https://api.github.com/repos/brosner/django-mptt","forks_url":"https://api.github.com/repos/brosner/django-mptt/forks","keys_url":"https://api.github.com/repos/brosner/django-mptt/keys{/key_id}","collaborators_url":"https://api.github.com/repos/brosner/django-mptt/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/brosner/django-mptt/teams","hooks_url":"https://api.github.com/repos/brosner/django-mptt/hooks","issue_events_url":"https://api.github.com/repos/brosner/django-mptt/issues/events{/number}","events_url":"https://api.github.com/repos/brosner/django-mptt/events","assignees_url":"https://api.github.com/repos/brosner/django-mptt/assignees{/user}","branches_url":"https://api.github.com/repos/brosner/django-mptt/branches{/branch}","tags_url":"https://api.github.com/repos/brosner/django-mptt/tags","blobs_url":"https://api.github.com/repos/brosner/django-mptt/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/brosner/django-mptt/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/brosner/django-mptt/git/refs{/sha}","trees_url":"https://api.github.com/repos/brosner/django-mptt/git/trees{/sha}","statuses_url":"https://api.github.com/repos/brosner/django-mptt/statuses/{sha}","languages_url":"https://api.github.com/repos/brosner/django-mptt/languages","stargazers_url":"https://api.github.com/repos/brosner/django-mptt/stargazers","contributors_url":"https://api.github.com/repos/brosner/django-mptt/contributors","subscribers_url":"https://api.github.com/repos/brosner/django-mptt/subscribers","subscription_url":"https://api.github.com/repos/brosner/django-mptt/subscription","commits_url":"https://api.github.com/repos/brosner/django-mptt/commits{/sha}","git_commits_url":"https://api.github.com/repos/brosner/django-mptt/git/commits{/sha}","comments_url":"https://api.github.com/repos/brosner/django-mptt/comments{/number}","issue_comment_url":"https://api.github.com/repos/brosner/django-mptt/issues/comments/{number}","contents_url":"https://api.github.com/repos/brosner/django-mptt/contents/{+path}","compare_url":"https://api.github.com/repos/brosner/django-mptt/compare/{base}...{head}","merges_url":"https://api.github.com/repos/brosner/django-mptt/merges","archive_url":"https://api.github.com/repos/brosner/django-mptt/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/brosner/django-mptt/downloads","issues_url":"https://api.github.com/repos/brosner/django-mptt/issues{/number}","pulls_url":"https://api.github.com/repos/brosner/django-mptt/pulls{/number}","milestones_url":"https://api.github.com/repos/brosner/django-mptt/milestones{/number}","notifications_url":"https://api.github.com/repos/brosner/django-mptt/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/brosner/django-mptt/labels{/name}"},{"id":314,"name":"bus-scheme","full_name":"technomancy/bus-scheme","owner":{"login":"technomancy","id":141,"avatar_url":"https://2.gravatar.com/avatar/22788ec68b2aee512f8f4c5d8ae819ae?d=https%3A%2F%2Fidenticons.github.com%2F0f28b5d49b3020afeecd95b4009adf4c.png","gravatar_id":"22788ec68b2aee512f8f4c5d8ae819ae","url":"https://api.github.com/users/technomancy","html_url":"https://github.com/technomancy","followers_url":"https://api.github.com/users/technomancy/followers","following_url":"https://api.github.com/users/technomancy/following{/other_user}","gists_url":"https://api.github.com/users/technomancy/gists{/gist_id}","starred_url":"https://api.github.com/users/technomancy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/technomancy/subscriptions","organizations_url":"https://api.github.com/users/technomancy/orgs","repos_url":"https://api.github.com/users/technomancy/repos","events_url":"https://api.github.com/users/technomancy/events{/privacy}","received_events_url":"https://api.github.com/users/technomancy/received_events","type":"User"},"private":false,"html_url":"https://github.com/technomancy/bus-scheme","description":"a Scheme written in Ruby, but implemented on the bus!","fork":false,"url":"https://api.github.com/repos/technomancy/bus-scheme","forks_url":"https://api.github.com/repos/technomancy/bus-scheme/forks","keys_url":"https://api.github.com/repos/technomancy/bus-scheme/keys{/key_id}","collaborators_url":"https://api.github.com/repos/technomancy/bus-scheme/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/technomancy/bus-scheme/teams","hooks_url":"https://api.github.com/repos/technomancy/bus-scheme/hooks","issue_events_url":"https://api.github.com/repos/technomancy/bus-scheme/issues/events{/number}","events_url":"https://api.github.com/repos/technomancy/bus-scheme/events","assignees_url":"https://api.github.com/repos/technomancy/bus-scheme/assignees{/user}","branches_url":"https://api.github.com/repos/technomancy/bus-scheme/branches{/branch}","tags_url":"https://api.github.com/repos/technomancy/bus-scheme/tags","blobs_url":"https://api.github.com/repos/technomancy/bus-scheme/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/technomancy/bus-scheme/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/technomancy/bus-scheme/git/refs{/sha}","trees_url":"https://api.github.com/repos/technomancy/bus-scheme/git/trees{/sha}","statuses_url":"https://api.github.com/repos/technomancy/bus-scheme/statuses/{sha}","languages_url":"https://api.github.com/repos/technomancy/bus-scheme/languages","stargazers_url":"https://api.github.com/repos/technomancy/bus-scheme/stargazers","contributors_url":"https://api.github.com/repos/technomancy/bus-scheme/contributors","subscribers_url":"https://api.github.com/repos/technomancy/bus-scheme/subscribers","subscription_url":"https://api.github.com/repos/technomancy/bus-scheme/subscription","commits_url":"https://api.github.com/repos/technomancy/bus-scheme/commits{/sha}","git_commits_url":"https://api.github.com/repos/technomancy/bus-scheme/git/commits{/sha}","comments_url":"https://api.github.com/repos/technomancy/bus-scheme/comments{/number}","issue_comment_url":"https://api.github.com/repos/technomancy/bus-scheme/issues/comments/{number}","contents_url":"https://api.github.com/repos/technomancy/bus-scheme/contents/{+path}","compare_url":"https://api.github.com/repos/technomancy/bus-scheme/compare/{base}...{head}","merges_url":"https://api.github.com/repos/technomancy/bus-scheme/merges","archive_url":"https://api.github.com/repos/technomancy/bus-scheme/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/technomancy/bus-scheme/downloads","issues_url":"https://api.github.com/repos/technomancy/bus-scheme/issues{/number}","pulls_url":"https://api.github.com/repos/technomancy/bus-scheme/pulls{/number}","milestones_url":"https://api.github.com/repos/technomancy/bus-scheme/milestones{/number}","notifications_url":"https://api.github.com/repos/technomancy/bus-scheme/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/technomancy/bus-scheme/labels{/name}"},{"id":319,"name":"javascript-bits","full_name":"Caged/javascript-bits","owner":{"login":"Caged","id":25,"avatar_url":"https://2.gravatar.com/avatar/97c3a8eea9b7eaa9e1e93ea3cd47399f?d=https%3A%2F%2Fidenticons.github.com%2F8e296a067a37563370ded05f5a3bf3ec.png","gravatar_id":"97c3a8eea9b7eaa9e1e93ea3cd47399f","url":"https://api.github.com/users/Caged","html_url":"https://github.com/Caged","followers_url":"https://api.github.com/users/Caged/followers","following_url":"https://api.github.com/users/Caged/following{/other_user}","gists_url":"https://api.github.com/users/Caged/gists{/gist_id}","starred_url":"https://api.github.com/users/Caged/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Caged/subscriptions","organizations_url":"https://api.github.com/users/Caged/orgs","repos_url":"https://api.github.com/users/Caged/repos","events_url":"https://api.github.com/users/Caged/events{/privacy}","received_events_url":"https://api.github.com/users/Caged/received_events","type":"User"},"private":false,"html_url":"https://github.com/Caged/javascript-bits","description":"Useful pieces of JavaScript. Some old, some new.","fork":false,"url":"https://api.github.com/repos/Caged/javascript-bits","forks_url":"https://api.github.com/repos/Caged/javascript-bits/forks","keys_url":"https://api.github.com/repos/Caged/javascript-bits/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Caged/javascript-bits/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Caged/javascript-bits/teams","hooks_url":"https://api.github.com/repos/Caged/javascript-bits/hooks","issue_events_url":"https://api.github.com/repos/Caged/javascript-bits/issues/events{/number}","events_url":"https://api.github.com/repos/Caged/javascript-bits/events","assignees_url":"https://api.github.com/repos/Caged/javascript-bits/assignees{/user}","branches_url":"https://api.github.com/repos/Caged/javascript-bits/branches{/branch}","tags_url":"https://api.github.com/repos/Caged/javascript-bits/tags","blobs_url":"https://api.github.com/repos/Caged/javascript-bits/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Caged/javascript-bits/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Caged/javascript-bits/git/refs{/sha}","trees_url":"https://api.github.com/repos/Caged/javascript-bits/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Caged/javascript-bits/statuses/{sha}","languages_url":"https://api.github.com/repos/Caged/javascript-bits/languages","stargazers_url":"https://api.github.com/repos/Caged/javascript-bits/stargazers","contributors_url":"https://api.github.com/repos/Caged/javascript-bits/contributors","subscribers_url":"https://api.github.com/repos/Caged/javascript-bits/subscribers","subscription_url":"https://api.github.com/repos/Caged/javascript-bits/subscription","commits_url":"https://api.github.com/repos/Caged/javascript-bits/commits{/sha}","git_commits_url":"https://api.github.com/repos/Caged/javascript-bits/git/commits{/sha}","comments_url":"https://api.github.com/repos/Caged/javascript-bits/comments{/number}","issue_comment_url":"https://api.github.com/repos/Caged/javascript-bits/issues/comments/{number}","contents_url":"https://api.github.com/repos/Caged/javascript-bits/contents/{+path}","compare_url":"https://api.github.com/repos/Caged/javascript-bits/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Caged/javascript-bits/merges","archive_url":"https://api.github.com/repos/Caged/javascript-bits/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Caged/javascript-bits/downloads","issues_url":"https://api.github.com/repos/Caged/javascript-bits/issues{/number}","pulls_url":"https://api.github.com/repos/Caged/javascript-bits/pulls{/number}","milestones_url":"https://api.github.com/repos/Caged/javascript-bits/milestones{/number}","notifications_url":"https://api.github.com/repos/Caged/javascript-bits/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Caged/javascript-bits/labels{/name}"},{"id":320,"name":"groomlake","full_name":"Caged/groomlake","owner":{"login":"Caged","id":25,"avatar_url":"https://2.gravatar.com/avatar/97c3a8eea9b7eaa9e1e93ea3cd47399f?d=https%3A%2F%2Fidenticons.github.com%2F8e296a067a37563370ded05f5a3bf3ec.png","gravatar_id":"97c3a8eea9b7eaa9e1e93ea3cd47399f","url":"https://api.github.com/users/Caged","html_url":"https://github.com/Caged","followers_url":"https://api.github.com/users/Caged/followers","following_url":"https://api.github.com/users/Caged/following{/other_user}","gists_url":"https://api.github.com/users/Caged/gists{/gist_id}","starred_url":"https://api.github.com/users/Caged/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Caged/subscriptions","organizations_url":"https://api.github.com/users/Caged/orgs","repos_url":"https://api.github.com/users/Caged/repos","events_url":"https://api.github.com/users/Caged/events{/privacy}","received_events_url":"https://api.github.com/users/Caged/received_events","type":"User"},"private":false,"html_url":"https://github.com/Caged/groomlake","description":"Ruby parsers for some Adobe file formats.","fork":false,"url":"https://api.github.com/repos/Caged/groomlake","forks_url":"https://api.github.com/repos/Caged/groomlake/forks","keys_url":"https://api.github.com/repos/Caged/groomlake/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Caged/groomlake/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Caged/groomlake/teams","hooks_url":"https://api.github.com/repos/Caged/groomlake/hooks","issue_events_url":"https://api.github.com/repos/Caged/groomlake/issues/events{/number}","events_url":"https://api.github.com/repos/Caged/groomlake/events","assignees_url":"https://api.github.com/repos/Caged/groomlake/assignees{/user}","branches_url":"https://api.github.com/repos/Caged/groomlake/branches{/branch}","tags_url":"https://api.github.com/repos/Caged/groomlake/tags","blobs_url":"https://api.github.com/repos/Caged/groomlake/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Caged/groomlake/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Caged/groomlake/git/refs{/sha}","trees_url":"https://api.github.com/repos/Caged/groomlake/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Caged/groomlake/statuses/{sha}","languages_url":"https://api.github.com/repos/Caged/groomlake/languages","stargazers_url":"https://api.github.com/repos/Caged/groomlake/stargazers","contributors_url":"https://api.github.com/repos/Caged/groomlake/contributors","subscribers_url":"https://api.github.com/repos/Caged/groomlake/subscribers","subscription_url":"https://api.github.com/repos/Caged/groomlake/subscription","commits_url":"https://api.github.com/repos/Caged/groomlake/commits{/sha}","git_commits_url":"https://api.github.com/repos/Caged/groomlake/git/commits{/sha}","comments_url":"https://api.github.com/repos/Caged/groomlake/comments{/number}","issue_comment_url":"https://api.github.com/repos/Caged/groomlake/issues/comments/{number}","contents_url":"https://api.github.com/repos/Caged/groomlake/contents/{+path}","compare_url":"https://api.github.com/repos/Caged/groomlake/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Caged/groomlake/merges","archive_url":"https://api.github.com/repos/Caged/groomlake/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Caged/groomlake/downloads","issues_url":"https://api.github.com/repos/Caged/groomlake/issues{/number}","pulls_url":"https://api.github.com/repos/Caged/groomlake/pulls{/number}","milestones_url":"https://api.github.com/repos/Caged/groomlake/milestones{/number}","notifications_url":"https://api.github.com/repos/Caged/groomlake/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Caged/groomlake/labels{/name}"},{"id":322,"name":"forgery","full_name":"sevenwire/forgery","owner":{"login":"sevenwire","id":150,"avatar_url":"https://1.gravatar.com/avatar/2d699571a445b9a9205779628fe9a818?d=https%3A%2F%2Fidenticons.github.com%2F7ef605fc8dba5425d6965fbd4c8fbe1f.png","gravatar_id":"2d699571a445b9a9205779628fe9a818","url":"https://api.github.com/users/sevenwire","html_url":"https://github.com/sevenwire","followers_url":"https://api.github.com/users/sevenwire/followers","following_url":"https://api.github.com/users/sevenwire/following{/other_user}","gists_url":"https://api.github.com/users/sevenwire/gists{/gist_id}","starred_url":"https://api.github.com/users/sevenwire/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sevenwire/subscriptions","organizations_url":"https://api.github.com/users/sevenwire/orgs","repos_url":"https://api.github.com/users/sevenwire/repos","events_url":"https://api.github.com/users/sevenwire/events{/privacy}","received_events_url":"https://api.github.com/users/sevenwire/received_events","type":"Organization"},"private":false,"html_url":"https://github.com/sevenwire/forgery","description":"Easy and customizable generation of forged data.","fork":false,"url":"https://api.github.com/repos/sevenwire/forgery","forks_url":"https://api.github.com/repos/sevenwire/forgery/forks","keys_url":"https://api.github.com/repos/sevenwire/forgery/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sevenwire/forgery/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sevenwire/forgery/teams","hooks_url":"https://api.github.com/repos/sevenwire/forgery/hooks","issue_events_url":"https://api.github.com/repos/sevenwire/forgery/issues/events{/number}","events_url":"https://api.github.com/repos/sevenwire/forgery/events","assignees_url":"https://api.github.com/repos/sevenwire/forgery/assignees{/user}","branches_url":"https://api.github.com/repos/sevenwire/forgery/branches{/branch}","tags_url":"https://api.github.com/repos/sevenwire/forgery/tags","blobs_url":"https://api.github.com/repos/sevenwire/forgery/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sevenwire/forgery/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sevenwire/forgery/git/refs{/sha}","trees_url":"https://api.github.com/repos/sevenwire/forgery/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sevenwire/forgery/statuses/{sha}","languages_url":"https://api.github.com/repos/sevenwire/forgery/languages","stargazers_url":"https://api.github.com/repos/sevenwire/forgery/stargazers","contributors_url":"https://api.github.com/repos/sevenwire/forgery/contributors","subscribers_url":"https://api.github.com/repos/sevenwire/forgery/subscribers","subscription_url":"https://api.github.com/repos/sevenwire/forgery/subscription","commits_url":"https://api.github.com/repos/sevenwire/forgery/commits{/sha}","git_commits_url":"https://api.github.com/repos/sevenwire/forgery/git/commits{/sha}","comments_url":"https://api.github.com/repos/sevenwire/forgery/comments{/number}","issue_comment_url":"https://api.github.com/repos/sevenwire/forgery/issues/comments/{number}","contents_url":"https://api.github.com/repos/sevenwire/forgery/contents/{+path}","compare_url":"https://api.github.com/repos/sevenwire/forgery/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sevenwire/forgery/merges","archive_url":"https://api.github.com/repos/sevenwire/forgery/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sevenwire/forgery/downloads","issues_url":"https://api.github.com/repos/sevenwire/forgery/issues{/number}","pulls_url":"https://api.github.com/repos/sevenwire/forgery/pulls{/number}","milestones_url":"https://api.github.com/repos/sevenwire/forgery/milestones{/number}","notifications_url":"https://api.github.com/repos/sevenwire/forgery/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sevenwire/forgery/labels{/name}"},{"id":324,"name":"ambitious-sphinx","full_name":"technicalpickles/ambitious-sphinx","owner":{"login":"technicalpickles","id":159,"avatar_url":"https://0.gravatar.com/avatar/1c1aabc1abed5cce37b192dd00f0f28c?d=https%3A%2F%2Fidenticons.github.com%2F140f6969d5213fd0ece03148e62e461e.png","gravatar_id":"1c1aabc1abed5cce37b192dd00f0f28c","url":"https://api.github.com/users/technicalpickles","html_url":"https://github.com/technicalpickles","followers_url":"https://api.github.com/users/technicalpickles/followers","following_url":"https://api.github.com/users/technicalpickles/following{/other_user}","gists_url":"https://api.github.com/users/technicalpickles/gists{/gist_id}","starred_url":"https://api.github.com/users/technicalpickles/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/technicalpickles/subscriptions","organizations_url":"https://api.github.com/users/technicalpickles/orgs","repos_url":"https://api.github.com/users/technicalpickles/repos","events_url":"https://api.github.com/users/technicalpickles/events{/privacy}","received_events_url":"https://api.github.com/users/technicalpickles/received_events","type":"User"},"private":false,"html_url":"https://github.com/technicalpickles/ambitious-sphinx","description":"Ambition adapter for Sphinx","fork":false,"url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx","forks_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/forks","keys_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/keys{/key_id}","collaborators_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/teams","hooks_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/hooks","issue_events_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/issues/events{/number}","events_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/events","assignees_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/assignees{/user}","branches_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/branches{/branch}","tags_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/tags","blobs_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/git/refs{/sha}","trees_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/git/trees{/sha}","statuses_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/statuses/{sha}","languages_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/languages","stargazers_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/stargazers","contributors_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/contributors","subscribers_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/subscribers","subscription_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/subscription","commits_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/commits{/sha}","git_commits_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/git/commits{/sha}","comments_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/comments{/number}","issue_comment_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/issues/comments/{number}","contents_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/contents/{+path}","compare_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/compare/{base}...{head}","merges_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/merges","archive_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/downloads","issues_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/issues{/number}","pulls_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/pulls{/number}","milestones_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/milestones{/number}","notifications_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/technicalpickles/ambitious-sphinx/labels{/name}"},{"id":329,"name":"soup","full_name":"lazyatom/soup","owner":{"login":"lazyatom","id":145,"avatar_url":"https://0.gravatar.com/avatar/acd62030df551952268e84c8fff26a5b?d=https%3A%2F%2Fidenticons.github.com%2F2b24d495052a8ce66358eb576b8912c8.png","gravatar_id":"acd62030df551952268e84c8fff26a5b","url":"https://api.github.com/users/lazyatom","html_url":"https://github.com/lazyatom","followers_url":"https://api.github.com/users/lazyatom/followers","following_url":"https://api.github.com/users/lazyatom/following{/other_user}","gists_url":"https://api.github.com/users/lazyatom/gists{/gist_id}","starred_url":"https://api.github.com/users/lazyatom/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lazyatom/subscriptions","organizations_url":"https://api.github.com/users/lazyatom/orgs","repos_url":"https://api.github.com/users/lazyatom/repos","events_url":"https://api.github.com/users/lazyatom/events{/privacy}","received_events_url":"https://api.github.com/users/lazyatom/received_events","type":"User"},"private":false,"html_url":"https://github.com/lazyatom/soup","description":"I suppose it's a document database. Or a tuple store. But really, it's just data sloshing around, waiting to be used.","fork":false,"url":"https://api.github.com/repos/lazyatom/soup","forks_url":"https://api.github.com/repos/lazyatom/soup/forks","keys_url":"https://api.github.com/repos/lazyatom/soup/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lazyatom/soup/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lazyatom/soup/teams","hooks_url":"https://api.github.com/repos/lazyatom/soup/hooks","issue_events_url":"https://api.github.com/repos/lazyatom/soup/issues/events{/number}","events_url":"https://api.github.com/repos/lazyatom/soup/events","assignees_url":"https://api.github.com/repos/lazyatom/soup/assignees{/user}","branches_url":"https://api.github.com/repos/lazyatom/soup/branches{/branch}","tags_url":"https://api.github.com/repos/lazyatom/soup/tags","blobs_url":"https://api.github.com/repos/lazyatom/soup/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lazyatom/soup/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lazyatom/soup/git/refs{/sha}","trees_url":"https://api.github.com/repos/lazyatom/soup/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lazyatom/soup/statuses/{sha}","languages_url":"https://api.github.com/repos/lazyatom/soup/languages","stargazers_url":"https://api.github.com/repos/lazyatom/soup/stargazers","contributors_url":"https://api.github.com/repos/lazyatom/soup/contributors","subscribers_url":"https://api.github.com/repos/lazyatom/soup/subscribers","subscription_url":"https://api.github.com/repos/lazyatom/soup/subscription","commits_url":"https://api.github.com/repos/lazyatom/soup/commits{/sha}","git_commits_url":"https://api.github.com/repos/lazyatom/soup/git/commits{/sha}","comments_url":"https://api.github.com/repos/lazyatom/soup/comments{/number}","issue_comment_url":"https://api.github.com/repos/lazyatom/soup/issues/comments/{number}","contents_url":"https://api.github.com/repos/lazyatom/soup/contents/{+path}","compare_url":"https://api.github.com/repos/lazyatom/soup/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lazyatom/soup/merges","archive_url":"https://api.github.com/repos/lazyatom/soup/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lazyatom/soup/downloads","issues_url":"https://api.github.com/repos/lazyatom/soup/issues{/number}","pulls_url":"https://api.github.com/repos/lazyatom/soup/pulls{/number}","milestones_url":"https://api.github.com/repos/lazyatom/soup/milestones{/number}","notifications_url":"https://api.github.com/repos/lazyatom/soup/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lazyatom/soup/labels{/name}"},{"id":332,"name":"rails","full_name":"josh/rails","owner":{"login":"josh","id":137,"avatar_url":"https://2.gravatar.com/avatar/bbe5dc8dcf248706525ab76f46185520?d=https%3A%2F%2Fidenticons.github.com%2F3988c7f88ebcb58c6ce932b957b6f332.png","gravatar_id":"bbe5dc8dcf248706525ab76f46185520","url":"https://api.github.com/users/josh","html_url":"https://github.com/josh","followers_url":"https://api.github.com/users/josh/followers","following_url":"https://api.github.com/users/josh/following{/other_user}","gists_url":"https://api.github.com/users/josh/gists{/gist_id}","starred_url":"https://api.github.com/users/josh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/josh/subscriptions","organizations_url":"https://api.github.com/users/josh/orgs","repos_url":"https://api.github.com/users/josh/repos","events_url":"https://api.github.com/users/josh/events{/privacy}","received_events_url":"https://api.github.com/users/josh/received_events","type":"User"},"private":false,"html_url":"https://github.com/josh/rails","description":"Ruby on Rails","fork":true,"url":"https://api.github.com/repos/josh/rails","forks_url":"https://api.github.com/repos/josh/rails/forks","keys_url":"https://api.github.com/repos/josh/rails/keys{/key_id}","collaborators_url":"https://api.github.com/repos/josh/rails/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/josh/rails/teams","hooks_url":"https://api.github.com/repos/josh/rails/hooks","issue_events_url":"https://api.github.com/repos/josh/rails/issues/events{/number}","events_url":"https://api.github.com/repos/josh/rails/events","assignees_url":"https://api.github.com/repos/josh/rails/assignees{/user}","branches_url":"https://api.github.com/repos/josh/rails/branches{/branch}","tags_url":"https://api.github.com/repos/josh/rails/tags","blobs_url":"https://api.github.com/repos/josh/rails/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/josh/rails/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/josh/rails/git/refs{/sha}","trees_url":"https://api.github.com/repos/josh/rails/git/trees{/sha}","statuses_url":"https://api.github.com/repos/josh/rails/statuses/{sha}","languages_url":"https://api.github.com/repos/josh/rails/languages","stargazers_url":"https://api.github.com/repos/josh/rails/stargazers","contributors_url":"https://api.github.com/repos/josh/rails/contributors","subscribers_url":"https://api.github.com/repos/josh/rails/subscribers","subscription_url":"https://api.github.com/repos/josh/rails/subscription","commits_url":"https://api.github.com/repos/josh/rails/commits{/sha}","git_commits_url":"https://api.github.com/repos/josh/rails/git/commits{/sha}","comments_url":"https://api.github.com/repos/josh/rails/comments{/number}","issue_comment_url":"https://api.github.com/repos/josh/rails/issues/comments/{number}","contents_url":"https://api.github.com/repos/josh/rails/contents/{+path}","compare_url":"https://api.github.com/repos/josh/rails/compare/{base}...{head}","merges_url":"https://api.github.com/repos/josh/rails/merges","archive_url":"https://api.github.com/repos/josh/rails/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/josh/rails/downloads","issues_url":"https://api.github.com/repos/josh/rails/issues{/number}","pulls_url":"https://api.github.com/repos/josh/rails/pulls{/number}","milestones_url":"https://api.github.com/repos/josh/rails/milestones{/number}","notifications_url":"https://api.github.com/repos/josh/rails/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/josh/rails/labels{/name}"},{"id":334,"name":"backpacking","full_name":"cdcarter/backpacking","owner":{"login":"cdcarter","id":164,"avatar_url":"https://1.gravatar.com/avatar/96931bfe0c2948f47a98e15ae52e5637?d=https%3A%2F%2Fidenticons.github.com%2Ffa7cdfad1a5aaf8370ebeda47a1ff1c3.png","gravatar_id":"96931bfe0c2948f47a98e15ae52e5637","url":"https://api.github.com/users/cdcarter","html_url":"https://github.com/cdcarter","followers_url":"https://api.github.com/users/cdcarter/followers","following_url":"https://api.github.com/users/cdcarter/following{/other_user}","gists_url":"https://api.github.com/users/cdcarter/gists{/gist_id}","starred_url":"https://api.github.com/users/cdcarter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cdcarter/subscriptions","organizations_url":"https://api.github.com/users/cdcarter/orgs","repos_url":"https://api.github.com/users/cdcarter/repos","events_url":"https://api.github.com/users/cdcarter/events{/privacy}","received_events_url":"https://api.github.com/users/cdcarter/received_events","type":"User"},"private":false,"html_url":"https://github.com/cdcarter/backpacking","description":"An Io web framework of sorts","fork":false,"url":"https://api.github.com/repos/cdcarter/backpacking","forks_url":"https://api.github.com/repos/cdcarter/backpacking/forks","keys_url":"https://api.github.com/repos/cdcarter/backpacking/keys{/key_id}","collaborators_url":"https://api.github.com/repos/cdcarter/backpacking/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/cdcarter/backpacking/teams","hooks_url":"https://api.github.com/repos/cdcarter/backpacking/hooks","issue_events_url":"https://api.github.com/repos/cdcarter/backpacking/issues/events{/number}","events_url":"https://api.github.com/repos/cdcarter/backpacking/events","assignees_url":"https://api.github.com/repos/cdcarter/backpacking/assignees{/user}","branches_url":"https://api.github.com/repos/cdcarter/backpacking/branches{/branch}","tags_url":"https://api.github.com/repos/cdcarter/backpacking/tags","blobs_url":"https://api.github.com/repos/cdcarter/backpacking/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/cdcarter/backpacking/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/cdcarter/backpacking/git/refs{/sha}","trees_url":"https://api.github.com/repos/cdcarter/backpacking/git/trees{/sha}","statuses_url":"https://api.github.com/repos/cdcarter/backpacking/statuses/{sha}","languages_url":"https://api.github.com/repos/cdcarter/backpacking/languages","stargazers_url":"https://api.github.com/repos/cdcarter/backpacking/stargazers","contributors_url":"https://api.github.com/repos/cdcarter/backpacking/contributors","subscribers_url":"https://api.github.com/repos/cdcarter/backpacking/subscribers","subscription_url":"https://api.github.com/repos/cdcarter/backpacking/subscription","commits_url":"https://api.github.com/repos/cdcarter/backpacking/commits{/sha}","git_commits_url":"https://api.github.com/repos/cdcarter/backpacking/git/commits{/sha}","comments_url":"https://api.github.com/repos/cdcarter/backpacking/comments{/number}","issue_comment_url":"https://api.github.com/repos/cdcarter/backpacking/issues/comments/{number}","contents_url":"https://api.github.com/repos/cdcarter/backpacking/contents/{+path}","compare_url":"https://api.github.com/repos/cdcarter/backpacking/compare/{base}...{head}","merges_url":"https://api.github.com/repos/cdcarter/backpacking/merges","archive_url":"https://api.github.com/repos/cdcarter/backpacking/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/cdcarter/backpacking/downloads","issues_url":"https://api.github.com/repos/cdcarter/backpacking/issues{/number}","pulls_url":"https://api.github.com/repos/cdcarter/backpacking/pulls{/number}","milestones_url":"https://api.github.com/repos/cdcarter/backpacking/milestones{/number}","notifications_url":"https://api.github.com/repos/cdcarter/backpacking/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/cdcarter/backpacking/labels{/name}"},{"id":339,"name":"capsize","full_name":"jnewland/capsize","owner":{"login":"jnewland","id":47,"avatar_url":"https://1.gravatar.com/avatar/f317439da90c3176adc8938bcf5181ff?d=https%3A%2F%2Fidenticons.github.com%2F67c6a1e7ce56d3d6fa748ab6d9af3fd7.png","gravatar_id":"f317439da90c3176adc8938bcf5181ff","url":"https://api.github.com/users/jnewland","html_url":"https://github.com/jnewland","followers_url":"https://api.github.com/users/jnewland/followers","following_url":"https://api.github.com/users/jnewland/following{/other_user}","gists_url":"https://api.github.com/users/jnewland/gists{/gist_id}","starred_url":"https://api.github.com/users/jnewland/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jnewland/subscriptions","organizations_url":"https://api.github.com/users/jnewland/orgs","repos_url":"https://api.github.com/users/jnewland/repos","events_url":"https://api.github.com/users/jnewland/events{/privacy}","received_events_url":"https://api.github.com/users/jnewland/received_events","type":"User"},"private":false,"html_url":"https://github.com/jnewland/capsize","description":"A Capistrano extension for managing and running your app on Amazon EC2.","fork":false,"url":"https://api.github.com/repos/jnewland/capsize","forks_url":"https://api.github.com/repos/jnewland/capsize/forks","keys_url":"https://api.github.com/repos/jnewland/capsize/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jnewland/capsize/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jnewland/capsize/teams","hooks_url":"https://api.github.com/repos/jnewland/capsize/hooks","issue_events_url":"https://api.github.com/repos/jnewland/capsize/issues/events{/number}","events_url":"https://api.github.com/repos/jnewland/capsize/events","assignees_url":"https://api.github.com/repos/jnewland/capsize/assignees{/user}","branches_url":"https://api.github.com/repos/jnewland/capsize/branches{/branch}","tags_url":"https://api.github.com/repos/jnewland/capsize/tags","blobs_url":"https://api.github.com/repos/jnewland/capsize/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jnewland/capsize/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jnewland/capsize/git/refs{/sha}","trees_url":"https://api.github.com/repos/jnewland/capsize/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jnewland/capsize/statuses/{sha}","languages_url":"https://api.github.com/repos/jnewland/capsize/languages","stargazers_url":"https://api.github.com/repos/jnewland/capsize/stargazers","contributors_url":"https://api.github.com/repos/jnewland/capsize/contributors","subscribers_url":"https://api.github.com/repos/jnewland/capsize/subscribers","subscription_url":"https://api.github.com/repos/jnewland/capsize/subscription","commits_url":"https://api.github.com/repos/jnewland/capsize/commits{/sha}","git_commits_url":"https://api.github.com/repos/jnewland/capsize/git/commits{/sha}","comments_url":"https://api.github.com/repos/jnewland/capsize/comments{/number}","issue_comment_url":"https://api.github.com/repos/jnewland/capsize/issues/comments/{number}","contents_url":"https://api.github.com/repos/jnewland/capsize/contents/{+path}","compare_url":"https://api.github.com/repos/jnewland/capsize/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jnewland/capsize/merges","archive_url":"https://api.github.com/repos/jnewland/capsize/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jnewland/capsize/downloads","issues_url":"https://api.github.com/repos/jnewland/capsize/issues{/number}","pulls_url":"https://api.github.com/repos/jnewland/capsize/pulls{/number}","milestones_url":"https://api.github.com/repos/jnewland/capsize/milestones{/number}","notifications_url":"https://api.github.com/repos/jnewland/capsize/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jnewland/capsize/labels{/name}"},{"id":351,"name":"starling","full_name":"bs/starling","owner":{"login":"bs","id":68,"avatar_url":"https://0.gravatar.com/avatar/e9abc07e644756d917e9de193236fd39?d=https%3A%2F%2Fidenticons.github.com%2Fa3f390d88e4c41f2747bfa2f1b5f87db.png","gravatar_id":"e9abc07e644756d917e9de193236fd39","url":"https://api.github.com/users/bs","html_url":"https://github.com/bs","followers_url":"https://api.github.com/users/bs/followers","following_url":"https://api.github.com/users/bs/following{/other_user}","gists_url":"https://api.github.com/users/bs/gists{/gist_id}","starred_url":"https://api.github.com/users/bs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bs/subscriptions","organizations_url":"https://api.github.com/users/bs/orgs","repos_url":"https://api.github.com/users/bs/repos","events_url":"https://api.github.com/users/bs/events{/privacy}","received_events_url":"https://api.github.com/users/bs/received_events","type":"User"},"private":false,"html_url":"https://github.com/bs/starling","description":"Starling Message Queue","fork":false,"url":"https://api.github.com/repos/bs/starling","forks_url":"https://api.github.com/repos/bs/starling/forks","keys_url":"https://api.github.com/repos/bs/starling/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bs/starling/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bs/starling/teams","hooks_url":"https://api.github.com/repos/bs/starling/hooks","issue_events_url":"https://api.github.com/repos/bs/starling/issues/events{/number}","events_url":"https://api.github.com/repos/bs/starling/events","assignees_url":"https://api.github.com/repos/bs/starling/assignees{/user}","branches_url":"https://api.github.com/repos/bs/starling/branches{/branch}","tags_url":"https://api.github.com/repos/bs/starling/tags","blobs_url":"https://api.github.com/repos/bs/starling/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bs/starling/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bs/starling/git/refs{/sha}","trees_url":"https://api.github.com/repos/bs/starling/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bs/starling/statuses/{sha}","languages_url":"https://api.github.com/repos/bs/starling/languages","stargazers_url":"https://api.github.com/repos/bs/starling/stargazers","contributors_url":"https://api.github.com/repos/bs/starling/contributors","subscribers_url":"https://api.github.com/repos/bs/starling/subscribers","subscription_url":"https://api.github.com/repos/bs/starling/subscription","commits_url":"https://api.github.com/repos/bs/starling/commits{/sha}","git_commits_url":"https://api.github.com/repos/bs/starling/git/commits{/sha}","comments_url":"https://api.github.com/repos/bs/starling/comments{/number}","issue_comment_url":"https://api.github.com/repos/bs/starling/issues/comments/{number}","contents_url":"https://api.github.com/repos/bs/starling/contents/{+path}","compare_url":"https://api.github.com/repos/bs/starling/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bs/starling/merges","archive_url":"https://api.github.com/repos/bs/starling/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bs/starling/downloads","issues_url":"https://api.github.com/repos/bs/starling/issues{/number}","pulls_url":"https://api.github.com/repos/bs/starling/pulls{/number}","milestones_url":"https://api.github.com/repos/bs/starling/milestones{/number}","notifications_url":"https://api.github.com/repos/bs/starling/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bs/starling/labels{/name}"},{"id":360,"name":"ape","full_name":"sr/ape","owner":{"login":"sr","id":90,"avatar_url":"https://1.gravatar.com/avatar/8e0adf6f8274375b90a180d256d73bad?d=https%3A%2F%2Fidenticons.github.com%2F8613985ec49eb8f757ae6439e879bb2a.png","gravatar_id":"8e0adf6f8274375b90a180d256d73bad","url":"https://api.github.com/users/sr","html_url":"https://github.com/sr","followers_url":"https://api.github.com/users/sr/followers","following_url":"https://api.github.com/users/sr/following{/other_user}","gists_url":"https://api.github.com/users/sr/gists{/gist_id}","starred_url":"https://api.github.com/users/sr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sr/subscriptions","organizations_url":"https://api.github.com/users/sr/orgs","repos_url":"https://api.github.com/users/sr/repos","events_url":"https://api.github.com/users/sr/events{/privacy}","received_events_url":"https://api.github.com/users/sr/received_events","type":"User"},"private":false,"html_url":"https://github.com/sr/ape","description":"The Atom Protocol Exerciser","fork":false,"url":"https://api.github.com/repos/sr/ape","forks_url":"https://api.github.com/repos/sr/ape/forks","keys_url":"https://api.github.com/repos/sr/ape/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sr/ape/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sr/ape/teams","hooks_url":"https://api.github.com/repos/sr/ape/hooks","issue_events_url":"https://api.github.com/repos/sr/ape/issues/events{/number}","events_url":"https://api.github.com/repos/sr/ape/events","assignees_url":"https://api.github.com/repos/sr/ape/assignees{/user}","branches_url":"https://api.github.com/repos/sr/ape/branches{/branch}","tags_url":"https://api.github.com/repos/sr/ape/tags","blobs_url":"https://api.github.com/repos/sr/ape/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sr/ape/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sr/ape/git/refs{/sha}","trees_url":"https://api.github.com/repos/sr/ape/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sr/ape/statuses/{sha}","languages_url":"https://api.github.com/repos/sr/ape/languages","stargazers_url":"https://api.github.com/repos/sr/ape/stargazers","contributors_url":"https://api.github.com/repos/sr/ape/contributors","subscribers_url":"https://api.github.com/repos/sr/ape/subscribers","subscription_url":"https://api.github.com/repos/sr/ape/subscription","commits_url":"https://api.github.com/repos/sr/ape/commits{/sha}","git_commits_url":"https://api.github.com/repos/sr/ape/git/commits{/sha}","comments_url":"https://api.github.com/repos/sr/ape/comments{/number}","issue_comment_url":"https://api.github.com/repos/sr/ape/issues/comments/{number}","contents_url":"https://api.github.com/repos/sr/ape/contents/{+path}","compare_url":"https://api.github.com/repos/sr/ape/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sr/ape/merges","archive_url":"https://api.github.com/repos/sr/ape/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sr/ape/downloads","issues_url":"https://api.github.com/repos/sr/ape/issues{/number}","pulls_url":"https://api.github.com/repos/sr/ape/pulls{/number}","milestones_url":"https://api.github.com/repos/sr/ape/milestones{/number}","notifications_url":"https://api.github.com/repos/sr/ape/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sr/ape/labels{/name}"},{"id":362,"name":"awesomeness","full_name":"collectiveidea/awesomeness","owner":{"login":"collectiveidea","id":128,"avatar_url":"https://2.gravatar.com/avatar/13ff8dc8c2bf2a4752816e1e3f201a05?d=https%3A%2F%2Fidenticons.github.com%2F76dc611d6ebaafc66cc0879c71b5db5c.png","gravatar_id":"13ff8dc8c2bf2a4752816e1e3f201a05","url":"https://api.github.com/users/collectiveidea","html_url":"https://github.com/collectiveidea","followers_url":"https://api.github.com/users/collectiveidea/followers","following_url":"https://api.github.com/users/collectiveidea/following{/other_user}","gists_url":"https://api.github.com/users/collectiveidea/gists{/gist_id}","starred_url":"https://api.github.com/users/collectiveidea/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/collectiveidea/subscriptions","organizations_url":"https://api.github.com/users/collectiveidea/orgs","repos_url":"https://api.github.com/users/collectiveidea/repos","events_url":"https://api.github.com/users/collectiveidea/events{/privacy}","received_events_url":"https://api.github.com/users/collectiveidea/received_events","type":"Organization"},"private":false,"html_url":"https://github.com/collectiveidea/awesomeness","description":"Collective Idea's Awesomeness. A collection of useful Rails bits and pieces.","fork":false,"url":"https://api.github.com/repos/collectiveidea/awesomeness","forks_url":"https://api.github.com/repos/collectiveidea/awesomeness/forks","keys_url":"https://api.github.com/repos/collectiveidea/awesomeness/keys{/key_id}","collaborators_url":"https://api.github.com/repos/collectiveidea/awesomeness/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/collectiveidea/awesomeness/teams","hooks_url":"https://api.github.com/repos/collectiveidea/awesomeness/hooks","issue_events_url":"https://api.github.com/repos/collectiveidea/awesomeness/issues/events{/number}","events_url":"https://api.github.com/repos/collectiveidea/awesomeness/events","assignees_url":"https://api.github.com/repos/collectiveidea/awesomeness/assignees{/user}","branches_url":"https://api.github.com/repos/collectiveidea/awesomeness/branches{/branch}","tags_url":"https://api.github.com/repos/collectiveidea/awesomeness/tags","blobs_url":"https://api.github.com/repos/collectiveidea/awesomeness/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/collectiveidea/awesomeness/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/collectiveidea/awesomeness/git/refs{/sha}","trees_url":"https://api.github.com/repos/collectiveidea/awesomeness/git/trees{/sha}","statuses_url":"https://api.github.com/repos/collectiveidea/awesomeness/statuses/{sha}","languages_url":"https://api.github.com/repos/collectiveidea/awesomeness/languages","stargazers_url":"https://api.github.com/repos/collectiveidea/awesomeness/stargazers","contributors_url":"https://api.github.com/repos/collectiveidea/awesomeness/contributors","subscribers_url":"https://api.github.com/repos/collectiveidea/awesomeness/subscribers","subscription_url":"https://api.github.com/repos/collectiveidea/awesomeness/subscription","commits_url":"https://api.github.com/repos/collectiveidea/awesomeness/commits{/sha}","git_commits_url":"https://api.github.com/repos/collectiveidea/awesomeness/git/commits{/sha}","comments_url":"https://api.github.com/repos/collectiveidea/awesomeness/comments{/number}","issue_comment_url":"https://api.github.com/repos/collectiveidea/awesomeness/issues/comments/{number}","contents_url":"https://api.github.com/repos/collectiveidea/awesomeness/contents/{+path}","compare_url":"https://api.github.com/repos/collectiveidea/awesomeness/compare/{base}...{head}","merges_url":"https://api.github.com/repos/collectiveidea/awesomeness/merges","archive_url":"https://api.github.com/repos/collectiveidea/awesomeness/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/collectiveidea/awesomeness/downloads","issues_url":"https://api.github.com/repos/collectiveidea/awesomeness/issues{/number}","pulls_url":"https://api.github.com/repos/collectiveidea/awesomeness/pulls{/number}","milestones_url":"https://api.github.com/repos/collectiveidea/awesomeness/milestones{/number}","notifications_url":"https://api.github.com/repos/collectiveidea/awesomeness/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/collectiveidea/awesomeness/labels{/name}"},{"id":363,"name":"audited","full_name":"collectiveidea/audited","owner":{"login":"collectiveidea","id":128,"avatar_url":"https://2.gravatar.com/avatar/13ff8dc8c2bf2a4752816e1e3f201a05?d=https%3A%2F%2Fidenticons.github.com%2F76dc611d6ebaafc66cc0879c71b5db5c.png","gravatar_id":"13ff8dc8c2bf2a4752816e1e3f201a05","url":"https://api.github.com/users/collectiveidea","html_url":"https://github.com/collectiveidea","followers_url":"https://api.github.com/users/collectiveidea/followers","following_url":"https://api.github.com/users/collectiveidea/following{/other_user}","gists_url":"https://api.github.com/users/collectiveidea/gists{/gist_id}","starred_url":"https://api.github.com/users/collectiveidea/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/collectiveidea/subscriptions","organizations_url":"https://api.github.com/users/collectiveidea/orgs","repos_url":"https://api.github.com/users/collectiveidea/repos","events_url":"https://api.github.com/users/collectiveidea/events{/privacy}","received_events_url":"https://api.github.com/users/collectiveidea/received_events","type":"Organization"},"private":false,"html_url":"https://github.com/collectiveidea/audited","description":"Audited (formerly acts_as_audited) is an ORM extension that logs all changes to your Rails models.","fork":false,"url":"https://api.github.com/repos/collectiveidea/audited","forks_url":"https://api.github.com/repos/collectiveidea/audited/forks","keys_url":"https://api.github.com/repos/collectiveidea/audited/keys{/key_id}","collaborators_url":"https://api.github.com/repos/collectiveidea/audited/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/collectiveidea/audited/teams","hooks_url":"https://api.github.com/repos/collectiveidea/audited/hooks","issue_events_url":"https://api.github.com/repos/collectiveidea/audited/issues/events{/number}","events_url":"https://api.github.com/repos/collectiveidea/audited/events","assignees_url":"https://api.github.com/repos/collectiveidea/audited/assignees{/user}","branches_url":"https://api.github.com/repos/collectiveidea/audited/branches{/branch}","tags_url":"https://api.github.com/repos/collectiveidea/audited/tags","blobs_url":"https://api.github.com/repos/collectiveidea/audited/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/collectiveidea/audited/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/collectiveidea/audited/git/refs{/sha}","trees_url":"https://api.github.com/repos/collectiveidea/audited/git/trees{/sha}","statuses_url":"https://api.github.com/repos/collectiveidea/audited/statuses/{sha}","languages_url":"https://api.github.com/repos/collectiveidea/audited/languages","stargazers_url":"https://api.github.com/repos/collectiveidea/audited/stargazers","contributors_url":"https://api.github.com/repos/collectiveidea/audited/contributors","subscribers_url":"https://api.github.com/repos/collectiveidea/audited/subscribers","subscription_url":"https://api.github.com/repos/collectiveidea/audited/subscription","commits_url":"https://api.github.com/repos/collectiveidea/audited/commits{/sha}","git_commits_url":"https://api.github.com/repos/collectiveidea/audited/git/commits{/sha}","comments_url":"https://api.github.com/repos/collectiveidea/audited/comments{/number}","issue_comment_url":"https://api.github.com/repos/collectiveidea/audited/issues/comments/{number}","contents_url":"https://api.github.com/repos/collectiveidea/audited/contents/{+path}","compare_url":"https://api.github.com/repos/collectiveidea/audited/compare/{base}...{head}","merges_url":"https://api.github.com/repos/collectiveidea/audited/merges","archive_url":"https://api.github.com/repos/collectiveidea/audited/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/collectiveidea/audited/downloads","issues_url":"https://api.github.com/repos/collectiveidea/audited/issues{/number}","pulls_url":"https://api.github.com/repos/collectiveidea/audited/pulls{/number}","milestones_url":"https://api.github.com/repos/collectiveidea/audited/milestones{/number}","notifications_url":"https://api.github.com/repos/collectiveidea/audited/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/collectiveidea/audited/labels{/name}"},{"id":364,"name":"acts_as_geocodable","full_name":"collectiveidea/acts_as_geocodable","owner":{"login":"collectiveidea","id":128,"avatar_url":"https://2.gravatar.com/avatar/13ff8dc8c2bf2a4752816e1e3f201a05?d=https%3A%2F%2Fidenticons.github.com%2F76dc611d6ebaafc66cc0879c71b5db5c.png","gravatar_id":"13ff8dc8c2bf2a4752816e1e3f201a05","url":"https://api.github.com/users/collectiveidea","html_url":"https://github.com/collectiveidea","followers_url":"https://api.github.com/users/collectiveidea/followers","following_url":"https://api.github.com/users/collectiveidea/following{/other_user}","gists_url":"https://api.github.com/users/collectiveidea/gists{/gist_id}","starred_url":"https://api.github.com/users/collectiveidea/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/collectiveidea/subscriptions","organizations_url":"https://api.github.com/users/collectiveidea/orgs","repos_url":"https://api.github.com/users/collectiveidea/repos","events_url":"https://api.github.com/users/collectiveidea/events{/privacy}","received_events_url":"https://api.github.com/users/collectiveidea/received_events","type":"Organization"},"private":false,"html_url":"https://github.com/collectiveidea/acts_as_geocodable","description":"A Rails plugin that makes your applications geo-aware.","fork":false,"url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable","forks_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/forks","keys_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/keys{/key_id}","collaborators_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/teams","hooks_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/hooks","issue_events_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/issues/events{/number}","events_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/events","assignees_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/assignees{/user}","branches_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/branches{/branch}","tags_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/tags","blobs_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/git/refs{/sha}","trees_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/git/trees{/sha}","statuses_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/statuses/{sha}","languages_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/languages","stargazers_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/stargazers","contributors_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/contributors","subscribers_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/subscribers","subscription_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/subscription","commits_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/commits{/sha}","git_commits_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/git/commits{/sha}","comments_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/comments{/number}","issue_comment_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/issues/comments/{number}","contents_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/contents/{+path}","compare_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/compare/{base}...{head}","merges_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/merges","archive_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/downloads","issues_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/issues{/number}","pulls_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/pulls{/number}","milestones_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/milestones{/number}","notifications_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/collectiveidea/acts_as_geocodable/labels{/name}"}] + diff --git a/github/tests/ReplayData/Github.testGetReposSince.txt b/github/tests/ReplayData/Github.testGetReposSince.txt new file mode 100644 index 00000000..476baddf --- /dev/null +++ b/github/tests/ReplayData/Github.testGetReposSince.txt @@ -0,0 +1,11 @@ +https +GET +api.github.com +None +/repositories?since=1000 +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4998'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('cache-control', 'max-age=0, private, must-revalidate'), ('vary', 'Accept-Encoding'), ('content-length', '399618'), ('server', 'GitHub.com'), ('x-ratelimit-limit', '5000'), ('link', '; rel="next", ; rel="first"'), ('etag', '"12e839cbce49c8f05e4f6dcb7a3889f0"'), ('access-control-allow-credentials', 'true'), ('date', 'Wed, 21 Aug 2013 19:48:29 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1377117459')] +[{"id":1008,"name":"jquery-humanize-messages-plugin","full_name":"andykent/jquery-humanize-messages-plugin","owner":{"login":"andykent","id":614,"avatar_url":"https://0.gravatar.com/avatar/c296fd4ef131939f1aa09b8294bbd08c?d=https%3A%2F%2Fidenticons.github.com%2F851ddf5058cf22df63d3344ad89919cf.png","gravatar_id":"c296fd4ef131939f1aa09b8294bbd08c","url":"https://api.github.com/users/andykent","html_url":"https://github.com/andykent","followers_url":"https://api.github.com/users/andykent/followers","following_url":"https://api.github.com/users/andykent/following{/other_user}","gists_url":"https://api.github.com/users/andykent/gists{/gist_id}","starred_url":"https://api.github.com/users/andykent/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/andykent/subscriptions","organizations_url":"https://api.github.com/users/andykent/orgs","repos_url":"https://api.github.com/users/andykent/repos","events_url":"https://api.github.com/users/andykent/events{/privacy}","received_events_url":"https://api.github.com/users/andykent/received_events","type":"User"},"private":false,"html_url":"https://github.com/andykent/jquery-humanize-messages-plugin","description":"A jQuery port of the humanized dialog display technique. (http://www.humanized.com/weblog/2006/09/11/monolog_boxes_and_transparent_messages/)","fork":false,"url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin","forks_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/forks","keys_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/keys{/key_id}","collaborators_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/teams","hooks_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/hooks","issue_events_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/issues/events{/number}","events_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/events","assignees_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/assignees{/user}","branches_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/branches{/branch}","tags_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/tags","blobs_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/git/refs{/sha}","trees_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/git/trees{/sha}","statuses_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/statuses/{sha}","languages_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/languages","stargazers_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/stargazers","contributors_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/contributors","subscribers_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/subscribers","subscription_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/subscription","commits_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/commits{/sha}","git_commits_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/git/commits{/sha}","comments_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/comments{/number}","issue_comment_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/issues/comments/{number}","contents_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/contents/{+path}","compare_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/compare/{base}...{head}","merges_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/merges","archive_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/downloads","issues_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/issues{/number}","pulls_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/pulls{/number}","milestones_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/milestones{/number}","notifications_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/andykent/jquery-humanize-messages-plugin/labels{/name}"},{"id":1010,"name":"4slicer","full_name":"avalade/4slicer","owner":{"login":"avalade","id":449,"avatar_url":"https://1.gravatar.com/avatar/7cd8f51abfade91b3e57af0887d69063?d=https%3A%2F%2Fidenticons.github.com%2Fd61e4bbd6393c9111e6526ea173a7c8b.png","gravatar_id":"7cd8f51abfade91b3e57af0887d69063","url":"https://api.github.com/users/avalade","html_url":"https://github.com/avalade","followers_url":"https://api.github.com/users/avalade/followers","following_url":"https://api.github.com/users/avalade/following{/other_user}","gists_url":"https://api.github.com/users/avalade/gists{/gist_id}","starred_url":"https://api.github.com/users/avalade/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/avalade/subscriptions","organizations_url":"https://api.github.com/users/avalade/orgs","repos_url":"https://api.github.com/users/avalade/repos","events_url":"https://api.github.com/users/avalade/events{/privacy}","received_events_url":"https://api.github.com/users/avalade/received_events","type":"User"},"private":false,"html_url":"https://github.com/avalade/4slicer","description":"","fork":false,"url":"https://api.github.com/repos/avalade/4slicer","forks_url":"https://api.github.com/repos/avalade/4slicer/forks","keys_url":"https://api.github.com/repos/avalade/4slicer/keys{/key_id}","collaborators_url":"https://api.github.com/repos/avalade/4slicer/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/avalade/4slicer/teams","hooks_url":"https://api.github.com/repos/avalade/4slicer/hooks","issue_events_url":"https://api.github.com/repos/avalade/4slicer/issues/events{/number}","events_url":"https://api.github.com/repos/avalade/4slicer/events","assignees_url":"https://api.github.com/repos/avalade/4slicer/assignees{/user}","branches_url":"https://api.github.com/repos/avalade/4slicer/branches{/branch}","tags_url":"https://api.github.com/repos/avalade/4slicer/tags","blobs_url":"https://api.github.com/repos/avalade/4slicer/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/avalade/4slicer/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/avalade/4slicer/git/refs{/sha}","trees_url":"https://api.github.com/repos/avalade/4slicer/git/trees{/sha}","statuses_url":"https://api.github.com/repos/avalade/4slicer/statuses/{sha}","languages_url":"https://api.github.com/repos/avalade/4slicer/languages","stargazers_url":"https://api.github.com/repos/avalade/4slicer/stargazers","contributors_url":"https://api.github.com/repos/avalade/4slicer/contributors","subscribers_url":"https://api.github.com/repos/avalade/4slicer/subscribers","subscription_url":"https://api.github.com/repos/avalade/4slicer/subscription","commits_url":"https://api.github.com/repos/avalade/4slicer/commits{/sha}","git_commits_url":"https://api.github.com/repos/avalade/4slicer/git/commits{/sha}","comments_url":"https://api.github.com/repos/avalade/4slicer/comments{/number}","issue_comment_url":"https://api.github.com/repos/avalade/4slicer/issues/comments/{number}","contents_url":"https://api.github.com/repos/avalade/4slicer/contents/{+path}","compare_url":"https://api.github.com/repos/avalade/4slicer/compare/{base}...{head}","merges_url":"https://api.github.com/repos/avalade/4slicer/merges","archive_url":"https://api.github.com/repos/avalade/4slicer/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/avalade/4slicer/downloads","issues_url":"https://api.github.com/repos/avalade/4slicer/issues{/number}","pulls_url":"https://api.github.com/repos/avalade/4slicer/pulls{/number}","milestones_url":"https://api.github.com/repos/avalade/4slicer/milestones{/number}","notifications_url":"https://api.github.com/repos/avalade/4slicer/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/avalade/4slicer/labels{/name}"},{"id":1015,"name":"fixture-scenarios","full_name":"mojombo/fixture-scenarios","owner":{"login":"mojombo","id":1,"avatar_url":"https://2.gravatar.com/avatar/25c7c18223fb42a4c6ae1c8db6f50f9b?d=https%3A%2F%2Fidenticons.github.com%2Fc4ca4238a0b923820dcc509a6f75849b.png","gravatar_id":"25c7c18223fb42a4c6ae1c8db6f50f9b","url":"https://api.github.com/users/mojombo","html_url":"https://github.com/mojombo","followers_url":"https://api.github.com/users/mojombo/followers","following_url":"https://api.github.com/users/mojombo/following{/other_user}","gists_url":"https://api.github.com/users/mojombo/gists{/gist_id}","starred_url":"https://api.github.com/users/mojombo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mojombo/subscriptions","organizations_url":"https://api.github.com/users/mojombo/orgs","repos_url":"https://api.github.com/users/mojombo/repos","events_url":"https://api.github.com/users/mojombo/events{/privacy}","received_events_url":"https://api.github.com/users/mojombo/received_events","type":"User"},"private":false,"html_url":"https://github.com/mojombo/fixture-scenarios","description":"This plugin allows you to create 'scenarios' which are collections of fixtures and ruby files that represent a context against which you can run tests.","fork":false,"url":"https://api.github.com/repos/mojombo/fixture-scenarios","forks_url":"https://api.github.com/repos/mojombo/fixture-scenarios/forks","keys_url":"https://api.github.com/repos/mojombo/fixture-scenarios/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mojombo/fixture-scenarios/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mojombo/fixture-scenarios/teams","hooks_url":"https://api.github.com/repos/mojombo/fixture-scenarios/hooks","issue_events_url":"https://api.github.com/repos/mojombo/fixture-scenarios/issues/events{/number}","events_url":"https://api.github.com/repos/mojombo/fixture-scenarios/events","assignees_url":"https://api.github.com/repos/mojombo/fixture-scenarios/assignees{/user}","branches_url":"https://api.github.com/repos/mojombo/fixture-scenarios/branches{/branch}","tags_url":"https://api.github.com/repos/mojombo/fixture-scenarios/tags","blobs_url":"https://api.github.com/repos/mojombo/fixture-scenarios/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mojombo/fixture-scenarios/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mojombo/fixture-scenarios/git/refs{/sha}","trees_url":"https://api.github.com/repos/mojombo/fixture-scenarios/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mojombo/fixture-scenarios/statuses/{sha}","languages_url":"https://api.github.com/repos/mojombo/fixture-scenarios/languages","stargazers_url":"https://api.github.com/repos/mojombo/fixture-scenarios/stargazers","contributors_url":"https://api.github.com/repos/mojombo/fixture-scenarios/contributors","subscribers_url":"https://api.github.com/repos/mojombo/fixture-scenarios/subscribers","subscription_url":"https://api.github.com/repos/mojombo/fixture-scenarios/subscription","commits_url":"https://api.github.com/repos/mojombo/fixture-scenarios/commits{/sha}","git_commits_url":"https://api.github.com/repos/mojombo/fixture-scenarios/git/commits{/sha}","comments_url":"https://api.github.com/repos/mojombo/fixture-scenarios/comments{/number}","issue_comment_url":"https://api.github.com/repos/mojombo/fixture-scenarios/issues/comments/{number}","contents_url":"https://api.github.com/repos/mojombo/fixture-scenarios/contents/{+path}","compare_url":"https://api.github.com/repos/mojombo/fixture-scenarios/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mojombo/fixture-scenarios/merges","archive_url":"https://api.github.com/repos/mojombo/fixture-scenarios/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mojombo/fixture-scenarios/downloads","issues_url":"https://api.github.com/repos/mojombo/fixture-scenarios/issues{/number}","pulls_url":"https://api.github.com/repos/mojombo/fixture-scenarios/pulls{/number}","milestones_url":"https://api.github.com/repos/mojombo/fixture-scenarios/milestones{/number}","notifications_url":"https://api.github.com/repos/mojombo/fixture-scenarios/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mojombo/fixture-scenarios/labels{/name}"},{"id":1016,"name":"mongrel_proctitle","full_name":"rtomayko/mongrel_proctitle","owner":{"login":"rtomayko","id":404,"avatar_url":"https://0.gravatar.com/avatar/abfc88b96ae18c85ba7aac3bded2ec5e?d=https%3A%2F%2Fidenticons.github.com%2F4f4adcbf8c6f66dcfc8a3282ac2bf10a.png","gravatar_id":"abfc88b96ae18c85ba7aac3bded2ec5e","url":"https://api.github.com/users/rtomayko","html_url":"https://github.com/rtomayko","followers_url":"https://api.github.com/users/rtomayko/followers","following_url":"https://api.github.com/users/rtomayko/following{/other_user}","gists_url":"https://api.github.com/users/rtomayko/gists{/gist_id}","starred_url":"https://api.github.com/users/rtomayko/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rtomayko/subscriptions","organizations_url":"https://api.github.com/users/rtomayko/orgs","repos_url":"https://api.github.com/users/rtomayko/repos","events_url":"https://api.github.com/users/rtomayko/events{/privacy}","received_events_url":"https://api.github.com/users/rtomayko/received_events","type":"User"},"private":false,"html_url":"https://github.com/rtomayko/mongrel_proctitle","description":"Process title support for Mongrel (GemPlugin)","fork":false,"url":"https://api.github.com/repos/rtomayko/mongrel_proctitle","forks_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/forks","keys_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/teams","hooks_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/hooks","issue_events_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/issues/events{/number}","events_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/events","assignees_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/assignees{/user}","branches_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/branches{/branch}","tags_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/tags","blobs_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/git/refs{/sha}","trees_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/statuses/{sha}","languages_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/languages","stargazers_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/stargazers","contributors_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/contributors","subscribers_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/subscribers","subscription_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/subscription","commits_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/commits{/sha}","git_commits_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/git/commits{/sha}","comments_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/comments{/number}","issue_comment_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/issues/comments/{number}","contents_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/contents/{+path}","compare_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/merges","archive_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/downloads","issues_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/issues{/number}","pulls_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/pulls{/number}","milestones_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/milestones{/number}","notifications_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rtomayko/mongrel_proctitle/labels{/name}"},{"id":1017,"name":"rails-plugins","full_name":"zachinglis/rails-plugins","owner":{"login":"zachinglis","id":665,"avatar_url":"https://0.gravatar.com/avatar/1055b2b90f5beb844f28fd909ed45d5f?d=https%3A%2F%2Fidenticons.github.com%2F84117275be999ff55a987b9381e01f96.png","gravatar_id":"1055b2b90f5beb844f28fd909ed45d5f","url":"https://api.github.com/users/zachinglis","html_url":"https://github.com/zachinglis","followers_url":"https://api.github.com/users/zachinglis/followers","following_url":"https://api.github.com/users/zachinglis/following{/other_user}","gists_url":"https://api.github.com/users/zachinglis/gists{/gist_id}","starred_url":"https://api.github.com/users/zachinglis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zachinglis/subscriptions","organizations_url":"https://api.github.com/users/zachinglis/orgs","repos_url":"https://api.github.com/users/zachinglis/repos","events_url":"https://api.github.com/users/zachinglis/events{/privacy}","received_events_url":"https://api.github.com/users/zachinglis/received_events","type":"User"},"private":false,"html_url":"https://github.com/zachinglis/rails-plugins","description":"All my Rails plugins bundled up.","fork":false,"url":"https://api.github.com/repos/zachinglis/rails-plugins","forks_url":"https://api.github.com/repos/zachinglis/rails-plugins/forks","keys_url":"https://api.github.com/repos/zachinglis/rails-plugins/keys{/key_id}","collaborators_url":"https://api.github.com/repos/zachinglis/rails-plugins/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/zachinglis/rails-plugins/teams","hooks_url":"https://api.github.com/repos/zachinglis/rails-plugins/hooks","issue_events_url":"https://api.github.com/repos/zachinglis/rails-plugins/issues/events{/number}","events_url":"https://api.github.com/repos/zachinglis/rails-plugins/events","assignees_url":"https://api.github.com/repos/zachinglis/rails-plugins/assignees{/user}","branches_url":"https://api.github.com/repos/zachinglis/rails-plugins/branches{/branch}","tags_url":"https://api.github.com/repos/zachinglis/rails-plugins/tags","blobs_url":"https://api.github.com/repos/zachinglis/rails-plugins/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/zachinglis/rails-plugins/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/zachinglis/rails-plugins/git/refs{/sha}","trees_url":"https://api.github.com/repos/zachinglis/rails-plugins/git/trees{/sha}","statuses_url":"https://api.github.com/repos/zachinglis/rails-plugins/statuses/{sha}","languages_url":"https://api.github.com/repos/zachinglis/rails-plugins/languages","stargazers_url":"https://api.github.com/repos/zachinglis/rails-plugins/stargazers","contributors_url":"https://api.github.com/repos/zachinglis/rails-plugins/contributors","subscribers_url":"https://api.github.com/repos/zachinglis/rails-plugins/subscribers","subscription_url":"https://api.github.com/repos/zachinglis/rails-plugins/subscription","commits_url":"https://api.github.com/repos/zachinglis/rails-plugins/commits{/sha}","git_commits_url":"https://api.github.com/repos/zachinglis/rails-plugins/git/commits{/sha}","comments_url":"https://api.github.com/repos/zachinglis/rails-plugins/comments{/number}","issue_comment_url":"https://api.github.com/repos/zachinglis/rails-plugins/issues/comments/{number}","contents_url":"https://api.github.com/repos/zachinglis/rails-plugins/contents/{+path}","compare_url":"https://api.github.com/repos/zachinglis/rails-plugins/compare/{base}...{head}","merges_url":"https://api.github.com/repos/zachinglis/rails-plugins/merges","archive_url":"https://api.github.com/repos/zachinglis/rails-plugins/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/zachinglis/rails-plugins/downloads","issues_url":"https://api.github.com/repos/zachinglis/rails-plugins/issues{/number}","pulls_url":"https://api.github.com/repos/zachinglis/rails-plugins/pulls{/number}","milestones_url":"https://api.github.com/repos/zachinglis/rails-plugins/milestones{/number}","notifications_url":"https://api.github.com/repos/zachinglis/rails-plugins/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/zachinglis/rails-plugins/labels{/name}"},{"id":1028,"name":"date-performance","full_name":"rtomayko/date-performance","owner":{"login":"rtomayko","id":404,"avatar_url":"https://0.gravatar.com/avatar/abfc88b96ae18c85ba7aac3bded2ec5e?d=https%3A%2F%2Fidenticons.github.com%2F4f4adcbf8c6f66dcfc8a3282ac2bf10a.png","gravatar_id":"abfc88b96ae18c85ba7aac3bded2ec5e","url":"https://api.github.com/users/rtomayko","html_url":"https://github.com/rtomayko","followers_url":"https://api.github.com/users/rtomayko/followers","following_url":"https://api.github.com/users/rtomayko/following{/other_user}","gists_url":"https://api.github.com/users/rtomayko/gists{/gist_id}","starred_url":"https://api.github.com/users/rtomayko/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rtomayko/subscriptions","organizations_url":"https://api.github.com/users/rtomayko/orgs","repos_url":"https://api.github.com/users/rtomayko/repos","events_url":"https://api.github.com/users/rtomayko/events{/privacy}","received_events_url":"https://api.github.com/users/rtomayko/received_events","type":"User"},"private":false,"html_url":"https://github.com/rtomayko/date-performance","description":"Adds a semblance of performance to Ruby's core Date class ...","fork":false,"url":"https://api.github.com/repos/rtomayko/date-performance","forks_url":"https://api.github.com/repos/rtomayko/date-performance/forks","keys_url":"https://api.github.com/repos/rtomayko/date-performance/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rtomayko/date-performance/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rtomayko/date-performance/teams","hooks_url":"https://api.github.com/repos/rtomayko/date-performance/hooks","issue_events_url":"https://api.github.com/repos/rtomayko/date-performance/issues/events{/number}","events_url":"https://api.github.com/repos/rtomayko/date-performance/events","assignees_url":"https://api.github.com/repos/rtomayko/date-performance/assignees{/user}","branches_url":"https://api.github.com/repos/rtomayko/date-performance/branches{/branch}","tags_url":"https://api.github.com/repos/rtomayko/date-performance/tags","blobs_url":"https://api.github.com/repos/rtomayko/date-performance/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rtomayko/date-performance/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rtomayko/date-performance/git/refs{/sha}","trees_url":"https://api.github.com/repos/rtomayko/date-performance/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rtomayko/date-performance/statuses/{sha}","languages_url":"https://api.github.com/repos/rtomayko/date-performance/languages","stargazers_url":"https://api.github.com/repos/rtomayko/date-performance/stargazers","contributors_url":"https://api.github.com/repos/rtomayko/date-performance/contributors","subscribers_url":"https://api.github.com/repos/rtomayko/date-performance/subscribers","subscription_url":"https://api.github.com/repos/rtomayko/date-performance/subscription","commits_url":"https://api.github.com/repos/rtomayko/date-performance/commits{/sha}","git_commits_url":"https://api.github.com/repos/rtomayko/date-performance/git/commits{/sha}","comments_url":"https://api.github.com/repos/rtomayko/date-performance/comments{/number}","issue_comment_url":"https://api.github.com/repos/rtomayko/date-performance/issues/comments/{number}","contents_url":"https://api.github.com/repos/rtomayko/date-performance/contents/{+path}","compare_url":"https://api.github.com/repos/rtomayko/date-performance/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rtomayko/date-performance/merges","archive_url":"https://api.github.com/repos/rtomayko/date-performance/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rtomayko/date-performance/downloads","issues_url":"https://api.github.com/repos/rtomayko/date-performance/issues{/number}","pulls_url":"https://api.github.com/repos/rtomayko/date-performance/pulls{/number}","milestones_url":"https://api.github.com/repos/rtomayko/date-performance/milestones{/number}","notifications_url":"https://api.github.com/repos/rtomayko/date-performance/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rtomayko/date-performance/labels{/name}"},{"id":1031,"name":"rails-ssl-authentication","full_name":"labria/rails-ssl-authentication","owner":{"login":"labria","id":323,"avatar_url":"https://1.gravatar.com/avatar/f5049506664636c6cc725099367bd167?d=https%3A%2F%2Fidenticons.github.com%2Fbc6dc48b743dc5d013b1abaebd2faed2.png","gravatar_id":"f5049506664636c6cc725099367bd167","url":"https://api.github.com/users/labria","html_url":"https://github.com/labria","followers_url":"https://api.github.com/users/labria/followers","following_url":"https://api.github.com/users/labria/following{/other_user}","gists_url":"https://api.github.com/users/labria/gists{/gist_id}","starred_url":"https://api.github.com/users/labria/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/labria/subscriptions","organizations_url":"https://api.github.com/users/labria/orgs","repos_url":"https://api.github.com/users/labria/repos","events_url":"https://api.github.com/users/labria/events{/privacy}","received_events_url":"https://api.github.com/users/labria/received_events","type":"User"},"private":false,"html_url":"https://github.com/labria/rails-ssl-authentication","description":"A attempt to make SSL client certificate authentication with rails painless","fork":false,"url":"https://api.github.com/repos/labria/rails-ssl-authentication","forks_url":"https://api.github.com/repos/labria/rails-ssl-authentication/forks","keys_url":"https://api.github.com/repos/labria/rails-ssl-authentication/keys{/key_id}","collaborators_url":"https://api.github.com/repos/labria/rails-ssl-authentication/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/labria/rails-ssl-authentication/teams","hooks_url":"https://api.github.com/repos/labria/rails-ssl-authentication/hooks","issue_events_url":"https://api.github.com/repos/labria/rails-ssl-authentication/issues/events{/number}","events_url":"https://api.github.com/repos/labria/rails-ssl-authentication/events","assignees_url":"https://api.github.com/repos/labria/rails-ssl-authentication/assignees{/user}","branches_url":"https://api.github.com/repos/labria/rails-ssl-authentication/branches{/branch}","tags_url":"https://api.github.com/repos/labria/rails-ssl-authentication/tags","blobs_url":"https://api.github.com/repos/labria/rails-ssl-authentication/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/labria/rails-ssl-authentication/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/labria/rails-ssl-authentication/git/refs{/sha}","trees_url":"https://api.github.com/repos/labria/rails-ssl-authentication/git/trees{/sha}","statuses_url":"https://api.github.com/repos/labria/rails-ssl-authentication/statuses/{sha}","languages_url":"https://api.github.com/repos/labria/rails-ssl-authentication/languages","stargazers_url":"https://api.github.com/repos/labria/rails-ssl-authentication/stargazers","contributors_url":"https://api.github.com/repos/labria/rails-ssl-authentication/contributors","subscribers_url":"https://api.github.com/repos/labria/rails-ssl-authentication/subscribers","subscription_url":"https://api.github.com/repos/labria/rails-ssl-authentication/subscription","commits_url":"https://api.github.com/repos/labria/rails-ssl-authentication/commits{/sha}","git_commits_url":"https://api.github.com/repos/labria/rails-ssl-authentication/git/commits{/sha}","comments_url":"https://api.github.com/repos/labria/rails-ssl-authentication/comments{/number}","issue_comment_url":"https://api.github.com/repos/labria/rails-ssl-authentication/issues/comments/{number}","contents_url":"https://api.github.com/repos/labria/rails-ssl-authentication/contents/{+path}","compare_url":"https://api.github.com/repos/labria/rails-ssl-authentication/compare/{base}...{head}","merges_url":"https://api.github.com/repos/labria/rails-ssl-authentication/merges","archive_url":"https://api.github.com/repos/labria/rails-ssl-authentication/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/labria/rails-ssl-authentication/downloads","issues_url":"https://api.github.com/repos/labria/rails-ssl-authentication/issues{/number}","pulls_url":"https://api.github.com/repos/labria/rails-ssl-authentication/pulls{/number}","milestones_url":"https://api.github.com/repos/labria/rails-ssl-authentication/milestones{/number}","notifications_url":"https://api.github.com/repos/labria/rails-ssl-authentication/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/labria/rails-ssl-authentication/labels{/name}"},{"id":1032,"name":"onebody","full_name":"churchio/onebody","owner":{"login":"churchio","id":935086,"avatar_url":"https://0.gravatar.com/avatar/be6afcca013316741f7189ccda95067e?d=https%3A%2F%2Fidenticons.github.com%2Fb903ff4db9f18d88c10889cc7de72269.png","gravatar_id":"be6afcca013316741f7189ccda95067e","url":"https://api.github.com/users/churchio","html_url":"https://github.com/churchio","followers_url":"https://api.github.com/users/churchio/followers","following_url":"https://api.github.com/users/churchio/following{/other_user}","gists_url":"https://api.github.com/users/churchio/gists{/gist_id}","starred_url":"https://api.github.com/users/churchio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/churchio/subscriptions","organizations_url":"https://api.github.com/users/churchio/orgs","repos_url":"https://api.github.com/users/churchio/repos","events_url":"https://api.github.com/users/churchio/events{/privacy}","received_events_url":"https://api.github.com/users/churchio/received_events","type":"Organization"},"private":false,"html_url":"https://github.com/churchio/onebody","description":"OneBody is a private social network and online directory solution for churches built with Ruby on Rails.","fork":false,"url":"https://api.github.com/repos/churchio/onebody","forks_url":"https://api.github.com/repos/churchio/onebody/forks","keys_url":"https://api.github.com/repos/churchio/onebody/keys{/key_id}","collaborators_url":"https://api.github.com/repos/churchio/onebody/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/churchio/onebody/teams","hooks_url":"https://api.github.com/repos/churchio/onebody/hooks","issue_events_url":"https://api.github.com/repos/churchio/onebody/issues/events{/number}","events_url":"https://api.github.com/repos/churchio/onebody/events","assignees_url":"https://api.github.com/repos/churchio/onebody/assignees{/user}","branches_url":"https://api.github.com/repos/churchio/onebody/branches{/branch}","tags_url":"https://api.github.com/repos/churchio/onebody/tags","blobs_url":"https://api.github.com/repos/churchio/onebody/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/churchio/onebody/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/churchio/onebody/git/refs{/sha}","trees_url":"https://api.github.com/repos/churchio/onebody/git/trees{/sha}","statuses_url":"https://api.github.com/repos/churchio/onebody/statuses/{sha}","languages_url":"https://api.github.com/repos/churchio/onebody/languages","stargazers_url":"https://api.github.com/repos/churchio/onebody/stargazers","contributors_url":"https://api.github.com/repos/churchio/onebody/contributors","subscribers_url":"https://api.github.com/repos/churchio/onebody/subscribers","subscription_url":"https://api.github.com/repos/churchio/onebody/subscription","commits_url":"https://api.github.com/repos/churchio/onebody/commits{/sha}","git_commits_url":"https://api.github.com/repos/churchio/onebody/git/commits{/sha}","comments_url":"https://api.github.com/repos/churchio/onebody/comments{/number}","issue_comment_url":"https://api.github.com/repos/churchio/onebody/issues/comments/{number}","contents_url":"https://api.github.com/repos/churchio/onebody/contents/{+path}","compare_url":"https://api.github.com/repos/churchio/onebody/compare/{base}...{head}","merges_url":"https://api.github.com/repos/churchio/onebody/merges","archive_url":"https://api.github.com/repos/churchio/onebody/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/churchio/onebody/downloads","issues_url":"https://api.github.com/repos/churchio/onebody/issues{/number}","pulls_url":"https://api.github.com/repos/churchio/onebody/pulls{/number}","milestones_url":"https://api.github.com/repos/churchio/onebody/milestones{/number}","notifications_url":"https://api.github.com/repos/churchio/onebody/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/churchio/onebody/labels{/name}"},{"id":1040,"name":"jacks-php","full_name":"russ/jacks-php","owner":{"login":"russ","id":684,"avatar_url":"https://1.gravatar.com/avatar/5f763744270a1aa74c614cec8b30a3e1?d=https%3A%2F%2Fidenticons.github.com%2F556f391937dfd4398cbac35e050a2177.png","gravatar_id":"5f763744270a1aa74c614cec8b30a3e1","url":"https://api.github.com/users/russ","html_url":"https://github.com/russ","followers_url":"https://api.github.com/users/russ/followers","following_url":"https://api.github.com/users/russ/following{/other_user}","gists_url":"https://api.github.com/users/russ/gists{/gist_id}","starred_url":"https://api.github.com/users/russ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/russ/subscriptions","organizations_url":"https://api.github.com/users/russ/orgs","repos_url":"https://api.github.com/users/russ/repos","events_url":"https://api.github.com/users/russ/events{/privacy}","received_events_url":"https://api.github.com/users/russ/received_events","type":"User"},"private":false,"html_url":"https://github.com/russ/jacks-php","description":"I am Jacks PHP framework.","fork":false,"url":"https://api.github.com/repos/russ/jacks-php","forks_url":"https://api.github.com/repos/russ/jacks-php/forks","keys_url":"https://api.github.com/repos/russ/jacks-php/keys{/key_id}","collaborators_url":"https://api.github.com/repos/russ/jacks-php/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/russ/jacks-php/teams","hooks_url":"https://api.github.com/repos/russ/jacks-php/hooks","issue_events_url":"https://api.github.com/repos/russ/jacks-php/issues/events{/number}","events_url":"https://api.github.com/repos/russ/jacks-php/events","assignees_url":"https://api.github.com/repos/russ/jacks-php/assignees{/user}","branches_url":"https://api.github.com/repos/russ/jacks-php/branches{/branch}","tags_url":"https://api.github.com/repos/russ/jacks-php/tags","blobs_url":"https://api.github.com/repos/russ/jacks-php/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/russ/jacks-php/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/russ/jacks-php/git/refs{/sha}","trees_url":"https://api.github.com/repos/russ/jacks-php/git/trees{/sha}","statuses_url":"https://api.github.com/repos/russ/jacks-php/statuses/{sha}","languages_url":"https://api.github.com/repos/russ/jacks-php/languages","stargazers_url":"https://api.github.com/repos/russ/jacks-php/stargazers","contributors_url":"https://api.github.com/repos/russ/jacks-php/contributors","subscribers_url":"https://api.github.com/repos/russ/jacks-php/subscribers","subscription_url":"https://api.github.com/repos/russ/jacks-php/subscription","commits_url":"https://api.github.com/repos/russ/jacks-php/commits{/sha}","git_commits_url":"https://api.github.com/repos/russ/jacks-php/git/commits{/sha}","comments_url":"https://api.github.com/repos/russ/jacks-php/comments{/number}","issue_comment_url":"https://api.github.com/repos/russ/jacks-php/issues/comments/{number}","contents_url":"https://api.github.com/repos/russ/jacks-php/contents/{+path}","compare_url":"https://api.github.com/repos/russ/jacks-php/compare/{base}...{head}","merges_url":"https://api.github.com/repos/russ/jacks-php/merges","archive_url":"https://api.github.com/repos/russ/jacks-php/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/russ/jacks-php/downloads","issues_url":"https://api.github.com/repos/russ/jacks-php/issues{/number}","pulls_url":"https://api.github.com/repos/russ/jacks-php/pulls{/number}","milestones_url":"https://api.github.com/repos/russ/jacks-php/milestones{/number}","notifications_url":"https://api.github.com/repos/russ/jacks-php/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/russ/jacks-php/labels{/name}"},{"id":1042,"name":"loudmouth","full_name":"mhallendal/loudmouth","owner":{"login":"mhallendal","id":541,"avatar_url":"https://1.gravatar.com/avatar/9736d1741af3929d5960dacffb03cfd5?d=https%3A%2F%2Fidenticons.github.com%2F16c222aa19898e5058938167c8ab6c57.png","gravatar_id":"9736d1741af3929d5960dacffb03cfd5","url":"https://api.github.com/users/mhallendal","html_url":"https://github.com/mhallendal","followers_url":"https://api.github.com/users/mhallendal/followers","following_url":"https://api.github.com/users/mhallendal/following{/other_user}","gists_url":"https://api.github.com/users/mhallendal/gists{/gist_id}","starred_url":"https://api.github.com/users/mhallendal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mhallendal/subscriptions","organizations_url":"https://api.github.com/users/mhallendal/orgs","repos_url":"https://api.github.com/users/mhallendal/repos","events_url":"https://api.github.com/users/mhallendal/events{/privacy}","received_events_url":"https://api.github.com/users/mhallendal/received_events","type":"User"},"private":false,"html_url":"https://github.com/mhallendal/loudmouth","description":"An asynchronous XMPP library","fork":false,"url":"https://api.github.com/repos/mhallendal/loudmouth","forks_url":"https://api.github.com/repos/mhallendal/loudmouth/forks","keys_url":"https://api.github.com/repos/mhallendal/loudmouth/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mhallendal/loudmouth/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mhallendal/loudmouth/teams","hooks_url":"https://api.github.com/repos/mhallendal/loudmouth/hooks","issue_events_url":"https://api.github.com/repos/mhallendal/loudmouth/issues/events{/number}","events_url":"https://api.github.com/repos/mhallendal/loudmouth/events","assignees_url":"https://api.github.com/repos/mhallendal/loudmouth/assignees{/user}","branches_url":"https://api.github.com/repos/mhallendal/loudmouth/branches{/branch}","tags_url":"https://api.github.com/repos/mhallendal/loudmouth/tags","blobs_url":"https://api.github.com/repos/mhallendal/loudmouth/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mhallendal/loudmouth/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mhallendal/loudmouth/git/refs{/sha}","trees_url":"https://api.github.com/repos/mhallendal/loudmouth/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mhallendal/loudmouth/statuses/{sha}","languages_url":"https://api.github.com/repos/mhallendal/loudmouth/languages","stargazers_url":"https://api.github.com/repos/mhallendal/loudmouth/stargazers","contributors_url":"https://api.github.com/repos/mhallendal/loudmouth/contributors","subscribers_url":"https://api.github.com/repos/mhallendal/loudmouth/subscribers","subscription_url":"https://api.github.com/repos/mhallendal/loudmouth/subscription","commits_url":"https://api.github.com/repos/mhallendal/loudmouth/commits{/sha}","git_commits_url":"https://api.github.com/repos/mhallendal/loudmouth/git/commits{/sha}","comments_url":"https://api.github.com/repos/mhallendal/loudmouth/comments{/number}","issue_comment_url":"https://api.github.com/repos/mhallendal/loudmouth/issues/comments/{number}","contents_url":"https://api.github.com/repos/mhallendal/loudmouth/contents/{+path}","compare_url":"https://api.github.com/repos/mhallendal/loudmouth/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mhallendal/loudmouth/merges","archive_url":"https://api.github.com/repos/mhallendal/loudmouth/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mhallendal/loudmouth/downloads","issues_url":"https://api.github.com/repos/mhallendal/loudmouth/issues{/number}","pulls_url":"https://api.github.com/repos/mhallendal/loudmouth/pulls{/number}","milestones_url":"https://api.github.com/repos/mhallendal/loudmouth/milestones{/number}","notifications_url":"https://api.github.com/repos/mhallendal/loudmouth/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mhallendal/loudmouth/labels{/name}"},{"id":1043,"name":"getfake","full_name":"anildigital/getfake","owner":{"login":"anildigital","id":266,"avatar_url":"https://2.gravatar.com/avatar/2ad20e87f55ce79b113a12c516ec9d09?d=https%3A%2F%2Fidenticons.github.com%2Ff7664060cc52bc6f3d620bcedc94a4b6.png","gravatar_id":"2ad20e87f55ce79b113a12c516ec9d09","url":"https://api.github.com/users/anildigital","html_url":"https://github.com/anildigital","followers_url":"https://api.github.com/users/anildigital/followers","following_url":"https://api.github.com/users/anildigital/following{/other_user}","gists_url":"https://api.github.com/users/anildigital/gists{/gist_id}","starred_url":"https://api.github.com/users/anildigital/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/anildigital/subscriptions","organizations_url":"https://api.github.com/users/anildigital/orgs","repos_url":"https://api.github.com/users/anildigital/repos","events_url":"https://api.github.com/users/anildigital/events{/privacy}","received_events_url":"https://api.github.com/users/anildigital/received_events","type":"User"},"private":false,"html_url":"https://github.com/anildigital/getfake","description":"Its a web UI for for ruby faker gem","fork":false,"url":"https://api.github.com/repos/anildigital/getfake","forks_url":"https://api.github.com/repos/anildigital/getfake/forks","keys_url":"https://api.github.com/repos/anildigital/getfake/keys{/key_id}","collaborators_url":"https://api.github.com/repos/anildigital/getfake/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/anildigital/getfake/teams","hooks_url":"https://api.github.com/repos/anildigital/getfake/hooks","issue_events_url":"https://api.github.com/repos/anildigital/getfake/issues/events{/number}","events_url":"https://api.github.com/repos/anildigital/getfake/events","assignees_url":"https://api.github.com/repos/anildigital/getfake/assignees{/user}","branches_url":"https://api.github.com/repos/anildigital/getfake/branches{/branch}","tags_url":"https://api.github.com/repos/anildigital/getfake/tags","blobs_url":"https://api.github.com/repos/anildigital/getfake/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/anildigital/getfake/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/anildigital/getfake/git/refs{/sha}","trees_url":"https://api.github.com/repos/anildigital/getfake/git/trees{/sha}","statuses_url":"https://api.github.com/repos/anildigital/getfake/statuses/{sha}","languages_url":"https://api.github.com/repos/anildigital/getfake/languages","stargazers_url":"https://api.github.com/repos/anildigital/getfake/stargazers","contributors_url":"https://api.github.com/repos/anildigital/getfake/contributors","subscribers_url":"https://api.github.com/repos/anildigital/getfake/subscribers","subscription_url":"https://api.github.com/repos/anildigital/getfake/subscription","commits_url":"https://api.github.com/repos/anildigital/getfake/commits{/sha}","git_commits_url":"https://api.github.com/repos/anildigital/getfake/git/commits{/sha}","comments_url":"https://api.github.com/repos/anildigital/getfake/comments{/number}","issue_comment_url":"https://api.github.com/repos/anildigital/getfake/issues/comments/{number}","contents_url":"https://api.github.com/repos/anildigital/getfake/contents/{+path}","compare_url":"https://api.github.com/repos/anildigital/getfake/compare/{base}...{head}","merges_url":"https://api.github.com/repos/anildigital/getfake/merges","archive_url":"https://api.github.com/repos/anildigital/getfake/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/anildigital/getfake/downloads","issues_url":"https://api.github.com/repos/anildigital/getfake/issues{/number}","pulls_url":"https://api.github.com/repos/anildigital/getfake/pulls{/number}","milestones_url":"https://api.github.com/repos/anildigital/getfake/milestones{/number}","notifications_url":"https://api.github.com/repos/anildigital/getfake/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/anildigital/getfake/labels{/name}"},{"id":1049,"name":"effen","full_name":"nkallen/effen","owner":{"login":"nkallen","id":699,"avatar_url":"https://1.gravatar.com/avatar/2b292377455ec105686730d6aa59c262?d=https%3A%2F%2Fidenticons.github.com%2Fafd4836712c5e77550897e25711e1d96.png","gravatar_id":"2b292377455ec105686730d6aa59c262","url":"https://api.github.com/users/nkallen","html_url":"https://github.com/nkallen","followers_url":"https://api.github.com/users/nkallen/followers","following_url":"https://api.github.com/users/nkallen/following{/other_user}","gists_url":"https://api.github.com/users/nkallen/gists{/gist_id}","starred_url":"https://api.github.com/users/nkallen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nkallen/subscriptions","organizations_url":"https://api.github.com/users/nkallen/orgs","repos_url":"https://api.github.com/users/nkallen/repos","events_url":"https://api.github.com/users/nkallen/events{/privacy}","received_events_url":"https://api.github.com/users/nkallen/received_events","type":"User"},"private":false,"html_url":"https://github.com/nkallen/effen","description":"A jQuery plugin for Morphic programming","fork":false,"url":"https://api.github.com/repos/nkallen/effen","forks_url":"https://api.github.com/repos/nkallen/effen/forks","keys_url":"https://api.github.com/repos/nkallen/effen/keys{/key_id}","collaborators_url":"https://api.github.com/repos/nkallen/effen/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/nkallen/effen/teams","hooks_url":"https://api.github.com/repos/nkallen/effen/hooks","issue_events_url":"https://api.github.com/repos/nkallen/effen/issues/events{/number}","events_url":"https://api.github.com/repos/nkallen/effen/events","assignees_url":"https://api.github.com/repos/nkallen/effen/assignees{/user}","branches_url":"https://api.github.com/repos/nkallen/effen/branches{/branch}","tags_url":"https://api.github.com/repos/nkallen/effen/tags","blobs_url":"https://api.github.com/repos/nkallen/effen/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/nkallen/effen/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/nkallen/effen/git/refs{/sha}","trees_url":"https://api.github.com/repos/nkallen/effen/git/trees{/sha}","statuses_url":"https://api.github.com/repos/nkallen/effen/statuses/{sha}","languages_url":"https://api.github.com/repos/nkallen/effen/languages","stargazers_url":"https://api.github.com/repos/nkallen/effen/stargazers","contributors_url":"https://api.github.com/repos/nkallen/effen/contributors","subscribers_url":"https://api.github.com/repos/nkallen/effen/subscribers","subscription_url":"https://api.github.com/repos/nkallen/effen/subscription","commits_url":"https://api.github.com/repos/nkallen/effen/commits{/sha}","git_commits_url":"https://api.github.com/repos/nkallen/effen/git/commits{/sha}","comments_url":"https://api.github.com/repos/nkallen/effen/comments{/number}","issue_comment_url":"https://api.github.com/repos/nkallen/effen/issues/comments/{number}","contents_url":"https://api.github.com/repos/nkallen/effen/contents/{+path}","compare_url":"https://api.github.com/repos/nkallen/effen/compare/{base}...{head}","merges_url":"https://api.github.com/repos/nkallen/effen/merges","archive_url":"https://api.github.com/repos/nkallen/effen/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/nkallen/effen/downloads","issues_url":"https://api.github.com/repos/nkallen/effen/issues{/number}","pulls_url":"https://api.github.com/repos/nkallen/effen/pulls{/number}","milestones_url":"https://api.github.com/repos/nkallen/effen/milestones{/number}","notifications_url":"https://api.github.com/repos/nkallen/effen/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/nkallen/effen/labels{/name}"},{"id":1052,"name":"template","full_name":"jparker/template","owner":{"login":"jparker","id":703,"avatar_url":"https://2.gravatar.com/avatar/f239ccb7f4c904a74e523a3334ca45e7?d=https%3A%2F%2Fidenticons.github.com%2Fd6c651ddcd97183b2e40bc464231c962.png","gravatar_id":"f239ccb7f4c904a74e523a3334ca45e7","url":"https://api.github.com/users/jparker","html_url":"https://github.com/jparker","followers_url":"https://api.github.com/users/jparker/followers","following_url":"https://api.github.com/users/jparker/following{/other_user}","gists_url":"https://api.github.com/users/jparker/gists{/gist_id}","starred_url":"https://api.github.com/users/jparker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jparker/subscriptions","organizations_url":"https://api.github.com/users/jparker/orgs","repos_url":"https://api.github.com/users/jparker/repos","events_url":"https://api.github.com/users/jparker/events{/privacy}","received_events_url":"https://api.github.com/users/jparker/received_events","type":"User"},"private":false,"html_url":"https://github.com/jparker/template","description":"Rails project template","fork":false,"url":"https://api.github.com/repos/jparker/template","forks_url":"https://api.github.com/repos/jparker/template/forks","keys_url":"https://api.github.com/repos/jparker/template/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jparker/template/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jparker/template/teams","hooks_url":"https://api.github.com/repos/jparker/template/hooks","issue_events_url":"https://api.github.com/repos/jparker/template/issues/events{/number}","events_url":"https://api.github.com/repos/jparker/template/events","assignees_url":"https://api.github.com/repos/jparker/template/assignees{/user}","branches_url":"https://api.github.com/repos/jparker/template/branches{/branch}","tags_url":"https://api.github.com/repos/jparker/template/tags","blobs_url":"https://api.github.com/repos/jparker/template/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jparker/template/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jparker/template/git/refs{/sha}","trees_url":"https://api.github.com/repos/jparker/template/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jparker/template/statuses/{sha}","languages_url":"https://api.github.com/repos/jparker/template/languages","stargazers_url":"https://api.github.com/repos/jparker/template/stargazers","contributors_url":"https://api.github.com/repos/jparker/template/contributors","subscribers_url":"https://api.github.com/repos/jparker/template/subscribers","subscription_url":"https://api.github.com/repos/jparker/template/subscription","commits_url":"https://api.github.com/repos/jparker/template/commits{/sha}","git_commits_url":"https://api.github.com/repos/jparker/template/git/commits{/sha}","comments_url":"https://api.github.com/repos/jparker/template/comments{/number}","issue_comment_url":"https://api.github.com/repos/jparker/template/issues/comments/{number}","contents_url":"https://api.github.com/repos/jparker/template/contents/{+path}","compare_url":"https://api.github.com/repos/jparker/template/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jparker/template/merges","archive_url":"https://api.github.com/repos/jparker/template/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jparker/template/downloads","issues_url":"https://api.github.com/repos/jparker/template/issues{/number}","pulls_url":"https://api.github.com/repos/jparker/template/pulls{/number}","milestones_url":"https://api.github.com/repos/jparker/template/milestones{/number}","notifications_url":"https://api.github.com/repos/jparker/template/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jparker/template/labels{/name}"},{"id":1054,"name":"TourGuide","full_name":"TekNoLogic/TourGuide","owner":{"login":"TekNoLogic","id":318374,"avatar_url":"https://0.gravatar.com/avatar/3260416e668934213340ecc4f8a835f4?d=https%3A%2F%2Fidenticons.github.com%2F10061d18a6a471274d9f419b0bf5502b.png","gravatar_id":"3260416e668934213340ecc4f8a835f4","url":"https://api.github.com/users/TekNoLogic","html_url":"https://github.com/TekNoLogic","followers_url":"https://api.github.com/users/TekNoLogic/followers","following_url":"https://api.github.com/users/TekNoLogic/following{/other_user}","gists_url":"https://api.github.com/users/TekNoLogic/gists{/gist_id}","starred_url":"https://api.github.com/users/TekNoLogic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TekNoLogic/subscriptions","organizations_url":"https://api.github.com/users/TekNoLogic/orgs","repos_url":"https://api.github.com/users/TekNoLogic/repos","events_url":"https://api.github.com/users/TekNoLogic/events{/privacy}","received_events_url":"https://api.github.com/users/TekNoLogic/received_events","type":"Organization"},"private":false,"html_url":"https://github.com/TekNoLogic/TourGuide","description":"WoW Addon - Powerleveling guide framework","fork":false,"url":"https://api.github.com/repos/TekNoLogic/TourGuide","forks_url":"https://api.github.com/repos/TekNoLogic/TourGuide/forks","keys_url":"https://api.github.com/repos/TekNoLogic/TourGuide/keys{/key_id}","collaborators_url":"https://api.github.com/repos/TekNoLogic/TourGuide/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/TekNoLogic/TourGuide/teams","hooks_url":"https://api.github.com/repos/TekNoLogic/TourGuide/hooks","issue_events_url":"https://api.github.com/repos/TekNoLogic/TourGuide/issues/events{/number}","events_url":"https://api.github.com/repos/TekNoLogic/TourGuide/events","assignees_url":"https://api.github.com/repos/TekNoLogic/TourGuide/assignees{/user}","branches_url":"https://api.github.com/repos/TekNoLogic/TourGuide/branches{/branch}","tags_url":"https://api.github.com/repos/TekNoLogic/TourGuide/tags","blobs_url":"https://api.github.com/repos/TekNoLogic/TourGuide/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/TekNoLogic/TourGuide/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/TekNoLogic/TourGuide/git/refs{/sha}","trees_url":"https://api.github.com/repos/TekNoLogic/TourGuide/git/trees{/sha}","statuses_url":"https://api.github.com/repos/TekNoLogic/TourGuide/statuses/{sha}","languages_url":"https://api.github.com/repos/TekNoLogic/TourGuide/languages","stargazers_url":"https://api.github.com/repos/TekNoLogic/TourGuide/stargazers","contributors_url":"https://api.github.com/repos/TekNoLogic/TourGuide/contributors","subscribers_url":"https://api.github.com/repos/TekNoLogic/TourGuide/subscribers","subscription_url":"https://api.github.com/repos/TekNoLogic/TourGuide/subscription","commits_url":"https://api.github.com/repos/TekNoLogic/TourGuide/commits{/sha}","git_commits_url":"https://api.github.com/repos/TekNoLogic/TourGuide/git/commits{/sha}","comments_url":"https://api.github.com/repos/TekNoLogic/TourGuide/comments{/number}","issue_comment_url":"https://api.github.com/repos/TekNoLogic/TourGuide/issues/comments/{number}","contents_url":"https://api.github.com/repos/TekNoLogic/TourGuide/contents/{+path}","compare_url":"https://api.github.com/repos/TekNoLogic/TourGuide/compare/{base}...{head}","merges_url":"https://api.github.com/repos/TekNoLogic/TourGuide/merges","archive_url":"https://api.github.com/repos/TekNoLogic/TourGuide/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/TekNoLogic/TourGuide/downloads","issues_url":"https://api.github.com/repos/TekNoLogic/TourGuide/issues{/number}","pulls_url":"https://api.github.com/repos/TekNoLogic/TourGuide/pulls{/number}","milestones_url":"https://api.github.com/repos/TekNoLogic/TourGuide/milestones{/number}","notifications_url":"https://api.github.com/repos/TekNoLogic/TourGuide/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/TekNoLogic/TourGuide/labels{/name}"},{"id":1057,"name":"configuration-files","full_name":"adulteratedjedi/configuration-files","owner":{"login":"adulteratedjedi","id":702,"avatar_url":"https://1.gravatar.com/avatar/699b1f8c794863bc25a00221b4120ac7?d=https%3A%2F%2Fidenticons.github.com%2Fb1eec33c726a60554bc78518d5f9b32c.png","gravatar_id":"699b1f8c794863bc25a00221b4120ac7","url":"https://api.github.com/users/adulteratedjedi","html_url":"https://github.com/adulteratedjedi","followers_url":"https://api.github.com/users/adulteratedjedi/followers","following_url":"https://api.github.com/users/adulteratedjedi/following{/other_user}","gists_url":"https://api.github.com/users/adulteratedjedi/gists{/gist_id}","starred_url":"https://api.github.com/users/adulteratedjedi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adulteratedjedi/subscriptions","organizations_url":"https://api.github.com/users/adulteratedjedi/orgs","repos_url":"https://api.github.com/users/adulteratedjedi/repos","events_url":"https://api.github.com/users/adulteratedjedi/events{/privacy}","received_events_url":"https://api.github.com/users/adulteratedjedi/received_events","type":"User"},"private":false,"html_url":"https://github.com/adulteratedjedi/configuration-files","description":"My Config Files","fork":false,"url":"https://api.github.com/repos/adulteratedjedi/configuration-files","forks_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/forks","keys_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/keys{/key_id}","collaborators_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/teams","hooks_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/hooks","issue_events_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/issues/events{/number}","events_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/events","assignees_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/assignees{/user}","branches_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/branches{/branch}","tags_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/tags","blobs_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/git/refs{/sha}","trees_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/git/trees{/sha}","statuses_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/statuses/{sha}","languages_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/languages","stargazers_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/stargazers","contributors_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/contributors","subscribers_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/subscribers","subscription_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/subscription","commits_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/commits{/sha}","git_commits_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/git/commits{/sha}","comments_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/comments{/number}","issue_comment_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/issues/comments/{number}","contents_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/contents/{+path}","compare_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/compare/{base}...{head}","merges_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/merges","archive_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/downloads","issues_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/issues{/number}","pulls_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/pulls{/number}","milestones_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/milestones{/number}","notifications_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/adulteratedjedi/configuration-files/labels{/name}"},{"id":1061,"name":"fora","full_name":"ELLIOTTCABLE/fora","owner":{"login":"ELLIOTTCABLE","id":200,"avatar_url":"https://1.gravatar.com/avatar/4eac78fe7a7a607dcc097a0d6fd63690?d=https%3A%2F%2Fidenticons.github.com%2F3644a684f98ea8fe223c713b77189a77.png","gravatar_id":"4eac78fe7a7a607dcc097a0d6fd63690","url":"https://api.github.com/users/ELLIOTTCABLE","html_url":"https://github.com/ELLIOTTCABLE","followers_url":"https://api.github.com/users/ELLIOTTCABLE/followers","following_url":"https://api.github.com/users/ELLIOTTCABLE/following{/other_user}","gists_url":"https://api.github.com/users/ELLIOTTCABLE/gists{/gist_id}","starred_url":"https://api.github.com/users/ELLIOTTCABLE/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ELLIOTTCABLE/subscriptions","organizations_url":"https://api.github.com/users/ELLIOTTCABLE/orgs","repos_url":"https://api.github.com/users/ELLIOTTCABLE/repos","events_url":"https://api.github.com/users/ELLIOTTCABLE/events{/privacy}","received_events_url":"https://api.github.com/users/ELLIOTTCABLE/received_events","type":"User"},"private":false,"html_url":"https://github.com/ELLIOTTCABLE/fora","description":"Open source forum - done *different*","fork":false,"url":"https://api.github.com/repos/ELLIOTTCABLE/fora","forks_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/forks","keys_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/teams","hooks_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/hooks","issue_events_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/issues/events{/number}","events_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/events","assignees_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/assignees{/user}","branches_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/branches{/branch}","tags_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/tags","blobs_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/git/refs{/sha}","trees_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/statuses/{sha}","languages_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/languages","stargazers_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/stargazers","contributors_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/contributors","subscribers_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/subscribers","subscription_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/subscription","commits_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/commits{/sha}","git_commits_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/git/commits{/sha}","comments_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/comments{/number}","issue_comment_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/issues/comments/{number}","contents_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/contents/{+path}","compare_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/merges","archive_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/downloads","issues_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/issues{/number}","pulls_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/pulls{/number}","milestones_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/milestones{/number}","notifications_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ELLIOTTCABLE/fora/labels{/name}"},{"id":1062,"name":"dcbot","full_name":"kballard/dcbot","owner":{"login":"kballard","id":714,"avatar_url":"https://2.gravatar.com/avatar/6451ee8093c9cedc94f6c813b4dde2c5?d=https%3A%2F%2Fidenticons.github.com%2Fd14220ee66aeec73c49038385428ec4c.png","gravatar_id":"6451ee8093c9cedc94f6c813b4dde2c5","url":"https://api.github.com/users/kballard","html_url":"https://github.com/kballard","followers_url":"https://api.github.com/users/kballard/followers","following_url":"https://api.github.com/users/kballard/following{/other_user}","gists_url":"https://api.github.com/users/kballard/gists{/gist_id}","starred_url":"https://api.github.com/users/kballard/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kballard/subscriptions","organizations_url":"https://api.github.com/users/kballard/orgs","repos_url":"https://api.github.com/users/kballard/repos","events_url":"https://api.github.com/users/kballard/events{/privacy}","received_events_url":"https://api.github.com/users/kballard/received_events","type":"User"},"private":false,"html_url":"https://github.com/kballard/dcbot","description":"Direct Connect bot written in Ruby","fork":false,"url":"https://api.github.com/repos/kballard/dcbot","forks_url":"https://api.github.com/repos/kballard/dcbot/forks","keys_url":"https://api.github.com/repos/kballard/dcbot/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kballard/dcbot/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kballard/dcbot/teams","hooks_url":"https://api.github.com/repos/kballard/dcbot/hooks","issue_events_url":"https://api.github.com/repos/kballard/dcbot/issues/events{/number}","events_url":"https://api.github.com/repos/kballard/dcbot/events","assignees_url":"https://api.github.com/repos/kballard/dcbot/assignees{/user}","branches_url":"https://api.github.com/repos/kballard/dcbot/branches{/branch}","tags_url":"https://api.github.com/repos/kballard/dcbot/tags","blobs_url":"https://api.github.com/repos/kballard/dcbot/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kballard/dcbot/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kballard/dcbot/git/refs{/sha}","trees_url":"https://api.github.com/repos/kballard/dcbot/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kballard/dcbot/statuses/{sha}","languages_url":"https://api.github.com/repos/kballard/dcbot/languages","stargazers_url":"https://api.github.com/repos/kballard/dcbot/stargazers","contributors_url":"https://api.github.com/repos/kballard/dcbot/contributors","subscribers_url":"https://api.github.com/repos/kballard/dcbot/subscribers","subscription_url":"https://api.github.com/repos/kballard/dcbot/subscription","commits_url":"https://api.github.com/repos/kballard/dcbot/commits{/sha}","git_commits_url":"https://api.github.com/repos/kballard/dcbot/git/commits{/sha}","comments_url":"https://api.github.com/repos/kballard/dcbot/comments{/number}","issue_comment_url":"https://api.github.com/repos/kballard/dcbot/issues/comments/{number}","contents_url":"https://api.github.com/repos/kballard/dcbot/contents/{+path}","compare_url":"https://api.github.com/repos/kballard/dcbot/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kballard/dcbot/merges","archive_url":"https://api.github.com/repos/kballard/dcbot/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kballard/dcbot/downloads","issues_url":"https://api.github.com/repos/kballard/dcbot/issues{/number}","pulls_url":"https://api.github.com/repos/kballard/dcbot/pulls{/number}","milestones_url":"https://api.github.com/repos/kballard/dcbot/milestones{/number}","notifications_url":"https://api.github.com/repos/kballard/dcbot/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kballard/dcbot/labels{/name}"},{"id":1076,"name":"cudgel","full_name":"igouss/cudgel","owner":{"login":"igouss","id":339,"avatar_url":"https://0.gravatar.com/avatar/cedb4d8fed66a5365b4ff6a556c3385f?d=https%3A%2F%2Fidenticons.github.com%2F04025959b191f8f9de3f924f0940515f.png","gravatar_id":"cedb4d8fed66a5365b4ff6a556c3385f","url":"https://api.github.com/users/igouss","html_url":"https://github.com/igouss","followers_url":"https://api.github.com/users/igouss/followers","following_url":"https://api.github.com/users/igouss/following{/other_user}","gists_url":"https://api.github.com/users/igouss/gists{/gist_id}","starred_url":"https://api.github.com/users/igouss/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/igouss/subscriptions","organizations_url":"https://api.github.com/users/igouss/orgs","repos_url":"https://api.github.com/users/igouss/repos","events_url":"https://api.github.com/users/igouss/events{/privacy}","received_events_url":"https://api.github.com/users/igouss/received_events","type":"User"},"private":false,"html_url":"https://github.com/igouss/cudgel","description":"A short heavy stick","fork":false,"url":"https://api.github.com/repos/igouss/cudgel","forks_url":"https://api.github.com/repos/igouss/cudgel/forks","keys_url":"https://api.github.com/repos/igouss/cudgel/keys{/key_id}","collaborators_url":"https://api.github.com/repos/igouss/cudgel/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/igouss/cudgel/teams","hooks_url":"https://api.github.com/repos/igouss/cudgel/hooks","issue_events_url":"https://api.github.com/repos/igouss/cudgel/issues/events{/number}","events_url":"https://api.github.com/repos/igouss/cudgel/events","assignees_url":"https://api.github.com/repos/igouss/cudgel/assignees{/user}","branches_url":"https://api.github.com/repos/igouss/cudgel/branches{/branch}","tags_url":"https://api.github.com/repos/igouss/cudgel/tags","blobs_url":"https://api.github.com/repos/igouss/cudgel/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/igouss/cudgel/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/igouss/cudgel/git/refs{/sha}","trees_url":"https://api.github.com/repos/igouss/cudgel/git/trees{/sha}","statuses_url":"https://api.github.com/repos/igouss/cudgel/statuses/{sha}","languages_url":"https://api.github.com/repos/igouss/cudgel/languages","stargazers_url":"https://api.github.com/repos/igouss/cudgel/stargazers","contributors_url":"https://api.github.com/repos/igouss/cudgel/contributors","subscribers_url":"https://api.github.com/repos/igouss/cudgel/subscribers","subscription_url":"https://api.github.com/repos/igouss/cudgel/subscription","commits_url":"https://api.github.com/repos/igouss/cudgel/commits{/sha}","git_commits_url":"https://api.github.com/repos/igouss/cudgel/git/commits{/sha}","comments_url":"https://api.github.com/repos/igouss/cudgel/comments{/number}","issue_comment_url":"https://api.github.com/repos/igouss/cudgel/issues/comments/{number}","contents_url":"https://api.github.com/repos/igouss/cudgel/contents/{+path}","compare_url":"https://api.github.com/repos/igouss/cudgel/compare/{base}...{head}","merges_url":"https://api.github.com/repos/igouss/cudgel/merges","archive_url":"https://api.github.com/repos/igouss/cudgel/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/igouss/cudgel/downloads","issues_url":"https://api.github.com/repos/igouss/cudgel/issues{/number}","pulls_url":"https://api.github.com/repos/igouss/cudgel/pulls{/number}","milestones_url":"https://api.github.com/repos/igouss/cudgel/milestones{/number}","notifications_url":"https://api.github.com/repos/igouss/cudgel/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/igouss/cudgel/labels{/name}"},{"id":1101,"name":"micro","full_name":"seaofclouds/micro","owner":{"login":"seaofclouds","id":708,"avatar_url":"https://2.gravatar.com/avatar/0c5c5a350941044192ff794a9cd2205b?d=https%3A%2F%2Fidenticons.github.com%2Fae0eb3eed39d2bcef4622b2499a05fe6.png","gravatar_id":"0c5c5a350941044192ff794a9cd2205b","url":"https://api.github.com/users/seaofclouds","html_url":"https://github.com/seaofclouds","followers_url":"https://api.github.com/users/seaofclouds/followers","following_url":"https://api.github.com/users/seaofclouds/following{/other_user}","gists_url":"https://api.github.com/users/seaofclouds/gists{/gist_id}","starred_url":"https://api.github.com/users/seaofclouds/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/seaofclouds/subscriptions","organizations_url":"https://api.github.com/users/seaofclouds/orgs","repos_url":"https://api.github.com/users/seaofclouds/repos","events_url":"https://api.github.com/users/seaofclouds/events{/privacy}","received_events_url":"https://api.github.com/users/seaofclouds/received_events","type":"User"},"private":false,"html_url":"https://github.com/seaofclouds/micro","description":"blogware that fits in your pocket","fork":false,"url":"https://api.github.com/repos/seaofclouds/micro","forks_url":"https://api.github.com/repos/seaofclouds/micro/forks","keys_url":"https://api.github.com/repos/seaofclouds/micro/keys{/key_id}","collaborators_url":"https://api.github.com/repos/seaofclouds/micro/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/seaofclouds/micro/teams","hooks_url":"https://api.github.com/repos/seaofclouds/micro/hooks","issue_events_url":"https://api.github.com/repos/seaofclouds/micro/issues/events{/number}","events_url":"https://api.github.com/repos/seaofclouds/micro/events","assignees_url":"https://api.github.com/repos/seaofclouds/micro/assignees{/user}","branches_url":"https://api.github.com/repos/seaofclouds/micro/branches{/branch}","tags_url":"https://api.github.com/repos/seaofclouds/micro/tags","blobs_url":"https://api.github.com/repos/seaofclouds/micro/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/seaofclouds/micro/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/seaofclouds/micro/git/refs{/sha}","trees_url":"https://api.github.com/repos/seaofclouds/micro/git/trees{/sha}","statuses_url":"https://api.github.com/repos/seaofclouds/micro/statuses/{sha}","languages_url":"https://api.github.com/repos/seaofclouds/micro/languages","stargazers_url":"https://api.github.com/repos/seaofclouds/micro/stargazers","contributors_url":"https://api.github.com/repos/seaofclouds/micro/contributors","subscribers_url":"https://api.github.com/repos/seaofclouds/micro/subscribers","subscription_url":"https://api.github.com/repos/seaofclouds/micro/subscription","commits_url":"https://api.github.com/repos/seaofclouds/micro/commits{/sha}","git_commits_url":"https://api.github.com/repos/seaofclouds/micro/git/commits{/sha}","comments_url":"https://api.github.com/repos/seaofclouds/micro/comments{/number}","issue_comment_url":"https://api.github.com/repos/seaofclouds/micro/issues/comments/{number}","contents_url":"https://api.github.com/repos/seaofclouds/micro/contents/{+path}","compare_url":"https://api.github.com/repos/seaofclouds/micro/compare/{base}...{head}","merges_url":"https://api.github.com/repos/seaofclouds/micro/merges","archive_url":"https://api.github.com/repos/seaofclouds/micro/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/seaofclouds/micro/downloads","issues_url":"https://api.github.com/repos/seaofclouds/micro/issues{/number}","pulls_url":"https://api.github.com/repos/seaofclouds/micro/pulls{/number}","milestones_url":"https://api.github.com/repos/seaofclouds/micro/milestones{/number}","notifications_url":"https://api.github.com/repos/seaofclouds/micro/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/seaofclouds/micro/labels{/name}"},{"id":1102,"name":"cacheable","full_name":"tobi/cacheable","owner":{"login":"tobi","id":347,"avatar_url":"https://1.gravatar.com/avatar/44a1b8a3a990e1a496261f55cd44fbd9?d=https%3A%2F%2Fidenticons.github.com%2Fc5ff2543b53f4cc0ad3819a36752467b.png","gravatar_id":"44a1b8a3a990e1a496261f55cd44fbd9","url":"https://api.github.com/users/tobi","html_url":"https://github.com/tobi","followers_url":"https://api.github.com/users/tobi/followers","following_url":"https://api.github.com/users/tobi/following{/other_user}","gists_url":"https://api.github.com/users/tobi/gists{/gist_id}","starred_url":"https://api.github.com/users/tobi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tobi/subscriptions","organizations_url":"https://api.github.com/users/tobi/orgs","repos_url":"https://api.github.com/users/tobi/repos","events_url":"https://api.github.com/users/tobi/events{/privacy}","received_events_url":"https://api.github.com/users/tobi/received_events","type":"User"},"private":false,"html_url":"https://github.com/tobi/cacheable","description":"Page caching extension of Shopify","fork":false,"url":"https://api.github.com/repos/tobi/cacheable","forks_url":"https://api.github.com/repos/tobi/cacheable/forks","keys_url":"https://api.github.com/repos/tobi/cacheable/keys{/key_id}","collaborators_url":"https://api.github.com/repos/tobi/cacheable/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/tobi/cacheable/teams","hooks_url":"https://api.github.com/repos/tobi/cacheable/hooks","issue_events_url":"https://api.github.com/repos/tobi/cacheable/issues/events{/number}","events_url":"https://api.github.com/repos/tobi/cacheable/events","assignees_url":"https://api.github.com/repos/tobi/cacheable/assignees{/user}","branches_url":"https://api.github.com/repos/tobi/cacheable/branches{/branch}","tags_url":"https://api.github.com/repos/tobi/cacheable/tags","blobs_url":"https://api.github.com/repos/tobi/cacheable/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/tobi/cacheable/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/tobi/cacheable/git/refs{/sha}","trees_url":"https://api.github.com/repos/tobi/cacheable/git/trees{/sha}","statuses_url":"https://api.github.com/repos/tobi/cacheable/statuses/{sha}","languages_url":"https://api.github.com/repos/tobi/cacheable/languages","stargazers_url":"https://api.github.com/repos/tobi/cacheable/stargazers","contributors_url":"https://api.github.com/repos/tobi/cacheable/contributors","subscribers_url":"https://api.github.com/repos/tobi/cacheable/subscribers","subscription_url":"https://api.github.com/repos/tobi/cacheable/subscription","commits_url":"https://api.github.com/repos/tobi/cacheable/commits{/sha}","git_commits_url":"https://api.github.com/repos/tobi/cacheable/git/commits{/sha}","comments_url":"https://api.github.com/repos/tobi/cacheable/comments{/number}","issue_comment_url":"https://api.github.com/repos/tobi/cacheable/issues/comments/{number}","contents_url":"https://api.github.com/repos/tobi/cacheable/contents/{+path}","compare_url":"https://api.github.com/repos/tobi/cacheable/compare/{base}...{head}","merges_url":"https://api.github.com/repos/tobi/cacheable/merges","archive_url":"https://api.github.com/repos/tobi/cacheable/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/tobi/cacheable/downloads","issues_url":"https://api.github.com/repos/tobi/cacheable/issues{/number}","pulls_url":"https://api.github.com/repos/tobi/cacheable/pulls{/number}","milestones_url":"https://api.github.com/repos/tobi/cacheable/milestones{/number}","notifications_url":"https://api.github.com/repos/tobi/cacheable/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/tobi/cacheable/labels{/name}"},{"id":1104,"name":"micro-theme","full_name":"seaofclouds/micro-theme","owner":{"login":"seaofclouds","id":708,"avatar_url":"https://2.gravatar.com/avatar/0c5c5a350941044192ff794a9cd2205b?d=https%3A%2F%2Fidenticons.github.com%2Fae0eb3eed39d2bcef4622b2499a05fe6.png","gravatar_id":"0c5c5a350941044192ff794a9cd2205b","url":"https://api.github.com/users/seaofclouds","html_url":"https://github.com/seaofclouds","followers_url":"https://api.github.com/users/seaofclouds/followers","following_url":"https://api.github.com/users/seaofclouds/following{/other_user}","gists_url":"https://api.github.com/users/seaofclouds/gists{/gist_id}","starred_url":"https://api.github.com/users/seaofclouds/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/seaofclouds/subscriptions","organizations_url":"https://api.github.com/users/seaofclouds/orgs","repos_url":"https://api.github.com/users/seaofclouds/repos","events_url":"https://api.github.com/users/seaofclouds/events{/privacy}","received_events_url":"https://api.github.com/users/seaofclouds/received_events","type":"User"},"private":false,"html_url":"https://github.com/seaofclouds/micro-theme","description":"simple blogging theme for mephisto and blogger","fork":false,"url":"https://api.github.com/repos/seaofclouds/micro-theme","forks_url":"https://api.github.com/repos/seaofclouds/micro-theme/forks","keys_url":"https://api.github.com/repos/seaofclouds/micro-theme/keys{/key_id}","collaborators_url":"https://api.github.com/repos/seaofclouds/micro-theme/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/seaofclouds/micro-theme/teams","hooks_url":"https://api.github.com/repos/seaofclouds/micro-theme/hooks","issue_events_url":"https://api.github.com/repos/seaofclouds/micro-theme/issues/events{/number}","events_url":"https://api.github.com/repos/seaofclouds/micro-theme/events","assignees_url":"https://api.github.com/repos/seaofclouds/micro-theme/assignees{/user}","branches_url":"https://api.github.com/repos/seaofclouds/micro-theme/branches{/branch}","tags_url":"https://api.github.com/repos/seaofclouds/micro-theme/tags","blobs_url":"https://api.github.com/repos/seaofclouds/micro-theme/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/seaofclouds/micro-theme/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/seaofclouds/micro-theme/git/refs{/sha}","trees_url":"https://api.github.com/repos/seaofclouds/micro-theme/git/trees{/sha}","statuses_url":"https://api.github.com/repos/seaofclouds/micro-theme/statuses/{sha}","languages_url":"https://api.github.com/repos/seaofclouds/micro-theme/languages","stargazers_url":"https://api.github.com/repos/seaofclouds/micro-theme/stargazers","contributors_url":"https://api.github.com/repos/seaofclouds/micro-theme/contributors","subscribers_url":"https://api.github.com/repos/seaofclouds/micro-theme/subscribers","subscription_url":"https://api.github.com/repos/seaofclouds/micro-theme/subscription","commits_url":"https://api.github.com/repos/seaofclouds/micro-theme/commits{/sha}","git_commits_url":"https://api.github.com/repos/seaofclouds/micro-theme/git/commits{/sha}","comments_url":"https://api.github.com/repos/seaofclouds/micro-theme/comments{/number}","issue_comment_url":"https://api.github.com/repos/seaofclouds/micro-theme/issues/comments/{number}","contents_url":"https://api.github.com/repos/seaofclouds/micro-theme/contents/{+path}","compare_url":"https://api.github.com/repos/seaofclouds/micro-theme/compare/{base}...{head}","merges_url":"https://api.github.com/repos/seaofclouds/micro-theme/merges","archive_url":"https://api.github.com/repos/seaofclouds/micro-theme/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/seaofclouds/micro-theme/downloads","issues_url":"https://api.github.com/repos/seaofclouds/micro-theme/issues{/number}","pulls_url":"https://api.github.com/repos/seaofclouds/micro-theme/pulls{/number}","milestones_url":"https://api.github.com/repos/seaofclouds/micro-theme/milestones{/number}","notifications_url":"https://api.github.com/repos/seaofclouds/micro-theme/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/seaofclouds/micro-theme/labels{/name}"},{"id":1108,"name":"icaltodoscheduler","full_name":"lypanov/icaltodoscheduler","owner":{"login":"lypanov","id":311,"avatar_url":"https://2.gravatar.com/avatar/fde764988033c802599aa33705dce509?d=https%3A%2F%2Fidenticons.github.com%2F9dfcd5e558dfa04aaf37f137a1d9d3e5.png","gravatar_id":"fde764988033c802599aa33705dce509","url":"https://api.github.com/users/lypanov","html_url":"https://github.com/lypanov","followers_url":"https://api.github.com/users/lypanov/followers","following_url":"https://api.github.com/users/lypanov/following{/other_user}","gists_url":"https://api.github.com/users/lypanov/gists{/gist_id}","starred_url":"https://api.github.com/users/lypanov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lypanov/subscriptions","organizations_url":"https://api.github.com/users/lypanov/orgs","repos_url":"https://api.github.com/users/lypanov/repos","events_url":"https://api.github.com/users/lypanov/events{/privacy}","received_events_url":"https://api.github.com/users/lypanov/received_events","type":"User"},"private":false,"html_url":"https://github.com/lypanov/icaltodoscheduler","description":"iCal To Do scheduler for Leopard","fork":false,"url":"https://api.github.com/repos/lypanov/icaltodoscheduler","forks_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/forks","keys_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/teams","hooks_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/hooks","issue_events_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/issues/events{/number}","events_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/events","assignees_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/assignees{/user}","branches_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/branches{/branch}","tags_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/tags","blobs_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/git/refs{/sha}","trees_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/statuses/{sha}","languages_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/languages","stargazers_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/stargazers","contributors_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/contributors","subscribers_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/subscribers","subscription_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/subscription","commits_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/commits{/sha}","git_commits_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/git/commits{/sha}","comments_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/comments{/number}","issue_comment_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/issues/comments/{number}","contents_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/contents/{+path}","compare_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/merges","archive_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/downloads","issues_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/issues{/number}","pulls_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/pulls{/number}","milestones_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/milestones{/number}","notifications_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lypanov/icaltodoscheduler/labels{/name}"},{"id":1111,"name":"catface","full_name":"jney/catface","owner":{"login":"jney","id":747,"avatar_url":"https://1.gravatar.com/avatar/4b87f676cb6c4d648d71000681823693?d=https%3A%2F%2Fidenticons.github.com%2F8d317bdcf4aafcfc22149d77babee96d.png","gravatar_id":"4b87f676cb6c4d648d71000681823693","url":"https://api.github.com/users/jney","html_url":"https://github.com/jney","followers_url":"https://api.github.com/users/jney/followers","following_url":"https://api.github.com/users/jney/following{/other_user}","gists_url":"https://api.github.com/users/jney/gists{/gist_id}","starred_url":"https://api.github.com/users/jney/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jney/subscriptions","organizations_url":"https://api.github.com/users/jney/orgs","repos_url":"https://api.github.com/users/jney/repos","events_url":"https://api.github.com/users/jney/events{/privacy}","received_events_url":"https://api.github.com/users/jney/received_events","type":"User"},"private":false,"html_url":"https://github.com/jney/catface","description":"jquey plugin: a mix between facebox & catfish. message alert.","fork":false,"url":"https://api.github.com/repos/jney/catface","forks_url":"https://api.github.com/repos/jney/catface/forks","keys_url":"https://api.github.com/repos/jney/catface/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jney/catface/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jney/catface/teams","hooks_url":"https://api.github.com/repos/jney/catface/hooks","issue_events_url":"https://api.github.com/repos/jney/catface/issues/events{/number}","events_url":"https://api.github.com/repos/jney/catface/events","assignees_url":"https://api.github.com/repos/jney/catface/assignees{/user}","branches_url":"https://api.github.com/repos/jney/catface/branches{/branch}","tags_url":"https://api.github.com/repos/jney/catface/tags","blobs_url":"https://api.github.com/repos/jney/catface/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jney/catface/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jney/catface/git/refs{/sha}","trees_url":"https://api.github.com/repos/jney/catface/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jney/catface/statuses/{sha}","languages_url":"https://api.github.com/repos/jney/catface/languages","stargazers_url":"https://api.github.com/repos/jney/catface/stargazers","contributors_url":"https://api.github.com/repos/jney/catface/contributors","subscribers_url":"https://api.github.com/repos/jney/catface/subscribers","subscription_url":"https://api.github.com/repos/jney/catface/subscription","commits_url":"https://api.github.com/repos/jney/catface/commits{/sha}","git_commits_url":"https://api.github.com/repos/jney/catface/git/commits{/sha}","comments_url":"https://api.github.com/repos/jney/catface/comments{/number}","issue_comment_url":"https://api.github.com/repos/jney/catface/issues/comments/{number}","contents_url":"https://api.github.com/repos/jney/catface/contents/{+path}","compare_url":"https://api.github.com/repos/jney/catface/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jney/catface/merges","archive_url":"https://api.github.com/repos/jney/catface/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jney/catface/downloads","issues_url":"https://api.github.com/repos/jney/catface/issues{/number}","pulls_url":"https://api.github.com/repos/jney/catface/pulls{/number}","milestones_url":"https://api.github.com/repos/jney/catface/milestones{/number}","notifications_url":"https://api.github.com/repos/jney/catface/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jney/catface/labels{/name}"},{"id":1124,"name":"pyelection","full_name":"alex/pyelection","owner":{"login":"alex","id":772,"avatar_url":"https://2.gravatar.com/avatar/edcdfd5affb524e0f88ec1a00ed3fe5d?d=https%3A%2F%2Fidenticons.github.com%2Fe57c6b956a6521b28495f2886ca0977a.png","gravatar_id":"edcdfd5affb524e0f88ec1a00ed3fe5d","url":"https://api.github.com/users/alex","html_url":"https://github.com/alex","followers_url":"https://api.github.com/users/alex/followers","following_url":"https://api.github.com/users/alex/following{/other_user}","gists_url":"https://api.github.com/users/alex/gists{/gist_id}","starred_url":"https://api.github.com/users/alex/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alex/subscriptions","organizations_url":"https://api.github.com/users/alex/orgs","repos_url":"https://api.github.com/users/alex/repos","events_url":"https://api.github.com/users/alex/events{/privacy}","received_events_url":"https://api.github.com/users/alex/received_events","type":"User"},"private":false,"html_url":"https://github.com/alex/pyelection","description":"A python application for following the US primaries","fork":false,"url":"https://api.github.com/repos/alex/pyelection","forks_url":"https://api.github.com/repos/alex/pyelection/forks","keys_url":"https://api.github.com/repos/alex/pyelection/keys{/key_id}","collaborators_url":"https://api.github.com/repos/alex/pyelection/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/alex/pyelection/teams","hooks_url":"https://api.github.com/repos/alex/pyelection/hooks","issue_events_url":"https://api.github.com/repos/alex/pyelection/issues/events{/number}","events_url":"https://api.github.com/repos/alex/pyelection/events","assignees_url":"https://api.github.com/repos/alex/pyelection/assignees{/user}","branches_url":"https://api.github.com/repos/alex/pyelection/branches{/branch}","tags_url":"https://api.github.com/repos/alex/pyelection/tags","blobs_url":"https://api.github.com/repos/alex/pyelection/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/alex/pyelection/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/alex/pyelection/git/refs{/sha}","trees_url":"https://api.github.com/repos/alex/pyelection/git/trees{/sha}","statuses_url":"https://api.github.com/repos/alex/pyelection/statuses/{sha}","languages_url":"https://api.github.com/repos/alex/pyelection/languages","stargazers_url":"https://api.github.com/repos/alex/pyelection/stargazers","contributors_url":"https://api.github.com/repos/alex/pyelection/contributors","subscribers_url":"https://api.github.com/repos/alex/pyelection/subscribers","subscription_url":"https://api.github.com/repos/alex/pyelection/subscription","commits_url":"https://api.github.com/repos/alex/pyelection/commits{/sha}","git_commits_url":"https://api.github.com/repos/alex/pyelection/git/commits{/sha}","comments_url":"https://api.github.com/repos/alex/pyelection/comments{/number}","issue_comment_url":"https://api.github.com/repos/alex/pyelection/issues/comments/{number}","contents_url":"https://api.github.com/repos/alex/pyelection/contents/{+path}","compare_url":"https://api.github.com/repos/alex/pyelection/compare/{base}...{head}","merges_url":"https://api.github.com/repos/alex/pyelection/merges","archive_url":"https://api.github.com/repos/alex/pyelection/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/alex/pyelection/downloads","issues_url":"https://api.github.com/repos/alex/pyelection/issues{/number}","pulls_url":"https://api.github.com/repos/alex/pyelection/pulls{/number}","milestones_url":"https://api.github.com/repos/alex/pyelection/milestones{/number}","notifications_url":"https://api.github.com/repos/alex/pyelection/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/alex/pyelection/labels{/name}"},{"id":1126,"name":"git-todo-py","full_name":"lydgate/git-todo-py","owner":{"login":"lydgate","id":771,"avatar_url":"https://2.gravatar.com/avatar/6f0880ac5ed12ad4b40e5befd00032bd?d=https%3A%2F%2Fidenticons.github.com%2Fb7ee6f5f9aa5cd17ca1aea43ce848496.png","gravatar_id":"6f0880ac5ed12ad4b40e5befd00032bd","url":"https://api.github.com/users/lydgate","html_url":"https://github.com/lydgate","followers_url":"https://api.github.com/users/lydgate/followers","following_url":"https://api.github.com/users/lydgate/following{/other_user}","gists_url":"https://api.github.com/users/lydgate/gists{/gist_id}","starred_url":"https://api.github.com/users/lydgate/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lydgate/subscriptions","organizations_url":"https://api.github.com/users/lydgate/orgs","repos_url":"https://api.github.com/users/lydgate/repos","events_url":"https://api.github.com/users/lydgate/events{/privacy}","received_events_url":"https://api.github.com/users/lydgate/received_events","type":"User"},"private":false,"html_url":"https://github.com/lydgate/git-todo-py","description":"A fork of todo.py that commits all changes into a git repository.","fork":false,"url":"https://api.github.com/repos/lydgate/git-todo-py","forks_url":"https://api.github.com/repos/lydgate/git-todo-py/forks","keys_url":"https://api.github.com/repos/lydgate/git-todo-py/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lydgate/git-todo-py/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lydgate/git-todo-py/teams","hooks_url":"https://api.github.com/repos/lydgate/git-todo-py/hooks","issue_events_url":"https://api.github.com/repos/lydgate/git-todo-py/issues/events{/number}","events_url":"https://api.github.com/repos/lydgate/git-todo-py/events","assignees_url":"https://api.github.com/repos/lydgate/git-todo-py/assignees{/user}","branches_url":"https://api.github.com/repos/lydgate/git-todo-py/branches{/branch}","tags_url":"https://api.github.com/repos/lydgate/git-todo-py/tags","blobs_url":"https://api.github.com/repos/lydgate/git-todo-py/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lydgate/git-todo-py/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lydgate/git-todo-py/git/refs{/sha}","trees_url":"https://api.github.com/repos/lydgate/git-todo-py/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lydgate/git-todo-py/statuses/{sha}","languages_url":"https://api.github.com/repos/lydgate/git-todo-py/languages","stargazers_url":"https://api.github.com/repos/lydgate/git-todo-py/stargazers","contributors_url":"https://api.github.com/repos/lydgate/git-todo-py/contributors","subscribers_url":"https://api.github.com/repos/lydgate/git-todo-py/subscribers","subscription_url":"https://api.github.com/repos/lydgate/git-todo-py/subscription","commits_url":"https://api.github.com/repos/lydgate/git-todo-py/commits{/sha}","git_commits_url":"https://api.github.com/repos/lydgate/git-todo-py/git/commits{/sha}","comments_url":"https://api.github.com/repos/lydgate/git-todo-py/comments{/number}","issue_comment_url":"https://api.github.com/repos/lydgate/git-todo-py/issues/comments/{number}","contents_url":"https://api.github.com/repos/lydgate/git-todo-py/contents/{+path}","compare_url":"https://api.github.com/repos/lydgate/git-todo-py/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lydgate/git-todo-py/merges","archive_url":"https://api.github.com/repos/lydgate/git-todo-py/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lydgate/git-todo-py/downloads","issues_url":"https://api.github.com/repos/lydgate/git-todo-py/issues{/number}","pulls_url":"https://api.github.com/repos/lydgate/git-todo-py/pulls{/number}","milestones_url":"https://api.github.com/repos/lydgate/git-todo-py/milestones{/number}","notifications_url":"https://api.github.com/repos/lydgate/git-todo-py/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lydgate/git-todo-py/labels{/name}"},{"id":1129,"name":"merb-core","full_name":"piclez/merb-core","owner":{"login":"piclez","id":781,"avatar_url":"https://2.gravatar.com/avatar/c87ede80f824a59883082b697e12348d?d=https%3A%2F%2Fidenticons.github.com%2F7143d7fbadfa4693b9eec507d9d37443.png","gravatar_id":"c87ede80f824a59883082b697e12348d","url":"https://api.github.com/users/piclez","html_url":"https://github.com/piclez","followers_url":"https://api.github.com/users/piclez/followers","following_url":"https://api.github.com/users/piclez/following{/other_user}","gists_url":"https://api.github.com/users/piclez/gists{/gist_id}","starred_url":"https://api.github.com/users/piclez/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/piclez/subscriptions","organizations_url":"https://api.github.com/users/piclez/orgs","repos_url":"https://api.github.com/users/piclez/repos","events_url":"https://api.github.com/users/piclez/events{/privacy}","received_events_url":"https://api.github.com/users/piclez/received_events","type":"User"},"private":false,"html_url":"https://github.com/piclez/merb-core","description":"Merb Core: All you need. None you don't.","fork":true,"url":"https://api.github.com/repos/piclez/merb-core","forks_url":"https://api.github.com/repos/piclez/merb-core/forks","keys_url":"https://api.github.com/repos/piclez/merb-core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/piclez/merb-core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/piclez/merb-core/teams","hooks_url":"https://api.github.com/repos/piclez/merb-core/hooks","issue_events_url":"https://api.github.com/repos/piclez/merb-core/issues/events{/number}","events_url":"https://api.github.com/repos/piclez/merb-core/events","assignees_url":"https://api.github.com/repos/piclez/merb-core/assignees{/user}","branches_url":"https://api.github.com/repos/piclez/merb-core/branches{/branch}","tags_url":"https://api.github.com/repos/piclez/merb-core/tags","blobs_url":"https://api.github.com/repos/piclez/merb-core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/piclez/merb-core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/piclez/merb-core/git/refs{/sha}","trees_url":"https://api.github.com/repos/piclez/merb-core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/piclez/merb-core/statuses/{sha}","languages_url":"https://api.github.com/repos/piclez/merb-core/languages","stargazers_url":"https://api.github.com/repos/piclez/merb-core/stargazers","contributors_url":"https://api.github.com/repos/piclez/merb-core/contributors","subscribers_url":"https://api.github.com/repos/piclez/merb-core/subscribers","subscription_url":"https://api.github.com/repos/piclez/merb-core/subscription","commits_url":"https://api.github.com/repos/piclez/merb-core/commits{/sha}","git_commits_url":"https://api.github.com/repos/piclez/merb-core/git/commits{/sha}","comments_url":"https://api.github.com/repos/piclez/merb-core/comments{/number}","issue_comment_url":"https://api.github.com/repos/piclez/merb-core/issues/comments/{number}","contents_url":"https://api.github.com/repos/piclez/merb-core/contents/{+path}","compare_url":"https://api.github.com/repos/piclez/merb-core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/piclez/merb-core/merges","archive_url":"https://api.github.com/repos/piclez/merb-core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/piclez/merb-core/downloads","issues_url":"https://api.github.com/repos/piclez/merb-core/issues{/number}","pulls_url":"https://api.github.com/repos/piclez/merb-core/pulls{/number}","milestones_url":"https://api.github.com/repos/piclez/merb-core/milestones{/number}","notifications_url":"https://api.github.com/repos/piclez/merb-core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/piclez/merb-core/labels{/name}"},{"id":1130,"name":"merb-more","full_name":"piclez/merb-more","owner":{"login":"piclez","id":781,"avatar_url":"https://2.gravatar.com/avatar/c87ede80f824a59883082b697e12348d?d=https%3A%2F%2Fidenticons.github.com%2F7143d7fbadfa4693b9eec507d9d37443.png","gravatar_id":"c87ede80f824a59883082b697e12348d","url":"https://api.github.com/users/piclez","html_url":"https://github.com/piclez","followers_url":"https://api.github.com/users/piclez/followers","following_url":"https://api.github.com/users/piclez/following{/other_user}","gists_url":"https://api.github.com/users/piclez/gists{/gist_id}","starred_url":"https://api.github.com/users/piclez/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/piclez/subscriptions","organizations_url":"https://api.github.com/users/piclez/orgs","repos_url":"https://api.github.com/users/piclez/repos","events_url":"https://api.github.com/users/piclez/events{/privacy}","received_events_url":"https://api.github.com/users/piclez/received_events","type":"User"},"private":false,"html_url":"https://github.com/piclez/merb-more","description":"Merb More: The Full Stack. Take what you need; leave what you don't.","fork":true,"url":"https://api.github.com/repos/piclez/merb-more","forks_url":"https://api.github.com/repos/piclez/merb-more/forks","keys_url":"https://api.github.com/repos/piclez/merb-more/keys{/key_id}","collaborators_url":"https://api.github.com/repos/piclez/merb-more/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/piclez/merb-more/teams","hooks_url":"https://api.github.com/repos/piclez/merb-more/hooks","issue_events_url":"https://api.github.com/repos/piclez/merb-more/issues/events{/number}","events_url":"https://api.github.com/repos/piclez/merb-more/events","assignees_url":"https://api.github.com/repos/piclez/merb-more/assignees{/user}","branches_url":"https://api.github.com/repos/piclez/merb-more/branches{/branch}","tags_url":"https://api.github.com/repos/piclez/merb-more/tags","blobs_url":"https://api.github.com/repos/piclez/merb-more/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/piclez/merb-more/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/piclez/merb-more/git/refs{/sha}","trees_url":"https://api.github.com/repos/piclez/merb-more/git/trees{/sha}","statuses_url":"https://api.github.com/repos/piclez/merb-more/statuses/{sha}","languages_url":"https://api.github.com/repos/piclez/merb-more/languages","stargazers_url":"https://api.github.com/repos/piclez/merb-more/stargazers","contributors_url":"https://api.github.com/repos/piclez/merb-more/contributors","subscribers_url":"https://api.github.com/repos/piclez/merb-more/subscribers","subscription_url":"https://api.github.com/repos/piclez/merb-more/subscription","commits_url":"https://api.github.com/repos/piclez/merb-more/commits{/sha}","git_commits_url":"https://api.github.com/repos/piclez/merb-more/git/commits{/sha}","comments_url":"https://api.github.com/repos/piclez/merb-more/comments{/number}","issue_comment_url":"https://api.github.com/repos/piclez/merb-more/issues/comments/{number}","contents_url":"https://api.github.com/repos/piclez/merb-more/contents/{+path}","compare_url":"https://api.github.com/repos/piclez/merb-more/compare/{base}...{head}","merges_url":"https://api.github.com/repos/piclez/merb-more/merges","archive_url":"https://api.github.com/repos/piclez/merb-more/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/piclez/merb-more/downloads","issues_url":"https://api.github.com/repos/piclez/merb-more/issues{/number}","pulls_url":"https://api.github.com/repos/piclez/merb-more/pulls{/number}","milestones_url":"https://api.github.com/repos/piclez/merb-more/milestones{/number}","notifications_url":"https://api.github.com/repos/piclez/merb-more/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/piclez/merb-more/labels{/name}"},{"id":1131,"name":"merb-plugins","full_name":"piclez/merb-plugins","owner":{"login":"piclez","id":781,"avatar_url":"https://2.gravatar.com/avatar/c87ede80f824a59883082b697e12348d?d=https%3A%2F%2Fidenticons.github.com%2F7143d7fbadfa4693b9eec507d9d37443.png","gravatar_id":"c87ede80f824a59883082b697e12348d","url":"https://api.github.com/users/piclez","html_url":"https://github.com/piclez","followers_url":"https://api.github.com/users/piclez/followers","following_url":"https://api.github.com/users/piclez/following{/other_user}","gists_url":"https://api.github.com/users/piclez/gists{/gist_id}","starred_url":"https://api.github.com/users/piclez/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/piclez/subscriptions","organizations_url":"https://api.github.com/users/piclez/orgs","repos_url":"https://api.github.com/users/piclez/repos","events_url":"https://api.github.com/users/piclez/events{/privacy}","received_events_url":"https://api.github.com/users/piclez/received_events","type":"User"},"private":false,"html_url":"https://github.com/piclez/merb-plugins","description":"Merb Plugins: Even more modules to hook up your Merb installation","fork":true,"url":"https://api.github.com/repos/piclez/merb-plugins","forks_url":"https://api.github.com/repos/piclez/merb-plugins/forks","keys_url":"https://api.github.com/repos/piclez/merb-plugins/keys{/key_id}","collaborators_url":"https://api.github.com/repos/piclez/merb-plugins/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/piclez/merb-plugins/teams","hooks_url":"https://api.github.com/repos/piclez/merb-plugins/hooks","issue_events_url":"https://api.github.com/repos/piclez/merb-plugins/issues/events{/number}","events_url":"https://api.github.com/repos/piclez/merb-plugins/events","assignees_url":"https://api.github.com/repos/piclez/merb-plugins/assignees{/user}","branches_url":"https://api.github.com/repos/piclez/merb-plugins/branches{/branch}","tags_url":"https://api.github.com/repos/piclez/merb-plugins/tags","blobs_url":"https://api.github.com/repos/piclez/merb-plugins/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/piclez/merb-plugins/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/piclez/merb-plugins/git/refs{/sha}","trees_url":"https://api.github.com/repos/piclez/merb-plugins/git/trees{/sha}","statuses_url":"https://api.github.com/repos/piclez/merb-plugins/statuses/{sha}","languages_url":"https://api.github.com/repos/piclez/merb-plugins/languages","stargazers_url":"https://api.github.com/repos/piclez/merb-plugins/stargazers","contributors_url":"https://api.github.com/repos/piclez/merb-plugins/contributors","subscribers_url":"https://api.github.com/repos/piclez/merb-plugins/subscribers","subscription_url":"https://api.github.com/repos/piclez/merb-plugins/subscription","commits_url":"https://api.github.com/repos/piclez/merb-plugins/commits{/sha}","git_commits_url":"https://api.github.com/repos/piclez/merb-plugins/git/commits{/sha}","comments_url":"https://api.github.com/repos/piclez/merb-plugins/comments{/number}","issue_comment_url":"https://api.github.com/repos/piclez/merb-plugins/issues/comments/{number}","contents_url":"https://api.github.com/repos/piclez/merb-plugins/contents/{+path}","compare_url":"https://api.github.com/repos/piclez/merb-plugins/compare/{base}...{head}","merges_url":"https://api.github.com/repos/piclez/merb-plugins/merges","archive_url":"https://api.github.com/repos/piclez/merb-plugins/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/piclez/merb-plugins/downloads","issues_url":"https://api.github.com/repos/piclez/merb-plugins/issues{/number}","pulls_url":"https://api.github.com/repos/piclez/merb-plugins/pulls{/number}","milestones_url":"https://api.github.com/repos/piclez/merb-plugins/milestones{/number}","notifications_url":"https://api.github.com/repos/piclez/merb-plugins/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/piclez/merb-plugins/labels{/name}"},{"id":1157,"name":"ami-ragel","full_name":"jicksta/ami-ragel","owner":{"login":"jicksta","id":155,"avatar_url":"https://1.gravatar.com/avatar/c48fff96ea2bf539a7939ca6d94f2443?d=https%3A%2F%2Fidenticons.github.com%2F2a79ea27c279e471f4d180b08d62b00a.png","gravatar_id":"c48fff96ea2bf539a7939ca6d94f2443","url":"https://api.github.com/users/jicksta","html_url":"https://github.com/jicksta","followers_url":"https://api.github.com/users/jicksta/followers","following_url":"https://api.github.com/users/jicksta/following{/other_user}","gists_url":"https://api.github.com/users/jicksta/gists{/gist_id}","starred_url":"https://api.github.com/users/jicksta/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jicksta/subscriptions","organizations_url":"https://api.github.com/users/jicksta/orgs","repos_url":"https://api.github.com/users/jicksta/repos","events_url":"https://api.github.com/users/jicksta/events{/privacy}","received_events_url":"https://api.github.com/users/jicksta/received_events","type":"User"},"private":false,"html_url":"https://github.com/jicksta/ami-ragel","description":"The new Asterisk Manager Interface implementation that uses Ragel and EventMachine","fork":false,"url":"https://api.github.com/repos/jicksta/ami-ragel","forks_url":"https://api.github.com/repos/jicksta/ami-ragel/forks","keys_url":"https://api.github.com/repos/jicksta/ami-ragel/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jicksta/ami-ragel/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jicksta/ami-ragel/teams","hooks_url":"https://api.github.com/repos/jicksta/ami-ragel/hooks","issue_events_url":"https://api.github.com/repos/jicksta/ami-ragel/issues/events{/number}","events_url":"https://api.github.com/repos/jicksta/ami-ragel/events","assignees_url":"https://api.github.com/repos/jicksta/ami-ragel/assignees{/user}","branches_url":"https://api.github.com/repos/jicksta/ami-ragel/branches{/branch}","tags_url":"https://api.github.com/repos/jicksta/ami-ragel/tags","blobs_url":"https://api.github.com/repos/jicksta/ami-ragel/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jicksta/ami-ragel/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jicksta/ami-ragel/git/refs{/sha}","trees_url":"https://api.github.com/repos/jicksta/ami-ragel/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jicksta/ami-ragel/statuses/{sha}","languages_url":"https://api.github.com/repos/jicksta/ami-ragel/languages","stargazers_url":"https://api.github.com/repos/jicksta/ami-ragel/stargazers","contributors_url":"https://api.github.com/repos/jicksta/ami-ragel/contributors","subscribers_url":"https://api.github.com/repos/jicksta/ami-ragel/subscribers","subscription_url":"https://api.github.com/repos/jicksta/ami-ragel/subscription","commits_url":"https://api.github.com/repos/jicksta/ami-ragel/commits{/sha}","git_commits_url":"https://api.github.com/repos/jicksta/ami-ragel/git/commits{/sha}","comments_url":"https://api.github.com/repos/jicksta/ami-ragel/comments{/number}","issue_comment_url":"https://api.github.com/repos/jicksta/ami-ragel/issues/comments/{number}","contents_url":"https://api.github.com/repos/jicksta/ami-ragel/contents/{+path}","compare_url":"https://api.github.com/repos/jicksta/ami-ragel/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jicksta/ami-ragel/merges","archive_url":"https://api.github.com/repos/jicksta/ami-ragel/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jicksta/ami-ragel/downloads","issues_url":"https://api.github.com/repos/jicksta/ami-ragel/issues{/number}","pulls_url":"https://api.github.com/repos/jicksta/ami-ragel/pulls{/number}","milestones_url":"https://api.github.com/repos/jicksta/ami-ragel/milestones{/number}","notifications_url":"https://api.github.com/repos/jicksta/ami-ragel/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jicksta/ami-ragel/labels{/name}"},{"id":1196,"name":"test","full_name":"weepy/test","owner":{"login":"weepy","id":820,"avatar_url":"https://0.gravatar.com/avatar/fccf42643feb2aaf9e6b4bfce0d737cc?d=https%3A%2F%2Fidenticons.github.com%2Fe2a2dcc36a08a345332c751b2f2e476c.png","gravatar_id":"fccf42643feb2aaf9e6b4bfce0d737cc","url":"https://api.github.com/users/weepy","html_url":"https://github.com/weepy","followers_url":"https://api.github.com/users/weepy/followers","following_url":"https://api.github.com/users/weepy/following{/other_user}","gists_url":"https://api.github.com/users/weepy/gists{/gist_id}","starred_url":"https://api.github.com/users/weepy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/weepy/subscriptions","organizations_url":"https://api.github.com/users/weepy/orgs","repos_url":"https://api.github.com/users/weepy/repos","events_url":"https://api.github.com/users/weepy/events{/privacy}","received_events_url":"https://api.github.com/users/weepy/received_events","type":"User"},"private":false,"html_url":"https://github.com/weepy/test","description":"test","fork":false,"url":"https://api.github.com/repos/weepy/test","forks_url":"https://api.github.com/repos/weepy/test/forks","keys_url":"https://api.github.com/repos/weepy/test/keys{/key_id}","collaborators_url":"https://api.github.com/repos/weepy/test/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/weepy/test/teams","hooks_url":"https://api.github.com/repos/weepy/test/hooks","issue_events_url":"https://api.github.com/repos/weepy/test/issues/events{/number}","events_url":"https://api.github.com/repos/weepy/test/events","assignees_url":"https://api.github.com/repos/weepy/test/assignees{/user}","branches_url":"https://api.github.com/repos/weepy/test/branches{/branch}","tags_url":"https://api.github.com/repos/weepy/test/tags","blobs_url":"https://api.github.com/repos/weepy/test/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/weepy/test/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/weepy/test/git/refs{/sha}","trees_url":"https://api.github.com/repos/weepy/test/git/trees{/sha}","statuses_url":"https://api.github.com/repos/weepy/test/statuses/{sha}","languages_url":"https://api.github.com/repos/weepy/test/languages","stargazers_url":"https://api.github.com/repos/weepy/test/stargazers","contributors_url":"https://api.github.com/repos/weepy/test/contributors","subscribers_url":"https://api.github.com/repos/weepy/test/subscribers","subscription_url":"https://api.github.com/repos/weepy/test/subscription","commits_url":"https://api.github.com/repos/weepy/test/commits{/sha}","git_commits_url":"https://api.github.com/repos/weepy/test/git/commits{/sha}","comments_url":"https://api.github.com/repos/weepy/test/comments{/number}","issue_comment_url":"https://api.github.com/repos/weepy/test/issues/comments/{number}","contents_url":"https://api.github.com/repos/weepy/test/contents/{+path}","compare_url":"https://api.github.com/repos/weepy/test/compare/{base}...{head}","merges_url":"https://api.github.com/repos/weepy/test/merges","archive_url":"https://api.github.com/repos/weepy/test/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/weepy/test/downloads","issues_url":"https://api.github.com/repos/weepy/test/issues{/number}","pulls_url":"https://api.github.com/repos/weepy/test/pulls{/number}","milestones_url":"https://api.github.com/repos/weepy/test/milestones{/number}","notifications_url":"https://api.github.com/repos/weepy/test/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/weepy/test/labels{/name}"},{"id":1208,"name":"hydrate","full_name":"olivM/hydrate","owner":{"login":"olivM","id":855,"avatar_url":"https://2.gravatar.com/avatar/0d4a250c55cc214768d6544ea43dc21f?d=https%3A%2F%2Fidenticons.github.com%2Faddfa9b7e234254d26e9c7f2af1005cb.png","gravatar_id":"0d4a250c55cc214768d6544ea43dc21f","url":"https://api.github.com/users/olivM","html_url":"https://github.com/olivM","followers_url":"https://api.github.com/users/olivM/followers","following_url":"https://api.github.com/users/olivM/following{/other_user}","gists_url":"https://api.github.com/users/olivM/gists{/gist_id}","starred_url":"https://api.github.com/users/olivM/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/olivM/subscriptions","organizations_url":"https://api.github.com/users/olivM/orgs","repos_url":"https://api.github.com/users/olivM/repos","events_url":"https://api.github.com/users/olivM/events{/privacy}","received_events_url":"https://api.github.com/users/olivM/received_events","type":"User"},"private":false,"html_url":"https://github.com/olivM/hydrate","description":"a blog hub (a daemon that aggregate items and re-publish them on differents platforms) : an attempt for a one4all blogging system","fork":false,"url":"https://api.github.com/repos/olivM/hydrate","forks_url":"https://api.github.com/repos/olivM/hydrate/forks","keys_url":"https://api.github.com/repos/olivM/hydrate/keys{/key_id}","collaborators_url":"https://api.github.com/repos/olivM/hydrate/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/olivM/hydrate/teams","hooks_url":"https://api.github.com/repos/olivM/hydrate/hooks","issue_events_url":"https://api.github.com/repos/olivM/hydrate/issues/events{/number}","events_url":"https://api.github.com/repos/olivM/hydrate/events","assignees_url":"https://api.github.com/repos/olivM/hydrate/assignees{/user}","branches_url":"https://api.github.com/repos/olivM/hydrate/branches{/branch}","tags_url":"https://api.github.com/repos/olivM/hydrate/tags","blobs_url":"https://api.github.com/repos/olivM/hydrate/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/olivM/hydrate/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/olivM/hydrate/git/refs{/sha}","trees_url":"https://api.github.com/repos/olivM/hydrate/git/trees{/sha}","statuses_url":"https://api.github.com/repos/olivM/hydrate/statuses/{sha}","languages_url":"https://api.github.com/repos/olivM/hydrate/languages","stargazers_url":"https://api.github.com/repos/olivM/hydrate/stargazers","contributors_url":"https://api.github.com/repos/olivM/hydrate/contributors","subscribers_url":"https://api.github.com/repos/olivM/hydrate/subscribers","subscription_url":"https://api.github.com/repos/olivM/hydrate/subscription","commits_url":"https://api.github.com/repos/olivM/hydrate/commits{/sha}","git_commits_url":"https://api.github.com/repos/olivM/hydrate/git/commits{/sha}","comments_url":"https://api.github.com/repos/olivM/hydrate/comments{/number}","issue_comment_url":"https://api.github.com/repos/olivM/hydrate/issues/comments/{number}","contents_url":"https://api.github.com/repos/olivM/hydrate/contents/{+path}","compare_url":"https://api.github.com/repos/olivM/hydrate/compare/{base}...{head}","merges_url":"https://api.github.com/repos/olivM/hydrate/merges","archive_url":"https://api.github.com/repos/olivM/hydrate/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/olivM/hydrate/downloads","issues_url":"https://api.github.com/repos/olivM/hydrate/issues{/number}","pulls_url":"https://api.github.com/repos/olivM/hydrate/pulls{/number}","milestones_url":"https://api.github.com/repos/olivM/hydrate/milestones{/number}","notifications_url":"https://api.github.com/repos/olivM/hydrate/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/olivM/hydrate/labels{/name}"},{"id":1212,"name":"pmpknpi","full_name":"sintaxi/pmpknpi","owner":{"login":"sintaxi","id":867,"avatar_url":"https://0.gravatar.com/avatar/bcf46750ba13cf50684639eecda1aa4f?d=https%3A%2F%2Fidenticons.github.com%2Fede7e2b6d13a41ddf9f4bdef84fdc737.png","gravatar_id":"bcf46750ba13cf50684639eecda1aa4f","url":"https://api.github.com/users/sintaxi","html_url":"https://github.com/sintaxi","followers_url":"https://api.github.com/users/sintaxi/followers","following_url":"https://api.github.com/users/sintaxi/following{/other_user}","gists_url":"https://api.github.com/users/sintaxi/gists{/gist_id}","starred_url":"https://api.github.com/users/sintaxi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sintaxi/subscriptions","organizations_url":"https://api.github.com/users/sintaxi/orgs","repos_url":"https://api.github.com/users/sintaxi/repos","events_url":"https://api.github.com/users/sintaxi/events{/privacy}","received_events_url":"https://api.github.com/users/sintaxi/received_events","type":"User"},"private":false,"html_url":"https://github.com/sintaxi/pmpknpi","description":"A RESTful Blog API written in Merb","fork":false,"url":"https://api.github.com/repos/sintaxi/pmpknpi","forks_url":"https://api.github.com/repos/sintaxi/pmpknpi/forks","keys_url":"https://api.github.com/repos/sintaxi/pmpknpi/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sintaxi/pmpknpi/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sintaxi/pmpknpi/teams","hooks_url":"https://api.github.com/repos/sintaxi/pmpknpi/hooks","issue_events_url":"https://api.github.com/repos/sintaxi/pmpknpi/issues/events{/number}","events_url":"https://api.github.com/repos/sintaxi/pmpknpi/events","assignees_url":"https://api.github.com/repos/sintaxi/pmpknpi/assignees{/user}","branches_url":"https://api.github.com/repos/sintaxi/pmpknpi/branches{/branch}","tags_url":"https://api.github.com/repos/sintaxi/pmpknpi/tags","blobs_url":"https://api.github.com/repos/sintaxi/pmpknpi/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sintaxi/pmpknpi/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sintaxi/pmpknpi/git/refs{/sha}","trees_url":"https://api.github.com/repos/sintaxi/pmpknpi/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sintaxi/pmpknpi/statuses/{sha}","languages_url":"https://api.github.com/repos/sintaxi/pmpknpi/languages","stargazers_url":"https://api.github.com/repos/sintaxi/pmpknpi/stargazers","contributors_url":"https://api.github.com/repos/sintaxi/pmpknpi/contributors","subscribers_url":"https://api.github.com/repos/sintaxi/pmpknpi/subscribers","subscription_url":"https://api.github.com/repos/sintaxi/pmpknpi/subscription","commits_url":"https://api.github.com/repos/sintaxi/pmpknpi/commits{/sha}","git_commits_url":"https://api.github.com/repos/sintaxi/pmpknpi/git/commits{/sha}","comments_url":"https://api.github.com/repos/sintaxi/pmpknpi/comments{/number}","issue_comment_url":"https://api.github.com/repos/sintaxi/pmpknpi/issues/comments/{number}","contents_url":"https://api.github.com/repos/sintaxi/pmpknpi/contents/{+path}","compare_url":"https://api.github.com/repos/sintaxi/pmpknpi/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sintaxi/pmpknpi/merges","archive_url":"https://api.github.com/repos/sintaxi/pmpknpi/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sintaxi/pmpknpi/downloads","issues_url":"https://api.github.com/repos/sintaxi/pmpknpi/issues{/number}","pulls_url":"https://api.github.com/repos/sintaxi/pmpknpi/pulls{/number}","milestones_url":"https://api.github.com/repos/sintaxi/pmpknpi/milestones{/number}","notifications_url":"https://api.github.com/repos/sintaxi/pmpknpi/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sintaxi/pmpknpi/labels{/name}"},{"id":1213,"name":"restful-authentication","full_name":"rmanalan/restful-authentication","owner":{"login":"rmanalan","id":549,"avatar_url":"https://0.gravatar.com/avatar/78c939ec0390fe89d78cdbf85e8e6856?d=https%3A%2F%2Fidenticons.github.com%2Fccb1d45fb76f7c5a0bf619f979c6cf36.png","gravatar_id":"78c939ec0390fe89d78cdbf85e8e6856","url":"https://api.github.com/users/rmanalan","html_url":"https://github.com/rmanalan","followers_url":"https://api.github.com/users/rmanalan/followers","following_url":"https://api.github.com/users/rmanalan/following{/other_user}","gists_url":"https://api.github.com/users/rmanalan/gists{/gist_id}","starred_url":"https://api.github.com/users/rmanalan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rmanalan/subscriptions","organizations_url":"https://api.github.com/users/rmanalan/orgs","repos_url":"https://api.github.com/users/rmanalan/repos","events_url":"https://api.github.com/users/rmanalan/events{/privacy}","received_events_url":"https://api.github.com/users/rmanalan/received_events","type":"User"},"private":false,"html_url":"https://github.com/rmanalan/restful-authentication","description":"Generates common user authentication code for Rails/Merb, with a full test/unit and rspec suite and optional Acts as State Machine support built-in. Added support for Oracle SSO authentication.","fork":true,"url":"https://api.github.com/repos/rmanalan/restful-authentication","forks_url":"https://api.github.com/repos/rmanalan/restful-authentication/forks","keys_url":"https://api.github.com/repos/rmanalan/restful-authentication/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rmanalan/restful-authentication/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rmanalan/restful-authentication/teams","hooks_url":"https://api.github.com/repos/rmanalan/restful-authentication/hooks","issue_events_url":"https://api.github.com/repos/rmanalan/restful-authentication/issues/events{/number}","events_url":"https://api.github.com/repos/rmanalan/restful-authentication/events","assignees_url":"https://api.github.com/repos/rmanalan/restful-authentication/assignees{/user}","branches_url":"https://api.github.com/repos/rmanalan/restful-authentication/branches{/branch}","tags_url":"https://api.github.com/repos/rmanalan/restful-authentication/tags","blobs_url":"https://api.github.com/repos/rmanalan/restful-authentication/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rmanalan/restful-authentication/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rmanalan/restful-authentication/git/refs{/sha}","trees_url":"https://api.github.com/repos/rmanalan/restful-authentication/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rmanalan/restful-authentication/statuses/{sha}","languages_url":"https://api.github.com/repos/rmanalan/restful-authentication/languages","stargazers_url":"https://api.github.com/repos/rmanalan/restful-authentication/stargazers","contributors_url":"https://api.github.com/repos/rmanalan/restful-authentication/contributors","subscribers_url":"https://api.github.com/repos/rmanalan/restful-authentication/subscribers","subscription_url":"https://api.github.com/repos/rmanalan/restful-authentication/subscription","commits_url":"https://api.github.com/repos/rmanalan/restful-authentication/commits{/sha}","git_commits_url":"https://api.github.com/repos/rmanalan/restful-authentication/git/commits{/sha}","comments_url":"https://api.github.com/repos/rmanalan/restful-authentication/comments{/number}","issue_comment_url":"https://api.github.com/repos/rmanalan/restful-authentication/issues/comments/{number}","contents_url":"https://api.github.com/repos/rmanalan/restful-authentication/contents/{+path}","compare_url":"https://api.github.com/repos/rmanalan/restful-authentication/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rmanalan/restful-authentication/merges","archive_url":"https://api.github.com/repos/rmanalan/restful-authentication/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rmanalan/restful-authentication/downloads","issues_url":"https://api.github.com/repos/rmanalan/restful-authentication/issues{/number}","pulls_url":"https://api.github.com/repos/rmanalan/restful-authentication/pulls{/number}","milestones_url":"https://api.github.com/repos/rmanalan/restful-authentication/milestones{/number}","notifications_url":"https://api.github.com/repos/rmanalan/restful-authentication/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rmanalan/restful-authentication/labels{/name}"},{"id":1217,"name":"facebox","full_name":"rmanalan/facebox","owner":{"login":"rmanalan","id":549,"avatar_url":"https://0.gravatar.com/avatar/78c939ec0390fe89d78cdbf85e8e6856?d=https%3A%2F%2Fidenticons.github.com%2Fccb1d45fb76f7c5a0bf619f979c6cf36.png","gravatar_id":"78c939ec0390fe89d78cdbf85e8e6856","url":"https://api.github.com/users/rmanalan","html_url":"https://github.com/rmanalan","followers_url":"https://api.github.com/users/rmanalan/followers","following_url":"https://api.github.com/users/rmanalan/following{/other_user}","gists_url":"https://api.github.com/users/rmanalan/gists{/gist_id}","starred_url":"https://api.github.com/users/rmanalan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rmanalan/subscriptions","organizations_url":"https://api.github.com/users/rmanalan/orgs","repos_url":"https://api.github.com/users/rmanalan/repos","events_url":"https://api.github.com/users/rmanalan/events{/privacy}","received_events_url":"https://api.github.com/users/rmanalan/received_events","type":"User"},"private":false,"html_url":"https://github.com/rmanalan/facebox","description":"Facebook-style lightbox, built in jQuery","fork":true,"url":"https://api.github.com/repos/rmanalan/facebox","forks_url":"https://api.github.com/repos/rmanalan/facebox/forks","keys_url":"https://api.github.com/repos/rmanalan/facebox/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rmanalan/facebox/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rmanalan/facebox/teams","hooks_url":"https://api.github.com/repos/rmanalan/facebox/hooks","issue_events_url":"https://api.github.com/repos/rmanalan/facebox/issues/events{/number}","events_url":"https://api.github.com/repos/rmanalan/facebox/events","assignees_url":"https://api.github.com/repos/rmanalan/facebox/assignees{/user}","branches_url":"https://api.github.com/repos/rmanalan/facebox/branches{/branch}","tags_url":"https://api.github.com/repos/rmanalan/facebox/tags","blobs_url":"https://api.github.com/repos/rmanalan/facebox/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rmanalan/facebox/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rmanalan/facebox/git/refs{/sha}","trees_url":"https://api.github.com/repos/rmanalan/facebox/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rmanalan/facebox/statuses/{sha}","languages_url":"https://api.github.com/repos/rmanalan/facebox/languages","stargazers_url":"https://api.github.com/repos/rmanalan/facebox/stargazers","contributors_url":"https://api.github.com/repos/rmanalan/facebox/contributors","subscribers_url":"https://api.github.com/repos/rmanalan/facebox/subscribers","subscription_url":"https://api.github.com/repos/rmanalan/facebox/subscription","commits_url":"https://api.github.com/repos/rmanalan/facebox/commits{/sha}","git_commits_url":"https://api.github.com/repos/rmanalan/facebox/git/commits{/sha}","comments_url":"https://api.github.com/repos/rmanalan/facebox/comments{/number}","issue_comment_url":"https://api.github.com/repos/rmanalan/facebox/issues/comments/{number}","contents_url":"https://api.github.com/repos/rmanalan/facebox/contents/{+path}","compare_url":"https://api.github.com/repos/rmanalan/facebox/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rmanalan/facebox/merges","archive_url":"https://api.github.com/repos/rmanalan/facebox/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rmanalan/facebox/downloads","issues_url":"https://api.github.com/repos/rmanalan/facebox/issues{/number}","pulls_url":"https://api.github.com/repos/rmanalan/facebox/pulls{/number}","milestones_url":"https://api.github.com/repos/rmanalan/facebox/milestones{/number}","notifications_url":"https://api.github.com/repos/rmanalan/facebox/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rmanalan/facebox/labels{/name}"},{"id":1220,"name":"gcbot","full_name":"halorgium/gcbot","owner":{"login":"halorgium","id":263,"avatar_url":"https://1.gravatar.com/avatar/3200c5348a7c08c2f20fdaceac6804b0?d=https%3A%2F%2Fidenticons.github.com%2F8c19f571e251e61cb8dd3612f26d5ecf.png","gravatar_id":"3200c5348a7c08c2f20fdaceac6804b0","url":"https://api.github.com/users/halorgium","html_url":"https://github.com/halorgium","followers_url":"https://api.github.com/users/halorgium/followers","following_url":"https://api.github.com/users/halorgium/following{/other_user}","gists_url":"https://api.github.com/users/halorgium/gists{/gist_id}","starred_url":"https://api.github.com/users/halorgium/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/halorgium/subscriptions","organizations_url":"https://api.github.com/users/halorgium/orgs","repos_url":"https://api.github.com/users/halorgium/repos","events_url":"https://api.github.com/users/halorgium/events{/privacy}","received_events_url":"https://api.github.com/users/halorgium/received_events","type":"User"},"private":false,"html_url":"https://github.com/halorgium/gcbot","description":"","fork":false,"url":"https://api.github.com/repos/halorgium/gcbot","forks_url":"https://api.github.com/repos/halorgium/gcbot/forks","keys_url":"https://api.github.com/repos/halorgium/gcbot/keys{/key_id}","collaborators_url":"https://api.github.com/repos/halorgium/gcbot/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/halorgium/gcbot/teams","hooks_url":"https://api.github.com/repos/halorgium/gcbot/hooks","issue_events_url":"https://api.github.com/repos/halorgium/gcbot/issues/events{/number}","events_url":"https://api.github.com/repos/halorgium/gcbot/events","assignees_url":"https://api.github.com/repos/halorgium/gcbot/assignees{/user}","branches_url":"https://api.github.com/repos/halorgium/gcbot/branches{/branch}","tags_url":"https://api.github.com/repos/halorgium/gcbot/tags","blobs_url":"https://api.github.com/repos/halorgium/gcbot/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/halorgium/gcbot/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/halorgium/gcbot/git/refs{/sha}","trees_url":"https://api.github.com/repos/halorgium/gcbot/git/trees{/sha}","statuses_url":"https://api.github.com/repos/halorgium/gcbot/statuses/{sha}","languages_url":"https://api.github.com/repos/halorgium/gcbot/languages","stargazers_url":"https://api.github.com/repos/halorgium/gcbot/stargazers","contributors_url":"https://api.github.com/repos/halorgium/gcbot/contributors","subscribers_url":"https://api.github.com/repos/halorgium/gcbot/subscribers","subscription_url":"https://api.github.com/repos/halorgium/gcbot/subscription","commits_url":"https://api.github.com/repos/halorgium/gcbot/commits{/sha}","git_commits_url":"https://api.github.com/repos/halorgium/gcbot/git/commits{/sha}","comments_url":"https://api.github.com/repos/halorgium/gcbot/comments{/number}","issue_comment_url":"https://api.github.com/repos/halorgium/gcbot/issues/comments/{number}","contents_url":"https://api.github.com/repos/halorgium/gcbot/contents/{+path}","compare_url":"https://api.github.com/repos/halorgium/gcbot/compare/{base}...{head}","merges_url":"https://api.github.com/repos/halorgium/gcbot/merges","archive_url":"https://api.github.com/repos/halorgium/gcbot/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/halorgium/gcbot/downloads","issues_url":"https://api.github.com/repos/halorgium/gcbot/issues{/number}","pulls_url":"https://api.github.com/repos/halorgium/gcbot/pulls{/number}","milestones_url":"https://api.github.com/repos/halorgium/gcbot/milestones{/number}","notifications_url":"https://api.github.com/repos/halorgium/gcbot/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/halorgium/gcbot/labels{/name}"},{"id":1227,"name":"will_paginate","full_name":"mislav/will_paginate","owner":{"login":"mislav","id":887,"avatar_url":"https://0.gravatar.com/avatar/8f93a872e399bc1353cc8d4e791d5401?d=https%3A%2F%2Fidenticons.github.com%2F7ce3284b743aefde80ffd9aec500e085.png","gravatar_id":"8f93a872e399bc1353cc8d4e791d5401","url":"https://api.github.com/users/mislav","html_url":"https://github.com/mislav","followers_url":"https://api.github.com/users/mislav/followers","following_url":"https://api.github.com/users/mislav/following{/other_user}","gists_url":"https://api.github.com/users/mislav/gists{/gist_id}","starred_url":"https://api.github.com/users/mislav/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mislav/subscriptions","organizations_url":"https://api.github.com/users/mislav/orgs","repos_url":"https://api.github.com/users/mislav/repos","events_url":"https://api.github.com/users/mislav/events{/privacy}","received_events_url":"https://api.github.com/users/mislav/received_events","type":"User"},"private":false,"html_url":"https://github.com/mislav/will_paginate","description":"Pagination library for Rails 3, Sinatra, Merb, DataMapper, and more","fork":false,"url":"https://api.github.com/repos/mislav/will_paginate","forks_url":"https://api.github.com/repos/mislav/will_paginate/forks","keys_url":"https://api.github.com/repos/mislav/will_paginate/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mislav/will_paginate/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mislav/will_paginate/teams","hooks_url":"https://api.github.com/repos/mislav/will_paginate/hooks","issue_events_url":"https://api.github.com/repos/mislav/will_paginate/issues/events{/number}","events_url":"https://api.github.com/repos/mislav/will_paginate/events","assignees_url":"https://api.github.com/repos/mislav/will_paginate/assignees{/user}","branches_url":"https://api.github.com/repos/mislav/will_paginate/branches{/branch}","tags_url":"https://api.github.com/repos/mislav/will_paginate/tags","blobs_url":"https://api.github.com/repos/mislav/will_paginate/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mislav/will_paginate/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mislav/will_paginate/git/refs{/sha}","trees_url":"https://api.github.com/repos/mislav/will_paginate/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mislav/will_paginate/statuses/{sha}","languages_url":"https://api.github.com/repos/mislav/will_paginate/languages","stargazers_url":"https://api.github.com/repos/mislav/will_paginate/stargazers","contributors_url":"https://api.github.com/repos/mislav/will_paginate/contributors","subscribers_url":"https://api.github.com/repos/mislav/will_paginate/subscribers","subscription_url":"https://api.github.com/repos/mislav/will_paginate/subscription","commits_url":"https://api.github.com/repos/mislav/will_paginate/commits{/sha}","git_commits_url":"https://api.github.com/repos/mislav/will_paginate/git/commits{/sha}","comments_url":"https://api.github.com/repos/mislav/will_paginate/comments{/number}","issue_comment_url":"https://api.github.com/repos/mislav/will_paginate/issues/comments/{number}","contents_url":"https://api.github.com/repos/mislav/will_paginate/contents/{+path}","compare_url":"https://api.github.com/repos/mislav/will_paginate/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mislav/will_paginate/merges","archive_url":"https://api.github.com/repos/mislav/will_paginate/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mislav/will_paginate/downloads","issues_url":"https://api.github.com/repos/mislav/will_paginate/issues{/number}","pulls_url":"https://api.github.com/repos/mislav/will_paginate/pulls{/number}","milestones_url":"https://api.github.com/repos/mislav/will_paginate/milestones{/number}","notifications_url":"https://api.github.com/repos/mislav/will_paginate/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mislav/will_paginate/labels{/name}"},{"id":1233,"name":"socialgraph-viewer","full_name":"rmanalan/socialgraph-viewer","owner":{"login":"rmanalan","id":549,"avatar_url":"https://0.gravatar.com/avatar/78c939ec0390fe89d78cdbf85e8e6856?d=https%3A%2F%2Fidenticons.github.com%2Fccb1d45fb76f7c5a0bf619f979c6cf36.png","gravatar_id":"78c939ec0390fe89d78cdbf85e8e6856","url":"https://api.github.com/users/rmanalan","html_url":"https://github.com/rmanalan","followers_url":"https://api.github.com/users/rmanalan/followers","following_url":"https://api.github.com/users/rmanalan/following{/other_user}","gists_url":"https://api.github.com/users/rmanalan/gists{/gist_id}","starred_url":"https://api.github.com/users/rmanalan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rmanalan/subscriptions","organizations_url":"https://api.github.com/users/rmanalan/orgs","repos_url":"https://api.github.com/users/rmanalan/repos","events_url":"https://api.github.com/users/rmanalan/events{/privacy}","received_events_url":"https://api.github.com/users/rmanalan/received_events","type":"User"},"private":false,"html_url":"https://github.com/rmanalan/socialgraph-viewer","description":"Simple social graph javascript viewer. Uses the Google Social Graph API","fork":false,"url":"https://api.github.com/repos/rmanalan/socialgraph-viewer","forks_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/forks","keys_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/teams","hooks_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/hooks","issue_events_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/issues/events{/number}","events_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/events","assignees_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/assignees{/user}","branches_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/branches{/branch}","tags_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/tags","blobs_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/git/refs{/sha}","trees_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/statuses/{sha}","languages_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/languages","stargazers_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/stargazers","contributors_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/contributors","subscribers_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/subscribers","subscription_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/subscription","commits_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/commits{/sha}","git_commits_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/git/commits{/sha}","comments_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/comments{/number}","issue_comment_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/issues/comments/{number}","contents_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/contents/{+path}","compare_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/merges","archive_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/downloads","issues_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/issues{/number}","pulls_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/pulls{/number}","milestones_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/milestones{/number}","notifications_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rmanalan/socialgraph-viewer/labels{/name}"},{"id":1234,"name":"ruvi","full_name":"lypanov/ruvi","owner":{"login":"lypanov","id":311,"avatar_url":"https://2.gravatar.com/avatar/fde764988033c802599aa33705dce509?d=https%3A%2F%2Fidenticons.github.com%2F9dfcd5e558dfa04aaf37f137a1d9d3e5.png","gravatar_id":"fde764988033c802599aa33705dce509","url":"https://api.github.com/users/lypanov","html_url":"https://github.com/lypanov","followers_url":"https://api.github.com/users/lypanov/followers","following_url":"https://api.github.com/users/lypanov/following{/other_user}","gists_url":"https://api.github.com/users/lypanov/gists{/gist_id}","starred_url":"https://api.github.com/users/lypanov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lypanov/subscriptions","organizations_url":"https://api.github.com/users/lypanov/orgs","repos_url":"https://api.github.com/users/lypanov/repos","events_url":"https://api.github.com/users/lypanov/events{/privacy}","received_events_url":"https://api.github.com/users/lypanov/received_events","type":"User"},"private":false,"html_url":"https://github.com/lypanov/ruvi","description":"vi wannebe written in ruby","fork":false,"url":"https://api.github.com/repos/lypanov/ruvi","forks_url":"https://api.github.com/repos/lypanov/ruvi/forks","keys_url":"https://api.github.com/repos/lypanov/ruvi/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lypanov/ruvi/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lypanov/ruvi/teams","hooks_url":"https://api.github.com/repos/lypanov/ruvi/hooks","issue_events_url":"https://api.github.com/repos/lypanov/ruvi/issues/events{/number}","events_url":"https://api.github.com/repos/lypanov/ruvi/events","assignees_url":"https://api.github.com/repos/lypanov/ruvi/assignees{/user}","branches_url":"https://api.github.com/repos/lypanov/ruvi/branches{/branch}","tags_url":"https://api.github.com/repos/lypanov/ruvi/tags","blobs_url":"https://api.github.com/repos/lypanov/ruvi/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lypanov/ruvi/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lypanov/ruvi/git/refs{/sha}","trees_url":"https://api.github.com/repos/lypanov/ruvi/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lypanov/ruvi/statuses/{sha}","languages_url":"https://api.github.com/repos/lypanov/ruvi/languages","stargazers_url":"https://api.github.com/repos/lypanov/ruvi/stargazers","contributors_url":"https://api.github.com/repos/lypanov/ruvi/contributors","subscribers_url":"https://api.github.com/repos/lypanov/ruvi/subscribers","subscription_url":"https://api.github.com/repos/lypanov/ruvi/subscription","commits_url":"https://api.github.com/repos/lypanov/ruvi/commits{/sha}","git_commits_url":"https://api.github.com/repos/lypanov/ruvi/git/commits{/sha}","comments_url":"https://api.github.com/repos/lypanov/ruvi/comments{/number}","issue_comment_url":"https://api.github.com/repos/lypanov/ruvi/issues/comments/{number}","contents_url":"https://api.github.com/repos/lypanov/ruvi/contents/{+path}","compare_url":"https://api.github.com/repos/lypanov/ruvi/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lypanov/ruvi/merges","archive_url":"https://api.github.com/repos/lypanov/ruvi/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lypanov/ruvi/downloads","issues_url":"https://api.github.com/repos/lypanov/ruvi/issues{/number}","pulls_url":"https://api.github.com/repos/lypanov/ruvi/pulls{/number}","milestones_url":"https://api.github.com/repos/lypanov/ruvi/milestones{/number}","notifications_url":"https://api.github.com/repos/lypanov/ruvi/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lypanov/ruvi/labels{/name}"},{"id":1241,"name":"soco","full_name":"caius/soco","owner":{"login":"caius","id":696,"avatar_url":"https://0.gravatar.com/avatar/ad072c8b8e23a18a49eddb6517490fa1?d=https%3A%2F%2Fidenticons.github.com%2F0cb929eae7a499e50248a3a78f7acfc7.png","gravatar_id":"ad072c8b8e23a18a49eddb6517490fa1","url":"https://api.github.com/users/caius","html_url":"https://github.com/caius","followers_url":"https://api.github.com/users/caius/followers","following_url":"https://api.github.com/users/caius/following{/other_user}","gists_url":"https://api.github.com/users/caius/gists{/gist_id}","starred_url":"https://api.github.com/users/caius/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/caius/subscriptions","organizations_url":"https://api.github.com/users/caius/orgs","repos_url":"https://api.github.com/users/caius/repos","events_url":"https://api.github.com/users/caius/events{/privacy}","received_events_url":"https://api.github.com/users/caius/received_events","type":"User"},"private":false,"html_url":"https://github.com/caius/soco","description":"A static file dynamically generated website backend","fork":false,"url":"https://api.github.com/repos/caius/soco","forks_url":"https://api.github.com/repos/caius/soco/forks","keys_url":"https://api.github.com/repos/caius/soco/keys{/key_id}","collaborators_url":"https://api.github.com/repos/caius/soco/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/caius/soco/teams","hooks_url":"https://api.github.com/repos/caius/soco/hooks","issue_events_url":"https://api.github.com/repos/caius/soco/issues/events{/number}","events_url":"https://api.github.com/repos/caius/soco/events","assignees_url":"https://api.github.com/repos/caius/soco/assignees{/user}","branches_url":"https://api.github.com/repos/caius/soco/branches{/branch}","tags_url":"https://api.github.com/repos/caius/soco/tags","blobs_url":"https://api.github.com/repos/caius/soco/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/caius/soco/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/caius/soco/git/refs{/sha}","trees_url":"https://api.github.com/repos/caius/soco/git/trees{/sha}","statuses_url":"https://api.github.com/repos/caius/soco/statuses/{sha}","languages_url":"https://api.github.com/repos/caius/soco/languages","stargazers_url":"https://api.github.com/repos/caius/soco/stargazers","contributors_url":"https://api.github.com/repos/caius/soco/contributors","subscribers_url":"https://api.github.com/repos/caius/soco/subscribers","subscription_url":"https://api.github.com/repos/caius/soco/subscription","commits_url":"https://api.github.com/repos/caius/soco/commits{/sha}","git_commits_url":"https://api.github.com/repos/caius/soco/git/commits{/sha}","comments_url":"https://api.github.com/repos/caius/soco/comments{/number}","issue_comment_url":"https://api.github.com/repos/caius/soco/issues/comments/{number}","contents_url":"https://api.github.com/repos/caius/soco/contents/{+path}","compare_url":"https://api.github.com/repos/caius/soco/compare/{base}...{head}","merges_url":"https://api.github.com/repos/caius/soco/merges","archive_url":"https://api.github.com/repos/caius/soco/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/caius/soco/downloads","issues_url":"https://api.github.com/repos/caius/soco/issues{/number}","pulls_url":"https://api.github.com/repos/caius/soco/pulls{/number}","milestones_url":"https://api.github.com/repos/caius/soco/milestones{/number}","notifications_url":"https://api.github.com/repos/caius/soco/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/caius/soco/labels{/name}"},{"id":1249,"name":"ruby-gsl","full_name":"codahale/ruby-gsl","owner":{"login":"codahale","id":207,"avatar_url":"https://2.gravatar.com/avatar/87206f3bf53d403e16ec023c56e904c5?d=https%3A%2F%2Fidenticons.github.com%2F69adc1e107f7f7d035d7baf04342e1ca.png","gravatar_id":"87206f3bf53d403e16ec023c56e904c5","url":"https://api.github.com/users/codahale","html_url":"https://github.com/codahale","followers_url":"https://api.github.com/users/codahale/followers","following_url":"https://api.github.com/users/codahale/following{/other_user}","gists_url":"https://api.github.com/users/codahale/gists{/gist_id}","starred_url":"https://api.github.com/users/codahale/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codahale/subscriptions","organizations_url":"https://api.github.com/users/codahale/orgs","repos_url":"https://api.github.com/users/codahale/repos","events_url":"https://api.github.com/users/codahale/events{/privacy}","received_events_url":"https://api.github.com/users/codahale/received_events","type":"User"},"private":false,"html_url":"https://github.com/codahale/ruby-gsl","description":"[ABANDONED] New development on the Ruby bindings for the GNU Scientific Library","fork":false,"url":"https://api.github.com/repos/codahale/ruby-gsl","forks_url":"https://api.github.com/repos/codahale/ruby-gsl/forks","keys_url":"https://api.github.com/repos/codahale/ruby-gsl/keys{/key_id}","collaborators_url":"https://api.github.com/repos/codahale/ruby-gsl/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/codahale/ruby-gsl/teams","hooks_url":"https://api.github.com/repos/codahale/ruby-gsl/hooks","issue_events_url":"https://api.github.com/repos/codahale/ruby-gsl/issues/events{/number}","events_url":"https://api.github.com/repos/codahale/ruby-gsl/events","assignees_url":"https://api.github.com/repos/codahale/ruby-gsl/assignees{/user}","branches_url":"https://api.github.com/repos/codahale/ruby-gsl/branches{/branch}","tags_url":"https://api.github.com/repos/codahale/ruby-gsl/tags","blobs_url":"https://api.github.com/repos/codahale/ruby-gsl/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/codahale/ruby-gsl/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/codahale/ruby-gsl/git/refs{/sha}","trees_url":"https://api.github.com/repos/codahale/ruby-gsl/git/trees{/sha}","statuses_url":"https://api.github.com/repos/codahale/ruby-gsl/statuses/{sha}","languages_url":"https://api.github.com/repos/codahale/ruby-gsl/languages","stargazers_url":"https://api.github.com/repos/codahale/ruby-gsl/stargazers","contributors_url":"https://api.github.com/repos/codahale/ruby-gsl/contributors","subscribers_url":"https://api.github.com/repos/codahale/ruby-gsl/subscribers","subscription_url":"https://api.github.com/repos/codahale/ruby-gsl/subscription","commits_url":"https://api.github.com/repos/codahale/ruby-gsl/commits{/sha}","git_commits_url":"https://api.github.com/repos/codahale/ruby-gsl/git/commits{/sha}","comments_url":"https://api.github.com/repos/codahale/ruby-gsl/comments{/number}","issue_comment_url":"https://api.github.com/repos/codahale/ruby-gsl/issues/comments/{number}","contents_url":"https://api.github.com/repos/codahale/ruby-gsl/contents/{+path}","compare_url":"https://api.github.com/repos/codahale/ruby-gsl/compare/{base}...{head}","merges_url":"https://api.github.com/repos/codahale/ruby-gsl/merges","archive_url":"https://api.github.com/repos/codahale/ruby-gsl/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/codahale/ruby-gsl/downloads","issues_url":"https://api.github.com/repos/codahale/ruby-gsl/issues{/number}","pulls_url":"https://api.github.com/repos/codahale/ruby-gsl/pulls{/number}","milestones_url":"https://api.github.com/repos/codahale/ruby-gsl/milestones{/number}","notifications_url":"https://api.github.com/repos/codahale/ruby-gsl/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/codahale/ruby-gsl/labels{/name}"},{"id":1252,"name":"yard","full_name":"lsegal/yard","owner":{"login":"lsegal","id":686,"avatar_url":"https://0.gravatar.com/avatar/510395998b7e929a8f48dc8cdb087379?d=https%3A%2F%2Fidenticons.github.com%2F109a0ca3bc27f3e96597370d5c8cf03d.png","gravatar_id":"510395998b7e929a8f48dc8cdb087379","url":"https://api.github.com/users/lsegal","html_url":"https://github.com/lsegal","followers_url":"https://api.github.com/users/lsegal/followers","following_url":"https://api.github.com/users/lsegal/following{/other_user}","gists_url":"https://api.github.com/users/lsegal/gists{/gist_id}","starred_url":"https://api.github.com/users/lsegal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lsegal/subscriptions","organizations_url":"https://api.github.com/users/lsegal/orgs","repos_url":"https://api.github.com/users/lsegal/repos","events_url":"https://api.github.com/users/lsegal/events{/privacy}","received_events_url":"https://api.github.com/users/lsegal/received_events","type":"User"},"private":false,"html_url":"https://github.com/lsegal/yard","description":"YARD is a Ruby Documentation tool. The Y stands for \"Yay!\"","fork":false,"url":"https://api.github.com/repos/lsegal/yard","forks_url":"https://api.github.com/repos/lsegal/yard/forks","keys_url":"https://api.github.com/repos/lsegal/yard/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lsegal/yard/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lsegal/yard/teams","hooks_url":"https://api.github.com/repos/lsegal/yard/hooks","issue_events_url":"https://api.github.com/repos/lsegal/yard/issues/events{/number}","events_url":"https://api.github.com/repos/lsegal/yard/events","assignees_url":"https://api.github.com/repos/lsegal/yard/assignees{/user}","branches_url":"https://api.github.com/repos/lsegal/yard/branches{/branch}","tags_url":"https://api.github.com/repos/lsegal/yard/tags","blobs_url":"https://api.github.com/repos/lsegal/yard/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lsegal/yard/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lsegal/yard/git/refs{/sha}","trees_url":"https://api.github.com/repos/lsegal/yard/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lsegal/yard/statuses/{sha}","languages_url":"https://api.github.com/repos/lsegal/yard/languages","stargazers_url":"https://api.github.com/repos/lsegal/yard/stargazers","contributors_url":"https://api.github.com/repos/lsegal/yard/contributors","subscribers_url":"https://api.github.com/repos/lsegal/yard/subscribers","subscription_url":"https://api.github.com/repos/lsegal/yard/subscription","commits_url":"https://api.github.com/repos/lsegal/yard/commits{/sha}","git_commits_url":"https://api.github.com/repos/lsegal/yard/git/commits{/sha}","comments_url":"https://api.github.com/repos/lsegal/yard/comments{/number}","issue_comment_url":"https://api.github.com/repos/lsegal/yard/issues/comments/{number}","contents_url":"https://api.github.com/repos/lsegal/yard/contents/{+path}","compare_url":"https://api.github.com/repos/lsegal/yard/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lsegal/yard/merges","archive_url":"https://api.github.com/repos/lsegal/yard/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lsegal/yard/downloads","issues_url":"https://api.github.com/repos/lsegal/yard/issues{/number}","pulls_url":"https://api.github.com/repos/lsegal/yard/pulls{/number}","milestones_url":"https://api.github.com/repos/lsegal/yard/milestones{/number}","notifications_url":"https://api.github.com/repos/lsegal/yard/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lsegal/yard/labels{/name}"},{"id":1253,"name":"castanaut","full_name":"joseph/castanaut","owner":{"login":"joseph","id":900,"avatar_url":"https://0.gravatar.com/avatar/dba7eb74aae18f1045ac33579736949b?d=https%3A%2F%2Fidenticons.github.com%2Facf4b89d3d503d8252c9c4ba75ddbf6d.png","gravatar_id":"dba7eb74aae18f1045ac33579736949b","url":"https://api.github.com/users/joseph","html_url":"https://github.com/joseph","followers_url":"https://api.github.com/users/joseph/followers","following_url":"https://api.github.com/users/joseph/following{/other_user}","gists_url":"https://api.github.com/users/joseph/gists{/gist_id}","starred_url":"https://api.github.com/users/joseph/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/joseph/subscriptions","organizations_url":"https://api.github.com/users/joseph/orgs","repos_url":"https://api.github.com/users/joseph/repos","events_url":"https://api.github.com/users/joseph/events{/privacy}","received_events_url":"https://api.github.com/users/joseph/received_events","type":"User"},"private":false,"html_url":"https://github.com/joseph/castanaut","description":" Castanaut lets you write executable scripts for your screencasts. With a simple dictionary of stage directions, you can create complex interactions with a variety of applications.","fork":false,"url":"https://api.github.com/repos/joseph/castanaut","forks_url":"https://api.github.com/repos/joseph/castanaut/forks","keys_url":"https://api.github.com/repos/joseph/castanaut/keys{/key_id}","collaborators_url":"https://api.github.com/repos/joseph/castanaut/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/joseph/castanaut/teams","hooks_url":"https://api.github.com/repos/joseph/castanaut/hooks","issue_events_url":"https://api.github.com/repos/joseph/castanaut/issues/events{/number}","events_url":"https://api.github.com/repos/joseph/castanaut/events","assignees_url":"https://api.github.com/repos/joseph/castanaut/assignees{/user}","branches_url":"https://api.github.com/repos/joseph/castanaut/branches{/branch}","tags_url":"https://api.github.com/repos/joseph/castanaut/tags","blobs_url":"https://api.github.com/repos/joseph/castanaut/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/joseph/castanaut/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/joseph/castanaut/git/refs{/sha}","trees_url":"https://api.github.com/repos/joseph/castanaut/git/trees{/sha}","statuses_url":"https://api.github.com/repos/joseph/castanaut/statuses/{sha}","languages_url":"https://api.github.com/repos/joseph/castanaut/languages","stargazers_url":"https://api.github.com/repos/joseph/castanaut/stargazers","contributors_url":"https://api.github.com/repos/joseph/castanaut/contributors","subscribers_url":"https://api.github.com/repos/joseph/castanaut/subscribers","subscription_url":"https://api.github.com/repos/joseph/castanaut/subscription","commits_url":"https://api.github.com/repos/joseph/castanaut/commits{/sha}","git_commits_url":"https://api.github.com/repos/joseph/castanaut/git/commits{/sha}","comments_url":"https://api.github.com/repos/joseph/castanaut/comments{/number}","issue_comment_url":"https://api.github.com/repos/joseph/castanaut/issues/comments/{number}","contents_url":"https://api.github.com/repos/joseph/castanaut/contents/{+path}","compare_url":"https://api.github.com/repos/joseph/castanaut/compare/{base}...{head}","merges_url":"https://api.github.com/repos/joseph/castanaut/merges","archive_url":"https://api.github.com/repos/joseph/castanaut/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/joseph/castanaut/downloads","issues_url":"https://api.github.com/repos/joseph/castanaut/issues{/number}","pulls_url":"https://api.github.com/repos/joseph/castanaut/pulls{/number}","milestones_url":"https://api.github.com/repos/joseph/castanaut/milestones{/number}","notifications_url":"https://api.github.com/repos/joseph/castanaut/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/joseph/castanaut/labels{/name}"},{"id":1259,"name":"ruby-tmbundle","full_name":"drnic/ruby-tmbundle","owner":{"login":"drnic","id":108,"avatar_url":"https://1.gravatar.com/avatar/cb2b768a5e546b24052ea03334e43676?d=https%3A%2F%2Fidenticons.github.com%2Fa3c65c2974270fd093ee8a9bf8ae7d0b.png","gravatar_id":"cb2b768a5e546b24052ea03334e43676","url":"https://api.github.com/users/drnic","html_url":"https://github.com/drnic","followers_url":"https://api.github.com/users/drnic/followers","following_url":"https://api.github.com/users/drnic/following{/other_user}","gists_url":"https://api.github.com/users/drnic/gists{/gist_id}","starred_url":"https://api.github.com/users/drnic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/drnic/subscriptions","organizations_url":"https://api.github.com/users/drnic/orgs","repos_url":"https://api.github.com/users/drnic/repos","events_url":"https://api.github.com/users/drnic/events{/privacy}","received_events_url":"https://api.github.com/users/drnic/received_events","type":"User"},"private":false,"html_url":"https://github.com/drnic/ruby-tmbundle","description":"Ruby TextMate bundle","fork":false,"url":"https://api.github.com/repos/drnic/ruby-tmbundle","forks_url":"https://api.github.com/repos/drnic/ruby-tmbundle/forks","keys_url":"https://api.github.com/repos/drnic/ruby-tmbundle/keys{/key_id}","collaborators_url":"https://api.github.com/repos/drnic/ruby-tmbundle/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/drnic/ruby-tmbundle/teams","hooks_url":"https://api.github.com/repos/drnic/ruby-tmbundle/hooks","issue_events_url":"https://api.github.com/repos/drnic/ruby-tmbundle/issues/events{/number}","events_url":"https://api.github.com/repos/drnic/ruby-tmbundle/events","assignees_url":"https://api.github.com/repos/drnic/ruby-tmbundle/assignees{/user}","branches_url":"https://api.github.com/repos/drnic/ruby-tmbundle/branches{/branch}","tags_url":"https://api.github.com/repos/drnic/ruby-tmbundle/tags","blobs_url":"https://api.github.com/repos/drnic/ruby-tmbundle/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/drnic/ruby-tmbundle/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/drnic/ruby-tmbundle/git/refs{/sha}","trees_url":"https://api.github.com/repos/drnic/ruby-tmbundle/git/trees{/sha}","statuses_url":"https://api.github.com/repos/drnic/ruby-tmbundle/statuses/{sha}","languages_url":"https://api.github.com/repos/drnic/ruby-tmbundle/languages","stargazers_url":"https://api.github.com/repos/drnic/ruby-tmbundle/stargazers","contributors_url":"https://api.github.com/repos/drnic/ruby-tmbundle/contributors","subscribers_url":"https://api.github.com/repos/drnic/ruby-tmbundle/subscribers","subscription_url":"https://api.github.com/repos/drnic/ruby-tmbundle/subscription","commits_url":"https://api.github.com/repos/drnic/ruby-tmbundle/commits{/sha}","git_commits_url":"https://api.github.com/repos/drnic/ruby-tmbundle/git/commits{/sha}","comments_url":"https://api.github.com/repos/drnic/ruby-tmbundle/comments{/number}","issue_comment_url":"https://api.github.com/repos/drnic/ruby-tmbundle/issues/comments/{number}","contents_url":"https://api.github.com/repos/drnic/ruby-tmbundle/contents/{+path}","compare_url":"https://api.github.com/repos/drnic/ruby-tmbundle/compare/{base}...{head}","merges_url":"https://api.github.com/repos/drnic/ruby-tmbundle/merges","archive_url":"https://api.github.com/repos/drnic/ruby-tmbundle/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/drnic/ruby-tmbundle/downloads","issues_url":"https://api.github.com/repos/drnic/ruby-tmbundle/issues{/number}","pulls_url":"https://api.github.com/repos/drnic/ruby-tmbundle/pulls{/number}","milestones_url":"https://api.github.com/repos/drnic/ruby-tmbundle/milestones{/number}","notifications_url":"https://api.github.com/repos/drnic/ruby-tmbundle/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/drnic/ruby-tmbundle/labels{/name}"},{"id":1298,"name":"html-tmbundle","full_name":"drnic/html-tmbundle","owner":{"login":"drnic","id":108,"avatar_url":"https://1.gravatar.com/avatar/cb2b768a5e546b24052ea03334e43676?d=https%3A%2F%2Fidenticons.github.com%2Fa3c65c2974270fd093ee8a9bf8ae7d0b.png","gravatar_id":"cb2b768a5e546b24052ea03334e43676","url":"https://api.github.com/users/drnic","html_url":"https://github.com/drnic","followers_url":"https://api.github.com/users/drnic/followers","following_url":"https://api.github.com/users/drnic/following{/other_user}","gists_url":"https://api.github.com/users/drnic/gists{/gist_id}","starred_url":"https://api.github.com/users/drnic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/drnic/subscriptions","organizations_url":"https://api.github.com/users/drnic/orgs","repos_url":"https://api.github.com/users/drnic/repos","events_url":"https://api.github.com/users/drnic/events{/privacy}","received_events_url":"https://api.github.com/users/drnic/received_events","type":"User"},"private":false,"html_url":"https://github.com/drnic/html-tmbundle","description":"HTML TextMate bundle","fork":false,"url":"https://api.github.com/repos/drnic/html-tmbundle","forks_url":"https://api.github.com/repos/drnic/html-tmbundle/forks","keys_url":"https://api.github.com/repos/drnic/html-tmbundle/keys{/key_id}","collaborators_url":"https://api.github.com/repos/drnic/html-tmbundle/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/drnic/html-tmbundle/teams","hooks_url":"https://api.github.com/repos/drnic/html-tmbundle/hooks","issue_events_url":"https://api.github.com/repos/drnic/html-tmbundle/issues/events{/number}","events_url":"https://api.github.com/repos/drnic/html-tmbundle/events","assignees_url":"https://api.github.com/repos/drnic/html-tmbundle/assignees{/user}","branches_url":"https://api.github.com/repos/drnic/html-tmbundle/branches{/branch}","tags_url":"https://api.github.com/repos/drnic/html-tmbundle/tags","blobs_url":"https://api.github.com/repos/drnic/html-tmbundle/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/drnic/html-tmbundle/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/drnic/html-tmbundle/git/refs{/sha}","trees_url":"https://api.github.com/repos/drnic/html-tmbundle/git/trees{/sha}","statuses_url":"https://api.github.com/repos/drnic/html-tmbundle/statuses/{sha}","languages_url":"https://api.github.com/repos/drnic/html-tmbundle/languages","stargazers_url":"https://api.github.com/repos/drnic/html-tmbundle/stargazers","contributors_url":"https://api.github.com/repos/drnic/html-tmbundle/contributors","subscribers_url":"https://api.github.com/repos/drnic/html-tmbundle/subscribers","subscription_url":"https://api.github.com/repos/drnic/html-tmbundle/subscription","commits_url":"https://api.github.com/repos/drnic/html-tmbundle/commits{/sha}","git_commits_url":"https://api.github.com/repos/drnic/html-tmbundle/git/commits{/sha}","comments_url":"https://api.github.com/repos/drnic/html-tmbundle/comments{/number}","issue_comment_url":"https://api.github.com/repos/drnic/html-tmbundle/issues/comments/{number}","contents_url":"https://api.github.com/repos/drnic/html-tmbundle/contents/{+path}","compare_url":"https://api.github.com/repos/drnic/html-tmbundle/compare/{base}...{head}","merges_url":"https://api.github.com/repos/drnic/html-tmbundle/merges","archive_url":"https://api.github.com/repos/drnic/html-tmbundle/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/drnic/html-tmbundle/downloads","issues_url":"https://api.github.com/repos/drnic/html-tmbundle/issues{/number}","pulls_url":"https://api.github.com/repos/drnic/html-tmbundle/pulls{/number}","milestones_url":"https://api.github.com/repos/drnic/html-tmbundle/milestones{/number}","notifications_url":"https://api.github.com/repos/drnic/html-tmbundle/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/drnic/html-tmbundle/labels{/name}"},{"id":1299,"name":"orb","full_name":"noin/orb","owner":{"login":"noin","id":840,"avatar_url":"https://2.gravatar.com/avatar/f08f6910e7ad06bf8709bc3ffd4f7031?d=https%3A%2F%2Fidenticons.github.com%2Ffa83a11a198d5a7f0bf77a1987bcd006.png","gravatar_id":"f08f6910e7ad06bf8709bc3ffd4f7031","url":"https://api.github.com/users/noin","html_url":"https://github.com/noin","followers_url":"https://api.github.com/users/noin/followers","following_url":"https://api.github.com/users/noin/following{/other_user}","gists_url":"https://api.github.com/users/noin/gists{/gist_id}","starred_url":"https://api.github.com/users/noin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/noin/subscriptions","organizations_url":"https://api.github.com/users/noin/orgs","repos_url":"https://api.github.com/users/noin/repos","events_url":"https://api.github.com/users/noin/events{/privacy}","received_events_url":"https://api.github.com/users/noin/received_events","type":"User"},"private":false,"html_url":"https://github.com/noin/orb","description":"nFlux-Orb","fork":false,"url":"https://api.github.com/repos/noin/orb","forks_url":"https://api.github.com/repos/noin/orb/forks","keys_url":"https://api.github.com/repos/noin/orb/keys{/key_id}","collaborators_url":"https://api.github.com/repos/noin/orb/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/noin/orb/teams","hooks_url":"https://api.github.com/repos/noin/orb/hooks","issue_events_url":"https://api.github.com/repos/noin/orb/issues/events{/number}","events_url":"https://api.github.com/repos/noin/orb/events","assignees_url":"https://api.github.com/repos/noin/orb/assignees{/user}","branches_url":"https://api.github.com/repos/noin/orb/branches{/branch}","tags_url":"https://api.github.com/repos/noin/orb/tags","blobs_url":"https://api.github.com/repos/noin/orb/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/noin/orb/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/noin/orb/git/refs{/sha}","trees_url":"https://api.github.com/repos/noin/orb/git/trees{/sha}","statuses_url":"https://api.github.com/repos/noin/orb/statuses/{sha}","languages_url":"https://api.github.com/repos/noin/orb/languages","stargazers_url":"https://api.github.com/repos/noin/orb/stargazers","contributors_url":"https://api.github.com/repos/noin/orb/contributors","subscribers_url":"https://api.github.com/repos/noin/orb/subscribers","subscription_url":"https://api.github.com/repos/noin/orb/subscription","commits_url":"https://api.github.com/repos/noin/orb/commits{/sha}","git_commits_url":"https://api.github.com/repos/noin/orb/git/commits{/sha}","comments_url":"https://api.github.com/repos/noin/orb/comments{/number}","issue_comment_url":"https://api.github.com/repos/noin/orb/issues/comments/{number}","contents_url":"https://api.github.com/repos/noin/orb/contents/{+path}","compare_url":"https://api.github.com/repos/noin/orb/compare/{base}...{head}","merges_url":"https://api.github.com/repos/noin/orb/merges","archive_url":"https://api.github.com/repos/noin/orb/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/noin/orb/downloads","issues_url":"https://api.github.com/repos/noin/orb/issues{/number}","pulls_url":"https://api.github.com/repos/noin/orb/pulls{/number}","milestones_url":"https://api.github.com/repos/noin/orb/milestones{/number}","notifications_url":"https://api.github.com/repos/noin/orb/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/noin/orb/labels{/name}"},{"id":1302,"name":"ikhebhonger","full_name":"bart-xx/ikhebhonger","owner":{"login":"bart-xx","id":909,"avatar_url":"https://1.gravatar.com/avatar/6d723250f9c1c093ee16b53a09448d8c?d=https%3A%2F%2Fidenticons.github.com%2Fa4300b002bcfb71f291dac175d52df94.png","gravatar_id":"6d723250f9c1c093ee16b53a09448d8c","url":"https://api.github.com/users/bart-xx","html_url":"https://github.com/bart-xx","followers_url":"https://api.github.com/users/bart-xx/followers","following_url":"https://api.github.com/users/bart-xx/following{/other_user}","gists_url":"https://api.github.com/users/bart-xx/gists{/gist_id}","starred_url":"https://api.github.com/users/bart-xx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bart-xx/subscriptions","organizations_url":"https://api.github.com/users/bart-xx/orgs","repos_url":"https://api.github.com/users/bart-xx/repos","events_url":"https://api.github.com/users/bart-xx/events{/privacy}","received_events_url":"https://api.github.com/users/bart-xx/received_events","type":"User"},"private":false,"html_url":"https://github.com/bart-xx/ikhebhonger","description":"Restaurant mashup site","fork":false,"url":"https://api.github.com/repos/bart-xx/ikhebhonger","forks_url":"https://api.github.com/repos/bart-xx/ikhebhonger/forks","keys_url":"https://api.github.com/repos/bart-xx/ikhebhonger/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bart-xx/ikhebhonger/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bart-xx/ikhebhonger/teams","hooks_url":"https://api.github.com/repos/bart-xx/ikhebhonger/hooks","issue_events_url":"https://api.github.com/repos/bart-xx/ikhebhonger/issues/events{/number}","events_url":"https://api.github.com/repos/bart-xx/ikhebhonger/events","assignees_url":"https://api.github.com/repos/bart-xx/ikhebhonger/assignees{/user}","branches_url":"https://api.github.com/repos/bart-xx/ikhebhonger/branches{/branch}","tags_url":"https://api.github.com/repos/bart-xx/ikhebhonger/tags","blobs_url":"https://api.github.com/repos/bart-xx/ikhebhonger/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bart-xx/ikhebhonger/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bart-xx/ikhebhonger/git/refs{/sha}","trees_url":"https://api.github.com/repos/bart-xx/ikhebhonger/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bart-xx/ikhebhonger/statuses/{sha}","languages_url":"https://api.github.com/repos/bart-xx/ikhebhonger/languages","stargazers_url":"https://api.github.com/repos/bart-xx/ikhebhonger/stargazers","contributors_url":"https://api.github.com/repos/bart-xx/ikhebhonger/contributors","subscribers_url":"https://api.github.com/repos/bart-xx/ikhebhonger/subscribers","subscription_url":"https://api.github.com/repos/bart-xx/ikhebhonger/subscription","commits_url":"https://api.github.com/repos/bart-xx/ikhebhonger/commits{/sha}","git_commits_url":"https://api.github.com/repos/bart-xx/ikhebhonger/git/commits{/sha}","comments_url":"https://api.github.com/repos/bart-xx/ikhebhonger/comments{/number}","issue_comment_url":"https://api.github.com/repos/bart-xx/ikhebhonger/issues/comments/{number}","contents_url":"https://api.github.com/repos/bart-xx/ikhebhonger/contents/{+path}","compare_url":"https://api.github.com/repos/bart-xx/ikhebhonger/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bart-xx/ikhebhonger/merges","archive_url":"https://api.github.com/repos/bart-xx/ikhebhonger/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bart-xx/ikhebhonger/downloads","issues_url":"https://api.github.com/repos/bart-xx/ikhebhonger/issues{/number}","pulls_url":"https://api.github.com/repos/bart-xx/ikhebhonger/pulls{/number}","milestones_url":"https://api.github.com/repos/bart-xx/ikhebhonger/milestones{/number}","notifications_url":"https://api.github.com/repos/bart-xx/ikhebhonger/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bart-xx/ikhebhonger/labels{/name}"},{"id":1303,"name":"permalizer","full_name":"revans/permalizer","owner":{"login":"revans","id":394,"avatar_url":"https://0.gravatar.com/avatar/bc5fbb4a793359c2c527e37edfa470a2?d=https%3A%2F%2Fidenticons.github.com%2F28f0b864598a1291557bed248a998d4e.png","gravatar_id":"bc5fbb4a793359c2c527e37edfa470a2","url":"https://api.github.com/users/revans","html_url":"https://github.com/revans","followers_url":"https://api.github.com/users/revans/followers","following_url":"https://api.github.com/users/revans/following{/other_user}","gists_url":"https://api.github.com/users/revans/gists{/gist_id}","starred_url":"https://api.github.com/users/revans/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/revans/subscriptions","organizations_url":"https://api.github.com/users/revans/orgs","repos_url":"https://api.github.com/users/revans/repos","events_url":"https://api.github.com/users/revans/events{/privacy}","received_events_url":"https://api.github.com/users/revans/received_events","type":"User"},"private":false,"html_url":"https://github.com/revans/permalizer","description":"An easy way to create Permalinks.","fork":false,"url":"https://api.github.com/repos/revans/permalizer","forks_url":"https://api.github.com/repos/revans/permalizer/forks","keys_url":"https://api.github.com/repos/revans/permalizer/keys{/key_id}","collaborators_url":"https://api.github.com/repos/revans/permalizer/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/revans/permalizer/teams","hooks_url":"https://api.github.com/repos/revans/permalizer/hooks","issue_events_url":"https://api.github.com/repos/revans/permalizer/issues/events{/number}","events_url":"https://api.github.com/repos/revans/permalizer/events","assignees_url":"https://api.github.com/repos/revans/permalizer/assignees{/user}","branches_url":"https://api.github.com/repos/revans/permalizer/branches{/branch}","tags_url":"https://api.github.com/repos/revans/permalizer/tags","blobs_url":"https://api.github.com/repos/revans/permalizer/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/revans/permalizer/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/revans/permalizer/git/refs{/sha}","trees_url":"https://api.github.com/repos/revans/permalizer/git/trees{/sha}","statuses_url":"https://api.github.com/repos/revans/permalizer/statuses/{sha}","languages_url":"https://api.github.com/repos/revans/permalizer/languages","stargazers_url":"https://api.github.com/repos/revans/permalizer/stargazers","contributors_url":"https://api.github.com/repos/revans/permalizer/contributors","subscribers_url":"https://api.github.com/repos/revans/permalizer/subscribers","subscription_url":"https://api.github.com/repos/revans/permalizer/subscription","commits_url":"https://api.github.com/repos/revans/permalizer/commits{/sha}","git_commits_url":"https://api.github.com/repos/revans/permalizer/git/commits{/sha}","comments_url":"https://api.github.com/repos/revans/permalizer/comments{/number}","issue_comment_url":"https://api.github.com/repos/revans/permalizer/issues/comments/{number}","contents_url":"https://api.github.com/repos/revans/permalizer/contents/{+path}","compare_url":"https://api.github.com/repos/revans/permalizer/compare/{base}...{head}","merges_url":"https://api.github.com/repos/revans/permalizer/merges","archive_url":"https://api.github.com/repos/revans/permalizer/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/revans/permalizer/downloads","issues_url":"https://api.github.com/repos/revans/permalizer/issues{/number}","pulls_url":"https://api.github.com/repos/revans/permalizer/pulls{/number}","milestones_url":"https://api.github.com/repos/revans/permalizer/milestones{/number}","notifications_url":"https://api.github.com/repos/revans/permalizer/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/revans/permalizer/labels{/name}"},{"id":1318,"name":"sprinkle","full_name":"sprinkle-tool/sprinkle","owner":{"login":"sprinkle-tool","id":4121318,"avatar_url":"https://identicons.github.com/e5cfb82e868d055ce1ddbebed117d622.png","gravatar_id":null,"url":"https://api.github.com/users/sprinkle-tool","html_url":"https://github.com/sprinkle-tool","followers_url":"https://api.github.com/users/sprinkle-tool/followers","following_url":"https://api.github.com/users/sprinkle-tool/following{/other_user}","gists_url":"https://api.github.com/users/sprinkle-tool/gists{/gist_id}","starred_url":"https://api.github.com/users/sprinkle-tool/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sprinkle-tool/subscriptions","organizations_url":"https://api.github.com/users/sprinkle-tool/orgs","repos_url":"https://api.github.com/users/sprinkle-tool/repos","events_url":"https://api.github.com/users/sprinkle-tool/events{/privacy}","received_events_url":"https://api.github.com/users/sprinkle-tool/received_events","type":"Organization"},"private":false,"html_url":"https://github.com/sprinkle-tool/sprinkle","description":"Sprinkle is a software provisioning tool you can use to build remote servers with. eg. to install a Rails, or Sinatra stack on a brand new slice directly after its been created","fork":false,"url":"https://api.github.com/repos/sprinkle-tool/sprinkle","forks_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/forks","keys_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/teams","hooks_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/hooks","issue_events_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/issues/events{/number}","events_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/events","assignees_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/assignees{/user}","branches_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/branches{/branch}","tags_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/tags","blobs_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/git/refs{/sha}","trees_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/statuses/{sha}","languages_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/languages","stargazers_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/stargazers","contributors_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/contributors","subscribers_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/subscribers","subscription_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/subscription","commits_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/commits{/sha}","git_commits_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/git/commits{/sha}","comments_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/comments{/number}","issue_comment_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/issues/comments/{number}","contents_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/contents/{+path}","compare_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/merges","archive_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/downloads","issues_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/issues{/number}","pulls_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/pulls{/number}","milestones_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/milestones{/number}","notifications_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sprinkle-tool/sprinkle/labels{/name}"},{"id":1321,"name":"wlwdeezerplayer","full_name":"julesss/wlwdeezerplayer","owner":{"login":"julesss","id":929,"avatar_url":"https://identicons.github.com/0d0871f0806eae32d30983b62252da50.png","gravatar_id":null,"url":"https://api.github.com/users/julesss","html_url":"https://github.com/julesss","followers_url":"https://api.github.com/users/julesss/followers","following_url":"https://api.github.com/users/julesss/following{/other_user}","gists_url":"https://api.github.com/users/julesss/gists{/gist_id}","starred_url":"https://api.github.com/users/julesss/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/julesss/subscriptions","organizations_url":"https://api.github.com/users/julesss/orgs","repos_url":"https://api.github.com/users/julesss/repos","events_url":"https://api.github.com/users/julesss/events{/privacy}","received_events_url":"https://api.github.com/users/julesss/received_events","type":"User"},"private":false,"html_url":"https://github.com/julesss/wlwdeezerplayer","description":"Lets you insert a Deezer player in your blog using Windows Live Writer","fork":false,"url":"https://api.github.com/repos/julesss/wlwdeezerplayer","forks_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/forks","keys_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/keys{/key_id}","collaborators_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/teams","hooks_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/hooks","issue_events_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/issues/events{/number}","events_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/events","assignees_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/assignees{/user}","branches_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/branches{/branch}","tags_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/tags","blobs_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/git/refs{/sha}","trees_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/git/trees{/sha}","statuses_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/statuses/{sha}","languages_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/languages","stargazers_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/stargazers","contributors_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/contributors","subscribers_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/subscribers","subscription_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/subscription","commits_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/commits{/sha}","git_commits_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/git/commits{/sha}","comments_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/comments{/number}","issue_comment_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/issues/comments/{number}","contents_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/contents/{+path}","compare_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/compare/{base}...{head}","merges_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/merges","archive_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/downloads","issues_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/issues{/number}","pulls_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/pulls{/number}","milestones_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/milestones{/number}","notifications_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/julesss/wlwdeezerplayer/labels{/name}"},{"id":1344,"name":"utility-belt","full_name":"gilesbowkett/utility-belt","owner":{"login":"gilesbowkett","id":974,"avatar_url":"https://2.gravatar.com/avatar/ce8b03e5750097942c58e12b46724312?d=https%3A%2F%2Fidenticons.github.com%2F4311359ed4969e8401880e3c1836fbe1.png","gravatar_id":"ce8b03e5750097942c58e12b46724312","url":"https://api.github.com/users/gilesbowkett","html_url":"https://github.com/gilesbowkett","followers_url":"https://api.github.com/users/gilesbowkett/followers","following_url":"https://api.github.com/users/gilesbowkett/following{/other_user}","gists_url":"https://api.github.com/users/gilesbowkett/gists{/gist_id}","starred_url":"https://api.github.com/users/gilesbowkett/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gilesbowkett/subscriptions","organizations_url":"https://api.github.com/users/gilesbowkett/orgs","repos_url":"https://api.github.com/users/gilesbowkett/repos","events_url":"https://api.github.com/users/gilesbowkett/events{/privacy}","received_events_url":"https://api.github.com/users/gilesbowkett/received_events","type":"User"},"private":false,"html_url":"https://github.com/gilesbowkett/utility-belt","description":"IRB Power User Utility Belt","fork":false,"url":"https://api.github.com/repos/gilesbowkett/utility-belt","forks_url":"https://api.github.com/repos/gilesbowkett/utility-belt/forks","keys_url":"https://api.github.com/repos/gilesbowkett/utility-belt/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gilesbowkett/utility-belt/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gilesbowkett/utility-belt/teams","hooks_url":"https://api.github.com/repos/gilesbowkett/utility-belt/hooks","issue_events_url":"https://api.github.com/repos/gilesbowkett/utility-belt/issues/events{/number}","events_url":"https://api.github.com/repos/gilesbowkett/utility-belt/events","assignees_url":"https://api.github.com/repos/gilesbowkett/utility-belt/assignees{/user}","branches_url":"https://api.github.com/repos/gilesbowkett/utility-belt/branches{/branch}","tags_url":"https://api.github.com/repos/gilesbowkett/utility-belt/tags","blobs_url":"https://api.github.com/repos/gilesbowkett/utility-belt/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gilesbowkett/utility-belt/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gilesbowkett/utility-belt/git/refs{/sha}","trees_url":"https://api.github.com/repos/gilesbowkett/utility-belt/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gilesbowkett/utility-belt/statuses/{sha}","languages_url":"https://api.github.com/repos/gilesbowkett/utility-belt/languages","stargazers_url":"https://api.github.com/repos/gilesbowkett/utility-belt/stargazers","contributors_url":"https://api.github.com/repos/gilesbowkett/utility-belt/contributors","subscribers_url":"https://api.github.com/repos/gilesbowkett/utility-belt/subscribers","subscription_url":"https://api.github.com/repos/gilesbowkett/utility-belt/subscription","commits_url":"https://api.github.com/repos/gilesbowkett/utility-belt/commits{/sha}","git_commits_url":"https://api.github.com/repos/gilesbowkett/utility-belt/git/commits{/sha}","comments_url":"https://api.github.com/repos/gilesbowkett/utility-belt/comments{/number}","issue_comment_url":"https://api.github.com/repos/gilesbowkett/utility-belt/issues/comments/{number}","contents_url":"https://api.github.com/repos/gilesbowkett/utility-belt/contents/{+path}","compare_url":"https://api.github.com/repos/gilesbowkett/utility-belt/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gilesbowkett/utility-belt/merges","archive_url":"https://api.github.com/repos/gilesbowkett/utility-belt/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gilesbowkett/utility-belt/downloads","issues_url":"https://api.github.com/repos/gilesbowkett/utility-belt/issues{/number}","pulls_url":"https://api.github.com/repos/gilesbowkett/utility-belt/pulls{/number}","milestones_url":"https://api.github.com/repos/gilesbowkett/utility-belt/milestones{/number}","notifications_url":"https://api.github.com/repos/gilesbowkett/utility-belt/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gilesbowkett/utility-belt/labels{/name}"},{"id":1353,"name":"restful-authentication","full_name":"labria/restful-authentication","owner":{"login":"labria","id":323,"avatar_url":"https://1.gravatar.com/avatar/f5049506664636c6cc725099367bd167?d=https%3A%2F%2Fidenticons.github.com%2Fbc6dc48b743dc5d013b1abaebd2faed2.png","gravatar_id":"f5049506664636c6cc725099367bd167","url":"https://api.github.com/users/labria","html_url":"https://github.com/labria","followers_url":"https://api.github.com/users/labria/followers","following_url":"https://api.github.com/users/labria/following{/other_user}","gists_url":"https://api.github.com/users/labria/gists{/gist_id}","starred_url":"https://api.github.com/users/labria/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/labria/subscriptions","organizations_url":"https://api.github.com/users/labria/orgs","repos_url":"https://api.github.com/users/labria/repos","events_url":"https://api.github.com/users/labria/events{/privacy}","received_events_url":"https://api.github.com/users/labria/received_events","type":"User"},"private":false,"html_url":"https://github.com/labria/restful-authentication","description":"Attempt to add SSL client certificate support to the restful_authenctication plugin","fork":true,"url":"https://api.github.com/repos/labria/restful-authentication","forks_url":"https://api.github.com/repos/labria/restful-authentication/forks","keys_url":"https://api.github.com/repos/labria/restful-authentication/keys{/key_id}","collaborators_url":"https://api.github.com/repos/labria/restful-authentication/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/labria/restful-authentication/teams","hooks_url":"https://api.github.com/repos/labria/restful-authentication/hooks","issue_events_url":"https://api.github.com/repos/labria/restful-authentication/issues/events{/number}","events_url":"https://api.github.com/repos/labria/restful-authentication/events","assignees_url":"https://api.github.com/repos/labria/restful-authentication/assignees{/user}","branches_url":"https://api.github.com/repos/labria/restful-authentication/branches{/branch}","tags_url":"https://api.github.com/repos/labria/restful-authentication/tags","blobs_url":"https://api.github.com/repos/labria/restful-authentication/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/labria/restful-authentication/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/labria/restful-authentication/git/refs{/sha}","trees_url":"https://api.github.com/repos/labria/restful-authentication/git/trees{/sha}","statuses_url":"https://api.github.com/repos/labria/restful-authentication/statuses/{sha}","languages_url":"https://api.github.com/repos/labria/restful-authentication/languages","stargazers_url":"https://api.github.com/repos/labria/restful-authentication/stargazers","contributors_url":"https://api.github.com/repos/labria/restful-authentication/contributors","subscribers_url":"https://api.github.com/repos/labria/restful-authentication/subscribers","subscription_url":"https://api.github.com/repos/labria/restful-authentication/subscription","commits_url":"https://api.github.com/repos/labria/restful-authentication/commits{/sha}","git_commits_url":"https://api.github.com/repos/labria/restful-authentication/git/commits{/sha}","comments_url":"https://api.github.com/repos/labria/restful-authentication/comments{/number}","issue_comment_url":"https://api.github.com/repos/labria/restful-authentication/issues/comments/{number}","contents_url":"https://api.github.com/repos/labria/restful-authentication/contents/{+path}","compare_url":"https://api.github.com/repos/labria/restful-authentication/compare/{base}...{head}","merges_url":"https://api.github.com/repos/labria/restful-authentication/merges","archive_url":"https://api.github.com/repos/labria/restful-authentication/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/labria/restful-authentication/downloads","issues_url":"https://api.github.com/repos/labria/restful-authentication/issues{/number}","pulls_url":"https://api.github.com/repos/labria/restful-authentication/pulls{/number}","milestones_url":"https://api.github.com/repos/labria/restful-authentication/milestones{/number}","notifications_url":"https://api.github.com/repos/labria/restful-authentication/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/labria/restful-authentication/labels{/name}"},{"id":1355,"name":"ruby-screen","full_name":"dpetersen/ruby-screen","owner":{"login":"dpetersen","id":408,"avatar_url":"https://2.gravatar.com/avatar/5cc7967fc5c25199c88410bc56eb1329?d=https%3A%2F%2Fidenticons.github.com%2F0d0fd7c6e093f7b804fa0150b875b868.png","gravatar_id":"5cc7967fc5c25199c88410bc56eb1329","url":"https://api.github.com/users/dpetersen","html_url":"https://github.com/dpetersen","followers_url":"https://api.github.com/users/dpetersen/followers","following_url":"https://api.github.com/users/dpetersen/following{/other_user}","gists_url":"https://api.github.com/users/dpetersen/gists{/gist_id}","starred_url":"https://api.github.com/users/dpetersen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dpetersen/subscriptions","organizations_url":"https://api.github.com/users/dpetersen/orgs","repos_url":"https://api.github.com/users/dpetersen/repos","events_url":"https://api.github.com/users/dpetersen/events{/privacy}","received_events_url":"https://api.github.com/users/dpetersen/received_events","type":"User"},"private":false,"html_url":"https://github.com/dpetersen/ruby-screen","description":"A utility to supplement GNU Screen, easing use of custom configurations, packaged as a RubyGem.","fork":false,"url":"https://api.github.com/repos/dpetersen/ruby-screen","forks_url":"https://api.github.com/repos/dpetersen/ruby-screen/forks","keys_url":"https://api.github.com/repos/dpetersen/ruby-screen/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dpetersen/ruby-screen/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dpetersen/ruby-screen/teams","hooks_url":"https://api.github.com/repos/dpetersen/ruby-screen/hooks","issue_events_url":"https://api.github.com/repos/dpetersen/ruby-screen/issues/events{/number}","events_url":"https://api.github.com/repos/dpetersen/ruby-screen/events","assignees_url":"https://api.github.com/repos/dpetersen/ruby-screen/assignees{/user}","branches_url":"https://api.github.com/repos/dpetersen/ruby-screen/branches{/branch}","tags_url":"https://api.github.com/repos/dpetersen/ruby-screen/tags","blobs_url":"https://api.github.com/repos/dpetersen/ruby-screen/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dpetersen/ruby-screen/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dpetersen/ruby-screen/git/refs{/sha}","trees_url":"https://api.github.com/repos/dpetersen/ruby-screen/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dpetersen/ruby-screen/statuses/{sha}","languages_url":"https://api.github.com/repos/dpetersen/ruby-screen/languages","stargazers_url":"https://api.github.com/repos/dpetersen/ruby-screen/stargazers","contributors_url":"https://api.github.com/repos/dpetersen/ruby-screen/contributors","subscribers_url":"https://api.github.com/repos/dpetersen/ruby-screen/subscribers","subscription_url":"https://api.github.com/repos/dpetersen/ruby-screen/subscription","commits_url":"https://api.github.com/repos/dpetersen/ruby-screen/commits{/sha}","git_commits_url":"https://api.github.com/repos/dpetersen/ruby-screen/git/commits{/sha}","comments_url":"https://api.github.com/repos/dpetersen/ruby-screen/comments{/number}","issue_comment_url":"https://api.github.com/repos/dpetersen/ruby-screen/issues/comments/{number}","contents_url":"https://api.github.com/repos/dpetersen/ruby-screen/contents/{+path}","compare_url":"https://api.github.com/repos/dpetersen/ruby-screen/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dpetersen/ruby-screen/merges","archive_url":"https://api.github.com/repos/dpetersen/ruby-screen/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dpetersen/ruby-screen/downloads","issues_url":"https://api.github.com/repos/dpetersen/ruby-screen/issues{/number}","pulls_url":"https://api.github.com/repos/dpetersen/ruby-screen/pulls{/number}","milestones_url":"https://api.github.com/repos/dpetersen/ruby-screen/milestones{/number}","notifications_url":"https://api.github.com/repos/dpetersen/ruby-screen/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dpetersen/ruby-screen/labels{/name}"},{"id":1364,"name":"eatingsafe","full_name":"aharper/eatingsafe","owner":{"login":"aharper","id":1002,"avatar_url":"https://identicons.github.com/fba9d88164f3e2d9109ee770223212a0.png","gravatar_id":null,"url":"https://api.github.com/users/aharper","html_url":"https://github.com/aharper","followers_url":"https://api.github.com/users/aharper/followers","following_url":"https://api.github.com/users/aharper/following{/other_user}","gists_url":"https://api.github.com/users/aharper/gists{/gist_id}","starred_url":"https://api.github.com/users/aharper/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aharper/subscriptions","organizations_url":"https://api.github.com/users/aharper/orgs","repos_url":"https://api.github.com/users/aharper/repos","events_url":"https://api.github.com/users/aharper/events{/privacy}","received_events_url":"https://api.github.com/users/aharper/received_events","type":"User"},"private":false,"html_url":"https://github.com/aharper/eatingsafe","description":"","fork":false,"url":"https://api.github.com/repos/aharper/eatingsafe","forks_url":"https://api.github.com/repos/aharper/eatingsafe/forks","keys_url":"https://api.github.com/repos/aharper/eatingsafe/keys{/key_id}","collaborators_url":"https://api.github.com/repos/aharper/eatingsafe/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/aharper/eatingsafe/teams","hooks_url":"https://api.github.com/repos/aharper/eatingsafe/hooks","issue_events_url":"https://api.github.com/repos/aharper/eatingsafe/issues/events{/number}","events_url":"https://api.github.com/repos/aharper/eatingsafe/events","assignees_url":"https://api.github.com/repos/aharper/eatingsafe/assignees{/user}","branches_url":"https://api.github.com/repos/aharper/eatingsafe/branches{/branch}","tags_url":"https://api.github.com/repos/aharper/eatingsafe/tags","blobs_url":"https://api.github.com/repos/aharper/eatingsafe/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/aharper/eatingsafe/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/aharper/eatingsafe/git/refs{/sha}","trees_url":"https://api.github.com/repos/aharper/eatingsafe/git/trees{/sha}","statuses_url":"https://api.github.com/repos/aharper/eatingsafe/statuses/{sha}","languages_url":"https://api.github.com/repos/aharper/eatingsafe/languages","stargazers_url":"https://api.github.com/repos/aharper/eatingsafe/stargazers","contributors_url":"https://api.github.com/repos/aharper/eatingsafe/contributors","subscribers_url":"https://api.github.com/repos/aharper/eatingsafe/subscribers","subscription_url":"https://api.github.com/repos/aharper/eatingsafe/subscription","commits_url":"https://api.github.com/repos/aharper/eatingsafe/commits{/sha}","git_commits_url":"https://api.github.com/repos/aharper/eatingsafe/git/commits{/sha}","comments_url":"https://api.github.com/repos/aharper/eatingsafe/comments{/number}","issue_comment_url":"https://api.github.com/repos/aharper/eatingsafe/issues/comments/{number}","contents_url":"https://api.github.com/repos/aharper/eatingsafe/contents/{+path}","compare_url":"https://api.github.com/repos/aharper/eatingsafe/compare/{base}...{head}","merges_url":"https://api.github.com/repos/aharper/eatingsafe/merges","archive_url":"https://api.github.com/repos/aharper/eatingsafe/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/aharper/eatingsafe/downloads","issues_url":"https://api.github.com/repos/aharper/eatingsafe/issues{/number}","pulls_url":"https://api.github.com/repos/aharper/eatingsafe/pulls{/number}","milestones_url":"https://api.github.com/repos/aharper/eatingsafe/milestones{/number}","notifications_url":"https://api.github.com/repos/aharper/eatingsafe/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/aharper/eatingsafe/labels{/name}"},{"id":1377,"name":"name_parser","full_name":"bricooke/name_parser","owner":{"login":"bricooke","id":977,"avatar_url":"https://1.gravatar.com/avatar/916de6eec58087391b518c5ac3ac7f47?d=https%3A%2F%2Fidenticons.github.com%2Fcc1aa436277138f61cda703991069eaf.png","gravatar_id":"916de6eec58087391b518c5ac3ac7f47","url":"https://api.github.com/users/bricooke","html_url":"https://github.com/bricooke","followers_url":"https://api.github.com/users/bricooke/followers","following_url":"https://api.github.com/users/bricooke/following{/other_user}","gists_url":"https://api.github.com/users/bricooke/gists{/gist_id}","starred_url":"https://api.github.com/users/bricooke/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bricooke/subscriptions","organizations_url":"https://api.github.com/users/bricooke/orgs","repos_url":"https://api.github.com/users/bricooke/repos","events_url":"https://api.github.com/users/bricooke/events{/privacy}","received_events_url":"https://api.github.com/users/bricooke/received_events","type":"User"},"private":false,"html_url":"https://github.com/bricooke/name_parser","description":"Gem for parsing names into first, last, middle, prefix and suffix","fork":false,"url":"https://api.github.com/repos/bricooke/name_parser","forks_url":"https://api.github.com/repos/bricooke/name_parser/forks","keys_url":"https://api.github.com/repos/bricooke/name_parser/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bricooke/name_parser/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bricooke/name_parser/teams","hooks_url":"https://api.github.com/repos/bricooke/name_parser/hooks","issue_events_url":"https://api.github.com/repos/bricooke/name_parser/issues/events{/number}","events_url":"https://api.github.com/repos/bricooke/name_parser/events","assignees_url":"https://api.github.com/repos/bricooke/name_parser/assignees{/user}","branches_url":"https://api.github.com/repos/bricooke/name_parser/branches{/branch}","tags_url":"https://api.github.com/repos/bricooke/name_parser/tags","blobs_url":"https://api.github.com/repos/bricooke/name_parser/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bricooke/name_parser/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bricooke/name_parser/git/refs{/sha}","trees_url":"https://api.github.com/repos/bricooke/name_parser/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bricooke/name_parser/statuses/{sha}","languages_url":"https://api.github.com/repos/bricooke/name_parser/languages","stargazers_url":"https://api.github.com/repos/bricooke/name_parser/stargazers","contributors_url":"https://api.github.com/repos/bricooke/name_parser/contributors","subscribers_url":"https://api.github.com/repos/bricooke/name_parser/subscribers","subscription_url":"https://api.github.com/repos/bricooke/name_parser/subscription","commits_url":"https://api.github.com/repos/bricooke/name_parser/commits{/sha}","git_commits_url":"https://api.github.com/repos/bricooke/name_parser/git/commits{/sha}","comments_url":"https://api.github.com/repos/bricooke/name_parser/comments{/number}","issue_comment_url":"https://api.github.com/repos/bricooke/name_parser/issues/comments/{number}","contents_url":"https://api.github.com/repos/bricooke/name_parser/contents/{+path}","compare_url":"https://api.github.com/repos/bricooke/name_parser/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bricooke/name_parser/merges","archive_url":"https://api.github.com/repos/bricooke/name_parser/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bricooke/name_parser/downloads","issues_url":"https://api.github.com/repos/bricooke/name_parser/issues{/number}","pulls_url":"https://api.github.com/repos/bricooke/name_parser/pulls{/number}","milestones_url":"https://api.github.com/repos/bricooke/name_parser/milestones{/number}","notifications_url":"https://api.github.com/repos/bricooke/name_parser/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bricooke/name_parser/labels{/name}"},{"id":1381,"name":"ext_scaffold","full_name":"drudru/ext_scaffold","owner":{"login":"drudru","id":546,"avatar_url":"https://identicons.github.com/ed265bc903a5a097f61d3ec064d96d2e.png","gravatar_id":null,"url":"https://api.github.com/users/drudru","html_url":"https://github.com/drudru","followers_url":"https://api.github.com/users/drudru/followers","following_url":"https://api.github.com/users/drudru/following{/other_user}","gists_url":"https://api.github.com/users/drudru/gists{/gist_id}","starred_url":"https://api.github.com/users/drudru/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/drudru/subscriptions","organizations_url":"https://api.github.com/users/drudru/orgs","repos_url":"https://api.github.com/users/drudru/repos","events_url":"https://api.github.com/users/drudru/events{/privacy}","received_events_url":"https://api.github.com/users/drudru/received_events","type":"User"},"private":false,"html_url":"https://github.com/drudru/ext_scaffold","description":"copy of ext_scaffold","fork":false,"url":"https://api.github.com/repos/drudru/ext_scaffold","forks_url":"https://api.github.com/repos/drudru/ext_scaffold/forks","keys_url":"https://api.github.com/repos/drudru/ext_scaffold/keys{/key_id}","collaborators_url":"https://api.github.com/repos/drudru/ext_scaffold/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/drudru/ext_scaffold/teams","hooks_url":"https://api.github.com/repos/drudru/ext_scaffold/hooks","issue_events_url":"https://api.github.com/repos/drudru/ext_scaffold/issues/events{/number}","events_url":"https://api.github.com/repos/drudru/ext_scaffold/events","assignees_url":"https://api.github.com/repos/drudru/ext_scaffold/assignees{/user}","branches_url":"https://api.github.com/repos/drudru/ext_scaffold/branches{/branch}","tags_url":"https://api.github.com/repos/drudru/ext_scaffold/tags","blobs_url":"https://api.github.com/repos/drudru/ext_scaffold/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/drudru/ext_scaffold/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/drudru/ext_scaffold/git/refs{/sha}","trees_url":"https://api.github.com/repos/drudru/ext_scaffold/git/trees{/sha}","statuses_url":"https://api.github.com/repos/drudru/ext_scaffold/statuses/{sha}","languages_url":"https://api.github.com/repos/drudru/ext_scaffold/languages","stargazers_url":"https://api.github.com/repos/drudru/ext_scaffold/stargazers","contributors_url":"https://api.github.com/repos/drudru/ext_scaffold/contributors","subscribers_url":"https://api.github.com/repos/drudru/ext_scaffold/subscribers","subscription_url":"https://api.github.com/repos/drudru/ext_scaffold/subscription","commits_url":"https://api.github.com/repos/drudru/ext_scaffold/commits{/sha}","git_commits_url":"https://api.github.com/repos/drudru/ext_scaffold/git/commits{/sha}","comments_url":"https://api.github.com/repos/drudru/ext_scaffold/comments{/number}","issue_comment_url":"https://api.github.com/repos/drudru/ext_scaffold/issues/comments/{number}","contents_url":"https://api.github.com/repos/drudru/ext_scaffold/contents/{+path}","compare_url":"https://api.github.com/repos/drudru/ext_scaffold/compare/{base}...{head}","merges_url":"https://api.github.com/repos/drudru/ext_scaffold/merges","archive_url":"https://api.github.com/repos/drudru/ext_scaffold/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/drudru/ext_scaffold/downloads","issues_url":"https://api.github.com/repos/drudru/ext_scaffold/issues{/number}","pulls_url":"https://api.github.com/repos/drudru/ext_scaffold/pulls{/number}","milestones_url":"https://api.github.com/repos/drudru/ext_scaffold/milestones{/number}","notifications_url":"https://api.github.com/repos/drudru/ext_scaffold/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/drudru/ext_scaffold/labels{/name}"},{"id":1385,"name":"spongewolf","full_name":"ckhsponge/spongewolf","owner":{"login":"ckhsponge","id":590,"avatar_url":"https://2.gravatar.com/avatar/56b08cc76663f72307f41583a1980454?d=https%3A%2F%2Fidenticons.github.com%2F08b255a5d42b89b0585260b6f2360bdd.png","gravatar_id":"56b08cc76663f72307f41583a1980454","url":"https://api.github.com/users/ckhsponge","html_url":"https://github.com/ckhsponge","followers_url":"https://api.github.com/users/ckhsponge/followers","following_url":"https://api.github.com/users/ckhsponge/following{/other_user}","gists_url":"https://api.github.com/users/ckhsponge/gists{/gist_id}","starred_url":"https://api.github.com/users/ckhsponge/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ckhsponge/subscriptions","organizations_url":"https://api.github.com/users/ckhsponge/orgs","repos_url":"https://api.github.com/users/ckhsponge/repos","events_url":"https://api.github.com/users/ckhsponge/events{/privacy}","received_events_url":"https://api.github.com/users/ckhsponge/received_events","type":"User"},"private":false,"html_url":"https://github.com/ckhsponge/spongewolf","description":"Rails application for building event lists and calendars using the Spongecell API","fork":false,"url":"https://api.github.com/repos/ckhsponge/spongewolf","forks_url":"https://api.github.com/repos/ckhsponge/spongewolf/forks","keys_url":"https://api.github.com/repos/ckhsponge/spongewolf/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ckhsponge/spongewolf/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ckhsponge/spongewolf/teams","hooks_url":"https://api.github.com/repos/ckhsponge/spongewolf/hooks","issue_events_url":"https://api.github.com/repos/ckhsponge/spongewolf/issues/events{/number}","events_url":"https://api.github.com/repos/ckhsponge/spongewolf/events","assignees_url":"https://api.github.com/repos/ckhsponge/spongewolf/assignees{/user}","branches_url":"https://api.github.com/repos/ckhsponge/spongewolf/branches{/branch}","tags_url":"https://api.github.com/repos/ckhsponge/spongewolf/tags","blobs_url":"https://api.github.com/repos/ckhsponge/spongewolf/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ckhsponge/spongewolf/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ckhsponge/spongewolf/git/refs{/sha}","trees_url":"https://api.github.com/repos/ckhsponge/spongewolf/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ckhsponge/spongewolf/statuses/{sha}","languages_url":"https://api.github.com/repos/ckhsponge/spongewolf/languages","stargazers_url":"https://api.github.com/repos/ckhsponge/spongewolf/stargazers","contributors_url":"https://api.github.com/repos/ckhsponge/spongewolf/contributors","subscribers_url":"https://api.github.com/repos/ckhsponge/spongewolf/subscribers","subscription_url":"https://api.github.com/repos/ckhsponge/spongewolf/subscription","commits_url":"https://api.github.com/repos/ckhsponge/spongewolf/commits{/sha}","git_commits_url":"https://api.github.com/repos/ckhsponge/spongewolf/git/commits{/sha}","comments_url":"https://api.github.com/repos/ckhsponge/spongewolf/comments{/number}","issue_comment_url":"https://api.github.com/repos/ckhsponge/spongewolf/issues/comments/{number}","contents_url":"https://api.github.com/repos/ckhsponge/spongewolf/contents/{+path}","compare_url":"https://api.github.com/repos/ckhsponge/spongewolf/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ckhsponge/spongewolf/merges","archive_url":"https://api.github.com/repos/ckhsponge/spongewolf/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ckhsponge/spongewolf/downloads","issues_url":"https://api.github.com/repos/ckhsponge/spongewolf/issues{/number}","pulls_url":"https://api.github.com/repos/ckhsponge/spongewolf/pulls{/number}","milestones_url":"https://api.github.com/repos/ckhsponge/spongewolf/milestones{/number}","notifications_url":"https://api.github.com/repos/ckhsponge/spongewolf/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ckhsponge/spongewolf/labels{/name}"},{"id":1388,"name":"amazing","full_name":"dag/amazing","owner":{"login":"dag","id":319,"avatar_url":"https://1.gravatar.com/avatar/482f6832b98eccb86e2a5dc4de8aad91?d=https%3A%2F%2Fidenticons.github.com%2F8d3bba7425e7c98c50f52ca1b52d3735.png","gravatar_id":"482f6832b98eccb86e2a5dc4de8aad91","url":"https://api.github.com/users/dag","html_url":"https://github.com/dag","followers_url":"https://api.github.com/users/dag/followers","following_url":"https://api.github.com/users/dag/following{/other_user}","gists_url":"https://api.github.com/users/dag/gists{/gist_id}","starred_url":"https://api.github.com/users/dag/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dag/subscriptions","organizations_url":"https://api.github.com/users/dag/orgs","repos_url":"https://api.github.com/users/dag/repos","events_url":"https://api.github.com/users/dag/events{/privacy}","received_events_url":"https://api.github.com/users/dag/received_events","type":"User"},"private":false,"html_url":"https://github.com/dag/amazing","description":"an amazing widget manager for an awesome window manager","fork":false,"url":"https://api.github.com/repos/dag/amazing","forks_url":"https://api.github.com/repos/dag/amazing/forks","keys_url":"https://api.github.com/repos/dag/amazing/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dag/amazing/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dag/amazing/teams","hooks_url":"https://api.github.com/repos/dag/amazing/hooks","issue_events_url":"https://api.github.com/repos/dag/amazing/issues/events{/number}","events_url":"https://api.github.com/repos/dag/amazing/events","assignees_url":"https://api.github.com/repos/dag/amazing/assignees{/user}","branches_url":"https://api.github.com/repos/dag/amazing/branches{/branch}","tags_url":"https://api.github.com/repos/dag/amazing/tags","blobs_url":"https://api.github.com/repos/dag/amazing/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dag/amazing/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dag/amazing/git/refs{/sha}","trees_url":"https://api.github.com/repos/dag/amazing/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dag/amazing/statuses/{sha}","languages_url":"https://api.github.com/repos/dag/amazing/languages","stargazers_url":"https://api.github.com/repos/dag/amazing/stargazers","contributors_url":"https://api.github.com/repos/dag/amazing/contributors","subscribers_url":"https://api.github.com/repos/dag/amazing/subscribers","subscription_url":"https://api.github.com/repos/dag/amazing/subscription","commits_url":"https://api.github.com/repos/dag/amazing/commits{/sha}","git_commits_url":"https://api.github.com/repos/dag/amazing/git/commits{/sha}","comments_url":"https://api.github.com/repos/dag/amazing/comments{/number}","issue_comment_url":"https://api.github.com/repos/dag/amazing/issues/comments/{number}","contents_url":"https://api.github.com/repos/dag/amazing/contents/{+path}","compare_url":"https://api.github.com/repos/dag/amazing/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dag/amazing/merges","archive_url":"https://api.github.com/repos/dag/amazing/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dag/amazing/downloads","issues_url":"https://api.github.com/repos/dag/amazing/issues{/number}","pulls_url":"https://api.github.com/repos/dag/amazing/pulls{/number}","milestones_url":"https://api.github.com/repos/dag/amazing/milestones{/number}","notifications_url":"https://api.github.com/repos/dag/amazing/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dag/amazing/labels{/name}"},{"id":1398,"name":"ruby-merlin","full_name":"pdsphil/ruby-merlin","owner":{"login":"pdsphil","id":268,"avatar_url":"https://1.gravatar.com/avatar/e0bd199c24c59f1666f3ce960c3309ee?d=https%3A%2F%2Fidenticons.github.com%2F8f121ce07d74717e0b1f21d122e04521.png","gravatar_id":"e0bd199c24c59f1666f3ce960c3309ee","url":"https://api.github.com/users/pdsphil","html_url":"https://github.com/pdsphil","followers_url":"https://api.github.com/users/pdsphil/followers","following_url":"https://api.github.com/users/pdsphil/following{/other_user}","gists_url":"https://api.github.com/users/pdsphil/gists{/gist_id}","starred_url":"https://api.github.com/users/pdsphil/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pdsphil/subscriptions","organizations_url":"https://api.github.com/users/pdsphil/orgs","repos_url":"https://api.github.com/users/pdsphil/repos","events_url":"https://api.github.com/users/pdsphil/events{/privacy}","received_events_url":"https://api.github.com/users/pdsphil/received_events","type":"User"},"private":false,"html_url":"https://github.com/pdsphil/ruby-merlin","description":"Ruby interface to the Merlin API","fork":false,"url":"https://api.github.com/repos/pdsphil/ruby-merlin","forks_url":"https://api.github.com/repos/pdsphil/ruby-merlin/forks","keys_url":"https://api.github.com/repos/pdsphil/ruby-merlin/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pdsphil/ruby-merlin/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pdsphil/ruby-merlin/teams","hooks_url":"https://api.github.com/repos/pdsphil/ruby-merlin/hooks","issue_events_url":"https://api.github.com/repos/pdsphil/ruby-merlin/issues/events{/number}","events_url":"https://api.github.com/repos/pdsphil/ruby-merlin/events","assignees_url":"https://api.github.com/repos/pdsphil/ruby-merlin/assignees{/user}","branches_url":"https://api.github.com/repos/pdsphil/ruby-merlin/branches{/branch}","tags_url":"https://api.github.com/repos/pdsphil/ruby-merlin/tags","blobs_url":"https://api.github.com/repos/pdsphil/ruby-merlin/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pdsphil/ruby-merlin/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pdsphil/ruby-merlin/git/refs{/sha}","trees_url":"https://api.github.com/repos/pdsphil/ruby-merlin/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pdsphil/ruby-merlin/statuses/{sha}","languages_url":"https://api.github.com/repos/pdsphil/ruby-merlin/languages","stargazers_url":"https://api.github.com/repos/pdsphil/ruby-merlin/stargazers","contributors_url":"https://api.github.com/repos/pdsphil/ruby-merlin/contributors","subscribers_url":"https://api.github.com/repos/pdsphil/ruby-merlin/subscribers","subscription_url":"https://api.github.com/repos/pdsphil/ruby-merlin/subscription","commits_url":"https://api.github.com/repos/pdsphil/ruby-merlin/commits{/sha}","git_commits_url":"https://api.github.com/repos/pdsphil/ruby-merlin/git/commits{/sha}","comments_url":"https://api.github.com/repos/pdsphil/ruby-merlin/comments{/number}","issue_comment_url":"https://api.github.com/repos/pdsphil/ruby-merlin/issues/comments/{number}","contents_url":"https://api.github.com/repos/pdsphil/ruby-merlin/contents/{+path}","compare_url":"https://api.github.com/repos/pdsphil/ruby-merlin/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pdsphil/ruby-merlin/merges","archive_url":"https://api.github.com/repos/pdsphil/ruby-merlin/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pdsphil/ruby-merlin/downloads","issues_url":"https://api.github.com/repos/pdsphil/ruby-merlin/issues{/number}","pulls_url":"https://api.github.com/repos/pdsphil/ruby-merlin/pulls{/number}","milestones_url":"https://api.github.com/repos/pdsphil/ruby-merlin/milestones{/number}","notifications_url":"https://api.github.com/repos/pdsphil/ruby-merlin/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pdsphil/ruby-merlin/labels{/name}"},{"id":1401,"name":"tekkonfig","full_name":"tekkub/tekkonfig","owner":{"login":"tekkub","id":706,"avatar_url":"https://1.gravatar.com/avatar/472814aac7576b67da59ea79fcbf7d66?d=https%3A%2F%2Fidenticons.github.com%2F9c82c7143c102b71c593d98d96093fde.png","gravatar_id":"472814aac7576b67da59ea79fcbf7d66","url":"https://api.github.com/users/tekkub","html_url":"https://github.com/tekkub","followers_url":"https://api.github.com/users/tekkub/followers","following_url":"https://api.github.com/users/tekkub/following{/other_user}","gists_url":"https://api.github.com/users/tekkub/gists{/gist_id}","starred_url":"https://api.github.com/users/tekkub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tekkub/subscriptions","organizations_url":"https://api.github.com/users/tekkub/orgs","repos_url":"https://api.github.com/users/tekkub/repos","events_url":"https://api.github.com/users/tekkub/events{/privacy}","received_events_url":"https://api.github.com/users/tekkub/received_events","type":"User"},"private":false,"html_url":"https://github.com/tekkub/tekkonfig","description":"Misc GUI widget factories for World of Warcraft addons","fork":false,"url":"https://api.github.com/repos/tekkub/tekkonfig","forks_url":"https://api.github.com/repos/tekkub/tekkonfig/forks","keys_url":"https://api.github.com/repos/tekkub/tekkonfig/keys{/key_id}","collaborators_url":"https://api.github.com/repos/tekkub/tekkonfig/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/tekkub/tekkonfig/teams","hooks_url":"https://api.github.com/repos/tekkub/tekkonfig/hooks","issue_events_url":"https://api.github.com/repos/tekkub/tekkonfig/issues/events{/number}","events_url":"https://api.github.com/repos/tekkub/tekkonfig/events","assignees_url":"https://api.github.com/repos/tekkub/tekkonfig/assignees{/user}","branches_url":"https://api.github.com/repos/tekkub/tekkonfig/branches{/branch}","tags_url":"https://api.github.com/repos/tekkub/tekkonfig/tags","blobs_url":"https://api.github.com/repos/tekkub/tekkonfig/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/tekkub/tekkonfig/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/tekkub/tekkonfig/git/refs{/sha}","trees_url":"https://api.github.com/repos/tekkub/tekkonfig/git/trees{/sha}","statuses_url":"https://api.github.com/repos/tekkub/tekkonfig/statuses/{sha}","languages_url":"https://api.github.com/repos/tekkub/tekkonfig/languages","stargazers_url":"https://api.github.com/repos/tekkub/tekkonfig/stargazers","contributors_url":"https://api.github.com/repos/tekkub/tekkonfig/contributors","subscribers_url":"https://api.github.com/repos/tekkub/tekkonfig/subscribers","subscription_url":"https://api.github.com/repos/tekkub/tekkonfig/subscription","commits_url":"https://api.github.com/repos/tekkub/tekkonfig/commits{/sha}","git_commits_url":"https://api.github.com/repos/tekkub/tekkonfig/git/commits{/sha}","comments_url":"https://api.github.com/repos/tekkub/tekkonfig/comments{/number}","issue_comment_url":"https://api.github.com/repos/tekkub/tekkonfig/issues/comments/{number}","contents_url":"https://api.github.com/repos/tekkub/tekkonfig/contents/{+path}","compare_url":"https://api.github.com/repos/tekkub/tekkonfig/compare/{base}...{head}","merges_url":"https://api.github.com/repos/tekkub/tekkonfig/merges","archive_url":"https://api.github.com/repos/tekkub/tekkonfig/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/tekkub/tekkonfig/downloads","issues_url":"https://api.github.com/repos/tekkub/tekkonfig/issues{/number}","pulls_url":"https://api.github.com/repos/tekkub/tekkonfig/pulls{/number}","milestones_url":"https://api.github.com/repos/tekkub/tekkonfig/milestones{/number}","notifications_url":"https://api.github.com/repos/tekkub/tekkonfig/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/tekkub/tekkonfig/labels{/name}"},{"id":1402,"name":"ruby-idology","full_name":"pdsphil/ruby-idology","owner":{"login":"pdsphil","id":268,"avatar_url":"https://1.gravatar.com/avatar/e0bd199c24c59f1666f3ce960c3309ee?d=https%3A%2F%2Fidenticons.github.com%2F8f121ce07d74717e0b1f21d122e04521.png","gravatar_id":"e0bd199c24c59f1666f3ce960c3309ee","url":"https://api.github.com/users/pdsphil","html_url":"https://github.com/pdsphil","followers_url":"https://api.github.com/users/pdsphil/followers","following_url":"https://api.github.com/users/pdsphil/following{/other_user}","gists_url":"https://api.github.com/users/pdsphil/gists{/gist_id}","starred_url":"https://api.github.com/users/pdsphil/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pdsphil/subscriptions","organizations_url":"https://api.github.com/users/pdsphil/orgs","repos_url":"https://api.github.com/users/pdsphil/repos","events_url":"https://api.github.com/users/pdsphil/events{/privacy}","received_events_url":"https://api.github.com/users/pdsphil/received_events","type":"User"},"private":false,"html_url":"https://github.com/pdsphil/ruby-idology","description":"Ruby interface to the IDology API","fork":false,"url":"https://api.github.com/repos/pdsphil/ruby-idology","forks_url":"https://api.github.com/repos/pdsphil/ruby-idology/forks","keys_url":"https://api.github.com/repos/pdsphil/ruby-idology/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pdsphil/ruby-idology/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pdsphil/ruby-idology/teams","hooks_url":"https://api.github.com/repos/pdsphil/ruby-idology/hooks","issue_events_url":"https://api.github.com/repos/pdsphil/ruby-idology/issues/events{/number}","events_url":"https://api.github.com/repos/pdsphil/ruby-idology/events","assignees_url":"https://api.github.com/repos/pdsphil/ruby-idology/assignees{/user}","branches_url":"https://api.github.com/repos/pdsphil/ruby-idology/branches{/branch}","tags_url":"https://api.github.com/repos/pdsphil/ruby-idology/tags","blobs_url":"https://api.github.com/repos/pdsphil/ruby-idology/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pdsphil/ruby-idology/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pdsphil/ruby-idology/git/refs{/sha}","trees_url":"https://api.github.com/repos/pdsphil/ruby-idology/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pdsphil/ruby-idology/statuses/{sha}","languages_url":"https://api.github.com/repos/pdsphil/ruby-idology/languages","stargazers_url":"https://api.github.com/repos/pdsphil/ruby-idology/stargazers","contributors_url":"https://api.github.com/repos/pdsphil/ruby-idology/contributors","subscribers_url":"https://api.github.com/repos/pdsphil/ruby-idology/subscribers","subscription_url":"https://api.github.com/repos/pdsphil/ruby-idology/subscription","commits_url":"https://api.github.com/repos/pdsphil/ruby-idology/commits{/sha}","git_commits_url":"https://api.github.com/repos/pdsphil/ruby-idology/git/commits{/sha}","comments_url":"https://api.github.com/repos/pdsphil/ruby-idology/comments{/number}","issue_comment_url":"https://api.github.com/repos/pdsphil/ruby-idology/issues/comments/{number}","contents_url":"https://api.github.com/repos/pdsphil/ruby-idology/contents/{+path}","compare_url":"https://api.github.com/repos/pdsphil/ruby-idology/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pdsphil/ruby-idology/merges","archive_url":"https://api.github.com/repos/pdsphil/ruby-idology/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pdsphil/ruby-idology/downloads","issues_url":"https://api.github.com/repos/pdsphil/ruby-idology/issues{/number}","pulls_url":"https://api.github.com/repos/pdsphil/ruby-idology/pulls{/number}","milestones_url":"https://api.github.com/repos/pdsphil/ruby-idology/milestones{/number}","notifications_url":"https://api.github.com/repos/pdsphil/ruby-idology/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pdsphil/ruby-idology/labels{/name}"},{"id":1408,"name":"luaclr","full_name":"mascarenhas/luaclr","owner":{"login":"mascarenhas","id":363,"avatar_url":"https://0.gravatar.com/avatar/f9757c8ee985d7343427b8bd1797ec2f?d=https%3A%2F%2Fidenticons.github.com%2F00411460f7c92d2124a67ea0f4cb5f85.png","gravatar_id":"f9757c8ee985d7343427b8bd1797ec2f","url":"https://api.github.com/users/mascarenhas","html_url":"https://github.com/mascarenhas","followers_url":"https://api.github.com/users/mascarenhas/followers","following_url":"https://api.github.com/users/mascarenhas/following{/other_user}","gists_url":"https://api.github.com/users/mascarenhas/gists{/gist_id}","starred_url":"https://api.github.com/users/mascarenhas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mascarenhas/subscriptions","organizations_url":"https://api.github.com/users/mascarenhas/orgs","repos_url":"https://api.github.com/users/mascarenhas/repos","events_url":"https://api.github.com/users/mascarenhas/events{/privacy}","received_events_url":"https://api.github.com/users/mascarenhas/received_events","type":"User"},"private":false,"html_url":"https://github.com/mascarenhas/luaclr","description":"","fork":false,"url":"https://api.github.com/repos/mascarenhas/luaclr","forks_url":"https://api.github.com/repos/mascarenhas/luaclr/forks","keys_url":"https://api.github.com/repos/mascarenhas/luaclr/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mascarenhas/luaclr/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mascarenhas/luaclr/teams","hooks_url":"https://api.github.com/repos/mascarenhas/luaclr/hooks","issue_events_url":"https://api.github.com/repos/mascarenhas/luaclr/issues/events{/number}","events_url":"https://api.github.com/repos/mascarenhas/luaclr/events","assignees_url":"https://api.github.com/repos/mascarenhas/luaclr/assignees{/user}","branches_url":"https://api.github.com/repos/mascarenhas/luaclr/branches{/branch}","tags_url":"https://api.github.com/repos/mascarenhas/luaclr/tags","blobs_url":"https://api.github.com/repos/mascarenhas/luaclr/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mascarenhas/luaclr/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mascarenhas/luaclr/git/refs{/sha}","trees_url":"https://api.github.com/repos/mascarenhas/luaclr/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mascarenhas/luaclr/statuses/{sha}","languages_url":"https://api.github.com/repos/mascarenhas/luaclr/languages","stargazers_url":"https://api.github.com/repos/mascarenhas/luaclr/stargazers","contributors_url":"https://api.github.com/repos/mascarenhas/luaclr/contributors","subscribers_url":"https://api.github.com/repos/mascarenhas/luaclr/subscribers","subscription_url":"https://api.github.com/repos/mascarenhas/luaclr/subscription","commits_url":"https://api.github.com/repos/mascarenhas/luaclr/commits{/sha}","git_commits_url":"https://api.github.com/repos/mascarenhas/luaclr/git/commits{/sha}","comments_url":"https://api.github.com/repos/mascarenhas/luaclr/comments{/number}","issue_comment_url":"https://api.github.com/repos/mascarenhas/luaclr/issues/comments/{number}","contents_url":"https://api.github.com/repos/mascarenhas/luaclr/contents/{+path}","compare_url":"https://api.github.com/repos/mascarenhas/luaclr/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mascarenhas/luaclr/merges","archive_url":"https://api.github.com/repos/mascarenhas/luaclr/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mascarenhas/luaclr/downloads","issues_url":"https://api.github.com/repos/mascarenhas/luaclr/issues{/number}","pulls_url":"https://api.github.com/repos/mascarenhas/luaclr/pulls{/number}","milestones_url":"https://api.github.com/repos/mascarenhas/luaclr/milestones{/number}","notifications_url":"https://api.github.com/repos/mascarenhas/luaclr/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mascarenhas/luaclr/labels{/name}"},{"id":1411,"name":"bricklet-core","full_name":"jasonm/bricklet-core","owner":{"login":"jasonm","id":1031,"avatar_url":"https://2.gravatar.com/avatar/8478f9ebe099ad853f022deeb2c1defe?d=https%3A%2F%2Fidenticons.github.com%2Fafdec7005cc9f14302cd0474fd0f3c96.png","gravatar_id":"8478f9ebe099ad853f022deeb2c1defe","url":"https://api.github.com/users/jasonm","html_url":"https://github.com/jasonm","followers_url":"https://api.github.com/users/jasonm/followers","following_url":"https://api.github.com/users/jasonm/following{/other_user}","gists_url":"https://api.github.com/users/jasonm/gists{/gist_id}","starred_url":"https://api.github.com/users/jasonm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jasonm/subscriptions","organizations_url":"https://api.github.com/users/jasonm/orgs","repos_url":"https://api.github.com/users/jasonm/repos","events_url":"https://api.github.com/users/jasonm/events{/privacy}","received_events_url":"https://api.github.com/users/jasonm/received_events","type":"User"},"private":false,"html_url":"https://github.com/jasonm/bricklet-core","description":"Core data server for BioBrick format","fork":false,"url":"https://api.github.com/repos/jasonm/bricklet-core","forks_url":"https://api.github.com/repos/jasonm/bricklet-core/forks","keys_url":"https://api.github.com/repos/jasonm/bricklet-core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jasonm/bricklet-core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jasonm/bricklet-core/teams","hooks_url":"https://api.github.com/repos/jasonm/bricklet-core/hooks","issue_events_url":"https://api.github.com/repos/jasonm/bricklet-core/issues/events{/number}","events_url":"https://api.github.com/repos/jasonm/bricklet-core/events","assignees_url":"https://api.github.com/repos/jasonm/bricklet-core/assignees{/user}","branches_url":"https://api.github.com/repos/jasonm/bricklet-core/branches{/branch}","tags_url":"https://api.github.com/repos/jasonm/bricklet-core/tags","blobs_url":"https://api.github.com/repos/jasonm/bricklet-core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jasonm/bricklet-core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jasonm/bricklet-core/git/refs{/sha}","trees_url":"https://api.github.com/repos/jasonm/bricklet-core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jasonm/bricklet-core/statuses/{sha}","languages_url":"https://api.github.com/repos/jasonm/bricklet-core/languages","stargazers_url":"https://api.github.com/repos/jasonm/bricklet-core/stargazers","contributors_url":"https://api.github.com/repos/jasonm/bricklet-core/contributors","subscribers_url":"https://api.github.com/repos/jasonm/bricklet-core/subscribers","subscription_url":"https://api.github.com/repos/jasonm/bricklet-core/subscription","commits_url":"https://api.github.com/repos/jasonm/bricklet-core/commits{/sha}","git_commits_url":"https://api.github.com/repos/jasonm/bricklet-core/git/commits{/sha}","comments_url":"https://api.github.com/repos/jasonm/bricklet-core/comments{/number}","issue_comment_url":"https://api.github.com/repos/jasonm/bricklet-core/issues/comments/{number}","contents_url":"https://api.github.com/repos/jasonm/bricklet-core/contents/{+path}","compare_url":"https://api.github.com/repos/jasonm/bricklet-core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jasonm/bricklet-core/merges","archive_url":"https://api.github.com/repos/jasonm/bricklet-core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jasonm/bricklet-core/downloads","issues_url":"https://api.github.com/repos/jasonm/bricklet-core/issues{/number}","pulls_url":"https://api.github.com/repos/jasonm/bricklet-core/pulls{/number}","milestones_url":"https://api.github.com/repos/jasonm/bricklet-core/milestones{/number}","notifications_url":"https://api.github.com/repos/jasonm/bricklet-core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jasonm/bricklet-core/labels{/name}"},{"id":1414,"name":"bookeater","full_name":"gensym/bookeater","owner":{"login":"gensym","id":899,"avatar_url":"https://0.gravatar.com/avatar/e63b603ed7ffcb6b5c65707abc30e303?d=https%3A%2F%2Fidenticons.github.com%2F01882513d5fa7c329e940dda99b12147.png","gravatar_id":"e63b603ed7ffcb6b5c65707abc30e303","url":"https://api.github.com/users/gensym","html_url":"https://github.com/gensym","followers_url":"https://api.github.com/users/gensym/followers","following_url":"https://api.github.com/users/gensym/following{/other_user}","gists_url":"https://api.github.com/users/gensym/gists{/gist_id}","starred_url":"https://api.github.com/users/gensym/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gensym/subscriptions","organizations_url":"https://api.github.com/users/gensym/orgs","repos_url":"https://api.github.com/users/gensym/repos","events_url":"https://api.github.com/users/gensym/events{/privacy}","received_events_url":"https://api.github.com/users/gensym/received_events","type":"User"},"private":false,"html_url":"https://github.com/gensym/bookeater","description":"BookEater.net","fork":false,"url":"https://api.github.com/repos/gensym/bookeater","forks_url":"https://api.github.com/repos/gensym/bookeater/forks","keys_url":"https://api.github.com/repos/gensym/bookeater/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gensym/bookeater/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gensym/bookeater/teams","hooks_url":"https://api.github.com/repos/gensym/bookeater/hooks","issue_events_url":"https://api.github.com/repos/gensym/bookeater/issues/events{/number}","events_url":"https://api.github.com/repos/gensym/bookeater/events","assignees_url":"https://api.github.com/repos/gensym/bookeater/assignees{/user}","branches_url":"https://api.github.com/repos/gensym/bookeater/branches{/branch}","tags_url":"https://api.github.com/repos/gensym/bookeater/tags","blobs_url":"https://api.github.com/repos/gensym/bookeater/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gensym/bookeater/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gensym/bookeater/git/refs{/sha}","trees_url":"https://api.github.com/repos/gensym/bookeater/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gensym/bookeater/statuses/{sha}","languages_url":"https://api.github.com/repos/gensym/bookeater/languages","stargazers_url":"https://api.github.com/repos/gensym/bookeater/stargazers","contributors_url":"https://api.github.com/repos/gensym/bookeater/contributors","subscribers_url":"https://api.github.com/repos/gensym/bookeater/subscribers","subscription_url":"https://api.github.com/repos/gensym/bookeater/subscription","commits_url":"https://api.github.com/repos/gensym/bookeater/commits{/sha}","git_commits_url":"https://api.github.com/repos/gensym/bookeater/git/commits{/sha}","comments_url":"https://api.github.com/repos/gensym/bookeater/comments{/number}","issue_comment_url":"https://api.github.com/repos/gensym/bookeater/issues/comments/{number}","contents_url":"https://api.github.com/repos/gensym/bookeater/contents/{+path}","compare_url":"https://api.github.com/repos/gensym/bookeater/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gensym/bookeater/merges","archive_url":"https://api.github.com/repos/gensym/bookeater/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gensym/bookeater/downloads","issues_url":"https://api.github.com/repos/gensym/bookeater/issues{/number}","pulls_url":"https://api.github.com/repos/gensym/bookeater/pulls{/number}","milestones_url":"https://api.github.com/repos/gensym/bookeater/milestones{/number}","notifications_url":"https://api.github.com/repos/gensym/bookeater/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gensym/bookeater/labels{/name}"},{"id":1425,"name":"facon","full_name":"chuyeow/facon","owner":{"login":"chuyeow","id":213,"avatar_url":"https://2.gravatar.com/avatar/00fd4ce27c06ba63e7ddca4c3d67e5ea?d=https%3A%2F%2Fidenticons.github.com%2F979d472a84804b9f647bc185a877a8b5.png","gravatar_id":"00fd4ce27c06ba63e7ddca4c3d67e5ea","url":"https://api.github.com/users/chuyeow","html_url":"https://github.com/chuyeow","followers_url":"https://api.github.com/users/chuyeow/followers","following_url":"https://api.github.com/users/chuyeow/following{/other_user}","gists_url":"https://api.github.com/users/chuyeow/gists{/gist_id}","starred_url":"https://api.github.com/users/chuyeow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chuyeow/subscriptions","organizations_url":"https://api.github.com/users/chuyeow/orgs","repos_url":"https://api.github.com/users/chuyeow/repos","events_url":"https://api.github.com/users/chuyeow/events{/privacy}","received_events_url":"https://api.github.com/users/chuyeow/received_events","type":"User"},"private":false,"html_url":"https://github.com/chuyeow/facon","description":"Facon is a mocking library in the spirit of the Bacon spec library. Small, compact, and works with Bacon.","fork":false,"url":"https://api.github.com/repos/chuyeow/facon","forks_url":"https://api.github.com/repos/chuyeow/facon/forks","keys_url":"https://api.github.com/repos/chuyeow/facon/keys{/key_id}","collaborators_url":"https://api.github.com/repos/chuyeow/facon/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/chuyeow/facon/teams","hooks_url":"https://api.github.com/repos/chuyeow/facon/hooks","issue_events_url":"https://api.github.com/repos/chuyeow/facon/issues/events{/number}","events_url":"https://api.github.com/repos/chuyeow/facon/events","assignees_url":"https://api.github.com/repos/chuyeow/facon/assignees{/user}","branches_url":"https://api.github.com/repos/chuyeow/facon/branches{/branch}","tags_url":"https://api.github.com/repos/chuyeow/facon/tags","blobs_url":"https://api.github.com/repos/chuyeow/facon/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/chuyeow/facon/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/chuyeow/facon/git/refs{/sha}","trees_url":"https://api.github.com/repos/chuyeow/facon/git/trees{/sha}","statuses_url":"https://api.github.com/repos/chuyeow/facon/statuses/{sha}","languages_url":"https://api.github.com/repos/chuyeow/facon/languages","stargazers_url":"https://api.github.com/repos/chuyeow/facon/stargazers","contributors_url":"https://api.github.com/repos/chuyeow/facon/contributors","subscribers_url":"https://api.github.com/repos/chuyeow/facon/subscribers","subscription_url":"https://api.github.com/repos/chuyeow/facon/subscription","commits_url":"https://api.github.com/repos/chuyeow/facon/commits{/sha}","git_commits_url":"https://api.github.com/repos/chuyeow/facon/git/commits{/sha}","comments_url":"https://api.github.com/repos/chuyeow/facon/comments{/number}","issue_comment_url":"https://api.github.com/repos/chuyeow/facon/issues/comments/{number}","contents_url":"https://api.github.com/repos/chuyeow/facon/contents/{+path}","compare_url":"https://api.github.com/repos/chuyeow/facon/compare/{base}...{head}","merges_url":"https://api.github.com/repos/chuyeow/facon/merges","archive_url":"https://api.github.com/repos/chuyeow/facon/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/chuyeow/facon/downloads","issues_url":"https://api.github.com/repos/chuyeow/facon/issues{/number}","pulls_url":"https://api.github.com/repos/chuyeow/facon/pulls{/number}","milestones_url":"https://api.github.com/repos/chuyeow/facon/milestones{/number}","notifications_url":"https://api.github.com/repos/chuyeow/facon/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/chuyeow/facon/labels{/name}"},{"id":1429,"name":"stat","full_name":"vanpelt/stat","owner":{"login":"vanpelt","id":17,"avatar_url":"https://1.gravatar.com/avatar/1da36d4c1f34454de6c07855098675f6?d=https%3A%2F%2Fidenticons.github.com%2F70efdf2ec9b086079795c442636b55fb.png","gravatar_id":"1da36d4c1f34454de6c07855098675f6","url":"https://api.github.com/users/vanpelt","html_url":"https://github.com/vanpelt","followers_url":"https://api.github.com/users/vanpelt/followers","following_url":"https://api.github.com/users/vanpelt/following{/other_user}","gists_url":"https://api.github.com/users/vanpelt/gists{/gist_id}","starred_url":"https://api.github.com/users/vanpelt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vanpelt/subscriptions","organizations_url":"https://api.github.com/users/vanpelt/orgs","repos_url":"https://api.github.com/users/vanpelt/repos","events_url":"https://api.github.com/users/vanpelt/events{/privacy}","received_events_url":"https://api.github.com/users/vanpelt/received_events","type":"User"},"private":false,"html_url":"https://github.com/vanpelt/stat","description":"A Rakefile that makes static website creation and deploying stupid simple","fork":false,"url":"https://api.github.com/repos/vanpelt/stat","forks_url":"https://api.github.com/repos/vanpelt/stat/forks","keys_url":"https://api.github.com/repos/vanpelt/stat/keys{/key_id}","collaborators_url":"https://api.github.com/repos/vanpelt/stat/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/vanpelt/stat/teams","hooks_url":"https://api.github.com/repos/vanpelt/stat/hooks","issue_events_url":"https://api.github.com/repos/vanpelt/stat/issues/events{/number}","events_url":"https://api.github.com/repos/vanpelt/stat/events","assignees_url":"https://api.github.com/repos/vanpelt/stat/assignees{/user}","branches_url":"https://api.github.com/repos/vanpelt/stat/branches{/branch}","tags_url":"https://api.github.com/repos/vanpelt/stat/tags","blobs_url":"https://api.github.com/repos/vanpelt/stat/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/vanpelt/stat/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/vanpelt/stat/git/refs{/sha}","trees_url":"https://api.github.com/repos/vanpelt/stat/git/trees{/sha}","statuses_url":"https://api.github.com/repos/vanpelt/stat/statuses/{sha}","languages_url":"https://api.github.com/repos/vanpelt/stat/languages","stargazers_url":"https://api.github.com/repos/vanpelt/stat/stargazers","contributors_url":"https://api.github.com/repos/vanpelt/stat/contributors","subscribers_url":"https://api.github.com/repos/vanpelt/stat/subscribers","subscription_url":"https://api.github.com/repos/vanpelt/stat/subscription","commits_url":"https://api.github.com/repos/vanpelt/stat/commits{/sha}","git_commits_url":"https://api.github.com/repos/vanpelt/stat/git/commits{/sha}","comments_url":"https://api.github.com/repos/vanpelt/stat/comments{/number}","issue_comment_url":"https://api.github.com/repos/vanpelt/stat/issues/comments/{number}","contents_url":"https://api.github.com/repos/vanpelt/stat/contents/{+path}","compare_url":"https://api.github.com/repos/vanpelt/stat/compare/{base}...{head}","merges_url":"https://api.github.com/repos/vanpelt/stat/merges","archive_url":"https://api.github.com/repos/vanpelt/stat/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/vanpelt/stat/downloads","issues_url":"https://api.github.com/repos/vanpelt/stat/issues{/number}","pulls_url":"https://api.github.com/repos/vanpelt/stat/pulls{/number}","milestones_url":"https://api.github.com/repos/vanpelt/stat/milestones{/number}","notifications_url":"https://api.github.com/repos/vanpelt/stat/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/vanpelt/stat/labels{/name}"},{"id":1435,"name":"rubynomic","full_name":"Norgg/rubynomic","owner":{"login":"Norgg","id":913,"avatar_url":"https://0.gravatar.com/avatar/f041ccf24524caf8d010097770b5eeae?d=https%3A%2F%2Fidenticons.github.com%2F8b5040a8a5baf3e0e67386c2e3a9b903.png","gravatar_id":"f041ccf24524caf8d010097770b5eeae","url":"https://api.github.com/users/Norgg","html_url":"https://github.com/Norgg","followers_url":"https://api.github.com/users/Norgg/followers","following_url":"https://api.github.com/users/Norgg/following{/other_user}","gists_url":"https://api.github.com/users/Norgg/gists{/gist_id}","starred_url":"https://api.github.com/users/Norgg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Norgg/subscriptions","organizations_url":"https://api.github.com/users/Norgg/orgs","repos_url":"https://api.github.com/users/Norgg/repos","events_url":"https://api.github.com/users/Norgg/events{/privacy}","received_events_url":"https://api.github.com/users/Norgg/received_events","type":"User"},"private":false,"html_url":"https://github.com/Norgg/rubynomic","description":"Initial source code for ruby nomic games","fork":false,"url":"https://api.github.com/repos/Norgg/rubynomic","forks_url":"https://api.github.com/repos/Norgg/rubynomic/forks","keys_url":"https://api.github.com/repos/Norgg/rubynomic/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Norgg/rubynomic/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Norgg/rubynomic/teams","hooks_url":"https://api.github.com/repos/Norgg/rubynomic/hooks","issue_events_url":"https://api.github.com/repos/Norgg/rubynomic/issues/events{/number}","events_url":"https://api.github.com/repos/Norgg/rubynomic/events","assignees_url":"https://api.github.com/repos/Norgg/rubynomic/assignees{/user}","branches_url":"https://api.github.com/repos/Norgg/rubynomic/branches{/branch}","tags_url":"https://api.github.com/repos/Norgg/rubynomic/tags","blobs_url":"https://api.github.com/repos/Norgg/rubynomic/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Norgg/rubynomic/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Norgg/rubynomic/git/refs{/sha}","trees_url":"https://api.github.com/repos/Norgg/rubynomic/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Norgg/rubynomic/statuses/{sha}","languages_url":"https://api.github.com/repos/Norgg/rubynomic/languages","stargazers_url":"https://api.github.com/repos/Norgg/rubynomic/stargazers","contributors_url":"https://api.github.com/repos/Norgg/rubynomic/contributors","subscribers_url":"https://api.github.com/repos/Norgg/rubynomic/subscribers","subscription_url":"https://api.github.com/repos/Norgg/rubynomic/subscription","commits_url":"https://api.github.com/repos/Norgg/rubynomic/commits{/sha}","git_commits_url":"https://api.github.com/repos/Norgg/rubynomic/git/commits{/sha}","comments_url":"https://api.github.com/repos/Norgg/rubynomic/comments{/number}","issue_comment_url":"https://api.github.com/repos/Norgg/rubynomic/issues/comments/{number}","contents_url":"https://api.github.com/repos/Norgg/rubynomic/contents/{+path}","compare_url":"https://api.github.com/repos/Norgg/rubynomic/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Norgg/rubynomic/merges","archive_url":"https://api.github.com/repos/Norgg/rubynomic/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Norgg/rubynomic/downloads","issues_url":"https://api.github.com/repos/Norgg/rubynomic/issues{/number}","pulls_url":"https://api.github.com/repos/Norgg/rubynomic/pulls{/number}","milestones_url":"https://api.github.com/repos/Norgg/rubynomic/milestones{/number}","notifications_url":"https://api.github.com/repos/Norgg/rubynomic/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Norgg/rubynomic/labels{/name}"},{"id":1436,"name":"depth-charge","full_name":"bscofield/depth-charge","owner":{"login":"bscofield","id":433,"avatar_url":"https://1.gravatar.com/avatar/01604be00b0c8371437cbc2b96265b9b?d=https%3A%2F%2Fidenticons.github.com%2F019d385eb67632a7e958e23f24bd07d7.png","gravatar_id":"01604be00b0c8371437cbc2b96265b9b","url":"https://api.github.com/users/bscofield","html_url":"https://github.com/bscofield","followers_url":"https://api.github.com/users/bscofield/followers","following_url":"https://api.github.com/users/bscofield/following{/other_user}","gists_url":"https://api.github.com/users/bscofield/gists{/gist_id}","starred_url":"https://api.github.com/users/bscofield/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bscofield/subscriptions","organizations_url":"https://api.github.com/users/bscofield/orgs","repos_url":"https://api.github.com/users/bscofield/repos","events_url":"https://api.github.com/users/bscofield/events{/privacy}","received_events_url":"https://api.github.com/users/bscofield/received_events","type":"User"},"private":false,"html_url":"https://github.com/bscofield/depth-charge","description":"A quick and dirty dependency finder for your Ruby projects","fork":false,"url":"https://api.github.com/repos/bscofield/depth-charge","forks_url":"https://api.github.com/repos/bscofield/depth-charge/forks","keys_url":"https://api.github.com/repos/bscofield/depth-charge/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bscofield/depth-charge/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bscofield/depth-charge/teams","hooks_url":"https://api.github.com/repos/bscofield/depth-charge/hooks","issue_events_url":"https://api.github.com/repos/bscofield/depth-charge/issues/events{/number}","events_url":"https://api.github.com/repos/bscofield/depth-charge/events","assignees_url":"https://api.github.com/repos/bscofield/depth-charge/assignees{/user}","branches_url":"https://api.github.com/repos/bscofield/depth-charge/branches{/branch}","tags_url":"https://api.github.com/repos/bscofield/depth-charge/tags","blobs_url":"https://api.github.com/repos/bscofield/depth-charge/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bscofield/depth-charge/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bscofield/depth-charge/git/refs{/sha}","trees_url":"https://api.github.com/repos/bscofield/depth-charge/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bscofield/depth-charge/statuses/{sha}","languages_url":"https://api.github.com/repos/bscofield/depth-charge/languages","stargazers_url":"https://api.github.com/repos/bscofield/depth-charge/stargazers","contributors_url":"https://api.github.com/repos/bscofield/depth-charge/contributors","subscribers_url":"https://api.github.com/repos/bscofield/depth-charge/subscribers","subscription_url":"https://api.github.com/repos/bscofield/depth-charge/subscription","commits_url":"https://api.github.com/repos/bscofield/depth-charge/commits{/sha}","git_commits_url":"https://api.github.com/repos/bscofield/depth-charge/git/commits{/sha}","comments_url":"https://api.github.com/repos/bscofield/depth-charge/comments{/number}","issue_comment_url":"https://api.github.com/repos/bscofield/depth-charge/issues/comments/{number}","contents_url":"https://api.github.com/repos/bscofield/depth-charge/contents/{+path}","compare_url":"https://api.github.com/repos/bscofield/depth-charge/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bscofield/depth-charge/merges","archive_url":"https://api.github.com/repos/bscofield/depth-charge/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bscofield/depth-charge/downloads","issues_url":"https://api.github.com/repos/bscofield/depth-charge/issues{/number}","pulls_url":"https://api.github.com/repos/bscofield/depth-charge/pulls{/number}","milestones_url":"https://api.github.com/repos/bscofield/depth-charge/milestones{/number}","notifications_url":"https://api.github.com/repos/bscofield/depth-charge/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bscofield/depth-charge/labels{/name}"},{"id":1440,"name":"portfolio","full_name":"myabc/portfolio","owner":{"login":"myabc","id":755,"avatar_url":"https://0.gravatar.com/avatar/9b1a71682de14fc6fc2b944a9c4814a0?d=https%3A%2F%2Fidenticons.github.com%2Fccb0989662211f61edae2e26d58ea92f.png","gravatar_id":"9b1a71682de14fc6fc2b944a9c4814a0","url":"https://api.github.com/users/myabc","html_url":"https://github.com/myabc","followers_url":"https://api.github.com/users/myabc/followers","following_url":"https://api.github.com/users/myabc/following{/other_user}","gists_url":"https://api.github.com/users/myabc/gists{/gist_id}","starred_url":"https://api.github.com/users/myabc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/myabc/subscriptions","organizations_url":"https://api.github.com/users/myabc/orgs","repos_url":"https://api.github.com/users/myabc/repos","events_url":"https://api.github.com/users/myabc/events{/privacy}","received_events_url":"https://api.github.com/users/myabc/received_events","type":"User"},"private":false,"html_url":"https://github.com/myabc/portfolio","description":"Alex Coles Portfolio","fork":false,"url":"https://api.github.com/repos/myabc/portfolio","forks_url":"https://api.github.com/repos/myabc/portfolio/forks","keys_url":"https://api.github.com/repos/myabc/portfolio/keys{/key_id}","collaborators_url":"https://api.github.com/repos/myabc/portfolio/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/myabc/portfolio/teams","hooks_url":"https://api.github.com/repos/myabc/portfolio/hooks","issue_events_url":"https://api.github.com/repos/myabc/portfolio/issues/events{/number}","events_url":"https://api.github.com/repos/myabc/portfolio/events","assignees_url":"https://api.github.com/repos/myabc/portfolio/assignees{/user}","branches_url":"https://api.github.com/repos/myabc/portfolio/branches{/branch}","tags_url":"https://api.github.com/repos/myabc/portfolio/tags","blobs_url":"https://api.github.com/repos/myabc/portfolio/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/myabc/portfolio/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/myabc/portfolio/git/refs{/sha}","trees_url":"https://api.github.com/repos/myabc/portfolio/git/trees{/sha}","statuses_url":"https://api.github.com/repos/myabc/portfolio/statuses/{sha}","languages_url":"https://api.github.com/repos/myabc/portfolio/languages","stargazers_url":"https://api.github.com/repos/myabc/portfolio/stargazers","contributors_url":"https://api.github.com/repos/myabc/portfolio/contributors","subscribers_url":"https://api.github.com/repos/myabc/portfolio/subscribers","subscription_url":"https://api.github.com/repos/myabc/portfolio/subscription","commits_url":"https://api.github.com/repos/myabc/portfolio/commits{/sha}","git_commits_url":"https://api.github.com/repos/myabc/portfolio/git/commits{/sha}","comments_url":"https://api.github.com/repos/myabc/portfolio/comments{/number}","issue_comment_url":"https://api.github.com/repos/myabc/portfolio/issues/comments/{number}","contents_url":"https://api.github.com/repos/myabc/portfolio/contents/{+path}","compare_url":"https://api.github.com/repos/myabc/portfolio/compare/{base}...{head}","merges_url":"https://api.github.com/repos/myabc/portfolio/merges","archive_url":"https://api.github.com/repos/myabc/portfolio/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/myabc/portfolio/downloads","issues_url":"https://api.github.com/repos/myabc/portfolio/issues{/number}","pulls_url":"https://api.github.com/repos/myabc/portfolio/pulls{/number}","milestones_url":"https://api.github.com/repos/myabc/portfolio/milestones{/number}","notifications_url":"https://api.github.com/repos/myabc/portfolio/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/myabc/portfolio/labels{/name}"},{"id":1441,"name":"clickatell","full_name":"lukeredpath/clickatell","owner":{"login":"lukeredpath","id":613,"avatar_url":"https://0.gravatar.com/avatar/bdd4d23d1a822b2d68b53e7c51d69a39?d=https%3A%2F%2Fidenticons.github.com%2Ff29c21d4897f78948b91f03172341b7b.png","gravatar_id":"bdd4d23d1a822b2d68b53e7c51d69a39","url":"https://api.github.com/users/lukeredpath","html_url":"https://github.com/lukeredpath","followers_url":"https://api.github.com/users/lukeredpath/followers","following_url":"https://api.github.com/users/lukeredpath/following{/other_user}","gists_url":"https://api.github.com/users/lukeredpath/gists{/gist_id}","starred_url":"https://api.github.com/users/lukeredpath/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lukeredpath/subscriptions","organizations_url":"https://api.github.com/users/lukeredpath/orgs","repos_url":"https://api.github.com/users/lukeredpath/repos","events_url":"https://api.github.com/users/lukeredpath/events{/privacy}","received_events_url":"https://api.github.com/users/lukeredpath/received_events","type":"User"},"private":false,"html_url":"https://github.com/lukeredpath/clickatell","description":"NO LONGER SUPPORTED - Ruby interface to the Clickatell SMS Gateway API","fork":false,"url":"https://api.github.com/repos/lukeredpath/clickatell","forks_url":"https://api.github.com/repos/lukeredpath/clickatell/forks","keys_url":"https://api.github.com/repos/lukeredpath/clickatell/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lukeredpath/clickatell/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lukeredpath/clickatell/teams","hooks_url":"https://api.github.com/repos/lukeredpath/clickatell/hooks","issue_events_url":"https://api.github.com/repos/lukeredpath/clickatell/issues/events{/number}","events_url":"https://api.github.com/repos/lukeredpath/clickatell/events","assignees_url":"https://api.github.com/repos/lukeredpath/clickatell/assignees{/user}","branches_url":"https://api.github.com/repos/lukeredpath/clickatell/branches{/branch}","tags_url":"https://api.github.com/repos/lukeredpath/clickatell/tags","blobs_url":"https://api.github.com/repos/lukeredpath/clickatell/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lukeredpath/clickatell/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lukeredpath/clickatell/git/refs{/sha}","trees_url":"https://api.github.com/repos/lukeredpath/clickatell/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lukeredpath/clickatell/statuses/{sha}","languages_url":"https://api.github.com/repos/lukeredpath/clickatell/languages","stargazers_url":"https://api.github.com/repos/lukeredpath/clickatell/stargazers","contributors_url":"https://api.github.com/repos/lukeredpath/clickatell/contributors","subscribers_url":"https://api.github.com/repos/lukeredpath/clickatell/subscribers","subscription_url":"https://api.github.com/repos/lukeredpath/clickatell/subscription","commits_url":"https://api.github.com/repos/lukeredpath/clickatell/commits{/sha}","git_commits_url":"https://api.github.com/repos/lukeredpath/clickatell/git/commits{/sha}","comments_url":"https://api.github.com/repos/lukeredpath/clickatell/comments{/number}","issue_comment_url":"https://api.github.com/repos/lukeredpath/clickatell/issues/comments/{number}","contents_url":"https://api.github.com/repos/lukeredpath/clickatell/contents/{+path}","compare_url":"https://api.github.com/repos/lukeredpath/clickatell/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lukeredpath/clickatell/merges","archive_url":"https://api.github.com/repos/lukeredpath/clickatell/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lukeredpath/clickatell/downloads","issues_url":"https://api.github.com/repos/lukeredpath/clickatell/issues{/number}","pulls_url":"https://api.github.com/repos/lukeredpath/clickatell/pulls{/number}","milestones_url":"https://api.github.com/repos/lukeredpath/clickatell/milestones{/number}","notifications_url":"https://api.github.com/repos/lukeredpath/clickatell/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lukeredpath/clickatell/labels{/name}"},{"id":1444,"name":"do_notation","full_name":"aanand/do_notation","owner":{"login":"aanand","id":1062,"avatar_url":"https://2.gravatar.com/avatar/73022df4be6fcced9792f50497b4f119?d=https%3A%2F%2Fidenticons.github.com%2Fcd89fef7ffdd490db800357f47722b20.png","gravatar_id":"73022df4be6fcced9792f50497b4f119","url":"https://api.github.com/users/aanand","html_url":"https://github.com/aanand","followers_url":"https://api.github.com/users/aanand/followers","following_url":"https://api.github.com/users/aanand/following{/other_user}","gists_url":"https://api.github.com/users/aanand/gists{/gist_id}","starred_url":"https://api.github.com/users/aanand/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aanand/subscriptions","organizations_url":"https://api.github.com/users/aanand/orgs","repos_url":"https://api.github.com/users/aanand/repos","events_url":"https://api.github.com/users/aanand/events{/privacy}","received_events_url":"https://api.github.com/users/aanand/received_events","type":"User"},"private":false,"html_url":"https://github.com/aanand/do_notation","description":"Haskell-style monad do-notation for Ruby","fork":false,"url":"https://api.github.com/repos/aanand/do_notation","forks_url":"https://api.github.com/repos/aanand/do_notation/forks","keys_url":"https://api.github.com/repos/aanand/do_notation/keys{/key_id}","collaborators_url":"https://api.github.com/repos/aanand/do_notation/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/aanand/do_notation/teams","hooks_url":"https://api.github.com/repos/aanand/do_notation/hooks","issue_events_url":"https://api.github.com/repos/aanand/do_notation/issues/events{/number}","events_url":"https://api.github.com/repos/aanand/do_notation/events","assignees_url":"https://api.github.com/repos/aanand/do_notation/assignees{/user}","branches_url":"https://api.github.com/repos/aanand/do_notation/branches{/branch}","tags_url":"https://api.github.com/repos/aanand/do_notation/tags","blobs_url":"https://api.github.com/repos/aanand/do_notation/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/aanand/do_notation/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/aanand/do_notation/git/refs{/sha}","trees_url":"https://api.github.com/repos/aanand/do_notation/git/trees{/sha}","statuses_url":"https://api.github.com/repos/aanand/do_notation/statuses/{sha}","languages_url":"https://api.github.com/repos/aanand/do_notation/languages","stargazers_url":"https://api.github.com/repos/aanand/do_notation/stargazers","contributors_url":"https://api.github.com/repos/aanand/do_notation/contributors","subscribers_url":"https://api.github.com/repos/aanand/do_notation/subscribers","subscription_url":"https://api.github.com/repos/aanand/do_notation/subscription","commits_url":"https://api.github.com/repos/aanand/do_notation/commits{/sha}","git_commits_url":"https://api.github.com/repos/aanand/do_notation/git/commits{/sha}","comments_url":"https://api.github.com/repos/aanand/do_notation/comments{/number}","issue_comment_url":"https://api.github.com/repos/aanand/do_notation/issues/comments/{number}","contents_url":"https://api.github.com/repos/aanand/do_notation/contents/{+path}","compare_url":"https://api.github.com/repos/aanand/do_notation/compare/{base}...{head}","merges_url":"https://api.github.com/repos/aanand/do_notation/merges","archive_url":"https://api.github.com/repos/aanand/do_notation/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/aanand/do_notation/downloads","issues_url":"https://api.github.com/repos/aanand/do_notation/issues{/number}","pulls_url":"https://api.github.com/repos/aanand/do_notation/pulls{/number}","milestones_url":"https://api.github.com/repos/aanand/do_notation/milestones{/number}","notifications_url":"https://api.github.com/repos/aanand/do_notation/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/aanand/do_notation/labels{/name}"},{"id":1453,"name":"pictrails","full_name":"shingara/pictrails","owner":{"login":"shingara","id":1088,"avatar_url":"https://0.gravatar.com/avatar/2fd0206c71a1b22a9cc6293f38537461?d=https%3A%2F%2Fidenticons.github.com%2Fb1563a78ec59337587f6ab6397699afc.png","gravatar_id":"2fd0206c71a1b22a9cc6293f38537461","url":"https://api.github.com/users/shingara","html_url":"https://github.com/shingara","followers_url":"https://api.github.com/users/shingara/followers","following_url":"https://api.github.com/users/shingara/following{/other_user}","gists_url":"https://api.github.com/users/shingara/gists{/gist_id}","starred_url":"https://api.github.com/users/shingara/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shingara/subscriptions","organizations_url":"https://api.github.com/users/shingara/orgs","repos_url":"https://api.github.com/users/shingara/repos","events_url":"https://api.github.com/users/shingara/events{/privacy}","received_events_url":"https://api.github.com/users/shingara/received_events","type":"User"},"private":false,"html_url":"https://github.com/shingara/pictrails","description":"A Web Photo Gallery, written with Rails 2.0. Pictrails can manage several photo galleries.","fork":false,"url":"https://api.github.com/repos/shingara/pictrails","forks_url":"https://api.github.com/repos/shingara/pictrails/forks","keys_url":"https://api.github.com/repos/shingara/pictrails/keys{/key_id}","collaborators_url":"https://api.github.com/repos/shingara/pictrails/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/shingara/pictrails/teams","hooks_url":"https://api.github.com/repos/shingara/pictrails/hooks","issue_events_url":"https://api.github.com/repos/shingara/pictrails/issues/events{/number}","events_url":"https://api.github.com/repos/shingara/pictrails/events","assignees_url":"https://api.github.com/repos/shingara/pictrails/assignees{/user}","branches_url":"https://api.github.com/repos/shingara/pictrails/branches{/branch}","tags_url":"https://api.github.com/repos/shingara/pictrails/tags","blobs_url":"https://api.github.com/repos/shingara/pictrails/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/shingara/pictrails/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/shingara/pictrails/git/refs{/sha}","trees_url":"https://api.github.com/repos/shingara/pictrails/git/trees{/sha}","statuses_url":"https://api.github.com/repos/shingara/pictrails/statuses/{sha}","languages_url":"https://api.github.com/repos/shingara/pictrails/languages","stargazers_url":"https://api.github.com/repos/shingara/pictrails/stargazers","contributors_url":"https://api.github.com/repos/shingara/pictrails/contributors","subscribers_url":"https://api.github.com/repos/shingara/pictrails/subscribers","subscription_url":"https://api.github.com/repos/shingara/pictrails/subscription","commits_url":"https://api.github.com/repos/shingara/pictrails/commits{/sha}","git_commits_url":"https://api.github.com/repos/shingara/pictrails/git/commits{/sha}","comments_url":"https://api.github.com/repos/shingara/pictrails/comments{/number}","issue_comment_url":"https://api.github.com/repos/shingara/pictrails/issues/comments/{number}","contents_url":"https://api.github.com/repos/shingara/pictrails/contents/{+path}","compare_url":"https://api.github.com/repos/shingara/pictrails/compare/{base}...{head}","merges_url":"https://api.github.com/repos/shingara/pictrails/merges","archive_url":"https://api.github.com/repos/shingara/pictrails/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/shingara/pictrails/downloads","issues_url":"https://api.github.com/repos/shingara/pictrails/issues{/number}","pulls_url":"https://api.github.com/repos/shingara/pictrails/pulls{/number}","milestones_url":"https://api.github.com/repos/shingara/pictrails/milestones{/number}","notifications_url":"https://api.github.com/repos/shingara/pictrails/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/shingara/pictrails/labels{/name}"},{"id":1462,"name":"annotate_models","full_name":"ctran/annotate_models","owner":{"login":"ctran","id":491,"avatar_url":"https://1.gravatar.com/avatar/accad816054fc1b2fa7dae2a2fce5266?d=https%3A%2F%2Fidenticons.github.com%2F559cb990c9dffd8675f6bc2186971dc2.png","gravatar_id":"accad816054fc1b2fa7dae2a2fce5266","url":"https://api.github.com/users/ctran","html_url":"https://github.com/ctran","followers_url":"https://api.github.com/users/ctran/followers","following_url":"https://api.github.com/users/ctran/following{/other_user}","gists_url":"https://api.github.com/users/ctran/gists{/gist_id}","starred_url":"https://api.github.com/users/ctran/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ctran/subscriptions","organizations_url":"https://api.github.com/users/ctran/orgs","repos_url":"https://api.github.com/users/ctran/repos","events_url":"https://api.github.com/users/ctran/events{/privacy}","received_events_url":"https://api.github.com/users/ctran/received_events","type":"User"},"private":false,"html_url":"https://github.com/ctran/annotate_models","description":"Annotate ActiveRecord models as a gem","fork":false,"url":"https://api.github.com/repos/ctran/annotate_models","forks_url":"https://api.github.com/repos/ctran/annotate_models/forks","keys_url":"https://api.github.com/repos/ctran/annotate_models/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ctran/annotate_models/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ctran/annotate_models/teams","hooks_url":"https://api.github.com/repos/ctran/annotate_models/hooks","issue_events_url":"https://api.github.com/repos/ctran/annotate_models/issues/events{/number}","events_url":"https://api.github.com/repos/ctran/annotate_models/events","assignees_url":"https://api.github.com/repos/ctran/annotate_models/assignees{/user}","branches_url":"https://api.github.com/repos/ctran/annotate_models/branches{/branch}","tags_url":"https://api.github.com/repos/ctran/annotate_models/tags","blobs_url":"https://api.github.com/repos/ctran/annotate_models/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ctran/annotate_models/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ctran/annotate_models/git/refs{/sha}","trees_url":"https://api.github.com/repos/ctran/annotate_models/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ctran/annotate_models/statuses/{sha}","languages_url":"https://api.github.com/repos/ctran/annotate_models/languages","stargazers_url":"https://api.github.com/repos/ctran/annotate_models/stargazers","contributors_url":"https://api.github.com/repos/ctran/annotate_models/contributors","subscribers_url":"https://api.github.com/repos/ctran/annotate_models/subscribers","subscription_url":"https://api.github.com/repos/ctran/annotate_models/subscription","commits_url":"https://api.github.com/repos/ctran/annotate_models/commits{/sha}","git_commits_url":"https://api.github.com/repos/ctran/annotate_models/git/commits{/sha}","comments_url":"https://api.github.com/repos/ctran/annotate_models/comments{/number}","issue_comment_url":"https://api.github.com/repos/ctran/annotate_models/issues/comments/{number}","contents_url":"https://api.github.com/repos/ctran/annotate_models/contents/{+path}","compare_url":"https://api.github.com/repos/ctran/annotate_models/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ctran/annotate_models/merges","archive_url":"https://api.github.com/repos/ctran/annotate_models/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ctran/annotate_models/downloads","issues_url":"https://api.github.com/repos/ctran/annotate_models/issues{/number}","pulls_url":"https://api.github.com/repos/ctran/annotate_models/pulls{/number}","milestones_url":"https://api.github.com/repos/ctran/annotate_models/milestones{/number}","notifications_url":"https://api.github.com/repos/ctran/annotate_models/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ctran/annotate_models/labels{/name}"},{"id":1469,"name":"blueprint_layout","full_name":"alce/blueprint_layout","owner":{"login":"alce","id":1133,"avatar_url":"https://1.gravatar.com/avatar/b404a438e7106c61e31fa6ebcc089a5f?d=https%3A%2F%2Fidenticons.github.com%2Ffd06b8ea02fe5b1c2496fe1700e9d16c.png","gravatar_id":"b404a438e7106c61e31fa6ebcc089a5f","url":"https://api.github.com/users/alce","html_url":"https://github.com/alce","followers_url":"https://api.github.com/users/alce/followers","following_url":"https://api.github.com/users/alce/following{/other_user}","gists_url":"https://api.github.com/users/alce/gists{/gist_id}","starred_url":"https://api.github.com/users/alce/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alce/subscriptions","organizations_url":"https://api.github.com/users/alce/orgs","repos_url":"https://api.github.com/users/alce/repos","events_url":"https://api.github.com/users/alce/events{/privacy}","received_events_url":"https://api.github.com/users/alce/received_events","type":"User"},"private":false,"html_url":"https://github.com/alce/blueprint_layout","description":"Create ","fork":false,"url":"https://api.github.com/repos/alce/blueprint_layout","forks_url":"https://api.github.com/repos/alce/blueprint_layout/forks","keys_url":"https://api.github.com/repos/alce/blueprint_layout/keys{/key_id}","collaborators_url":"https://api.github.com/repos/alce/blueprint_layout/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/alce/blueprint_layout/teams","hooks_url":"https://api.github.com/repos/alce/blueprint_layout/hooks","issue_events_url":"https://api.github.com/repos/alce/blueprint_layout/issues/events{/number}","events_url":"https://api.github.com/repos/alce/blueprint_layout/events","assignees_url":"https://api.github.com/repos/alce/blueprint_layout/assignees{/user}","branches_url":"https://api.github.com/repos/alce/blueprint_layout/branches{/branch}","tags_url":"https://api.github.com/repos/alce/blueprint_layout/tags","blobs_url":"https://api.github.com/repos/alce/blueprint_layout/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/alce/blueprint_layout/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/alce/blueprint_layout/git/refs{/sha}","trees_url":"https://api.github.com/repos/alce/blueprint_layout/git/trees{/sha}","statuses_url":"https://api.github.com/repos/alce/blueprint_layout/statuses/{sha}","languages_url":"https://api.github.com/repos/alce/blueprint_layout/languages","stargazers_url":"https://api.github.com/repos/alce/blueprint_layout/stargazers","contributors_url":"https://api.github.com/repos/alce/blueprint_layout/contributors","subscribers_url":"https://api.github.com/repos/alce/blueprint_layout/subscribers","subscription_url":"https://api.github.com/repos/alce/blueprint_layout/subscription","commits_url":"https://api.github.com/repos/alce/blueprint_layout/commits{/sha}","git_commits_url":"https://api.github.com/repos/alce/blueprint_layout/git/commits{/sha}","comments_url":"https://api.github.com/repos/alce/blueprint_layout/comments{/number}","issue_comment_url":"https://api.github.com/repos/alce/blueprint_layout/issues/comments/{number}","contents_url":"https://api.github.com/repos/alce/blueprint_layout/contents/{+path}","compare_url":"https://api.github.com/repos/alce/blueprint_layout/compare/{base}...{head}","merges_url":"https://api.github.com/repos/alce/blueprint_layout/merges","archive_url":"https://api.github.com/repos/alce/blueprint_layout/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/alce/blueprint_layout/downloads","issues_url":"https://api.github.com/repos/alce/blueprint_layout/issues{/number}","pulls_url":"https://api.github.com/repos/alce/blueprint_layout/pulls{/number}","milestones_url":"https://api.github.com/repos/alce/blueprint_layout/milestones{/number}","notifications_url":"https://api.github.com/repos/alce/blueprint_layout/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/alce/blueprint_layout/labels{/name}"},{"id":1479,"name":"wp_theme_victoria","full_name":"enhiro/wp_theme_victoria","owner":{"login":"enhiro","id":1098,"avatar_url":"https://1.gravatar.com/avatar/1e62788b9ca14d8456b17deaf97f048f?d=https%3A%2F%2Fidenticons.github.com%2Fa5e0ff62be0b08456fc7f1e88812af3d.png","gravatar_id":"1e62788b9ca14d8456b17deaf97f048f","url":"https://api.github.com/users/enhiro","html_url":"https://github.com/enhiro","followers_url":"https://api.github.com/users/enhiro/followers","following_url":"https://api.github.com/users/enhiro/following{/other_user}","gists_url":"https://api.github.com/users/enhiro/gists{/gist_id}","starred_url":"https://api.github.com/users/enhiro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/enhiro/subscriptions","organizations_url":"https://api.github.com/users/enhiro/orgs","repos_url":"https://api.github.com/users/enhiro/repos","events_url":"https://api.github.com/users/enhiro/events{/privacy}","received_events_url":"https://api.github.com/users/enhiro/received_events","type":"User"},"private":false,"html_url":"https://github.com/enhiro/wp_theme_victoria","description":"Tema para wordpress","fork":false,"url":"https://api.github.com/repos/enhiro/wp_theme_victoria","forks_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/forks","keys_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/keys{/key_id}","collaborators_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/teams","hooks_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/hooks","issue_events_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/issues/events{/number}","events_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/events","assignees_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/assignees{/user}","branches_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/branches{/branch}","tags_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/tags","blobs_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/git/refs{/sha}","trees_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/git/trees{/sha}","statuses_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/statuses/{sha}","languages_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/languages","stargazers_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/stargazers","contributors_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/contributors","subscribers_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/subscribers","subscription_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/subscription","commits_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/commits{/sha}","git_commits_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/git/commits{/sha}","comments_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/comments{/number}","issue_comment_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/issues/comments/{number}","contents_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/contents/{+path}","compare_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/compare/{base}...{head}","merges_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/merges","archive_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/downloads","issues_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/issues{/number}","pulls_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/pulls{/number}","milestones_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/milestones{/number}","notifications_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/enhiro/wp_theme_victoria/labels{/name}"},{"id":1482,"name":"cosmo","full_name":"travis/cosmo","owner":{"login":"travis","id":1113,"avatar_url":"https://0.gravatar.com/avatar/1ec6df8a238d0088e58865391c9b5c7f?d=https%3A%2F%2Fidenticons.github.com%2F9c3b1830513cc3b8fc4b76635d32e692.png","gravatar_id":"1ec6df8a238d0088e58865391c9b5c7f","url":"https://api.github.com/users/travis","html_url":"https://github.com/travis","followers_url":"https://api.github.com/users/travis/followers","following_url":"https://api.github.com/users/travis/following{/other_user}","gists_url":"https://api.github.com/users/travis/gists{/gist_id}","starred_url":"https://api.github.com/users/travis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/travis/subscriptions","organizations_url":"https://api.github.com/users/travis/orgs","repos_url":"https://api.github.com/users/travis/repos","events_url":"https://api.github.com/users/travis/events{/privacy}","received_events_url":"https://api.github.com/users/travis/received_events","type":"User"},"private":false,"html_url":"https://github.com/travis/cosmo","description":"Travis Vachon's clone of the Cosmo Subversion tree","fork":false,"url":"https://api.github.com/repos/travis/cosmo","forks_url":"https://api.github.com/repos/travis/cosmo/forks","keys_url":"https://api.github.com/repos/travis/cosmo/keys{/key_id}","collaborators_url":"https://api.github.com/repos/travis/cosmo/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/travis/cosmo/teams","hooks_url":"https://api.github.com/repos/travis/cosmo/hooks","issue_events_url":"https://api.github.com/repos/travis/cosmo/issues/events{/number}","events_url":"https://api.github.com/repos/travis/cosmo/events","assignees_url":"https://api.github.com/repos/travis/cosmo/assignees{/user}","branches_url":"https://api.github.com/repos/travis/cosmo/branches{/branch}","tags_url":"https://api.github.com/repos/travis/cosmo/tags","blobs_url":"https://api.github.com/repos/travis/cosmo/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/travis/cosmo/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/travis/cosmo/git/refs{/sha}","trees_url":"https://api.github.com/repos/travis/cosmo/git/trees{/sha}","statuses_url":"https://api.github.com/repos/travis/cosmo/statuses/{sha}","languages_url":"https://api.github.com/repos/travis/cosmo/languages","stargazers_url":"https://api.github.com/repos/travis/cosmo/stargazers","contributors_url":"https://api.github.com/repos/travis/cosmo/contributors","subscribers_url":"https://api.github.com/repos/travis/cosmo/subscribers","subscription_url":"https://api.github.com/repos/travis/cosmo/subscription","commits_url":"https://api.github.com/repos/travis/cosmo/commits{/sha}","git_commits_url":"https://api.github.com/repos/travis/cosmo/git/commits{/sha}","comments_url":"https://api.github.com/repos/travis/cosmo/comments{/number}","issue_comment_url":"https://api.github.com/repos/travis/cosmo/issues/comments/{number}","contents_url":"https://api.github.com/repos/travis/cosmo/contents/{+path}","compare_url":"https://api.github.com/repos/travis/cosmo/compare/{base}...{head}","merges_url":"https://api.github.com/repos/travis/cosmo/merges","archive_url":"https://api.github.com/repos/travis/cosmo/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/travis/cosmo/downloads","issues_url":"https://api.github.com/repos/travis/cosmo/issues{/number}","pulls_url":"https://api.github.com/repos/travis/cosmo/pulls{/number}","milestones_url":"https://api.github.com/repos/travis/cosmo/milestones{/number}","notifications_url":"https://api.github.com/repos/travis/cosmo/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/travis/cosmo/labels{/name}"},{"id":1490,"name":"fogbugz-svnhook","full_name":"francois/fogbugz-svnhook","owner":{"login":"francois","id":247,"avatar_url":"https://0.gravatar.com/avatar/7da32f740e64088d2b07c277f3c1b94b?d=https%3A%2F%2Fidenticons.github.com%2F3cec07e9ba5f5bb252d13f5f431e4bbb.png","gravatar_id":"7da32f740e64088d2b07c277f3c1b94b","url":"https://api.github.com/users/francois","html_url":"https://github.com/francois","followers_url":"https://api.github.com/users/francois/followers","following_url":"https://api.github.com/users/francois/following{/other_user}","gists_url":"https://api.github.com/users/francois/gists{/gist_id}","starred_url":"https://api.github.com/users/francois/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/francois/subscriptions","organizations_url":"https://api.github.com/users/francois/orgs","repos_url":"https://api.github.com/users/francois/repos","events_url":"https://api.github.com/users/francois/events{/privacy}","received_events_url":"https://api.github.com/users/francois/received_events","type":"User"},"private":false,"html_url":"https://github.com/francois/fogbugz-svnhook","description":"A Subversion post-commit hook that will edit FogBugz cases using Trac-like keywords","fork":false,"url":"https://api.github.com/repos/francois/fogbugz-svnhook","forks_url":"https://api.github.com/repos/francois/fogbugz-svnhook/forks","keys_url":"https://api.github.com/repos/francois/fogbugz-svnhook/keys{/key_id}","collaborators_url":"https://api.github.com/repos/francois/fogbugz-svnhook/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/francois/fogbugz-svnhook/teams","hooks_url":"https://api.github.com/repos/francois/fogbugz-svnhook/hooks","issue_events_url":"https://api.github.com/repos/francois/fogbugz-svnhook/issues/events{/number}","events_url":"https://api.github.com/repos/francois/fogbugz-svnhook/events","assignees_url":"https://api.github.com/repos/francois/fogbugz-svnhook/assignees{/user}","branches_url":"https://api.github.com/repos/francois/fogbugz-svnhook/branches{/branch}","tags_url":"https://api.github.com/repos/francois/fogbugz-svnhook/tags","blobs_url":"https://api.github.com/repos/francois/fogbugz-svnhook/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/francois/fogbugz-svnhook/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/francois/fogbugz-svnhook/git/refs{/sha}","trees_url":"https://api.github.com/repos/francois/fogbugz-svnhook/git/trees{/sha}","statuses_url":"https://api.github.com/repos/francois/fogbugz-svnhook/statuses/{sha}","languages_url":"https://api.github.com/repos/francois/fogbugz-svnhook/languages","stargazers_url":"https://api.github.com/repos/francois/fogbugz-svnhook/stargazers","contributors_url":"https://api.github.com/repos/francois/fogbugz-svnhook/contributors","subscribers_url":"https://api.github.com/repos/francois/fogbugz-svnhook/subscribers","subscription_url":"https://api.github.com/repos/francois/fogbugz-svnhook/subscription","commits_url":"https://api.github.com/repos/francois/fogbugz-svnhook/commits{/sha}","git_commits_url":"https://api.github.com/repos/francois/fogbugz-svnhook/git/commits{/sha}","comments_url":"https://api.github.com/repos/francois/fogbugz-svnhook/comments{/number}","issue_comment_url":"https://api.github.com/repos/francois/fogbugz-svnhook/issues/comments/{number}","contents_url":"https://api.github.com/repos/francois/fogbugz-svnhook/contents/{+path}","compare_url":"https://api.github.com/repos/francois/fogbugz-svnhook/compare/{base}...{head}","merges_url":"https://api.github.com/repos/francois/fogbugz-svnhook/merges","archive_url":"https://api.github.com/repos/francois/fogbugz-svnhook/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/francois/fogbugz-svnhook/downloads","issues_url":"https://api.github.com/repos/francois/fogbugz-svnhook/issues{/number}","pulls_url":"https://api.github.com/repos/francois/fogbugz-svnhook/pulls{/number}","milestones_url":"https://api.github.com/repos/francois/fogbugz-svnhook/milestones{/number}","notifications_url":"https://api.github.com/repos/francois/fogbugz-svnhook/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/francois/fogbugz-svnhook/labels{/name}"},{"id":1494,"name":"haml","full_name":"mislav/haml","owner":{"login":"mislav","id":887,"avatar_url":"https://0.gravatar.com/avatar/8f93a872e399bc1353cc8d4e791d5401?d=https%3A%2F%2Fidenticons.github.com%2F7ce3284b743aefde80ffd9aec500e085.png","gravatar_id":"8f93a872e399bc1353cc8d4e791d5401","url":"https://api.github.com/users/mislav","html_url":"https://github.com/mislav","followers_url":"https://api.github.com/users/mislav/followers","following_url":"https://api.github.com/users/mislav/following{/other_user}","gists_url":"https://api.github.com/users/mislav/gists{/gist_id}","starred_url":"https://api.github.com/users/mislav/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mislav/subscriptions","organizations_url":"https://api.github.com/users/mislav/orgs","repos_url":"https://api.github.com/users/mislav/repos","events_url":"https://api.github.com/users/mislav/events{/privacy}","received_events_url":"https://api.github.com/users/mislav/received_events","type":"User"},"private":false,"html_url":"https://github.com/mislav/haml","description":"HTML Abstraction Markup Language - A Markup Haiku","fork":true,"url":"https://api.github.com/repos/mislav/haml","forks_url":"https://api.github.com/repos/mislav/haml/forks","keys_url":"https://api.github.com/repos/mislav/haml/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mislav/haml/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mislav/haml/teams","hooks_url":"https://api.github.com/repos/mislav/haml/hooks","issue_events_url":"https://api.github.com/repos/mislav/haml/issues/events{/number}","events_url":"https://api.github.com/repos/mislav/haml/events","assignees_url":"https://api.github.com/repos/mislav/haml/assignees{/user}","branches_url":"https://api.github.com/repos/mislav/haml/branches{/branch}","tags_url":"https://api.github.com/repos/mislav/haml/tags","blobs_url":"https://api.github.com/repos/mislav/haml/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mislav/haml/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mislav/haml/git/refs{/sha}","trees_url":"https://api.github.com/repos/mislav/haml/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mislav/haml/statuses/{sha}","languages_url":"https://api.github.com/repos/mislav/haml/languages","stargazers_url":"https://api.github.com/repos/mislav/haml/stargazers","contributors_url":"https://api.github.com/repos/mislav/haml/contributors","subscribers_url":"https://api.github.com/repos/mislav/haml/subscribers","subscription_url":"https://api.github.com/repos/mislav/haml/subscription","commits_url":"https://api.github.com/repos/mislav/haml/commits{/sha}","git_commits_url":"https://api.github.com/repos/mislav/haml/git/commits{/sha}","comments_url":"https://api.github.com/repos/mislav/haml/comments{/number}","issue_comment_url":"https://api.github.com/repos/mislav/haml/issues/comments/{number}","contents_url":"https://api.github.com/repos/mislav/haml/contents/{+path}","compare_url":"https://api.github.com/repos/mislav/haml/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mislav/haml/merges","archive_url":"https://api.github.com/repos/mislav/haml/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mislav/haml/downloads","issues_url":"https://api.github.com/repos/mislav/haml/issues{/number}","pulls_url":"https://api.github.com/repos/mislav/haml/pulls{/number}","milestones_url":"https://api.github.com/repos/mislav/haml/milestones{/number}","notifications_url":"https://api.github.com/repos/mislav/haml/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mislav/haml/labels{/name}"},{"id":1499,"name":"quicktest","full_name":"gregwebs/quicktest","owner":{"login":"gregwebs","id":1183,"avatar_url":"https://1.gravatar.com/avatar/bad65d3d7319025d73e065d7a29ee22a?d=https%3A%2F%2Fidenticons.github.com%2F0e095e054ee94774d6a496099eb1cf6a.png","gravatar_id":"bad65d3d7319025d73e065d7a29ee22a","url":"https://api.github.com/users/gregwebs","html_url":"https://github.com/gregwebs","followers_url":"https://api.github.com/users/gregwebs/followers","following_url":"https://api.github.com/users/gregwebs/following{/other_user}","gists_url":"https://api.github.com/users/gregwebs/gists{/gist_id}","starred_url":"https://api.github.com/users/gregwebs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gregwebs/subscriptions","organizations_url":"https://api.github.com/users/gregwebs/orgs","repos_url":"https://api.github.com/users/gregwebs/repos","events_url":"https://api.github.com/users/gregwebs/events{/privacy}","received_events_url":"https://api.github.com/users/gregwebs/received_events","type":"User"},"private":false,"html_url":"https://github.com/gregwebs/quicktest","description":"Utility for inlining unit tests with the code under test.","fork":false,"url":"https://api.github.com/repos/gregwebs/quicktest","forks_url":"https://api.github.com/repos/gregwebs/quicktest/forks","keys_url":"https://api.github.com/repos/gregwebs/quicktest/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gregwebs/quicktest/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gregwebs/quicktest/teams","hooks_url":"https://api.github.com/repos/gregwebs/quicktest/hooks","issue_events_url":"https://api.github.com/repos/gregwebs/quicktest/issues/events{/number}","events_url":"https://api.github.com/repos/gregwebs/quicktest/events","assignees_url":"https://api.github.com/repos/gregwebs/quicktest/assignees{/user}","branches_url":"https://api.github.com/repos/gregwebs/quicktest/branches{/branch}","tags_url":"https://api.github.com/repos/gregwebs/quicktest/tags","blobs_url":"https://api.github.com/repos/gregwebs/quicktest/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gregwebs/quicktest/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gregwebs/quicktest/git/refs{/sha}","trees_url":"https://api.github.com/repos/gregwebs/quicktest/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gregwebs/quicktest/statuses/{sha}","languages_url":"https://api.github.com/repos/gregwebs/quicktest/languages","stargazers_url":"https://api.github.com/repos/gregwebs/quicktest/stargazers","contributors_url":"https://api.github.com/repos/gregwebs/quicktest/contributors","subscribers_url":"https://api.github.com/repos/gregwebs/quicktest/subscribers","subscription_url":"https://api.github.com/repos/gregwebs/quicktest/subscription","commits_url":"https://api.github.com/repos/gregwebs/quicktest/commits{/sha}","git_commits_url":"https://api.github.com/repos/gregwebs/quicktest/git/commits{/sha}","comments_url":"https://api.github.com/repos/gregwebs/quicktest/comments{/number}","issue_comment_url":"https://api.github.com/repos/gregwebs/quicktest/issues/comments/{number}","contents_url":"https://api.github.com/repos/gregwebs/quicktest/contents/{+path}","compare_url":"https://api.github.com/repos/gregwebs/quicktest/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gregwebs/quicktest/merges","archive_url":"https://api.github.com/repos/gregwebs/quicktest/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gregwebs/quicktest/downloads","issues_url":"https://api.github.com/repos/gregwebs/quicktest/issues{/number}","pulls_url":"https://api.github.com/repos/gregwebs/quicktest/pulls{/number}","milestones_url":"https://api.github.com/repos/gregwebs/quicktest/milestones{/number}","notifications_url":"https://api.github.com/repos/gregwebs/quicktest/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gregwebs/quicktest/labels{/name}"},{"id":1511,"name":"getfamilliarwithgit","full_name":"bcbroom/getfamilliarwithgit","owner":{"login":"bcbroom","id":1240,"avatar_url":"https://1.gravatar.com/avatar/72ddd6509156a7dd3c301b87a46c5219?d=https%3A%2F%2Fidenticons.github.com%2Fa9078e8653368c9c291ae2f8b74012e7.png","gravatar_id":"72ddd6509156a7dd3c301b87a46c5219","url":"https://api.github.com/users/bcbroom","html_url":"https://github.com/bcbroom","followers_url":"https://api.github.com/users/bcbroom/followers","following_url":"https://api.github.com/users/bcbroom/following{/other_user}","gists_url":"https://api.github.com/users/bcbroom/gists{/gist_id}","starred_url":"https://api.github.com/users/bcbroom/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bcbroom/subscriptions","organizations_url":"https://api.github.com/users/bcbroom/orgs","repos_url":"https://api.github.com/users/bcbroom/repos","events_url":"https://api.github.com/users/bcbroom/events{/privacy}","received_events_url":"https://api.github.com/users/bcbroom/received_events","type":"User"},"private":false,"html_url":"https://github.com/bcbroom/getfamilliarwithgit","description":"","fork":false,"url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit","forks_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/forks","keys_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/teams","hooks_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/hooks","issue_events_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/issues/events{/number}","events_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/events","assignees_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/assignees{/user}","branches_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/branches{/branch}","tags_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/tags","blobs_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/git/refs{/sha}","trees_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/statuses/{sha}","languages_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/languages","stargazers_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/stargazers","contributors_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/contributors","subscribers_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/subscribers","subscription_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/subscription","commits_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/commits{/sha}","git_commits_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/git/commits{/sha}","comments_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/comments{/number}","issue_comment_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/issues/comments/{number}","contents_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/contents/{+path}","compare_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/merges","archive_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/downloads","issues_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/issues{/number}","pulls_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/pulls{/number}","milestones_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/milestones{/number}","notifications_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bcbroom/getfamilliarwithgit/labels{/name}"},{"id":1512,"name":"stor","full_name":"qartis/stor","owner":{"login":"qartis","id":1253,"avatar_url":"https://2.gravatar.com/avatar/1b2c7498c940fe0af16e0408af8eb02c?d=https%3A%2F%2Fidenticons.github.com%2Fb495ce63ede0f4efc9eec62cb947c162.png","gravatar_id":"1b2c7498c940fe0af16e0408af8eb02c","url":"https://api.github.com/users/qartis","html_url":"https://github.com/qartis","followers_url":"https://api.github.com/users/qartis/followers","following_url":"https://api.github.com/users/qartis/following{/other_user}","gists_url":"https://api.github.com/users/qartis/gists{/gist_id}","starred_url":"https://api.github.com/users/qartis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/qartis/subscriptions","organizations_url":"https://api.github.com/users/qartis/orgs","repos_url":"https://api.github.com/users/qartis/repos","events_url":"https://api.github.com/users/qartis/events{/privacy}","received_events_url":"https://api.github.com/users/qartis/received_events","type":"User"},"private":false,"html_url":"https://github.com/qartis/stor","description":"stor qt systray applet","fork":false,"url":"https://api.github.com/repos/qartis/stor","forks_url":"https://api.github.com/repos/qartis/stor/forks","keys_url":"https://api.github.com/repos/qartis/stor/keys{/key_id}","collaborators_url":"https://api.github.com/repos/qartis/stor/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/qartis/stor/teams","hooks_url":"https://api.github.com/repos/qartis/stor/hooks","issue_events_url":"https://api.github.com/repos/qartis/stor/issues/events{/number}","events_url":"https://api.github.com/repos/qartis/stor/events","assignees_url":"https://api.github.com/repos/qartis/stor/assignees{/user}","branches_url":"https://api.github.com/repos/qartis/stor/branches{/branch}","tags_url":"https://api.github.com/repos/qartis/stor/tags","blobs_url":"https://api.github.com/repos/qartis/stor/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/qartis/stor/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/qartis/stor/git/refs{/sha}","trees_url":"https://api.github.com/repos/qartis/stor/git/trees{/sha}","statuses_url":"https://api.github.com/repos/qartis/stor/statuses/{sha}","languages_url":"https://api.github.com/repos/qartis/stor/languages","stargazers_url":"https://api.github.com/repos/qartis/stor/stargazers","contributors_url":"https://api.github.com/repos/qartis/stor/contributors","subscribers_url":"https://api.github.com/repos/qartis/stor/subscribers","subscription_url":"https://api.github.com/repos/qartis/stor/subscription","commits_url":"https://api.github.com/repos/qartis/stor/commits{/sha}","git_commits_url":"https://api.github.com/repos/qartis/stor/git/commits{/sha}","comments_url":"https://api.github.com/repos/qartis/stor/comments{/number}","issue_comment_url":"https://api.github.com/repos/qartis/stor/issues/comments/{number}","contents_url":"https://api.github.com/repos/qartis/stor/contents/{+path}","compare_url":"https://api.github.com/repos/qartis/stor/compare/{base}...{head}","merges_url":"https://api.github.com/repos/qartis/stor/merges","archive_url":"https://api.github.com/repos/qartis/stor/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/qartis/stor/downloads","issues_url":"https://api.github.com/repos/qartis/stor/issues{/number}","pulls_url":"https://api.github.com/repos/qartis/stor/pulls{/number}","milestones_url":"https://api.github.com/repos/qartis/stor/milestones{/number}","notifications_url":"https://api.github.com/repos/qartis/stor/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/qartis/stor/labels{/name}"},{"id":1531,"name":"tonal","full_name":"bobbyrward/tonal","owner":{"login":"bobbyrward","id":1262,"avatar_url":"https://0.gravatar.com/avatar/36455d5ff84898dbba1724694fd32875?d=https%3A%2F%2Fidenticons.github.com%2Fdc4c44f624d600aa568390f1f1104aa0.png","gravatar_id":"36455d5ff84898dbba1724694fd32875","url":"https://api.github.com/users/bobbyrward","html_url":"https://github.com/bobbyrward","followers_url":"https://api.github.com/users/bobbyrward/followers","following_url":"https://api.github.com/users/bobbyrward/following{/other_user}","gists_url":"https://api.github.com/users/bobbyrward/gists{/gist_id}","starred_url":"https://api.github.com/users/bobbyrward/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bobbyrward/subscriptions","organizations_url":"https://api.github.com/users/bobbyrward/orgs","repos_url":"https://api.github.com/users/bobbyrward/repos","events_url":"https://api.github.com/users/bobbyrward/events{/privacy}","received_events_url":"https://api.github.com/users/bobbyrward/received_events","type":"User"},"private":false,"html_url":"https://github.com/bobbyrward/tonal","description":"A cross platform media player using wxPython and pyglet","fork":false,"url":"https://api.github.com/repos/bobbyrward/tonal","forks_url":"https://api.github.com/repos/bobbyrward/tonal/forks","keys_url":"https://api.github.com/repos/bobbyrward/tonal/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bobbyrward/tonal/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bobbyrward/tonal/teams","hooks_url":"https://api.github.com/repos/bobbyrward/tonal/hooks","issue_events_url":"https://api.github.com/repos/bobbyrward/tonal/issues/events{/number}","events_url":"https://api.github.com/repos/bobbyrward/tonal/events","assignees_url":"https://api.github.com/repos/bobbyrward/tonal/assignees{/user}","branches_url":"https://api.github.com/repos/bobbyrward/tonal/branches{/branch}","tags_url":"https://api.github.com/repos/bobbyrward/tonal/tags","blobs_url":"https://api.github.com/repos/bobbyrward/tonal/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bobbyrward/tonal/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bobbyrward/tonal/git/refs{/sha}","trees_url":"https://api.github.com/repos/bobbyrward/tonal/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bobbyrward/tonal/statuses/{sha}","languages_url":"https://api.github.com/repos/bobbyrward/tonal/languages","stargazers_url":"https://api.github.com/repos/bobbyrward/tonal/stargazers","contributors_url":"https://api.github.com/repos/bobbyrward/tonal/contributors","subscribers_url":"https://api.github.com/repos/bobbyrward/tonal/subscribers","subscription_url":"https://api.github.com/repos/bobbyrward/tonal/subscription","commits_url":"https://api.github.com/repos/bobbyrward/tonal/commits{/sha}","git_commits_url":"https://api.github.com/repos/bobbyrward/tonal/git/commits{/sha}","comments_url":"https://api.github.com/repos/bobbyrward/tonal/comments{/number}","issue_comment_url":"https://api.github.com/repos/bobbyrward/tonal/issues/comments/{number}","contents_url":"https://api.github.com/repos/bobbyrward/tonal/contents/{+path}","compare_url":"https://api.github.com/repos/bobbyrward/tonal/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bobbyrward/tonal/merges","archive_url":"https://api.github.com/repos/bobbyrward/tonal/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bobbyrward/tonal/downloads","issues_url":"https://api.github.com/repos/bobbyrward/tonal/issues{/number}","pulls_url":"https://api.github.com/repos/bobbyrward/tonal/pulls{/number}","milestones_url":"https://api.github.com/repos/bobbyrward/tonal/milestones{/number}","notifications_url":"https://api.github.com/repos/bobbyrward/tonal/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bobbyrward/tonal/labels{/name}"},{"id":1537,"name":"axiom","full_name":"daly/axiom","owner":{"login":"daly","id":1325,"avatar_url":"https://0.gravatar.com/avatar/b99e76fb0ce8c7c5093ffc6bde1d07c9?d=https%3A%2F%2Fidenticons.github.com%2F3546ab441e56fa333f8b44b610d95691.png","gravatar_id":"b99e76fb0ce8c7c5093ffc6bde1d07c9","url":"https://api.github.com/users/daly","html_url":"https://github.com/daly","followers_url":"https://api.github.com/users/daly/followers","following_url":"https://api.github.com/users/daly/following{/other_user}","gists_url":"https://api.github.com/users/daly/gists{/gist_id}","starred_url":"https://api.github.com/users/daly/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/daly/subscriptions","organizations_url":"https://api.github.com/users/daly/orgs","repos_url":"https://api.github.com/users/daly/repos","events_url":"https://api.github.com/users/daly/events{/privacy}","received_events_url":"https://api.github.com/users/daly/received_events","type":"User"},"private":false,"html_url":"https://github.com/daly/axiom","description":"Axiom is a free, open source computer algebra system","fork":false,"url":"https://api.github.com/repos/daly/axiom","forks_url":"https://api.github.com/repos/daly/axiom/forks","keys_url":"https://api.github.com/repos/daly/axiom/keys{/key_id}","collaborators_url":"https://api.github.com/repos/daly/axiom/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/daly/axiom/teams","hooks_url":"https://api.github.com/repos/daly/axiom/hooks","issue_events_url":"https://api.github.com/repos/daly/axiom/issues/events{/number}","events_url":"https://api.github.com/repos/daly/axiom/events","assignees_url":"https://api.github.com/repos/daly/axiom/assignees{/user}","branches_url":"https://api.github.com/repos/daly/axiom/branches{/branch}","tags_url":"https://api.github.com/repos/daly/axiom/tags","blobs_url":"https://api.github.com/repos/daly/axiom/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/daly/axiom/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/daly/axiom/git/refs{/sha}","trees_url":"https://api.github.com/repos/daly/axiom/git/trees{/sha}","statuses_url":"https://api.github.com/repos/daly/axiom/statuses/{sha}","languages_url":"https://api.github.com/repos/daly/axiom/languages","stargazers_url":"https://api.github.com/repos/daly/axiom/stargazers","contributors_url":"https://api.github.com/repos/daly/axiom/contributors","subscribers_url":"https://api.github.com/repos/daly/axiom/subscribers","subscription_url":"https://api.github.com/repos/daly/axiom/subscription","commits_url":"https://api.github.com/repos/daly/axiom/commits{/sha}","git_commits_url":"https://api.github.com/repos/daly/axiom/git/commits{/sha}","comments_url":"https://api.github.com/repos/daly/axiom/comments{/number}","issue_comment_url":"https://api.github.com/repos/daly/axiom/issues/comments/{number}","contents_url":"https://api.github.com/repos/daly/axiom/contents/{+path}","compare_url":"https://api.github.com/repos/daly/axiom/compare/{base}...{head}","merges_url":"https://api.github.com/repos/daly/axiom/merges","archive_url":"https://api.github.com/repos/daly/axiom/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/daly/axiom/downloads","issues_url":"https://api.github.com/repos/daly/axiom/issues{/number}","pulls_url":"https://api.github.com/repos/daly/axiom/pulls{/number}","milestones_url":"https://api.github.com/repos/daly/axiom/milestones{/number}","notifications_url":"https://api.github.com/repos/daly/axiom/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/daly/axiom/labels{/name}"},{"id":1540,"name":"deal","full_name":"wavydavy/deal","owner":{"login":"wavydavy","id":1042,"avatar_url":"https://1.gravatar.com/avatar/771b7a3bcfb5cac42aa4de59499be72c?d=https%3A%2F%2Fidenticons.github.com%2F9ac403da7947a183884c18a67d3aa8de.png","gravatar_id":"771b7a3bcfb5cac42aa4de59499be72c","url":"https://api.github.com/users/wavydavy","html_url":"https://github.com/wavydavy","followers_url":"https://api.github.com/users/wavydavy/followers","following_url":"https://api.github.com/users/wavydavy/following{/other_user}","gists_url":"https://api.github.com/users/wavydavy/gists{/gist_id}","starred_url":"https://api.github.com/users/wavydavy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wavydavy/subscriptions","organizations_url":"https://api.github.com/users/wavydavy/orgs","repos_url":"https://api.github.com/users/wavydavy/repos","events_url":"https://api.github.com/users/wavydavy/events{/privacy}","received_events_url":"https://api.github.com/users/wavydavy/received_events","type":"User"},"private":false,"html_url":"https://github.com/wavydavy/deal","description":"A SimPy simulation for a fully Decentralised Economic ALlocation mechansim","fork":false,"url":"https://api.github.com/repos/wavydavy/deal","forks_url":"https://api.github.com/repos/wavydavy/deal/forks","keys_url":"https://api.github.com/repos/wavydavy/deal/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wavydavy/deal/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wavydavy/deal/teams","hooks_url":"https://api.github.com/repos/wavydavy/deal/hooks","issue_events_url":"https://api.github.com/repos/wavydavy/deal/issues/events{/number}","events_url":"https://api.github.com/repos/wavydavy/deal/events","assignees_url":"https://api.github.com/repos/wavydavy/deal/assignees{/user}","branches_url":"https://api.github.com/repos/wavydavy/deal/branches{/branch}","tags_url":"https://api.github.com/repos/wavydavy/deal/tags","blobs_url":"https://api.github.com/repos/wavydavy/deal/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wavydavy/deal/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wavydavy/deal/git/refs{/sha}","trees_url":"https://api.github.com/repos/wavydavy/deal/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wavydavy/deal/statuses/{sha}","languages_url":"https://api.github.com/repos/wavydavy/deal/languages","stargazers_url":"https://api.github.com/repos/wavydavy/deal/stargazers","contributors_url":"https://api.github.com/repos/wavydavy/deal/contributors","subscribers_url":"https://api.github.com/repos/wavydavy/deal/subscribers","subscription_url":"https://api.github.com/repos/wavydavy/deal/subscription","commits_url":"https://api.github.com/repos/wavydavy/deal/commits{/sha}","git_commits_url":"https://api.github.com/repos/wavydavy/deal/git/commits{/sha}","comments_url":"https://api.github.com/repos/wavydavy/deal/comments{/number}","issue_comment_url":"https://api.github.com/repos/wavydavy/deal/issues/comments/{number}","contents_url":"https://api.github.com/repos/wavydavy/deal/contents/{+path}","compare_url":"https://api.github.com/repos/wavydavy/deal/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wavydavy/deal/merges","archive_url":"https://api.github.com/repos/wavydavy/deal/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wavydavy/deal/downloads","issues_url":"https://api.github.com/repos/wavydavy/deal/issues{/number}","pulls_url":"https://api.github.com/repos/wavydavy/deal/pulls{/number}","milestones_url":"https://api.github.com/repos/wavydavy/deal/milestones{/number}","notifications_url":"https://api.github.com/repos/wavydavy/deal/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wavydavy/deal/labels{/name}"},{"id":1549,"name":"test","full_name":"tphyahoo/test","owner":{"login":"tphyahoo","id":1337,"avatar_url":"https://1.gravatar.com/avatar/33fab7467f144391d68e0115a959ebbb?d=https%3A%2F%2Fidenticons.github.com%2Fe48e13207341b6bffb7fb1622282247b.png","gravatar_id":"33fab7467f144391d68e0115a959ebbb","url":"https://api.github.com/users/tphyahoo","html_url":"https://github.com/tphyahoo","followers_url":"https://api.github.com/users/tphyahoo/followers","following_url":"https://api.github.com/users/tphyahoo/following{/other_user}","gists_url":"https://api.github.com/users/tphyahoo/gists{/gist_id}","starred_url":"https://api.github.com/users/tphyahoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tphyahoo/subscriptions","organizations_url":"https://api.github.com/users/tphyahoo/orgs","repos_url":"https://api.github.com/users/tphyahoo/repos","events_url":"https://api.github.com/users/tphyahoo/events{/privacy}","received_events_url":"https://api.github.com/users/tphyahoo/received_events","type":"User"},"private":false,"html_url":"https://github.com/tphyahoo/test","description":"test","fork":false,"url":"https://api.github.com/repos/tphyahoo/test","forks_url":"https://api.github.com/repos/tphyahoo/test/forks","keys_url":"https://api.github.com/repos/tphyahoo/test/keys{/key_id}","collaborators_url":"https://api.github.com/repos/tphyahoo/test/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/tphyahoo/test/teams","hooks_url":"https://api.github.com/repos/tphyahoo/test/hooks","issue_events_url":"https://api.github.com/repos/tphyahoo/test/issues/events{/number}","events_url":"https://api.github.com/repos/tphyahoo/test/events","assignees_url":"https://api.github.com/repos/tphyahoo/test/assignees{/user}","branches_url":"https://api.github.com/repos/tphyahoo/test/branches{/branch}","tags_url":"https://api.github.com/repos/tphyahoo/test/tags","blobs_url":"https://api.github.com/repos/tphyahoo/test/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/tphyahoo/test/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/tphyahoo/test/git/refs{/sha}","trees_url":"https://api.github.com/repos/tphyahoo/test/git/trees{/sha}","statuses_url":"https://api.github.com/repos/tphyahoo/test/statuses/{sha}","languages_url":"https://api.github.com/repos/tphyahoo/test/languages","stargazers_url":"https://api.github.com/repos/tphyahoo/test/stargazers","contributors_url":"https://api.github.com/repos/tphyahoo/test/contributors","subscribers_url":"https://api.github.com/repos/tphyahoo/test/subscribers","subscription_url":"https://api.github.com/repos/tphyahoo/test/subscription","commits_url":"https://api.github.com/repos/tphyahoo/test/commits{/sha}","git_commits_url":"https://api.github.com/repos/tphyahoo/test/git/commits{/sha}","comments_url":"https://api.github.com/repos/tphyahoo/test/comments{/number}","issue_comment_url":"https://api.github.com/repos/tphyahoo/test/issues/comments/{number}","contents_url":"https://api.github.com/repos/tphyahoo/test/contents/{+path}","compare_url":"https://api.github.com/repos/tphyahoo/test/compare/{base}...{head}","merges_url":"https://api.github.com/repos/tphyahoo/test/merges","archive_url":"https://api.github.com/repos/tphyahoo/test/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/tphyahoo/test/downloads","issues_url":"https://api.github.com/repos/tphyahoo/test/issues{/number}","pulls_url":"https://api.github.com/repos/tphyahoo/test/pulls{/number}","milestones_url":"https://api.github.com/repos/tphyahoo/test/milestones{/number}","notifications_url":"https://api.github.com/repos/tphyahoo/test/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/tphyahoo/test/labels{/name}"},{"id":1553,"name":"knuff","full_name":"jesper/knuff","owner":{"login":"jesper","id":1334,"avatar_url":"https://0.gravatar.com/avatar/c8612f9313ed7f88f79349b27fd19e55?d=https%3A%2F%2Fidenticons.github.com%2F8edd72158ccd2a879f79cb2538568fdc.png","gravatar_id":"c8612f9313ed7f88f79349b27fd19e55","url":"https://api.github.com/users/jesper","html_url":"https://github.com/jesper","followers_url":"https://api.github.com/users/jesper/followers","following_url":"https://api.github.com/users/jesper/following{/other_user}","gists_url":"https://api.github.com/users/jesper/gists{/gist_id}","starred_url":"https://api.github.com/users/jesper/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jesper/subscriptions","organizations_url":"https://api.github.com/users/jesper/orgs","repos_url":"https://api.github.com/users/jesper/repos","events_url":"https://api.github.com/users/jesper/events{/privacy}","received_events_url":"https://api.github.com/users/jesper/received_events","type":"User"},"private":false,"html_url":"https://github.com/jesper/knuff","description":"A simple game revolving around pushing circles around on a table like surface.","fork":false,"url":"https://api.github.com/repos/jesper/knuff","forks_url":"https://api.github.com/repos/jesper/knuff/forks","keys_url":"https://api.github.com/repos/jesper/knuff/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jesper/knuff/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jesper/knuff/teams","hooks_url":"https://api.github.com/repos/jesper/knuff/hooks","issue_events_url":"https://api.github.com/repos/jesper/knuff/issues/events{/number}","events_url":"https://api.github.com/repos/jesper/knuff/events","assignees_url":"https://api.github.com/repos/jesper/knuff/assignees{/user}","branches_url":"https://api.github.com/repos/jesper/knuff/branches{/branch}","tags_url":"https://api.github.com/repos/jesper/knuff/tags","blobs_url":"https://api.github.com/repos/jesper/knuff/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jesper/knuff/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jesper/knuff/git/refs{/sha}","trees_url":"https://api.github.com/repos/jesper/knuff/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jesper/knuff/statuses/{sha}","languages_url":"https://api.github.com/repos/jesper/knuff/languages","stargazers_url":"https://api.github.com/repos/jesper/knuff/stargazers","contributors_url":"https://api.github.com/repos/jesper/knuff/contributors","subscribers_url":"https://api.github.com/repos/jesper/knuff/subscribers","subscription_url":"https://api.github.com/repos/jesper/knuff/subscription","commits_url":"https://api.github.com/repos/jesper/knuff/commits{/sha}","git_commits_url":"https://api.github.com/repos/jesper/knuff/git/commits{/sha}","comments_url":"https://api.github.com/repos/jesper/knuff/comments{/number}","issue_comment_url":"https://api.github.com/repos/jesper/knuff/issues/comments/{number}","contents_url":"https://api.github.com/repos/jesper/knuff/contents/{+path}","compare_url":"https://api.github.com/repos/jesper/knuff/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jesper/knuff/merges","archive_url":"https://api.github.com/repos/jesper/knuff/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jesper/knuff/downloads","issues_url":"https://api.github.com/repos/jesper/knuff/issues{/number}","pulls_url":"https://api.github.com/repos/jesper/knuff/pulls{/number}","milestones_url":"https://api.github.com/repos/jesper/knuff/milestones{/number}","notifications_url":"https://api.github.com/repos/jesper/knuff/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jesper/knuff/labels{/name}"},{"id":1558,"name":"testprj","full_name":"Judeqiu/testprj","owner":{"login":"Judeqiu","id":1353,"avatar_url":"https://2.gravatar.com/avatar/6fd8df9678eb77f4d1767ccdccdc7dd0?d=https%3A%2F%2Fidenticons.github.com%2Fee8374ec4e4ad797d42350c904d73077.png","gravatar_id":"6fd8df9678eb77f4d1767ccdccdc7dd0","url":"https://api.github.com/users/Judeqiu","html_url":"https://github.com/Judeqiu","followers_url":"https://api.github.com/users/Judeqiu/followers","following_url":"https://api.github.com/users/Judeqiu/following{/other_user}","gists_url":"https://api.github.com/users/Judeqiu/gists{/gist_id}","starred_url":"https://api.github.com/users/Judeqiu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Judeqiu/subscriptions","organizations_url":"https://api.github.com/users/Judeqiu/orgs","repos_url":"https://api.github.com/users/Judeqiu/repos","events_url":"https://api.github.com/users/Judeqiu/events{/privacy}","received_events_url":"https://api.github.com/users/Judeqiu/received_events","type":"User"},"private":false,"html_url":"https://github.com/Judeqiu/testprj","description":"","fork":false,"url":"https://api.github.com/repos/Judeqiu/testprj","forks_url":"https://api.github.com/repos/Judeqiu/testprj/forks","keys_url":"https://api.github.com/repos/Judeqiu/testprj/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Judeqiu/testprj/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Judeqiu/testprj/teams","hooks_url":"https://api.github.com/repos/Judeqiu/testprj/hooks","issue_events_url":"https://api.github.com/repos/Judeqiu/testprj/issues/events{/number}","events_url":"https://api.github.com/repos/Judeqiu/testprj/events","assignees_url":"https://api.github.com/repos/Judeqiu/testprj/assignees{/user}","branches_url":"https://api.github.com/repos/Judeqiu/testprj/branches{/branch}","tags_url":"https://api.github.com/repos/Judeqiu/testprj/tags","blobs_url":"https://api.github.com/repos/Judeqiu/testprj/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Judeqiu/testprj/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Judeqiu/testprj/git/refs{/sha}","trees_url":"https://api.github.com/repos/Judeqiu/testprj/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Judeqiu/testprj/statuses/{sha}","languages_url":"https://api.github.com/repos/Judeqiu/testprj/languages","stargazers_url":"https://api.github.com/repos/Judeqiu/testprj/stargazers","contributors_url":"https://api.github.com/repos/Judeqiu/testprj/contributors","subscribers_url":"https://api.github.com/repos/Judeqiu/testprj/subscribers","subscription_url":"https://api.github.com/repos/Judeqiu/testprj/subscription","commits_url":"https://api.github.com/repos/Judeqiu/testprj/commits{/sha}","git_commits_url":"https://api.github.com/repos/Judeqiu/testprj/git/commits{/sha}","comments_url":"https://api.github.com/repos/Judeqiu/testprj/comments{/number}","issue_comment_url":"https://api.github.com/repos/Judeqiu/testprj/issues/comments/{number}","contents_url":"https://api.github.com/repos/Judeqiu/testprj/contents/{+path}","compare_url":"https://api.github.com/repos/Judeqiu/testprj/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Judeqiu/testprj/merges","archive_url":"https://api.github.com/repos/Judeqiu/testprj/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Judeqiu/testprj/downloads","issues_url":"https://api.github.com/repos/Judeqiu/testprj/issues{/number}","pulls_url":"https://api.github.com/repos/Judeqiu/testprj/pulls{/number}","milestones_url":"https://api.github.com/repos/Judeqiu/testprj/milestones{/number}","notifications_url":"https://api.github.com/repos/Judeqiu/testprj/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Judeqiu/testprj/labels{/name}"},{"id":1559,"name":"gazelle","full_name":"haberman/gazelle","owner":{"login":"haberman","id":1270,"avatar_url":"https://1.gravatar.com/avatar/35921adc4b1c0d7839fe8350e2429a68?d=https%3A%2F%2Fidenticons.github.com%2Fc850371fda6892fbfd1c5a5b457e5777.png","gravatar_id":"35921adc4b1c0d7839fe8350e2429a68","url":"https://api.github.com/users/haberman","html_url":"https://github.com/haberman","followers_url":"https://api.github.com/users/haberman/followers","following_url":"https://api.github.com/users/haberman/following{/other_user}","gists_url":"https://api.github.com/users/haberman/gists{/gist_id}","starred_url":"https://api.github.com/users/haberman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haberman/subscriptions","organizations_url":"https://api.github.com/users/haberman/orgs","repos_url":"https://api.github.com/users/haberman/repos","events_url":"https://api.github.com/users/haberman/events{/privacy}","received_events_url":"https://api.github.com/users/haberman/received_events","type":"User"},"private":false,"html_url":"https://github.com/haberman/gazelle","description":"A system for creating fast, reusable parsers","fork":false,"url":"https://api.github.com/repos/haberman/gazelle","forks_url":"https://api.github.com/repos/haberman/gazelle/forks","keys_url":"https://api.github.com/repos/haberman/gazelle/keys{/key_id}","collaborators_url":"https://api.github.com/repos/haberman/gazelle/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/haberman/gazelle/teams","hooks_url":"https://api.github.com/repos/haberman/gazelle/hooks","issue_events_url":"https://api.github.com/repos/haberman/gazelle/issues/events{/number}","events_url":"https://api.github.com/repos/haberman/gazelle/events","assignees_url":"https://api.github.com/repos/haberman/gazelle/assignees{/user}","branches_url":"https://api.github.com/repos/haberman/gazelle/branches{/branch}","tags_url":"https://api.github.com/repos/haberman/gazelle/tags","blobs_url":"https://api.github.com/repos/haberman/gazelle/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/haberman/gazelle/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/haberman/gazelle/git/refs{/sha}","trees_url":"https://api.github.com/repos/haberman/gazelle/git/trees{/sha}","statuses_url":"https://api.github.com/repos/haberman/gazelle/statuses/{sha}","languages_url":"https://api.github.com/repos/haberman/gazelle/languages","stargazers_url":"https://api.github.com/repos/haberman/gazelle/stargazers","contributors_url":"https://api.github.com/repos/haberman/gazelle/contributors","subscribers_url":"https://api.github.com/repos/haberman/gazelle/subscribers","subscription_url":"https://api.github.com/repos/haberman/gazelle/subscription","commits_url":"https://api.github.com/repos/haberman/gazelle/commits{/sha}","git_commits_url":"https://api.github.com/repos/haberman/gazelle/git/commits{/sha}","comments_url":"https://api.github.com/repos/haberman/gazelle/comments{/number}","issue_comment_url":"https://api.github.com/repos/haberman/gazelle/issues/comments/{number}","contents_url":"https://api.github.com/repos/haberman/gazelle/contents/{+path}","compare_url":"https://api.github.com/repos/haberman/gazelle/compare/{base}...{head}","merges_url":"https://api.github.com/repos/haberman/gazelle/merges","archive_url":"https://api.github.com/repos/haberman/gazelle/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/haberman/gazelle/downloads","issues_url":"https://api.github.com/repos/haberman/gazelle/issues{/number}","pulls_url":"https://api.github.com/repos/haberman/gazelle/pulls{/number}","milestones_url":"https://api.github.com/repos/haberman/gazelle/milestones{/number}","notifications_url":"https://api.github.com/repos/haberman/gazelle/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/haberman/gazelle/labels{/name}"},{"id":1561,"name":"fast-recs-collate","full_name":"haberman/fast-recs-collate","owner":{"login":"haberman","id":1270,"avatar_url":"https://1.gravatar.com/avatar/35921adc4b1c0d7839fe8350e2429a68?d=https%3A%2F%2Fidenticons.github.com%2Fc850371fda6892fbfd1c5a5b457e5777.png","gravatar_id":"35921adc4b1c0d7839fe8350e2429a68","url":"https://api.github.com/users/haberman","html_url":"https://github.com/haberman","followers_url":"https://api.github.com/users/haberman/followers","following_url":"https://api.github.com/users/haberman/following{/other_user}","gists_url":"https://api.github.com/users/haberman/gists{/gist_id}","starred_url":"https://api.github.com/users/haberman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haberman/subscriptions","organizations_url":"https://api.github.com/users/haberman/orgs","repos_url":"https://api.github.com/users/haberman/repos","events_url":"https://api.github.com/users/haberman/events{/privacy}","received_events_url":"https://api.github.com/users/haberman/received_events","type":"User"},"private":false,"html_url":"https://github.com/haberman/fast-recs-collate","description":"A fast version of recs-collate","fork":false,"url":"https://api.github.com/repos/haberman/fast-recs-collate","forks_url":"https://api.github.com/repos/haberman/fast-recs-collate/forks","keys_url":"https://api.github.com/repos/haberman/fast-recs-collate/keys{/key_id}","collaborators_url":"https://api.github.com/repos/haberman/fast-recs-collate/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/haberman/fast-recs-collate/teams","hooks_url":"https://api.github.com/repos/haberman/fast-recs-collate/hooks","issue_events_url":"https://api.github.com/repos/haberman/fast-recs-collate/issues/events{/number}","events_url":"https://api.github.com/repos/haberman/fast-recs-collate/events","assignees_url":"https://api.github.com/repos/haberman/fast-recs-collate/assignees{/user}","branches_url":"https://api.github.com/repos/haberman/fast-recs-collate/branches{/branch}","tags_url":"https://api.github.com/repos/haberman/fast-recs-collate/tags","blobs_url":"https://api.github.com/repos/haberman/fast-recs-collate/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/haberman/fast-recs-collate/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/haberman/fast-recs-collate/git/refs{/sha}","trees_url":"https://api.github.com/repos/haberman/fast-recs-collate/git/trees{/sha}","statuses_url":"https://api.github.com/repos/haberman/fast-recs-collate/statuses/{sha}","languages_url":"https://api.github.com/repos/haberman/fast-recs-collate/languages","stargazers_url":"https://api.github.com/repos/haberman/fast-recs-collate/stargazers","contributors_url":"https://api.github.com/repos/haberman/fast-recs-collate/contributors","subscribers_url":"https://api.github.com/repos/haberman/fast-recs-collate/subscribers","subscription_url":"https://api.github.com/repos/haberman/fast-recs-collate/subscription","commits_url":"https://api.github.com/repos/haberman/fast-recs-collate/commits{/sha}","git_commits_url":"https://api.github.com/repos/haberman/fast-recs-collate/git/commits{/sha}","comments_url":"https://api.github.com/repos/haberman/fast-recs-collate/comments{/number}","issue_comment_url":"https://api.github.com/repos/haberman/fast-recs-collate/issues/comments/{number}","contents_url":"https://api.github.com/repos/haberman/fast-recs-collate/contents/{+path}","compare_url":"https://api.github.com/repos/haberman/fast-recs-collate/compare/{base}...{head}","merges_url":"https://api.github.com/repos/haberman/fast-recs-collate/merges","archive_url":"https://api.github.com/repos/haberman/fast-recs-collate/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/haberman/fast-recs-collate/downloads","issues_url":"https://api.github.com/repos/haberman/fast-recs-collate/issues{/number}","pulls_url":"https://api.github.com/repos/haberman/fast-recs-collate/pulls{/number}","milestones_url":"https://api.github.com/repos/haberman/fast-recs-collate/milestones{/number}","notifications_url":"https://api.github.com/repos/haberman/fast-recs-collate/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/haberman/fast-recs-collate/labels{/name}"},{"id":1572,"name":"family_budget","full_name":"francois/family_budget","owner":{"login":"francois","id":247,"avatar_url":"https://0.gravatar.com/avatar/7da32f740e64088d2b07c277f3c1b94b?d=https%3A%2F%2Fidenticons.github.com%2F3cec07e9ba5f5bb252d13f5f431e4bbb.png","gravatar_id":"7da32f740e64088d2b07c277f3c1b94b","url":"https://api.github.com/users/francois","html_url":"https://github.com/francois","followers_url":"https://api.github.com/users/francois/followers","following_url":"https://api.github.com/users/francois/following{/other_user}","gists_url":"https://api.github.com/users/francois/gists{/gist_id}","starred_url":"https://api.github.com/users/francois/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/francois/subscriptions","organizations_url":"https://api.github.com/users/francois/orgs","repos_url":"https://api.github.com/users/francois/repos","events_url":"https://api.github.com/users/francois/events{/privacy}","received_events_url":"https://api.github.com/users/francois/received_events","type":"User"},"private":false,"html_url":"https://github.com/francois/family_budget","description":"A Family Budget application","fork":false,"url":"https://api.github.com/repos/francois/family_budget","forks_url":"https://api.github.com/repos/francois/family_budget/forks","keys_url":"https://api.github.com/repos/francois/family_budget/keys{/key_id}","collaborators_url":"https://api.github.com/repos/francois/family_budget/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/francois/family_budget/teams","hooks_url":"https://api.github.com/repos/francois/family_budget/hooks","issue_events_url":"https://api.github.com/repos/francois/family_budget/issues/events{/number}","events_url":"https://api.github.com/repos/francois/family_budget/events","assignees_url":"https://api.github.com/repos/francois/family_budget/assignees{/user}","branches_url":"https://api.github.com/repos/francois/family_budget/branches{/branch}","tags_url":"https://api.github.com/repos/francois/family_budget/tags","blobs_url":"https://api.github.com/repos/francois/family_budget/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/francois/family_budget/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/francois/family_budget/git/refs{/sha}","trees_url":"https://api.github.com/repos/francois/family_budget/git/trees{/sha}","statuses_url":"https://api.github.com/repos/francois/family_budget/statuses/{sha}","languages_url":"https://api.github.com/repos/francois/family_budget/languages","stargazers_url":"https://api.github.com/repos/francois/family_budget/stargazers","contributors_url":"https://api.github.com/repos/francois/family_budget/contributors","subscribers_url":"https://api.github.com/repos/francois/family_budget/subscribers","subscription_url":"https://api.github.com/repos/francois/family_budget/subscription","commits_url":"https://api.github.com/repos/francois/family_budget/commits{/sha}","git_commits_url":"https://api.github.com/repos/francois/family_budget/git/commits{/sha}","comments_url":"https://api.github.com/repos/francois/family_budget/comments{/number}","issue_comment_url":"https://api.github.com/repos/francois/family_budget/issues/comments/{number}","contents_url":"https://api.github.com/repos/francois/family_budget/contents/{+path}","compare_url":"https://api.github.com/repos/francois/family_budget/compare/{base}...{head}","merges_url":"https://api.github.com/repos/francois/family_budget/merges","archive_url":"https://api.github.com/repos/francois/family_budget/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/francois/family_budget/downloads","issues_url":"https://api.github.com/repos/francois/family_budget/issues{/number}","pulls_url":"https://api.github.com/repos/francois/family_budget/pulls{/number}","milestones_url":"https://api.github.com/repos/francois/family_budget/milestones{/number}","notifications_url":"https://api.github.com/repos/francois/family_budget/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/francois/family_budget/labels{/name}"},{"id":1576,"name":"javascript-jquery-tmbundle","full_name":"drnic/javascript-jquery-tmbundle","owner":{"login":"drnic","id":108,"avatar_url":"https://1.gravatar.com/avatar/cb2b768a5e546b24052ea03334e43676?d=https%3A%2F%2Fidenticons.github.com%2Fa3c65c2974270fd093ee8a9bf8ae7d0b.png","gravatar_id":"cb2b768a5e546b24052ea03334e43676","url":"https://api.github.com/users/drnic","html_url":"https://github.com/drnic","followers_url":"https://api.github.com/users/drnic/followers","following_url":"https://api.github.com/users/drnic/following{/other_user}","gists_url":"https://api.github.com/users/drnic/gists{/gist_id}","starred_url":"https://api.github.com/users/drnic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/drnic/subscriptions","organizations_url":"https://api.github.com/users/drnic/orgs","repos_url":"https://api.github.com/users/drnic/repos","events_url":"https://api.github.com/users/drnic/events{/privacy}","received_events_url":"https://api.github.com/users/drnic/received_events","type":"User"},"private":false,"html_url":"https://github.com/drnic/javascript-jquery-tmbundle","description":"JavaScript jQuery.tmbundle","fork":false,"url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle","forks_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/forks","keys_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/keys{/key_id}","collaborators_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/teams","hooks_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/hooks","issue_events_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/issues/events{/number}","events_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/events","assignees_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/assignees{/user}","branches_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/branches{/branch}","tags_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/tags","blobs_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/git/refs{/sha}","trees_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/git/trees{/sha}","statuses_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/statuses/{sha}","languages_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/languages","stargazers_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/stargazers","contributors_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/contributors","subscribers_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/subscribers","subscription_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/subscription","commits_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/commits{/sha}","git_commits_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/git/commits{/sha}","comments_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/comments{/number}","issue_comment_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/issues/comments/{number}","contents_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/contents/{+path}","compare_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/compare/{base}...{head}","merges_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/merges","archive_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/downloads","issues_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/issues{/number}","pulls_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/pulls{/number}","milestones_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/milestones{/number}","notifications_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/drnic/javascript-jquery-tmbundle/labels{/name}"},{"id":1584,"name":"markable","full_name":"AndrewO/markable","owner":{"login":"AndrewO","id":550,"avatar_url":"https://2.gravatar.com/avatar/bdf2290f0b1d87cb0853966e7e51606b?d=https%3A%2F%2Fidenticons.github.com%2F01f78be6f7cad02658508fe4616098a9.png","gravatar_id":"bdf2290f0b1d87cb0853966e7e51606b","url":"https://api.github.com/users/AndrewO","html_url":"https://github.com/AndrewO","followers_url":"https://api.github.com/users/AndrewO/followers","following_url":"https://api.github.com/users/AndrewO/following{/other_user}","gists_url":"https://api.github.com/users/AndrewO/gists{/gist_id}","starred_url":"https://api.github.com/users/AndrewO/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AndrewO/subscriptions","organizations_url":"https://api.github.com/users/AndrewO/orgs","repos_url":"https://api.github.com/users/AndrewO/repos","events_url":"https://api.github.com/users/AndrewO/events{/privacy}","received_events_url":"https://api.github.com/users/AndrewO/received_events","type":"User"},"private":false,"html_url":"https://github.com/AndrewO/markable","description":"A module that adds Markaby functionality to any class","fork":false,"url":"https://api.github.com/repos/AndrewO/markable","forks_url":"https://api.github.com/repos/AndrewO/markable/forks","keys_url":"https://api.github.com/repos/AndrewO/markable/keys{/key_id}","collaborators_url":"https://api.github.com/repos/AndrewO/markable/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/AndrewO/markable/teams","hooks_url":"https://api.github.com/repos/AndrewO/markable/hooks","issue_events_url":"https://api.github.com/repos/AndrewO/markable/issues/events{/number}","events_url":"https://api.github.com/repos/AndrewO/markable/events","assignees_url":"https://api.github.com/repos/AndrewO/markable/assignees{/user}","branches_url":"https://api.github.com/repos/AndrewO/markable/branches{/branch}","tags_url":"https://api.github.com/repos/AndrewO/markable/tags","blobs_url":"https://api.github.com/repos/AndrewO/markable/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/AndrewO/markable/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/AndrewO/markable/git/refs{/sha}","trees_url":"https://api.github.com/repos/AndrewO/markable/git/trees{/sha}","statuses_url":"https://api.github.com/repos/AndrewO/markable/statuses/{sha}","languages_url":"https://api.github.com/repos/AndrewO/markable/languages","stargazers_url":"https://api.github.com/repos/AndrewO/markable/stargazers","contributors_url":"https://api.github.com/repos/AndrewO/markable/contributors","subscribers_url":"https://api.github.com/repos/AndrewO/markable/subscribers","subscription_url":"https://api.github.com/repos/AndrewO/markable/subscription","commits_url":"https://api.github.com/repos/AndrewO/markable/commits{/sha}","git_commits_url":"https://api.github.com/repos/AndrewO/markable/git/commits{/sha}","comments_url":"https://api.github.com/repos/AndrewO/markable/comments{/number}","issue_comment_url":"https://api.github.com/repos/AndrewO/markable/issues/comments/{number}","contents_url":"https://api.github.com/repos/AndrewO/markable/contents/{+path}","compare_url":"https://api.github.com/repos/AndrewO/markable/compare/{base}...{head}","merges_url":"https://api.github.com/repos/AndrewO/markable/merges","archive_url":"https://api.github.com/repos/AndrewO/markable/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/AndrewO/markable/downloads","issues_url":"https://api.github.com/repos/AndrewO/markable/issues{/number}","pulls_url":"https://api.github.com/repos/AndrewO/markable/pulls{/number}","milestones_url":"https://api.github.com/repos/AndrewO/markable/milestones{/number}","notifications_url":"https://api.github.com/repos/AndrewO/markable/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/AndrewO/markable/labels{/name}"},{"id":1592,"name":"erlenmeyer","full_name":"KirinDave/erlenmeyer","owner":{"login":"KirinDave","id":36,"avatar_url":"https://2.gravatar.com/avatar/d4fabd6c08ac228a3ff846d9d0d1580e?d=https%3A%2F%2Fidenticons.github.com%2F19ca14e7ea6328a42e0eb13d585e4c22.png","gravatar_id":"d4fabd6c08ac228a3ff846d9d0d1580e","url":"https://api.github.com/users/KirinDave","html_url":"https://github.com/KirinDave","followers_url":"https://api.github.com/users/KirinDave/followers","following_url":"https://api.github.com/users/KirinDave/following{/other_user}","gists_url":"https://api.github.com/users/KirinDave/gists{/gist_id}","starred_url":"https://api.github.com/users/KirinDave/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KirinDave/subscriptions","organizations_url":"https://api.github.com/users/KirinDave/orgs","repos_url":"https://api.github.com/users/KirinDave/repos","events_url":"https://api.github.com/users/KirinDave/events{/privacy}","received_events_url":"https://api.github.com/users/KirinDave/received_events","type":"User"},"private":false,"html_url":"https://github.com/KirinDave/erlenmeyer","description":"A binding between erlang and mzscheme.","fork":false,"url":"https://api.github.com/repos/KirinDave/erlenmeyer","forks_url":"https://api.github.com/repos/KirinDave/erlenmeyer/forks","keys_url":"https://api.github.com/repos/KirinDave/erlenmeyer/keys{/key_id}","collaborators_url":"https://api.github.com/repos/KirinDave/erlenmeyer/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/KirinDave/erlenmeyer/teams","hooks_url":"https://api.github.com/repos/KirinDave/erlenmeyer/hooks","issue_events_url":"https://api.github.com/repos/KirinDave/erlenmeyer/issues/events{/number}","events_url":"https://api.github.com/repos/KirinDave/erlenmeyer/events","assignees_url":"https://api.github.com/repos/KirinDave/erlenmeyer/assignees{/user}","branches_url":"https://api.github.com/repos/KirinDave/erlenmeyer/branches{/branch}","tags_url":"https://api.github.com/repos/KirinDave/erlenmeyer/tags","blobs_url":"https://api.github.com/repos/KirinDave/erlenmeyer/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/KirinDave/erlenmeyer/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/KirinDave/erlenmeyer/git/refs{/sha}","trees_url":"https://api.github.com/repos/KirinDave/erlenmeyer/git/trees{/sha}","statuses_url":"https://api.github.com/repos/KirinDave/erlenmeyer/statuses/{sha}","languages_url":"https://api.github.com/repos/KirinDave/erlenmeyer/languages","stargazers_url":"https://api.github.com/repos/KirinDave/erlenmeyer/stargazers","contributors_url":"https://api.github.com/repos/KirinDave/erlenmeyer/contributors","subscribers_url":"https://api.github.com/repos/KirinDave/erlenmeyer/subscribers","subscription_url":"https://api.github.com/repos/KirinDave/erlenmeyer/subscription","commits_url":"https://api.github.com/repos/KirinDave/erlenmeyer/commits{/sha}","git_commits_url":"https://api.github.com/repos/KirinDave/erlenmeyer/git/commits{/sha}","comments_url":"https://api.github.com/repos/KirinDave/erlenmeyer/comments{/number}","issue_comment_url":"https://api.github.com/repos/KirinDave/erlenmeyer/issues/comments/{number}","contents_url":"https://api.github.com/repos/KirinDave/erlenmeyer/contents/{+path}","compare_url":"https://api.github.com/repos/KirinDave/erlenmeyer/compare/{base}...{head}","merges_url":"https://api.github.com/repos/KirinDave/erlenmeyer/merges","archive_url":"https://api.github.com/repos/KirinDave/erlenmeyer/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/KirinDave/erlenmeyer/downloads","issues_url":"https://api.github.com/repos/KirinDave/erlenmeyer/issues{/number}","pulls_url":"https://api.github.com/repos/KirinDave/erlenmeyer/pulls{/number}","milestones_url":"https://api.github.com/repos/KirinDave/erlenmeyer/milestones{/number}","notifications_url":"https://api.github.com/repos/KirinDave/erlenmeyer/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/KirinDave/erlenmeyer/labels{/name}"},{"id":1598,"name":"yikes","full_name":"xpaulbettsx/yikes","owner":{"login":"xpaulbettsx","id":1396,"avatar_url":"https://2.gravatar.com/avatar/cba1c933e48e5ec70c68f640a530b969?d=https%3A%2F%2Fidenticons.github.com%2F0966289037ad9846c5e994be2a91bafa.png","gravatar_id":"cba1c933e48e5ec70c68f640a530b969","url":"https://api.github.com/users/xpaulbettsx","html_url":"https://github.com/xpaulbettsx","followers_url":"https://api.github.com/users/xpaulbettsx/followers","following_url":"https://api.github.com/users/xpaulbettsx/following{/other_user}","gists_url":"https://api.github.com/users/xpaulbettsx/gists{/gist_id}","starred_url":"https://api.github.com/users/xpaulbettsx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xpaulbettsx/subscriptions","organizations_url":"https://api.github.com/users/xpaulbettsx/orgs","repos_url":"https://api.github.com/users/xpaulbettsx/repos","events_url":"https://api.github.com/users/xpaulbettsx/events{/privacy}","received_events_url":"https://api.github.com/users/xpaulbettsx/received_events","type":"User"},"private":false,"html_url":"https://github.com/xpaulbettsx/yikes","description":"An automatic way to convert videos and put them on your iPod","fork":false,"url":"https://api.github.com/repos/xpaulbettsx/yikes","forks_url":"https://api.github.com/repos/xpaulbettsx/yikes/forks","keys_url":"https://api.github.com/repos/xpaulbettsx/yikes/keys{/key_id}","collaborators_url":"https://api.github.com/repos/xpaulbettsx/yikes/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/xpaulbettsx/yikes/teams","hooks_url":"https://api.github.com/repos/xpaulbettsx/yikes/hooks","issue_events_url":"https://api.github.com/repos/xpaulbettsx/yikes/issues/events{/number}","events_url":"https://api.github.com/repos/xpaulbettsx/yikes/events","assignees_url":"https://api.github.com/repos/xpaulbettsx/yikes/assignees{/user}","branches_url":"https://api.github.com/repos/xpaulbettsx/yikes/branches{/branch}","tags_url":"https://api.github.com/repos/xpaulbettsx/yikes/tags","blobs_url":"https://api.github.com/repos/xpaulbettsx/yikes/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/xpaulbettsx/yikes/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/xpaulbettsx/yikes/git/refs{/sha}","trees_url":"https://api.github.com/repos/xpaulbettsx/yikes/git/trees{/sha}","statuses_url":"https://api.github.com/repos/xpaulbettsx/yikes/statuses/{sha}","languages_url":"https://api.github.com/repos/xpaulbettsx/yikes/languages","stargazers_url":"https://api.github.com/repos/xpaulbettsx/yikes/stargazers","contributors_url":"https://api.github.com/repos/xpaulbettsx/yikes/contributors","subscribers_url":"https://api.github.com/repos/xpaulbettsx/yikes/subscribers","subscription_url":"https://api.github.com/repos/xpaulbettsx/yikes/subscription","commits_url":"https://api.github.com/repos/xpaulbettsx/yikes/commits{/sha}","git_commits_url":"https://api.github.com/repos/xpaulbettsx/yikes/git/commits{/sha}","comments_url":"https://api.github.com/repos/xpaulbettsx/yikes/comments{/number}","issue_comment_url":"https://api.github.com/repos/xpaulbettsx/yikes/issues/comments/{number}","contents_url":"https://api.github.com/repos/xpaulbettsx/yikes/contents/{+path}","compare_url":"https://api.github.com/repos/xpaulbettsx/yikes/compare/{base}...{head}","merges_url":"https://api.github.com/repos/xpaulbettsx/yikes/merges","archive_url":"https://api.github.com/repos/xpaulbettsx/yikes/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/xpaulbettsx/yikes/downloads","issues_url":"https://api.github.com/repos/xpaulbettsx/yikes/issues{/number}","pulls_url":"https://api.github.com/repos/xpaulbettsx/yikes/pulls{/number}","milestones_url":"https://api.github.com/repos/xpaulbettsx/yikes/milestones{/number}","notifications_url":"https://api.github.com/repos/xpaulbettsx/yikes/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/xpaulbettsx/yikes/labels{/name}"},{"id":1602,"name":"erlenmeyer","full_name":"mojombo/erlenmeyer","owner":{"login":"mojombo","id":1,"avatar_url":"https://2.gravatar.com/avatar/25c7c18223fb42a4c6ae1c8db6f50f9b?d=https%3A%2F%2Fidenticons.github.com%2Fc4ca4238a0b923820dcc509a6f75849b.png","gravatar_id":"25c7c18223fb42a4c6ae1c8db6f50f9b","url":"https://api.github.com/users/mojombo","html_url":"https://github.com/mojombo","followers_url":"https://api.github.com/users/mojombo/followers","following_url":"https://api.github.com/users/mojombo/following{/other_user}","gists_url":"https://api.github.com/users/mojombo/gists{/gist_id}","starred_url":"https://api.github.com/users/mojombo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mojombo/subscriptions","organizations_url":"https://api.github.com/users/mojombo/orgs","repos_url":"https://api.github.com/users/mojombo/repos","events_url":"https://api.github.com/users/mojombo/events{/privacy}","received_events_url":"https://api.github.com/users/mojombo/received_events","type":"User"},"private":false,"html_url":"https://github.com/mojombo/erlenmeyer","description":"A binding between erlang and mzscheme.","fork":true,"url":"https://api.github.com/repos/mojombo/erlenmeyer","forks_url":"https://api.github.com/repos/mojombo/erlenmeyer/forks","keys_url":"https://api.github.com/repos/mojombo/erlenmeyer/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mojombo/erlenmeyer/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mojombo/erlenmeyer/teams","hooks_url":"https://api.github.com/repos/mojombo/erlenmeyer/hooks","issue_events_url":"https://api.github.com/repos/mojombo/erlenmeyer/issues/events{/number}","events_url":"https://api.github.com/repos/mojombo/erlenmeyer/events","assignees_url":"https://api.github.com/repos/mojombo/erlenmeyer/assignees{/user}","branches_url":"https://api.github.com/repos/mojombo/erlenmeyer/branches{/branch}","tags_url":"https://api.github.com/repos/mojombo/erlenmeyer/tags","blobs_url":"https://api.github.com/repos/mojombo/erlenmeyer/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mojombo/erlenmeyer/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mojombo/erlenmeyer/git/refs{/sha}","trees_url":"https://api.github.com/repos/mojombo/erlenmeyer/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mojombo/erlenmeyer/statuses/{sha}","languages_url":"https://api.github.com/repos/mojombo/erlenmeyer/languages","stargazers_url":"https://api.github.com/repos/mojombo/erlenmeyer/stargazers","contributors_url":"https://api.github.com/repos/mojombo/erlenmeyer/contributors","subscribers_url":"https://api.github.com/repos/mojombo/erlenmeyer/subscribers","subscription_url":"https://api.github.com/repos/mojombo/erlenmeyer/subscription","commits_url":"https://api.github.com/repos/mojombo/erlenmeyer/commits{/sha}","git_commits_url":"https://api.github.com/repos/mojombo/erlenmeyer/git/commits{/sha}","comments_url":"https://api.github.com/repos/mojombo/erlenmeyer/comments{/number}","issue_comment_url":"https://api.github.com/repos/mojombo/erlenmeyer/issues/comments/{number}","contents_url":"https://api.github.com/repos/mojombo/erlenmeyer/contents/{+path}","compare_url":"https://api.github.com/repos/mojombo/erlenmeyer/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mojombo/erlenmeyer/merges","archive_url":"https://api.github.com/repos/mojombo/erlenmeyer/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mojombo/erlenmeyer/downloads","issues_url":"https://api.github.com/repos/mojombo/erlenmeyer/issues{/number}","pulls_url":"https://api.github.com/repos/mojombo/erlenmeyer/pulls{/number}","milestones_url":"https://api.github.com/repos/mojombo/erlenmeyer/milestones{/number}","notifications_url":"https://api.github.com/repos/mojombo/erlenmeyer/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mojombo/erlenmeyer/labels{/name}"},{"id":1603,"name":"python-tool","full_name":"alexeysudachen/python-tool","owner":{"login":"alexeysudachen","id":1428,"avatar_url":"https://2.gravatar.com/avatar/de4e1b989525c878e34c1910aab27dfc?d=https%3A%2F%2Fidenticons.github.com%2F0663a4ddceacb40b095eda264a85f15c.png","gravatar_id":"de4e1b989525c878e34c1910aab27dfc","url":"https://api.github.com/users/alexeysudachen","html_url":"https://github.com/alexeysudachen","followers_url":"https://api.github.com/users/alexeysudachen/followers","following_url":"https://api.github.com/users/alexeysudachen/following{/other_user}","gists_url":"https://api.github.com/users/alexeysudachen/gists{/gist_id}","starred_url":"https://api.github.com/users/alexeysudachen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexeysudachen/subscriptions","organizations_url":"https://api.github.com/users/alexeysudachen/orgs","repos_url":"https://api.github.com/users/alexeysudachen/repos","events_url":"https://api.github.com/users/alexeysudachen/events{/privacy}","received_events_url":"https://api.github.com/users/alexeysudachen/received_events","type":"User"},"private":false,"html_url":"https://github.com/alexeysudachen/python-tool","description":"some python related utilities like py2cc","fork":false,"url":"https://api.github.com/repos/alexeysudachen/python-tool","forks_url":"https://api.github.com/repos/alexeysudachen/python-tool/forks","keys_url":"https://api.github.com/repos/alexeysudachen/python-tool/keys{/key_id}","collaborators_url":"https://api.github.com/repos/alexeysudachen/python-tool/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/alexeysudachen/python-tool/teams","hooks_url":"https://api.github.com/repos/alexeysudachen/python-tool/hooks","issue_events_url":"https://api.github.com/repos/alexeysudachen/python-tool/issues/events{/number}","events_url":"https://api.github.com/repos/alexeysudachen/python-tool/events","assignees_url":"https://api.github.com/repos/alexeysudachen/python-tool/assignees{/user}","branches_url":"https://api.github.com/repos/alexeysudachen/python-tool/branches{/branch}","tags_url":"https://api.github.com/repos/alexeysudachen/python-tool/tags","blobs_url":"https://api.github.com/repos/alexeysudachen/python-tool/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/alexeysudachen/python-tool/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/alexeysudachen/python-tool/git/refs{/sha}","trees_url":"https://api.github.com/repos/alexeysudachen/python-tool/git/trees{/sha}","statuses_url":"https://api.github.com/repos/alexeysudachen/python-tool/statuses/{sha}","languages_url":"https://api.github.com/repos/alexeysudachen/python-tool/languages","stargazers_url":"https://api.github.com/repos/alexeysudachen/python-tool/stargazers","contributors_url":"https://api.github.com/repos/alexeysudachen/python-tool/contributors","subscribers_url":"https://api.github.com/repos/alexeysudachen/python-tool/subscribers","subscription_url":"https://api.github.com/repos/alexeysudachen/python-tool/subscription","commits_url":"https://api.github.com/repos/alexeysudachen/python-tool/commits{/sha}","git_commits_url":"https://api.github.com/repos/alexeysudachen/python-tool/git/commits{/sha}","comments_url":"https://api.github.com/repos/alexeysudachen/python-tool/comments{/number}","issue_comment_url":"https://api.github.com/repos/alexeysudachen/python-tool/issues/comments/{number}","contents_url":"https://api.github.com/repos/alexeysudachen/python-tool/contents/{+path}","compare_url":"https://api.github.com/repos/alexeysudachen/python-tool/compare/{base}...{head}","merges_url":"https://api.github.com/repos/alexeysudachen/python-tool/merges","archive_url":"https://api.github.com/repos/alexeysudachen/python-tool/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/alexeysudachen/python-tool/downloads","issues_url":"https://api.github.com/repos/alexeysudachen/python-tool/issues{/number}","pulls_url":"https://api.github.com/repos/alexeysudachen/python-tool/pulls{/number}","milestones_url":"https://api.github.com/repos/alexeysudachen/python-tool/milestones{/number}","notifications_url":"https://api.github.com/repos/alexeysudachen/python-tool/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/alexeysudachen/python-tool/labels{/name}"},{"id":1611,"name":"tableau","full_name":"bousquet/tableau","owner":{"login":"bousquet","id":1347,"avatar_url":"https://0.gravatar.com/avatar/7491ae9acee0ca6a37d078b87ec7cd7a?d=https%3A%2F%2Fidenticons.github.com%2F0e55666a4ad822e0e34299df3591d979.png","gravatar_id":"7491ae9acee0ca6a37d078b87ec7cd7a","url":"https://api.github.com/users/bousquet","html_url":"https://github.com/bousquet","followers_url":"https://api.github.com/users/bousquet/followers","following_url":"https://api.github.com/users/bousquet/following{/other_user}","gists_url":"https://api.github.com/users/bousquet/gists{/gist_id}","starred_url":"https://api.github.com/users/bousquet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bousquet/subscriptions","organizations_url":"https://api.github.com/users/bousquet/orgs","repos_url":"https://api.github.com/users/bousquet/repos","events_url":"https://api.github.com/users/bousquet/events{/privacy}","received_events_url":"https://api.github.com/users/bousquet/received_events","type":"User"},"private":false,"html_url":"https://github.com/bousquet/tableau","description":"Open source photo gallery in Rails","fork":false,"url":"https://api.github.com/repos/bousquet/tableau","forks_url":"https://api.github.com/repos/bousquet/tableau/forks","keys_url":"https://api.github.com/repos/bousquet/tableau/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bousquet/tableau/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bousquet/tableau/teams","hooks_url":"https://api.github.com/repos/bousquet/tableau/hooks","issue_events_url":"https://api.github.com/repos/bousquet/tableau/issues/events{/number}","events_url":"https://api.github.com/repos/bousquet/tableau/events","assignees_url":"https://api.github.com/repos/bousquet/tableau/assignees{/user}","branches_url":"https://api.github.com/repos/bousquet/tableau/branches{/branch}","tags_url":"https://api.github.com/repos/bousquet/tableau/tags","blobs_url":"https://api.github.com/repos/bousquet/tableau/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bousquet/tableau/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bousquet/tableau/git/refs{/sha}","trees_url":"https://api.github.com/repos/bousquet/tableau/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bousquet/tableau/statuses/{sha}","languages_url":"https://api.github.com/repos/bousquet/tableau/languages","stargazers_url":"https://api.github.com/repos/bousquet/tableau/stargazers","contributors_url":"https://api.github.com/repos/bousquet/tableau/contributors","subscribers_url":"https://api.github.com/repos/bousquet/tableau/subscribers","subscription_url":"https://api.github.com/repos/bousquet/tableau/subscription","commits_url":"https://api.github.com/repos/bousquet/tableau/commits{/sha}","git_commits_url":"https://api.github.com/repos/bousquet/tableau/git/commits{/sha}","comments_url":"https://api.github.com/repos/bousquet/tableau/comments{/number}","issue_comment_url":"https://api.github.com/repos/bousquet/tableau/issues/comments/{number}","contents_url":"https://api.github.com/repos/bousquet/tableau/contents/{+path}","compare_url":"https://api.github.com/repos/bousquet/tableau/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bousquet/tableau/merges","archive_url":"https://api.github.com/repos/bousquet/tableau/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bousquet/tableau/downloads","issues_url":"https://api.github.com/repos/bousquet/tableau/issues{/number}","pulls_url":"https://api.github.com/repos/bousquet/tableau/pulls{/number}","milestones_url":"https://api.github.com/repos/bousquet/tableau/milestones{/number}","notifications_url":"https://api.github.com/repos/bousquet/tableau/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bousquet/tableau/labels{/name}"},{"id":1613,"name":"blue-channel","full_name":"davemerwin/blue-channel","owner":{"login":"davemerwin","id":1435,"avatar_url":"https://0.gravatar.com/avatar/3f3cd92849c7b4332396a4f5e4a97162?d=https%3A%2F%2Fidenticons.github.com%2F1f3202d820180a39f736f20fce790de8.png","gravatar_id":"3f3cd92849c7b4332396a4f5e4a97162","url":"https://api.github.com/users/davemerwin","html_url":"https://github.com/davemerwin","followers_url":"https://api.github.com/users/davemerwin/followers","following_url":"https://api.github.com/users/davemerwin/following{/other_user}","gists_url":"https://api.github.com/users/davemerwin/gists{/gist_id}","starred_url":"https://api.github.com/users/davemerwin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davemerwin/subscriptions","organizations_url":"https://api.github.com/users/davemerwin/orgs","repos_url":"https://api.github.com/users/davemerwin/repos","events_url":"https://api.github.com/users/davemerwin/events{/privacy}","received_events_url":"https://api.github.com/users/davemerwin/received_events","type":"User"},"private":false,"html_url":"https://github.com/davemerwin/blue-channel","description":"A content management system developed in Django, jQuery and 960","fork":false,"url":"https://api.github.com/repos/davemerwin/blue-channel","forks_url":"https://api.github.com/repos/davemerwin/blue-channel/forks","keys_url":"https://api.github.com/repos/davemerwin/blue-channel/keys{/key_id}","collaborators_url":"https://api.github.com/repos/davemerwin/blue-channel/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/davemerwin/blue-channel/teams","hooks_url":"https://api.github.com/repos/davemerwin/blue-channel/hooks","issue_events_url":"https://api.github.com/repos/davemerwin/blue-channel/issues/events{/number}","events_url":"https://api.github.com/repos/davemerwin/blue-channel/events","assignees_url":"https://api.github.com/repos/davemerwin/blue-channel/assignees{/user}","branches_url":"https://api.github.com/repos/davemerwin/blue-channel/branches{/branch}","tags_url":"https://api.github.com/repos/davemerwin/blue-channel/tags","blobs_url":"https://api.github.com/repos/davemerwin/blue-channel/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/davemerwin/blue-channel/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/davemerwin/blue-channel/git/refs{/sha}","trees_url":"https://api.github.com/repos/davemerwin/blue-channel/git/trees{/sha}","statuses_url":"https://api.github.com/repos/davemerwin/blue-channel/statuses/{sha}","languages_url":"https://api.github.com/repos/davemerwin/blue-channel/languages","stargazers_url":"https://api.github.com/repos/davemerwin/blue-channel/stargazers","contributors_url":"https://api.github.com/repos/davemerwin/blue-channel/contributors","subscribers_url":"https://api.github.com/repos/davemerwin/blue-channel/subscribers","subscription_url":"https://api.github.com/repos/davemerwin/blue-channel/subscription","commits_url":"https://api.github.com/repos/davemerwin/blue-channel/commits{/sha}","git_commits_url":"https://api.github.com/repos/davemerwin/blue-channel/git/commits{/sha}","comments_url":"https://api.github.com/repos/davemerwin/blue-channel/comments{/number}","issue_comment_url":"https://api.github.com/repos/davemerwin/blue-channel/issues/comments/{number}","contents_url":"https://api.github.com/repos/davemerwin/blue-channel/contents/{+path}","compare_url":"https://api.github.com/repos/davemerwin/blue-channel/compare/{base}...{head}","merges_url":"https://api.github.com/repos/davemerwin/blue-channel/merges","archive_url":"https://api.github.com/repos/davemerwin/blue-channel/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/davemerwin/blue-channel/downloads","issues_url":"https://api.github.com/repos/davemerwin/blue-channel/issues{/number}","pulls_url":"https://api.github.com/repos/davemerwin/blue-channel/pulls{/number}","milestones_url":"https://api.github.com/repos/davemerwin/blue-channel/milestones{/number}","notifications_url":"https://api.github.com/repos/davemerwin/blue-channel/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/davemerwin/blue-channel/labels{/name}"},{"id":1615,"name":"weshowthemoney-com","full_name":"maborg/weshowthemoney-com","owner":{"login":"maborg","id":1446,"avatar_url":"https://2.gravatar.com/avatar/f86675c1ed32bf619a669a4b8bc29d2c?d=https%3A%2F%2Fidenticons.github.com%2F8fb21ee7a2207526da55a679f0332de2.png","gravatar_id":"f86675c1ed32bf619a669a4b8bc29d2c","url":"https://api.github.com/users/maborg","html_url":"https://github.com/maborg","followers_url":"https://api.github.com/users/maborg/followers","following_url":"https://api.github.com/users/maborg/following{/other_user}","gists_url":"https://api.github.com/users/maborg/gists{/gist_id}","starred_url":"https://api.github.com/users/maborg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maborg/subscriptions","organizations_url":"https://api.github.com/users/maborg/orgs","repos_url":"https://api.github.com/users/maborg/repos","events_url":"https://api.github.com/users/maborg/events{/privacy}","received_events_url":"https://api.github.com/users/maborg/received_events","type":"User"},"private":false,"html_url":"https://github.com/maborg/weshowthemoney-com","description":"a visual approach to the us election","fork":false,"url":"https://api.github.com/repos/maborg/weshowthemoney-com","forks_url":"https://api.github.com/repos/maborg/weshowthemoney-com/forks","keys_url":"https://api.github.com/repos/maborg/weshowthemoney-com/keys{/key_id}","collaborators_url":"https://api.github.com/repos/maborg/weshowthemoney-com/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/maborg/weshowthemoney-com/teams","hooks_url":"https://api.github.com/repos/maborg/weshowthemoney-com/hooks","issue_events_url":"https://api.github.com/repos/maborg/weshowthemoney-com/issues/events{/number}","events_url":"https://api.github.com/repos/maborg/weshowthemoney-com/events","assignees_url":"https://api.github.com/repos/maborg/weshowthemoney-com/assignees{/user}","branches_url":"https://api.github.com/repos/maborg/weshowthemoney-com/branches{/branch}","tags_url":"https://api.github.com/repos/maborg/weshowthemoney-com/tags","blobs_url":"https://api.github.com/repos/maborg/weshowthemoney-com/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/maborg/weshowthemoney-com/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/maborg/weshowthemoney-com/git/refs{/sha}","trees_url":"https://api.github.com/repos/maborg/weshowthemoney-com/git/trees{/sha}","statuses_url":"https://api.github.com/repos/maborg/weshowthemoney-com/statuses/{sha}","languages_url":"https://api.github.com/repos/maborg/weshowthemoney-com/languages","stargazers_url":"https://api.github.com/repos/maborg/weshowthemoney-com/stargazers","contributors_url":"https://api.github.com/repos/maborg/weshowthemoney-com/contributors","subscribers_url":"https://api.github.com/repos/maborg/weshowthemoney-com/subscribers","subscription_url":"https://api.github.com/repos/maborg/weshowthemoney-com/subscription","commits_url":"https://api.github.com/repos/maborg/weshowthemoney-com/commits{/sha}","git_commits_url":"https://api.github.com/repos/maborg/weshowthemoney-com/git/commits{/sha}","comments_url":"https://api.github.com/repos/maborg/weshowthemoney-com/comments{/number}","issue_comment_url":"https://api.github.com/repos/maborg/weshowthemoney-com/issues/comments/{number}","contents_url":"https://api.github.com/repos/maborg/weshowthemoney-com/contents/{+path}","compare_url":"https://api.github.com/repos/maborg/weshowthemoney-com/compare/{base}...{head}","merges_url":"https://api.github.com/repos/maborg/weshowthemoney-com/merges","archive_url":"https://api.github.com/repos/maborg/weshowthemoney-com/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/maborg/weshowthemoney-com/downloads","issues_url":"https://api.github.com/repos/maborg/weshowthemoney-com/issues{/number}","pulls_url":"https://api.github.com/repos/maborg/weshowthemoney-com/pulls{/number}","milestones_url":"https://api.github.com/repos/maborg/weshowthemoney-com/milestones{/number}","notifications_url":"https://api.github.com/repos/maborg/weshowthemoney-com/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/maborg/weshowthemoney-com/labels{/name}"},{"id":1618,"name":"marshmallow","full_name":"bousquet/marshmallow","owner":{"login":"bousquet","id":1347,"avatar_url":"https://0.gravatar.com/avatar/7491ae9acee0ca6a37d078b87ec7cd7a?d=https%3A%2F%2Fidenticons.github.com%2F0e55666a4ad822e0e34299df3591d979.png","gravatar_id":"7491ae9acee0ca6a37d078b87ec7cd7a","url":"https://api.github.com/users/bousquet","html_url":"https://github.com/bousquet","followers_url":"https://api.github.com/users/bousquet/followers","following_url":"https://api.github.com/users/bousquet/following{/other_user}","gists_url":"https://api.github.com/users/bousquet/gists{/gist_id}","starred_url":"https://api.github.com/users/bousquet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bousquet/subscriptions","organizations_url":"https://api.github.com/users/bousquet/orgs","repos_url":"https://api.github.com/users/bousquet/repos","events_url":"https://api.github.com/users/bousquet/events{/privacy}","received_events_url":"https://api.github.com/users/bousquet/received_events","type":"User"},"private":false,"html_url":"https://github.com/bousquet/marshmallow","description":"Campfire chat bot in Ruby","fork":false,"url":"https://api.github.com/repos/bousquet/marshmallow","forks_url":"https://api.github.com/repos/bousquet/marshmallow/forks","keys_url":"https://api.github.com/repos/bousquet/marshmallow/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bousquet/marshmallow/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bousquet/marshmallow/teams","hooks_url":"https://api.github.com/repos/bousquet/marshmallow/hooks","issue_events_url":"https://api.github.com/repos/bousquet/marshmallow/issues/events{/number}","events_url":"https://api.github.com/repos/bousquet/marshmallow/events","assignees_url":"https://api.github.com/repos/bousquet/marshmallow/assignees{/user}","branches_url":"https://api.github.com/repos/bousquet/marshmallow/branches{/branch}","tags_url":"https://api.github.com/repos/bousquet/marshmallow/tags","blobs_url":"https://api.github.com/repos/bousquet/marshmallow/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bousquet/marshmallow/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bousquet/marshmallow/git/refs{/sha}","trees_url":"https://api.github.com/repos/bousquet/marshmallow/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bousquet/marshmallow/statuses/{sha}","languages_url":"https://api.github.com/repos/bousquet/marshmallow/languages","stargazers_url":"https://api.github.com/repos/bousquet/marshmallow/stargazers","contributors_url":"https://api.github.com/repos/bousquet/marshmallow/contributors","subscribers_url":"https://api.github.com/repos/bousquet/marshmallow/subscribers","subscription_url":"https://api.github.com/repos/bousquet/marshmallow/subscription","commits_url":"https://api.github.com/repos/bousquet/marshmallow/commits{/sha}","git_commits_url":"https://api.github.com/repos/bousquet/marshmallow/git/commits{/sha}","comments_url":"https://api.github.com/repos/bousquet/marshmallow/comments{/number}","issue_comment_url":"https://api.github.com/repos/bousquet/marshmallow/issues/comments/{number}","contents_url":"https://api.github.com/repos/bousquet/marshmallow/contents/{+path}","compare_url":"https://api.github.com/repos/bousquet/marshmallow/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bousquet/marshmallow/merges","archive_url":"https://api.github.com/repos/bousquet/marshmallow/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bousquet/marshmallow/downloads","issues_url":"https://api.github.com/repos/bousquet/marshmallow/issues{/number}","pulls_url":"https://api.github.com/repos/bousquet/marshmallow/pulls{/number}","milestones_url":"https://api.github.com/repos/bousquet/marshmallow/milestones{/number}","notifications_url":"https://api.github.com/repos/bousquet/marshmallow/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bousquet/marshmallow/labels{/name}"},{"id":1630,"name":"tarn","full_name":"jdp/tarn","owner":{"login":"jdp","id":574,"avatar_url":"https://1.gravatar.com/avatar/07b06bbb5ecda29c3744c1be35656247?d=https%3A%2F%2Fidenticons.github.com%2Ff0e52b27a7a5d6a1a87373dffa53dbe5.png","gravatar_id":"07b06bbb5ecda29c3744c1be35656247","url":"https://api.github.com/users/jdp","html_url":"https://github.com/jdp","followers_url":"https://api.github.com/users/jdp/followers","following_url":"https://api.github.com/users/jdp/following{/other_user}","gists_url":"https://api.github.com/users/jdp/gists{/gist_id}","starred_url":"https://api.github.com/users/jdp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jdp/subscriptions","organizations_url":"https://api.github.com/users/jdp/orgs","repos_url":"https://api.github.com/users/jdp/repos","events_url":"https://api.github.com/users/jdp/events{/privacy}","received_events_url":"https://api.github.com/users/jdp/received_events","type":"User"},"private":false,"html_url":"https://github.com/jdp/tarn","description":"A completely Lua-scriptable roguelike engine","fork":false,"url":"https://api.github.com/repos/jdp/tarn","forks_url":"https://api.github.com/repos/jdp/tarn/forks","keys_url":"https://api.github.com/repos/jdp/tarn/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jdp/tarn/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jdp/tarn/teams","hooks_url":"https://api.github.com/repos/jdp/tarn/hooks","issue_events_url":"https://api.github.com/repos/jdp/tarn/issues/events{/number}","events_url":"https://api.github.com/repos/jdp/tarn/events","assignees_url":"https://api.github.com/repos/jdp/tarn/assignees{/user}","branches_url":"https://api.github.com/repos/jdp/tarn/branches{/branch}","tags_url":"https://api.github.com/repos/jdp/tarn/tags","blobs_url":"https://api.github.com/repos/jdp/tarn/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jdp/tarn/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jdp/tarn/git/refs{/sha}","trees_url":"https://api.github.com/repos/jdp/tarn/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jdp/tarn/statuses/{sha}","languages_url":"https://api.github.com/repos/jdp/tarn/languages","stargazers_url":"https://api.github.com/repos/jdp/tarn/stargazers","contributors_url":"https://api.github.com/repos/jdp/tarn/contributors","subscribers_url":"https://api.github.com/repos/jdp/tarn/subscribers","subscription_url":"https://api.github.com/repos/jdp/tarn/subscription","commits_url":"https://api.github.com/repos/jdp/tarn/commits{/sha}","git_commits_url":"https://api.github.com/repos/jdp/tarn/git/commits{/sha}","comments_url":"https://api.github.com/repos/jdp/tarn/comments{/number}","issue_comment_url":"https://api.github.com/repos/jdp/tarn/issues/comments/{number}","contents_url":"https://api.github.com/repos/jdp/tarn/contents/{+path}","compare_url":"https://api.github.com/repos/jdp/tarn/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jdp/tarn/merges","archive_url":"https://api.github.com/repos/jdp/tarn/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jdp/tarn/downloads","issues_url":"https://api.github.com/repos/jdp/tarn/issues{/number}","pulls_url":"https://api.github.com/repos/jdp/tarn/pulls{/number}","milestones_url":"https://api.github.com/repos/jdp/tarn/milestones{/number}","notifications_url":"https://api.github.com/repos/jdp/tarn/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jdp/tarn/labels{/name}"}] + From 70a7e9c83dec2bf6b549dc5c77d30b53afb32457 Mon Sep 17 00:00:00 2001 From: AKFish Date: Thu, 22 Aug 2013 07:45:27 +0800 Subject: [PATCH 068/103] Fix update --- github/Consts.py | 2 +- github/Requester.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/github/Consts.py b/github/Consts.py index 2e551756..65b592ac 100644 --- a/github/Consts.py +++ b/github/Consts.py @@ -30,7 +30,7 @@ ################################################################################ def get(dic, key): if key in dic: - return key[dic] + return dic[key] return None diff --git a/github/Requester.py b/github/Requester.py index 215e2c38..a81566ab 100644 --- a/github/Requester.py +++ b/github/Requester.py @@ -177,7 +177,7 @@ class Requester: self.DEBUG_ON_RESPONSE(status, responseHeaders, output) if status == 304: - raise GithubException.NotModifiedException(sttatus, output) + raise GithubException.NotModifiedException(status, output) if status >= 400: raise self.__createException(status, output) return responseHeaders, output @@ -282,8 +282,8 @@ class Requester: requestHeaders["Authorization"] = self.__authorizationHeader def __conditional(self, requestHeaders, parameters): - etag = Consts.get(requestHeaders, Consts.REQ_IF_NONE_MATCH) - last_modified = Consts.get(requestHeaders, Consts.REQ_IF_MODIFIED_SINCE) + etag = Consts.get(parameters, Consts.REQ_IF_NONE_MATCH) + last_modified = Consts.get(parameters, Consts.REQ_IF_MODIFIED_SINCE) if etag is not None: requestHeaders[Consts.REQ_IF_NONE_MATCH] = etag del parameters[Consts.REQ_IF_NONE_MATCH] From d457afd23ccb47d9f30f09a6ca2a8e32f17dccc7 Mon Sep 17 00:00:00 2001 From: AKFish Date: Thu, 22 Aug 2013 08:45:10 +0800 Subject: [PATCH 069/103] Add test record helper --- github/tests/_record_.py | 50 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 github/tests/_record_.py diff --git a/github/tests/_record_.py b/github/tests/_record_.py new file mode 100644 index 00000000..4cf5242c --- /dev/null +++ b/github/tests/_record_.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- + +############################ Copyrights and license ############################ +# # +# Copyright 2013 AKFish # +# # +# 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 . # +# # +################################################################################ + +import sys +import unittest + +import github.tests.Framework +import github.tests.AllTests + + +def main(argv): + if len(argv) < 2: + print "Run sepecified test in record mode." + print "Usage:" + print "_record_.py [module_name] [other_arg] ..." + print " e.g. _record_.py github.tests.AllTests" + return + + github.tests.Framework.activateRecordMode() + module_to_run = argv.pop(1) + + print "module: " + module_to_run + print "argv: ", + print argv + + unittest.main(module=module_to_run, argv=argv) + + +if __name__ == "__main__": + main(sys.argv) From c7593e84c4a92a044b717b7311c2b6ad8d9a5917 Mon Sep 17 00:00:00 2001 From: AKFish Date: Thu, 22 Aug 2013 10:20:10 +0800 Subject: [PATCH 070/103] Add test case for conditional request --- github/tests/AllTests.py | 2 ++ github/tests/ConditionalRequestUpdate.py | 35 +++++++++++++++++++ .../ConditionalRequestUpdate.setUp.txt | 22 ++++++++++++ ...ConditionalRequestUpdate.testDidUpdate.txt | 11 ++++++ github/tests/_record_.py | 2 +- 5 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 github/tests/ConditionalRequestUpdate.py create mode 100644 github/tests/ReplayData/ConditionalRequestUpdate.setUp.txt create mode 100644 github/tests/ReplayData/ConditionalRequestUpdate.testDidUpdate.txt diff --git a/github/tests/AllTests.py b/github/tests/AllTests.py index a9e156ff..53789e0f 100644 --- a/github/tests/AllTests.py +++ b/github/tests/AllTests.py @@ -79,3 +79,5 @@ from Issue140 import * # from Issue142 import * # Deactivated for Travis-CI because Github has lowered the rate limitations from Issue158 import * from Issue174 import * + +from ConditionalRequestUpdate import ConditionalRequestUpdate diff --git a/github/tests/ConditionalRequestUpdate.py b/github/tests/ConditionalRequestUpdate.py new file mode 100644 index 00000000..702e5169 --- /dev/null +++ b/github/tests/ConditionalRequestUpdate.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- + +############################ Copyrights and license ############################ +# # +# Copyright 2013 AKFish # +# # +# 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 . # +# # +################################################################################ + +import Framework +import github + +class ConditionalRequestUpdate(Framework.TestCase): + def setUp(self): + Framework.TestCase.setUp(self) + self.repo = self.g.get_repo("akfish/PyGithub") + # Not updated + self.assertFalse(self.repo.update(), msg="The repo is not changes. But update() != False") + + def testDidUpdate(self): + self.assertTrue(self.repo.update(), msg="The repo should be changed by now. But update() != True") diff --git a/github/tests/ReplayData/ConditionalRequestUpdate.setUp.txt b/github/tests/ReplayData/ConditionalRequestUpdate.setUp.txt new file mode 100644 index 00000000..fe2eacd3 --- /dev/null +++ b/github/tests/ReplayData/ConditionalRequestUpdate.setUp.txt @@ -0,0 +1,22 @@ +https +GET +api.github.com +None +/repos/akfish/PyGithub +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4988'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '13698'), ('server', 'GitHub.com'), ('last-modified', 'Thu, 22 Aug 2013 02:09:11 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"8600bedcb7fed1d8065e1693e05529ce"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Thu, 22 Aug 2013 02:13:08 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1377140429')] +{"id":12156762,"name":"PyGithub","full_name":"akfish/PyGithub","owner":{"login":"akfish","id":922715,"avatar_url":"https://1.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"private":false,"html_url":"https://github.com/akfish/PyGithub","description":"Python library implementing the full Github API v3","fork":true,"url":"https://api.github.com/repos/akfish/PyGithub","forks_url":"https://api.github.com/repos/akfish/PyGithub/forks","keys_url":"https://api.github.com/repos/akfish/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/akfish/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/akfish/PyGithub/teams","hooks_url":"https://api.github.com/repos/akfish/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/akfish/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/akfish/PyGithub/events","assignees_url":"https://api.github.com/repos/akfish/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/akfish/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/akfish/PyGithub/tags","blobs_url":"https://api.github.com/repos/akfish/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/akfish/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/akfish/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/akfish/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/akfish/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/akfish/PyGithub/languages","stargazers_url":"https://api.github.com/repos/akfish/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/akfish/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/akfish/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/akfish/PyGithub/subscription","commits_url":"https://api.github.com/repos/akfish/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/akfish/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/akfish/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/akfish/PyGithub/issues/comments/{number}","contents_url":"https://api.github.com/repos/akfish/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/akfish/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/akfish/PyGithub/merges","archive_url":"https://api.github.com/repos/akfish/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/akfish/PyGithub/downloads","issues_url":"https://api.github.com/repos/akfish/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/akfish/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/akfish/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/akfish/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/akfish/PyGithub/labels{/name}","created_at":"2013-08-16T10:56:11Z","updated_at":"2013-08-22T02:09:11Z","pushed_at":"2013-08-22T02:09:09Z","git_url":"git://github.com/akfish/PyGithub.git","ssh_url":"git@github.com:akfish/PyGithub.git","clone_url":"https://github.com/akfish/PyGithub.git","svn_url":"https://github.com/akfish/PyGithub","homepage":"http://jacquev6.github.com/PyGithub","size":6736,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"master_branch":"master","default_branch":"master","permissions":{"admin":true,"push":true,"pull":true},"network_count":70,"parent":{"id":3544490,"name":"PyGithub","full_name":"jacquev6/PyGithub","owner":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"private":false,"html_url":"https://github.com/jacquev6/PyGithub","description":"Python library implementing the full Github API v3","fork":false,"url":"https://api.github.com/repos/jacquev6/PyGithub","forks_url":"https://api.github.com/repos/jacquev6/PyGithub/forks","keys_url":"https://api.github.com/repos/jacquev6/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jacquev6/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jacquev6/PyGithub/teams","hooks_url":"https://api.github.com/repos/jacquev6/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/jacquev6/PyGithub/events","assignees_url":"https://api.github.com/repos/jacquev6/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/jacquev6/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/jacquev6/PyGithub/tags","blobs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jacquev6/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jacquev6/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/jacquev6/PyGithub/languages","stargazers_url":"https://api.github.com/repos/jacquev6/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/jacquev6/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/jacquev6/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/jacquev6/PyGithub/subscription","commits_url":"https://api.github.com/repos/jacquev6/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/{number}","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/jacquev6/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jacquev6/PyGithub/merges","archive_url":"https://api.github.com/repos/jacquev6/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jacquev6/PyGithub/downloads","issues_url":"https://api.github.com/repos/jacquev6/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/jacquev6/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/jacquev6/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/labels{/name}","created_at":"2012-02-25T12:53:47Z","updated_at":"2013-08-21T20:32:08Z","pushed_at":"2013-08-21T20:31:45Z","git_url":"git://github.com/jacquev6/PyGithub.git","ssh_url":"git@github.com:jacquev6/PyGithub.git","clone_url":"https://github.com/jacquev6/PyGithub.git","svn_url":"https://github.com/jacquev6/PyGithub","homepage":"http://jacquev6.github.com/PyGithub","size":7437,"watchers_count":248,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"forks_count":70,"mirror_url":null,"open_issues_count":17,"forks":70,"open_issues":17,"watchers":248,"master_branch":"master","default_branch":"master"},"source":{"id":3544490,"name":"PyGithub","full_name":"jacquev6/PyGithub","owner":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"private":false,"html_url":"https://github.com/jacquev6/PyGithub","description":"Python library implementing the full Github API v3","fork":false,"url":"https://api.github.com/repos/jacquev6/PyGithub","forks_url":"https://api.github.com/repos/jacquev6/PyGithub/forks","keys_url":"https://api.github.com/repos/jacquev6/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jacquev6/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jacquev6/PyGithub/teams","hooks_url":"https://api.github.com/repos/jacquev6/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/jacquev6/PyGithub/events","assignees_url":"https://api.github.com/repos/jacquev6/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/jacquev6/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/jacquev6/PyGithub/tags","blobs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jacquev6/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jacquev6/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/jacquev6/PyGithub/languages","stargazers_url":"https://api.github.com/repos/jacquev6/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/jacquev6/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/jacquev6/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/jacquev6/PyGithub/subscription","commits_url":"https://api.github.com/repos/jacquev6/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/{number}","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/jacquev6/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jacquev6/PyGithub/merges","archive_url":"https://api.github.com/repos/jacquev6/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jacquev6/PyGithub/downloads","issues_url":"https://api.github.com/repos/jacquev6/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/jacquev6/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/jacquev6/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/labels{/name}","created_at":"2012-02-25T12:53:47Z","updated_at":"2013-08-21T20:32:08Z","pushed_at":"2013-08-21T20:31:45Z","git_url":"git://github.com/jacquev6/PyGithub.git","ssh_url":"git@github.com:jacquev6/PyGithub.git","clone_url":"https://github.com/jacquev6/PyGithub.git","svn_url":"https://github.com/jacquev6/PyGithub","homepage":"http://jacquev6.github.com/PyGithub","size":7437,"watchers_count":248,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"forks_count":70,"mirror_url":null,"open_issues_count":17,"forks":70,"open_issues":17,"watchers":248,"master_branch":"master","default_branch":"master"}} + +https +GET +api.github.com +None +/repos/akfish/PyGithub +{'If-None-Match': '"8600bedcb7fed1d8065e1693e05529ce"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Thu, 22 Aug 2013 02:09:11 GMT'} +null +304 +[('status', '304 Not Modified'), ('x-ratelimit-remaining', '4988'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('last-modified', 'Thu, 22 Aug 2013 02:09:11 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"8600bedcb7fed1d8065e1693e05529ce"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Thu, 22 Aug 2013 02:13:10 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1377140429')] + + diff --git a/github/tests/ReplayData/ConditionalRequestUpdate.testDidUpdate.txt b/github/tests/ReplayData/ConditionalRequestUpdate.testDidUpdate.txt new file mode 100644 index 00000000..b6d8aeec --- /dev/null +++ b/github/tests/ReplayData/ConditionalRequestUpdate.testDidUpdate.txt @@ -0,0 +1,11 @@ +https +GET +api.github.com +None +/repos/akfish/PyGithub +{'If-None-Match': '"8600bedcb7fed1d8065e1693e05529ce"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Thu, 22 Aug 2013 02:09:11 GMT'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4987'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '13712'), ('server', 'GitHub.com'), ('last-modified', 'Thu, 22 Aug 2013 02:14:54 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"ef281ef0e821c18f80da36902727160b"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Thu, 22 Aug 2013 02:15:01 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1377140429')] +{"id":12156762,"name":"PyGithub","full_name":"akfish/PyGithub","owner":{"login":"akfish","id":922715,"avatar_url":"https://0.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"private":false,"html_url":"https://github.com/akfish/PyGithub","description":"Python library implementing the full Github API v3 - AKFish Fork","fork":true,"url":"https://api.github.com/repos/akfish/PyGithub","forks_url":"https://api.github.com/repos/akfish/PyGithub/forks","keys_url":"https://api.github.com/repos/akfish/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/akfish/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/akfish/PyGithub/teams","hooks_url":"https://api.github.com/repos/akfish/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/akfish/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/akfish/PyGithub/events","assignees_url":"https://api.github.com/repos/akfish/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/akfish/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/akfish/PyGithub/tags","blobs_url":"https://api.github.com/repos/akfish/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/akfish/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/akfish/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/akfish/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/akfish/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/akfish/PyGithub/languages","stargazers_url":"https://api.github.com/repos/akfish/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/akfish/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/akfish/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/akfish/PyGithub/subscription","commits_url":"https://api.github.com/repos/akfish/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/akfish/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/akfish/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/akfish/PyGithub/issues/comments/{number}","contents_url":"https://api.github.com/repos/akfish/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/akfish/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/akfish/PyGithub/merges","archive_url":"https://api.github.com/repos/akfish/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/akfish/PyGithub/downloads","issues_url":"https://api.github.com/repos/akfish/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/akfish/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/akfish/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/akfish/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/akfish/PyGithub/labels{/name}","created_at":"2013-08-16T10:56:11Z","updated_at":"2013-08-22T02:14:54Z","pushed_at":"2013-08-22T02:09:09Z","git_url":"git://github.com/akfish/PyGithub.git","ssh_url":"git@github.com:akfish/PyGithub.git","clone_url":"https://github.com/akfish/PyGithub.git","svn_url":"https://github.com/akfish/PyGithub","homepage":"http://jacquev6.github.com/PyGithub","size":6736,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"master_branch":"master","default_branch":"master","permissions":{"admin":true,"push":true,"pull":true},"network_count":70,"parent":{"id":3544490,"name":"PyGithub","full_name":"jacquev6/PyGithub","owner":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"private":false,"html_url":"https://github.com/jacquev6/PyGithub","description":"Python library implementing the full Github API v3","fork":false,"url":"https://api.github.com/repos/jacquev6/PyGithub","forks_url":"https://api.github.com/repos/jacquev6/PyGithub/forks","keys_url":"https://api.github.com/repos/jacquev6/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jacquev6/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jacquev6/PyGithub/teams","hooks_url":"https://api.github.com/repos/jacquev6/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/jacquev6/PyGithub/events","assignees_url":"https://api.github.com/repos/jacquev6/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/jacquev6/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/jacquev6/PyGithub/tags","blobs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jacquev6/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jacquev6/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/jacquev6/PyGithub/languages","stargazers_url":"https://api.github.com/repos/jacquev6/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/jacquev6/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/jacquev6/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/jacquev6/PyGithub/subscription","commits_url":"https://api.github.com/repos/jacquev6/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/{number}","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/jacquev6/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jacquev6/PyGithub/merges","archive_url":"https://api.github.com/repos/jacquev6/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jacquev6/PyGithub/downloads","issues_url":"https://api.github.com/repos/jacquev6/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/jacquev6/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/jacquev6/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/labels{/name}","created_at":"2012-02-25T12:53:47Z","updated_at":"2013-08-21T20:32:08Z","pushed_at":"2013-08-21T20:31:45Z","git_url":"git://github.com/jacquev6/PyGithub.git","ssh_url":"git@github.com:jacquev6/PyGithub.git","clone_url":"https://github.com/jacquev6/PyGithub.git","svn_url":"https://github.com/jacquev6/PyGithub","homepage":"http://jacquev6.github.com/PyGithub","size":7437,"watchers_count":248,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"forks_count":70,"mirror_url":null,"open_issues_count":17,"forks":70,"open_issues":17,"watchers":248,"master_branch":"master","default_branch":"master"},"source":{"id":3544490,"name":"PyGithub","full_name":"jacquev6/PyGithub","owner":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"private":false,"html_url":"https://github.com/jacquev6/PyGithub","description":"Python library implementing the full Github API v3","fork":false,"url":"https://api.github.com/repos/jacquev6/PyGithub","forks_url":"https://api.github.com/repos/jacquev6/PyGithub/forks","keys_url":"https://api.github.com/repos/jacquev6/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jacquev6/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jacquev6/PyGithub/teams","hooks_url":"https://api.github.com/repos/jacquev6/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/jacquev6/PyGithub/events","assignees_url":"https://api.github.com/repos/jacquev6/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/jacquev6/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/jacquev6/PyGithub/tags","blobs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jacquev6/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jacquev6/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/jacquev6/PyGithub/languages","stargazers_url":"https://api.github.com/repos/jacquev6/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/jacquev6/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/jacquev6/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/jacquev6/PyGithub/subscription","commits_url":"https://api.github.com/repos/jacquev6/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/{number}","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/jacquev6/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jacquev6/PyGithub/merges","archive_url":"https://api.github.com/repos/jacquev6/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jacquev6/PyGithub/downloads","issues_url":"https://api.github.com/repos/jacquev6/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/jacquev6/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/jacquev6/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/labels{/name}","created_at":"2012-02-25T12:53:47Z","updated_at":"2013-08-21T20:32:08Z","pushed_at":"2013-08-21T20:31:45Z","git_url":"git://github.com/jacquev6/PyGithub.git","ssh_url":"git@github.com:jacquev6/PyGithub.git","clone_url":"https://github.com/jacquev6/PyGithub.git","svn_url":"https://github.com/jacquev6/PyGithub","homepage":"http://jacquev6.github.com/PyGithub","size":7437,"watchers_count":248,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"forks_count":70,"mirror_url":null,"open_issues_count":17,"forks":70,"open_issues":17,"watchers":248,"master_branch":"master","default_branch":"master"}} + diff --git a/github/tests/_record_.py b/github/tests/_record_.py index 4cf5242c..36dab4e3 100644 --- a/github/tests/_record_.py +++ b/github/tests/_record_.py @@ -33,7 +33,7 @@ def main(argv): print "Run sepecified test in record mode." print "Usage:" print "_record_.py [module_name] [other_arg] ..." - print " e.g. _record_.py github.tests.AllTests" + print " e.g. _record_.py AllTests" return github.tests.Framework.activateRecordMode() From 5c475c7683b2a57ee053d35586248f24febb6ebe Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Thu, 22 Aug 2013 10:12:38 +0200 Subject: [PATCH 071/103] First review of #192 (pep8, headers... nothing important) ./manage.sh check ./manage.sh fix_headers --- .gitignore | 7 ++++--- github/AuthenticatedUser.py | 2 +- github/Authorization.py | 2 +- github/AuthorizationApplication.py | 1 + github/Branch.py | 2 +- github/Commit.py | 2 +- github/CommitComment.py | 17 +---------------- github/CommitStats.py | 1 + github/CommitStatus.py | 2 +- github/Comparison.py | 2 +- github/ContentFile.py | 1 + github/Download.py | 1 + github/Event.py | 9 +-------- github/File.py | 1 + github/Gist.py | 17 +---------------- github/GistComment.py | 17 +---------------- github/GistFile.py | 1 + github/GistHistoryState.py | 14 +------------- github/GitAuthor.py | 1 + github/GitBlob.py | 1 + github/GitCommit.py | 14 +------------- github/GitObject.py | 1 + github/GitRef.py | 2 +- github/GitTag.py | 14 +------------- github/GitTree.py | 7 +------ github/GitTreeElement.py | 1 + github/GithubObject.py | 2 +- github/GitignoreTemplate.py | 1 + github/Hook.py | 3 +-- github/HookDescription.py | 1 + github/HookResponse.py | 1 + github/Issue.py | 17 +---------------- github/IssueComment.py | 17 +---------------- github/IssueEvent.py | 14 +------------- github/IssuePullRequest.py | 1 + github/Label.py | 1 + github/Legacy.py | 3 +-- github/MainClass.py | 16 +++------------- github/Milestone.py | 2 +- github/NamedUser.py | 2 +- github/Notification.py | 5 +---- github/NotificationSubject.py | 1 + github/Organization.py | 2 +- github/PaginatedList.py | 12 ++++++------ github/Permissions.py | 1 + github/Plan.py | 1 + github/PullRequest.py | 19 ++----------------- github/PullRequestComment.py | 17 +---------------- github/PullRequestMergeStatus.py | 1 + github/PullRequestPart.py | 12 +----------- github/Repository.py | 2 +- github/RepositoryKey.py | 2 +- github/Requester.py | 8 ++++---- github/Tag.py | 2 +- github/Team.py | 1 + github/UserKey.py | 1 + github/tests/Framework.py | 15 ++++----------- 57 files changed, 74 insertions(+), 249 deletions(-) diff --git a/.gitignore b/.gitignore index 3a7eff09..6ff70a1d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ ############################ Copyrights and license ############################ # # # Copyright 2012 Vincent Jacques # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # @@ -28,6 +29,6 @@ GithubCredentials.py /PyGithub.egg-info/ /.coverage /developer.github.com/ - -*.cfg -*.bat + +*.cfg +*.bat diff --git a/github/AuthenticatedUser.py b/github/AuthenticatedUser.py index 57e792da..e035f9a1 100644 --- a/github/AuthenticatedUser.py +++ b/github/AuthenticatedUser.py @@ -5,8 +5,8 @@ # Copyright 2012 Steve English # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # -# Copyright 2013 Vincent Jacques # # Copyright 2013 AKFish # +# Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/Authorization.py b/github/Authorization.py index 5228ed31..2289fd34 100644 --- a/github/Authorization.py +++ b/github/Authorization.py @@ -4,8 +4,8 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # -# Copyright 2013 Vincent Jacques # # Copyright 2013 AKFish # +# Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/AuthorizationApplication.py b/github/AuthorizationApplication.py index 392ec78c..8f38bc14 100644 --- a/github/AuthorizationApplication.py +++ b/github/AuthorizationApplication.py @@ -4,6 +4,7 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # diff --git a/github/Branch.py b/github/Branch.py index fef7aa8a..9e761826 100644 --- a/github/Branch.py +++ b/github/Branch.py @@ -4,9 +4,9 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # Copyright 2013 martinqt # -# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/Commit.py b/github/Commit.py index 9e2b266b..5e909213 100644 --- a/github/Commit.py +++ b/github/Commit.py @@ -4,9 +4,9 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # Copyright 2013 martinqt # -# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/CommitComment.py b/github/CommitComment.py index 5ce52f75..55c2cf86 100644 --- a/github/CommitComment.py +++ b/github/CommitComment.py @@ -4,8 +4,8 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # -# Copyright 2013 Vincent Jacques # # Copyright 2013 AKFish # +# Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # @@ -199,18 +199,3 @@ class CommitComment(github.GithubObject.CompletableGithubObject): if "user" in attributes: # pragma no branch assert attributes["user"] is None or isinstance(attributes["user"], dict), attributes["user"] self._user = None if attributes["user"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["user"], completed=False) - - - - - - - - - - - - - - - diff --git a/github/CommitStats.py b/github/CommitStats.py index 1be6a1d4..49f40778 100644 --- a/github/CommitStats.py +++ b/github/CommitStats.py @@ -4,6 +4,7 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # diff --git a/github/CommitStatus.py b/github/CommitStatus.py index 4b9602a7..d08e0274 100644 --- a/github/CommitStatus.py +++ b/github/CommitStatus.py @@ -4,8 +4,8 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # -# Copyright 2013 Vincent Jacques # # Copyright 2013 AKFish # +# Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/Comparison.py b/github/Comparison.py index cfebc0c0..f5f66bc1 100644 --- a/github/Comparison.py +++ b/github/Comparison.py @@ -4,8 +4,8 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # -# Copyright 2013 Vincent Jacques # # Copyright 2013 AKFish # +# Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/ContentFile.py b/github/ContentFile.py index fda1d3d6..03818842 100644 --- a/github/ContentFile.py +++ b/github/ContentFile.py @@ -4,6 +4,7 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # diff --git a/github/Download.py b/github/Download.py index 7555a8c3..86b7ae44 100644 --- a/github/Download.py +++ b/github/Download.py @@ -4,6 +4,7 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # diff --git a/github/Event.py b/github/Event.py index b9752ec1..20351025 100644 --- a/github/Event.py +++ b/github/Event.py @@ -4,9 +4,9 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # Copyright 2013 martinqt # -# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # @@ -128,10 +128,3 @@ class Event(github.GithubObject.NonCompletableGithubObject): if "type" in attributes: # pragma no branch assert attributes["type"] is None or isinstance(attributes["type"], (str, unicode)), attributes["type"] self._type = attributes["type"] - - - - - - - diff --git a/github/File.py b/github/File.py index 538fde6b..6adaae8a 100644 --- a/github/File.py +++ b/github/File.py @@ -4,6 +4,7 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # diff --git a/github/Gist.py b/github/Gist.py index c7294a08..aca39fc1 100644 --- a/github/Gist.py +++ b/github/Gist.py @@ -5,8 +5,8 @@ # Copyright 2012 Steve English # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # -# Copyright 2013 Vincent Jacques # # Copyright 2013 AKFish # +# Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # @@ -360,18 +360,3 @@ class Gist(github.GithubObject.CompletableGithubObject): if "user" in attributes: # pragma no branch assert attributes["user"] is None or isinstance(attributes["user"], dict), attributes["user"] self._user = None if attributes["user"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["user"], completed=False) - - - - - - - - - - - - - - - diff --git a/github/GistComment.py b/github/GistComment.py index c832338a..6c7e2461 100644 --- a/github/GistComment.py +++ b/github/GistComment.py @@ -4,8 +4,8 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # -# Copyright 2013 Vincent Jacques # # Copyright 2013 AKFish # +# Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # @@ -139,18 +139,3 @@ class GistComment(github.GithubObject.CompletableGithubObject): if "user" in attributes: # pragma no branch assert attributes["user"] is None or isinstance(attributes["user"], dict), attributes["user"] self._user = None if attributes["user"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["user"], completed=False) - - - - - - - - - - - - - - - diff --git a/github/GistFile.py b/github/GistFile.py index a153c7ba..96c8ee27 100644 --- a/github/GistFile.py +++ b/github/GistFile.py @@ -4,6 +4,7 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # diff --git a/github/GistHistoryState.py b/github/GistHistoryState.py index 13762e2a..bc24d5c0 100644 --- a/github/GistHistoryState.py +++ b/github/GistHistoryState.py @@ -4,8 +4,8 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # -# Copyright 2013 Vincent Jacques # # Copyright 2013 AKFish # +# Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # @@ -98,15 +98,3 @@ class GistHistoryState(github.GithubObject.CompletableGithubObject): if "version" in attributes: # pragma no branch assert attributes["version"] is None or isinstance(attributes["version"], (str, unicode)), attributes["version"] self._version = attributes["version"] - - - - - - - - - - - - diff --git a/github/GitAuthor.py b/github/GitAuthor.py index dd409dea..e56ce94d 100644 --- a/github/GitAuthor.py +++ b/github/GitAuthor.py @@ -4,6 +4,7 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # diff --git a/github/GitBlob.py b/github/GitBlob.py index ffb12f98..8f105682 100644 --- a/github/GitBlob.py +++ b/github/GitBlob.py @@ -4,6 +4,7 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # diff --git a/github/GitCommit.py b/github/GitCommit.py index a281e491..ffdc6d5a 100644 --- a/github/GitCommit.py +++ b/github/GitCommit.py @@ -4,8 +4,8 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # -# Copyright 2013 Vincent Jacques # # Copyright 2013 AKFish # +# Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # @@ -129,15 +129,3 @@ class GitCommit(github.GithubObject.CompletableGithubObject): if "url" in attributes: # pragma no branch assert attributes["url"] is None or isinstance(attributes["url"], (str, unicode)), attributes["url"] self._url = attributes["url"] - - - - - - - - - - - - diff --git a/github/GitObject.py b/github/GitObject.py index 2d29b437..a7314641 100644 --- a/github/GitObject.py +++ b/github/GitObject.py @@ -4,6 +4,7 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # diff --git a/github/GitRef.py b/github/GitRef.py index 8fe1945e..a666156b 100644 --- a/github/GitRef.py +++ b/github/GitRef.py @@ -4,8 +4,8 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # -# Copyright 2013 Vincent Jacques # # Copyright 2013 AKFish # +# Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/GitTag.py b/github/GitTag.py index 0ffb00e0..564b6b86 100644 --- a/github/GitTag.py +++ b/github/GitTag.py @@ -4,8 +4,8 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # -# Copyright 2013 Vincent Jacques # # Copyright 2013 AKFish # +# Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # @@ -110,15 +110,3 @@ class GitTag(github.GithubObject.CompletableGithubObject): if "url" in attributes: # pragma no branch assert attributes["url"] is None or isinstance(attributes["url"], (str, unicode)), attributes["url"] self._url = attributes["url"] - - - - - - - - - - - - diff --git a/github/GitTree.py b/github/GitTree.py index 570bfee4..b06c5e82 100644 --- a/github/GitTree.py +++ b/github/GitTree.py @@ -4,8 +4,8 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # -# Copyright 2013 Vincent Jacques # # Copyright 2013 AKFish # +# Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # @@ -80,8 +80,3 @@ class GitTree(github.GithubObject.CompletableGithubObject): if "url" in attributes: # pragma no branch assert attributes["url"] is None or isinstance(attributes["url"], (str, unicode)), attributes["url"] self._url = attributes["url"] - - - - - diff --git a/github/GitTreeElement.py b/github/GitTreeElement.py index bf361be0..e7ae76bb 100644 --- a/github/GitTreeElement.py +++ b/github/GitTreeElement.py @@ -4,6 +4,7 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # diff --git a/github/GithubObject.py b/github/GithubObject.py index 3fc89992..fcf36c29 100644 --- a/github/GithubObject.py +++ b/github/GithubObject.py @@ -4,8 +4,8 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # -# Copyright 2013 Vincent Jacques # # Copyright 2013 AKFish # +# Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/GitignoreTemplate.py b/github/GitignoreTemplate.py index a1b96d7c..a8a7022f 100644 --- a/github/GitignoreTemplate.py +++ b/github/GitignoreTemplate.py @@ -3,6 +3,7 @@ ############################ Copyrights and license ############################ # # # Copyright 2012 Vincent Jacques # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # diff --git a/github/Hook.py b/github/Hook.py index d59b5afd..2ca42db1 100644 --- a/github/Hook.py +++ b/github/Hook.py @@ -4,8 +4,8 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # -# Copyright 2013 Vincent Jacques # # Copyright 2013 AKFish # +# Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # @@ -206,4 +206,3 @@ class Hook(github.GithubObject.CompletableGithubObject): if "url" in attributes: # pragma no branch assert attributes["url"] is None or isinstance(attributes["url"], (str, unicode)), attributes["url"] self._url = attributes["url"] - diff --git a/github/HookDescription.py b/github/HookDescription.py index 766cbfc7..5653492b 100644 --- a/github/HookDescription.py +++ b/github/HookDescription.py @@ -4,6 +4,7 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # diff --git a/github/HookResponse.py b/github/HookResponse.py index 87dc0ac0..41e242b3 100644 --- a/github/HookResponse.py +++ b/github/HookResponse.py @@ -4,6 +4,7 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # diff --git a/github/Issue.py b/github/Issue.py index eb58e20e..48d8922f 100644 --- a/github/Issue.py +++ b/github/Issue.py @@ -6,8 +6,8 @@ # Copyright 2012 Philip Kimmey # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # -# Copyright 2013 Vincent Jacques # # Copyright 2013 AKFish # +# Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # @@ -432,18 +432,3 @@ class Issue(github.GithubObject.CompletableGithubObject): if "user" in attributes: # pragma no branch assert attributes["user"] is None or isinstance(attributes["user"], dict), attributes["user"] self._user = None if attributes["user"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["user"], completed=False) - - - - - - - - - - - - - - - diff --git a/github/IssueComment.py b/github/IssueComment.py index 254398c1..5a3c62da 100644 --- a/github/IssueComment.py +++ b/github/IssueComment.py @@ -4,9 +4,9 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Michael Stead # # Copyright 2013 Vincent Jacques # -# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # @@ -152,18 +152,3 @@ class IssueComment(github.GithubObject.CompletableGithubObject): if "user" in attributes: # pragma no branch assert attributes["user"] is None or isinstance(attributes["user"], dict), attributes["user"] self._user = None if attributes["user"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["user"], completed=False) - - - - - - - - - - - - - - - diff --git a/github/IssueEvent.py b/github/IssueEvent.py index 0a897a69..aca4cdf8 100644 --- a/github/IssueEvent.py +++ b/github/IssueEvent.py @@ -4,8 +4,8 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # -# Copyright 2013 Vincent Jacques # # Copyright 2013 AKFish # +# Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # @@ -122,15 +122,3 @@ class IssueEvent(github.GithubObject.CompletableGithubObject): if "url" in attributes: # pragma no branch assert attributes["url"] is None or isinstance(attributes["url"], (str, unicode)), attributes["url"] self._url = attributes["url"] - - - - - - - - - - - - diff --git a/github/IssuePullRequest.py b/github/IssuePullRequest.py index cdc1b44b..ae7e6b6c 100644 --- a/github/IssuePullRequest.py +++ b/github/IssuePullRequest.py @@ -4,6 +4,7 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # diff --git a/github/Label.py b/github/Label.py index e2d42335..b3c75501 100644 --- a/github/Label.py +++ b/github/Label.py @@ -4,6 +4,7 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # Copyright 2013 martinqt # # # diff --git a/github/Legacy.py b/github/Legacy.py index 4270f7a5..1ed760e2 100644 --- a/github/Legacy.py +++ b/github/Legacy.py @@ -5,8 +5,8 @@ # Copyright 2012 Steve English # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # -# Copyright 2013 Vincent Jacques # # Copyright 2013 AKFish # +# Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # @@ -69,7 +69,6 @@ class PaginatedList(github.PaginatedList.PaginatedListBase): ] - def convertUser(attributes): convertedAttributes = { "login": attributes["login"], diff --git a/github/MainClass.py b/github/MainClass.py index 19531a48..a3a5a003 100644 --- a/github/MainClass.py +++ b/github/MainClass.py @@ -2,10 +2,10 @@ ############################ Copyrights and license ############################ # # +# Copyright 2013 AKFish # # Copyright 2013 Jonathan J Hunt # # Copyright 2013 Peter Golm # # Copyright 2013 Vincent Jacques # -# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # @@ -246,7 +246,7 @@ class Github(object): None, None ) - return github.NamedUser.NamedUser(self.__requester, headers, Legacy.convertUser(data["user"]), completed=False) + return github.NamedUser.NamedUser(self.__requester, headers, Legacy.convertUser(data["user"]), completed=False) def render_markdown(self, text, context=github.GithubObject.NotSet): """ @@ -311,7 +311,7 @@ class Github(object): ) return GitignoreTemplate.GitignoreTemplate(self.__requester, headers, attributes, completed=True) - def create_from_raw_data(self, klass, raw_data, headers = {}): + def create_from_raw_data(self, klass, raw_data, headers={}): """ Creates an object from raw_data previously obtained by :attr:`github.GithubObject.GithubObject.raw_data` @@ -320,13 +320,3 @@ class Github(object): :rtype: instance of class ``klass`` """ return klass(self.__requester, headers, raw_data, completed=True) - - - - - - - - - - diff --git a/github/Milestone.py b/github/Milestone.py index 47b7c0bb..db38437f 100644 --- a/github/Milestone.py +++ b/github/Milestone.py @@ -4,9 +4,9 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # Copyright 2013 martinqt # -# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/NamedUser.py b/github/NamedUser.py index df30b919..8a7a63bf 100644 --- a/github/NamedUser.py +++ b/github/NamedUser.py @@ -5,8 +5,8 @@ # Copyright 2012 Steve English # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # -# Copyright 2013 Vincent Jacques # # Copyright 2013 AKFish # +# Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/Notification.py b/github/Notification.py index 29c06b53..306a64c9 100644 --- a/github/Notification.py +++ b/github/Notification.py @@ -2,10 +2,10 @@ ############################ Copyrights and license ############################ # # +# Copyright 2013 AKFish # # Copyright 2013 Peter Golm # # Copyright 2013 Vincent Jacques # # Copyright 2013 martinqt # -# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # @@ -121,6 +121,3 @@ class Notification(github.GithubObject.CompletableGithubObject): if "url" in attributes: # pragma no branch assert attributes["url"] is None or isinstance(attributes["url"], (str, unicode)), attributes["url"] self._url = attributes["url"] - - - diff --git a/github/NotificationSubject.py b/github/NotificationSubject.py index d32977ea..20ffa42e 100644 --- a/github/NotificationSubject.py +++ b/github/NotificationSubject.py @@ -2,6 +2,7 @@ ############################ Copyrights and license ############################ # # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # diff --git a/github/Organization.py b/github/Organization.py index fb2fe969..d252a054 100644 --- a/github/Organization.py +++ b/github/Organization.py @@ -5,9 +5,9 @@ # Copyright 2012 Steve English # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # Copyright 2013 martinqt # -# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/PaginatedList.py b/github/PaginatedList.py index f4f81d85..5fd61159 100644 --- a/github/PaginatedList.py +++ b/github/PaginatedList.py @@ -4,10 +4,10 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Bill Mill # # Copyright 2013 Vincent Jacques # # Copyright 2013 davidbrai # -# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # @@ -27,7 +27,7 @@ ################################################################################ import github.GithubObject -import inspect + class PaginatedListBase: def __init__(self): @@ -127,8 +127,8 @@ class PaginatedList(PaginatedListBase): return [ self.__contentClass(self.__requester, headers, element, completed=False) - for element in data] - + for element in data + ] def __parseLinkHeader(self, headers): links = {} @@ -151,5 +151,5 @@ class PaginatedList(PaginatedListBase): return [ self.__contentClass(self.__requester, headers, element, completed=False) - for element in data] - + for element in data + ] diff --git a/github/Permissions.py b/github/Permissions.py index 8b9f3b39..3a3b4206 100644 --- a/github/Permissions.py +++ b/github/Permissions.py @@ -4,6 +4,7 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # diff --git a/github/Plan.py b/github/Plan.py index 1daefc7c..99a3c3a6 100644 --- a/github/Plan.py +++ b/github/Plan.py @@ -4,6 +4,7 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # diff --git a/github/PullRequest.py b/github/PullRequest.py index 05438de8..8ea72e55 100644 --- a/github/PullRequest.py +++ b/github/PullRequest.py @@ -5,9 +5,9 @@ # Copyright 2012 Michael Stead # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # Copyright 2013 martinqt # -# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # @@ -500,7 +500,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject): self._additions = attributes["additions"] if "assignee" in attributes: # pragma no branch assert attributes["assignee"] is None or isinstance(attributes["assignee"], dict), attributes["assignee"] - self._assignee = None if attributes["assignee"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["assignee"], completed=False) + self._assignee = None if attributes["assignee"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["assignee"], completed=False) if "base" in attributes: # pragma no branch assert attributes["base"] is None or isinstance(attributes["base"], dict), attributes["base"] self._base = None if attributes["base"] is None else github.PullRequestPart.PullRequestPart(self._requester, self._headers, attributes["base"], completed=False) @@ -576,18 +576,3 @@ class PullRequest(github.GithubObject.CompletableGithubObject): if "user" in attributes: # pragma no branch assert attributes["user"] is None or isinstance(attributes["user"], dict), attributes["user"] self._user = None if attributes["user"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["user"], completed=False) - - - - - - - - - - - - - - - diff --git a/github/PullRequestComment.py b/github/PullRequestComment.py index b51eb8a1..efc520cf 100644 --- a/github/PullRequestComment.py +++ b/github/PullRequestComment.py @@ -4,10 +4,10 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Michael Stead # # Copyright 2013 Vincent Jacques # # Copyright 2013 martinqt # -# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # @@ -213,18 +213,3 @@ class PullRequestComment(github.GithubObject.CompletableGithubObject): if "user" in attributes: # pragma no branch assert attributes["user"] is None or isinstance(attributes["user"], dict), attributes["user"] self._user = None if attributes["user"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["user"], completed=False) - - - - - - - - - - - - - - - diff --git a/github/PullRequestMergeStatus.py b/github/PullRequestMergeStatus.py index f9bae790..9c416dbd 100644 --- a/github/PullRequestMergeStatus.py +++ b/github/PullRequestMergeStatus.py @@ -4,6 +4,7 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # Copyright 2013 martinqt # # # diff --git a/github/PullRequestPart.py b/github/PullRequestPart.py index 8c5dcb43..791452b0 100644 --- a/github/PullRequestPart.py +++ b/github/PullRequestPart.py @@ -4,8 +4,8 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # -# Copyright 2013 Vincent Jacques # # Copyright 2013 AKFish # +# Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # @@ -93,13 +93,3 @@ class PullRequestPart(github.GithubObject.NonCompletableGithubObject): if "user" in attributes: # pragma no branch assert attributes["user"] is None or isinstance(attributes["user"], dict), attributes["user"] self._user = None if attributes["user"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["user"], completed=False) - - - - - - - - - - diff --git a/github/Repository.py b/github/Repository.py index 4bbad55c..411228d4 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -6,10 +6,10 @@ # Copyright 2012 Steve English # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Mark Roddy # # Copyright 2013 Vincent Jacques # # Copyright 2013 martinqt # -# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/RepositoryKey.py b/github/RepositoryKey.py index 91efacf2..074985d8 100644 --- a/github/RepositoryKey.py +++ b/github/RepositoryKey.py @@ -4,10 +4,10 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Srijan Choudhary # # Copyright 2013 Vincent Jacques # # Copyright 2013 martinqt # -# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/Requester.py b/github/Requester.py index 7d944c3e..d8196511 100644 --- a/github/Requester.py +++ b/github/Requester.py @@ -9,9 +9,9 @@ # Copyright 2012 Steve English # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Jonathan J Hunt # # Copyright 2013 Vincent Jacques # -# Copyright 2013 akfish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # @@ -61,7 +61,7 @@ class Requester: def resetConnectionClasses(cls): cls.__httpConnectionClass = httplib.HTTPConnection cls.__httpsConnectionClass = httplib.HTTPSConnection - + ############################################################# # For Debug @classmethod @@ -105,10 +105,9 @@ class Requester: ''' if not self.DEBUG_FLAG: return - + self._frameBuffer[self._frameCount][1:4] = [statusCode, responseHeader, data] responseHeader[self.DEBUG_HEADER_KEY] = self._frameCount - def check_me(self, obj): if self.DEBUG_FLAG and self.ON_CHECK_ME is not None: @@ -121,6 +120,7 @@ class Requester: def _initializeDebugFeature(self): self._frameCount = 0 self._frameBuffer = [] + ############################################################# def __init__(self, login_or_token, password, base_url, timeout, client_id, client_secret, user_agent, per_page): diff --git a/github/Tag.py b/github/Tag.py index 4ac411ab..890c1a02 100644 --- a/github/Tag.py +++ b/github/Tag.py @@ -4,9 +4,9 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # Copyright 2013 martinqt # -# Copyright 2013 AKFish # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/Team.py b/github/Team.py index b6d681d6..804ed3ab 100644 --- a/github/Team.py +++ b/github/Team.py @@ -4,6 +4,7 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # Copyright 2013 martinqt # # # diff --git a/github/UserKey.py b/github/UserKey.py index 222cd1a5..44cc5808 100644 --- a/github/UserKey.py +++ b/github/UserKey.py @@ -4,6 +4,7 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # Copyright 2013 martinqt # # # diff --git a/github/tests/Framework.py b/github/tests/Framework.py index 24a359bd..24e814b4 100644 --- a/github/tests/Framework.py +++ b/github/tests/Framework.py @@ -4,6 +4,7 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # @@ -249,29 +250,21 @@ class TestCase(BasicTestCase): return if obj._headers is None and frame == {}: return - self.assertEqual(obj._headers, frame[2]); - + self.assertEqual(obj._headers, frame[2]) def getFrameChecker(self): return lambda requester, obj, frame: self.doCheckFrame(obj, frame) def setUp(self): BasicTestCase.setUp(self) - - # Set up frame debugging - - github.GithubObject.GithubObject.setCheckAfterInitFlag(True) + # Set up frame debugging + github.GithubObject.GithubObject.setCheckAfterInitFlag(True) github.Requester.Requester.setDebugFlag(True) - github.Requester.Requester.setOnCheckMe(self.getFrameChecker()) self.g = github.Github(self.login, self.password) - - - def activateRecordMode(): # pragma no cover (Function useful only when recording new tests, not used during automated tests) BasicTestCase.recordMode = True - From f2de1fbfcccd1bbb3da722489d361d1937e09860 Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Thu, 22 Aug 2013 10:22:07 +0200 Subject: [PATCH 072/103] Don't fix headers in /build --- scripts/fix_headers.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/fix_headers.py b/scripts/fix_headers.py index d578acd4..3439c6f1 100755 --- a/scripts/fix_headers.py +++ b/scripts/fix_headers.py @@ -132,6 +132,8 @@ def findHeadersAndFiles(): dirs.remove(".git") if "developer.github.com" in dirs: dirs.remove("developer.github.com") + if "build" in dirs: + dirs.remove("build") for filename in files: fullname = os.path.join(root, filename) From ba5b0d5ea93d362ecd8b5a91701a9c62c385d008 Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Thu, 22 Aug 2013 10:44:38 +0200 Subject: [PATCH 073/103] Fix merge of #192 One branch modified signature of constructors, another branch added a call to a constructor. --- github/Issue.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/github/Issue.py b/github/Issue.py index b2d5b672..1cdcc6bb 100644 --- a/github/Issue.py +++ b/github/Issue.py @@ -149,7 +149,7 @@ class Issue(github.GithubObject.CompletableGithubObject): if self._repository is github.GithubObject.NotSet: # The repository was not set automatically, so it must be looked up by url. repo_url = "/".join(self.url.split("/")[:-2]) - self._repository = github.Repository.Repository(self._requester, {'url': repo_url}, False) + self._repository = github.Repository.Repository(self._requester, self._headers, {'url': repo_url}, completed=False) return self._repository @property From 1787765a61958617d47e764a0bea2acd70c84f72 Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Thu, 22 Aug 2013 11:41:15 +0200 Subject: [PATCH 074/103] Review of #189: use dict.get http://docs.python.org/2/library/stdtypes.html#dict.get --- github/Consts.py | 10 +--------- github/GithubObject.py | 9 ++++----- github/Requester.py | 4 ++-- 3 files changed, 7 insertions(+), 16 deletions(-) diff --git a/github/Consts.py b/github/Consts.py index 65b592ac..ea4b1830 100644 --- a/github/Consts.py +++ b/github/Consts.py @@ -24,15 +24,7 @@ # TODO: As of Thu Aug 21 22:40:13 (BJT) Chinese Standard Time 2013 # lots of consts in this project are explict # should realy round them up and reference them by consts - -################################################################################ -# Helper Function # -################################################################################ -def get(dic, key): - if key in dic: - return dic[key] - return None - +# EDIT: well, maybe :-) ################################################################################ # Request Header # diff --git a/github/GithubObject.py b/github/GithubObject.py index cd44bf45..b6d153dc 100644 --- a/github/GithubObject.py +++ b/github/GithubObject.py @@ -27,13 +27,12 @@ from __future__ import with_statement import datetime - -import GithubException - import pickle +import GithubException import Consts + class _NotSetType: def __repr__(self): return "NotSet" @@ -126,14 +125,14 @@ class GithubObject(object): ''' :type str ''' - return Consts.get(self._headers, Consts.RES_ETAG) + return self._headers.get(Consts.RES_ETAG) @property def last_modified(self): ''' :type str ''' - return Consts.get(self._headers, Consts.RES_LAST_MODIFED) + return self._headers.get(Consts.RES_LAST_MODIFED) def update(self): diff --git a/github/Requester.py b/github/Requester.py index 1b30b6fe..8072bca2 100644 --- a/github/Requester.py +++ b/github/Requester.py @@ -290,8 +290,8 @@ class Requester: requestHeaders["Authorization"] = self.__authorizationHeader def __conditional(self, requestHeaders, parameters): - etag = Consts.get(parameters, Consts.REQ_IF_NONE_MATCH) - last_modified = Consts.get(parameters, Consts.REQ_IF_MODIFIED_SINCE) + etag = parameters.get(Consts.REQ_IF_NONE_MATCH) + last_modified = parameters.get(Consts.REQ_IF_MODIFIED_SINCE) if etag is not None: requestHeaders[Consts.REQ_IF_NONE_MATCH] = etag del parameters[Consts.REQ_IF_NONE_MATCH] From 0f74e4389b3c0fa57a83083ecfbbf5c331022674 Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Thu, 22 Aug 2013 12:12:38 +0200 Subject: [PATCH 075/103] Review of #189: pep8, copyrights, style, remarks For remarks, run: git grep "#189" They are only my first thoughts while reviewing this pull request, and should be reviewed themselves. --- github/Consts.py | 12 +++++++----- github/GithubException.py | 3 ++- github/GithubObject.py | 23 +++++++++++------------ github/Requester.py | 2 ++ github/tests/ConditionalRequestUpdate.py | 6 +++++- github/tests/_record_.py | 7 +++++-- 6 files changed, 32 insertions(+), 21 deletions(-) diff --git a/github/Consts.py b/github/Consts.py index ea4b1830..7f32628c 100644 --- a/github/Consts.py +++ b/github/Consts.py @@ -21,7 +21,9 @@ # # ################################################################################ -# TODO: As of Thu Aug 21 22:40:13 (BJT) Chinese Standard Time 2013 +# #189: Line endings should be linux style + +# TODO: As of Thu Aug 21 22:40:13 (BJT) Chinese Standard Time 2013 # lots of consts in this project are explict # should realy round them up and reference them by consts # EDIT: well, maybe :-) @@ -30,12 +32,12 @@ # Request Header # # (Case sensitive) # ################################################################################ -REQ_IF_NONE_MATCH = "If-None-Match" -REQ_IF_MODIFIED_SINCE = "If-Modified-Since" +REQ_IF_NONE_MATCH = "If-None-Match" +REQ_IF_MODIFIED_SINCE = "If-Modified-Since" ################################################################################ # Response Header # # (Lower Case) # ################################################################################ -RES_ETAG = "etag" -RES_LAST_MODIFED = "last-modified" +RES_ETAG = "etag" +RES_LAST_MODIFED = "last-modified" diff --git a/github/GithubException.py b/github/GithubException.py index 53e2d302..869c83d7 100644 --- a/github/GithubException.py +++ b/github/GithubException.py @@ -4,8 +4,8 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # -# Copyright 2013 Vincent Jacques # # Copyright 2013 AKFish # +# Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # @@ -78,6 +78,7 @@ class RateLimitExceededException(GithubException): Exception raised when the rate limit is exceeded (when Github API replies with a 403 rate limit exceeded HTML status) """ + class NotModifiedException(GithubException): """ Exception raised when conditional request is made to a resoure that has not changed diff --git a/github/GithubObject.py b/github/GithubObject.py index b6d153dc..25e81c77 100644 --- a/github/GithubObject.py +++ b/github/GithubObject.py @@ -57,14 +57,14 @@ class GithubObject(object): self._requester = requester # Make sure headers are signed before any operations on attributes # Object creatation requires headers as parameter - self._headers = headers; + self._headers = headers self._initAttributes() self._storeAndUseAttributes(attributes) # Ask requester to do some checking, for debug and test purpose # Since it's most handy to access and kinda all-knowing - if (self.CHECK_AFTER_INIT_FLAG): - requester.check_me(self); + if self.CHECK_AFTER_INIT_FLAG: + requester.check_me(self) def _storeAndUseAttributes(self, attributes): self._useAttributes(attributes) @@ -100,22 +100,21 @@ class GithubObject(object): else: return datetime.datetime.strptime(s, "%Y-%m-%dT%H:%M:%SZ") - def save(self, file_name): + def save(self, file_name): # #189: Could we use file-like objects? It would be more "pythonic" than passing filenames. ''' Save instance to a file - :param file_name: the full path of target file ''' - with open(file_name, 'wb') as f: - pickle.dump(self, f) + pickle.dump(self, f) # #189: This will also save self._requester, and the login/password of the user. She might not appriciate. + # #189: May be better to pickle only self._rawData and self._headers and restore the object with Github.create_from_raw_data - @classmethod - def load(cls, file_name): + @classmethod # #189: Could be a @staticmethod? The docstring would be simpler (no need to explain the type will be same as saved). + def load(cls, file_name): # #189: Could we use file-like objects? It would be more "pythonic" than passing filenames. ''' Load saved instance from file :param file_name: the full path to saved file - :rtype: saved instance. The type of loaded instance remains its orginal one and will not be affected by from which derived class the method is called. + :rtype: saved instance. The type of loaded instance remains its orginal one and will not be affected by from which derived class the method is called. ''' with open(file_name, 'rb') as f: return pickle.load(f) @@ -133,7 +132,6 @@ class GithubObject(object): :type str ''' return self._headers.get(Consts.RES_LAST_MODIFED) - def update(self): ''' @@ -156,9 +154,10 @@ class GithubObject(object): self._storeAndUseAttributes(data) self.__completed = True return True - except GithubException.NotModifiedException: + except GithubException.NotModifiedException: # #189: Why raise and catch? Can't we just check? return False + class NonCompletableGithubObject(GithubObject): def _completeIfNeeded(self): pass diff --git a/github/Requester.py b/github/Requester.py index 8072bca2..abd224fd 100644 --- a/github/Requester.py +++ b/github/Requester.py @@ -290,6 +290,8 @@ class Requester: requestHeaders["Authorization"] = self.__authorizationHeader def __conditional(self, requestHeaders, parameters): + # #189: Why pass etag and last_modified by param "parameters"? + # #189: May be better to add a specific param "headers" to methods requestFoobar? etag = parameters.get(Consts.REQ_IF_NONE_MATCH) last_modified = parameters.get(Consts.REQ_IF_MODIFIED_SINCE) if etag is not None: diff --git a/github/tests/ConditionalRequestUpdate.py b/github/tests/ConditionalRequestUpdate.py index 702e5169..63121e72 100644 --- a/github/tests/ConditionalRequestUpdate.py +++ b/github/tests/ConditionalRequestUpdate.py @@ -21,13 +21,17 @@ # # ################################################################################ +# #189: Line endings should be linux style + import Framework import github + class ConditionalRequestUpdate(Framework.TestCase): def setUp(self): Framework.TestCase.setUp(self) - self.repo = self.g.get_repo("akfish/PyGithub") + self.repo = self.g.get_repo("akfish/PyGithub") + # #189: Let's separate this assert in its own test method, remove it from setUp. # Not updated self.assertFalse(self.repo.update(), msg="The repo is not changes. But update() != False") diff --git a/github/tests/_record_.py b/github/tests/_record_.py index 36dab4e3..38aa0745 100644 --- a/github/tests/_record_.py +++ b/github/tests/_record_.py @@ -28,6 +28,9 @@ import github.tests.Framework import github.tests.AllTests +# #189: This seems equivalent to "python -m github.tests ClassName.methodName --record" + + def main(argv): if len(argv) < 2: print "Run sepecified test in record mode." @@ -35,10 +38,10 @@ def main(argv): print "_record_.py [module_name] [other_arg] ..." print " e.g. _record_.py AllTests" return - + github.tests.Framework.activateRecordMode() module_to_run = argv.pop(1) - + print "module: " + module_to_run print "argv: ", print argv From fb7325884ee0b8ae73f47bf13c6f36cacbc3131c Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Fri, 23 Aug 2013 09:32:47 +0200 Subject: [PATCH 076/103] Fix remarks on #189 to #193 --- github/Consts.py | 2 +- github/GithubObject.py | 12 ++++++------ github/Requester.py | 4 ++-- github/tests/ConditionalRequestUpdate.py | 4 ++-- github/tests/_record_.py | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/github/Consts.py b/github/Consts.py index 7f32628c..5283101d 100644 --- a/github/Consts.py +++ b/github/Consts.py @@ -21,7 +21,7 @@ # # ################################################################################ -# #189: Line endings should be linux style +# #193: Line endings should be linux style # TODO: As of Thu Aug 21 22:40:13 (BJT) Chinese Standard Time 2013 # lots of consts in this project are explict diff --git a/github/GithubObject.py b/github/GithubObject.py index 25e81c77..92efb7f2 100644 --- a/github/GithubObject.py +++ b/github/GithubObject.py @@ -100,17 +100,17 @@ class GithubObject(object): else: return datetime.datetime.strptime(s, "%Y-%m-%dT%H:%M:%SZ") - def save(self, file_name): # #189: Could we use file-like objects? It would be more "pythonic" than passing filenames. + def save(self, file_name): # #193: Could we use file-like objects? It would be more "pythonic" than passing filenames. ''' Save instance to a file :param file_name: the full path of target file ''' with open(file_name, 'wb') as f: - pickle.dump(self, f) # #189: This will also save self._requester, and the login/password of the user. She might not appriciate. - # #189: May be better to pickle only self._rawData and self._headers and restore the object with Github.create_from_raw_data + pickle.dump(self, f) # #193: This will also save self._requester, and the login/password of the user. She might not appriciate. + # #193: May be better to pickle only self._rawData and self._headers and restore the object with Github.create_from_raw_data - @classmethod # #189: Could be a @staticmethod? The docstring would be simpler (no need to explain the type will be same as saved). - def load(cls, file_name): # #189: Could we use file-like objects? It would be more "pythonic" than passing filenames. + @classmethod # #193: Could be a @staticmethod? The docstring would be simpler (no need to explain the type will be same as saved). + def load(cls, file_name): # #193: Could we use file-like objects? It would be more "pythonic" than passing filenames. ''' Load saved instance from file :param file_name: the full path to saved file @@ -154,7 +154,7 @@ class GithubObject(object): self._storeAndUseAttributes(data) self.__completed = True return True - except GithubException.NotModifiedException: # #189: Why raise and catch? Can't we just check? + except GithubException.NotModifiedException: # #193: Why raise and catch? Can't we just check? return False diff --git a/github/Requester.py b/github/Requester.py index abd224fd..9ac335e6 100644 --- a/github/Requester.py +++ b/github/Requester.py @@ -290,8 +290,8 @@ class Requester: requestHeaders["Authorization"] = self.__authorizationHeader def __conditional(self, requestHeaders, parameters): - # #189: Why pass etag and last_modified by param "parameters"? - # #189: May be better to add a specific param "headers" to methods requestFoobar? + # #193: Why pass etag and last_modified by param "parameters"? + # #193: May be better to add a specific param "headers" to methods requestFoobar? etag = parameters.get(Consts.REQ_IF_NONE_MATCH) last_modified = parameters.get(Consts.REQ_IF_MODIFIED_SINCE) if etag is not None: diff --git a/github/tests/ConditionalRequestUpdate.py b/github/tests/ConditionalRequestUpdate.py index 63121e72..6ac38c98 100644 --- a/github/tests/ConditionalRequestUpdate.py +++ b/github/tests/ConditionalRequestUpdate.py @@ -21,7 +21,7 @@ # # ################################################################################ -# #189: Line endings should be linux style +# #193: Line endings should be linux style import Framework import github @@ -31,7 +31,7 @@ class ConditionalRequestUpdate(Framework.TestCase): def setUp(self): Framework.TestCase.setUp(self) self.repo = self.g.get_repo("akfish/PyGithub") - # #189: Let's separate this assert in its own test method, remove it from setUp. + # #193: Let's separate this assert in its own test method, remove it from setUp. # Not updated self.assertFalse(self.repo.update(), msg="The repo is not changes. But update() != False") diff --git a/github/tests/_record_.py b/github/tests/_record_.py index 38aa0745..ffd32409 100644 --- a/github/tests/_record_.py +++ b/github/tests/_record_.py @@ -28,7 +28,7 @@ import github.tests.Framework import github.tests.AllTests -# #189: This seems equivalent to "python -m github.tests ClassName.methodName --record" +# #193: This seems equivalent to "python -m github.tests ClassName.methodName --record" def main(argv): From 0413c87c12e688fb4fc38d978a2f275ef791cd48 Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Fri, 23 Aug 2013 09:39:19 +0200 Subject: [PATCH 077/103] Remove _record_.py (#193) According to https://github.com/jacquev6/PyGithub/commit/0f74e4389b3c0fa57a83083ecfbbf5c331022674#commitcomment-3919786 --- github/tests/_record_.py | 53 ---------------------------------------- 1 file changed, 53 deletions(-) delete mode 100644 github/tests/_record_.py diff --git a/github/tests/_record_.py b/github/tests/_record_.py deleted file mode 100644 index ffd32409..00000000 --- a/github/tests/_record_.py +++ /dev/null @@ -1,53 +0,0 @@ -# -*- coding: utf-8 -*- - -############################ Copyrights and license ############################ -# # -# Copyright 2013 AKFish # -# # -# 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 . # -# # -################################################################################ - -import sys -import unittest - -import github.tests.Framework -import github.tests.AllTests - - -# #193: This seems equivalent to "python -m github.tests ClassName.methodName --record" - - -def main(argv): - if len(argv) < 2: - print "Run sepecified test in record mode." - print "Usage:" - print "_record_.py [module_name] [other_arg] ..." - print " e.g. _record_.py AllTests" - return - - github.tests.Framework.activateRecordMode() - module_to_run = argv.pop(1) - - print "module: " + module_to_run - print "argv: ", - print argv - - unittest.main(module=module_to_run, argv=argv) - - -if __name__ == "__main__": - main(sys.argv) From bc3b819ac554a2132427c9ffe629ef371511213e Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Fri, 23 Aug 2013 09:50:51 +0200 Subject: [PATCH 078/103] Separate tests for conditional requests (#193) --- github/tests/ConditionalRequestUpdate.py | 4 ++-- .../ReplayData/ConditionalRequestUpdate.setUp.txt | 11 ----------- .../ConditionalRequestUpdate.testDidNotUpdate.txt | 11 +++++++++++ 3 files changed, 13 insertions(+), 13 deletions(-) create mode 100755 github/tests/ReplayData/ConditionalRequestUpdate.testDidNotUpdate.txt diff --git a/github/tests/ConditionalRequestUpdate.py b/github/tests/ConditionalRequestUpdate.py index 6ac38c98..5b3eab97 100644 --- a/github/tests/ConditionalRequestUpdate.py +++ b/github/tests/ConditionalRequestUpdate.py @@ -31,8 +31,8 @@ class ConditionalRequestUpdate(Framework.TestCase): def setUp(self): Framework.TestCase.setUp(self) self.repo = self.g.get_repo("akfish/PyGithub") - # #193: Let's separate this assert in its own test method, remove it from setUp. - # Not updated + + def testDidNotUpdate(self): self.assertFalse(self.repo.update(), msg="The repo is not changes. But update() != False") def testDidUpdate(self): diff --git a/github/tests/ReplayData/ConditionalRequestUpdate.setUp.txt b/github/tests/ReplayData/ConditionalRequestUpdate.setUp.txt index fe2eacd3..dfc62ba2 100644 --- a/github/tests/ReplayData/ConditionalRequestUpdate.setUp.txt +++ b/github/tests/ReplayData/ConditionalRequestUpdate.setUp.txt @@ -9,14 +9,3 @@ null [('status', '200 OK'), ('x-ratelimit-remaining', '4988'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '13698'), ('server', 'GitHub.com'), ('last-modified', 'Thu, 22 Aug 2013 02:09:11 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"8600bedcb7fed1d8065e1693e05529ce"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Thu, 22 Aug 2013 02:13:08 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1377140429')] {"id":12156762,"name":"PyGithub","full_name":"akfish/PyGithub","owner":{"login":"akfish","id":922715,"avatar_url":"https://1.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"private":false,"html_url":"https://github.com/akfish/PyGithub","description":"Python library implementing the full Github API v3","fork":true,"url":"https://api.github.com/repos/akfish/PyGithub","forks_url":"https://api.github.com/repos/akfish/PyGithub/forks","keys_url":"https://api.github.com/repos/akfish/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/akfish/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/akfish/PyGithub/teams","hooks_url":"https://api.github.com/repos/akfish/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/akfish/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/akfish/PyGithub/events","assignees_url":"https://api.github.com/repos/akfish/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/akfish/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/akfish/PyGithub/tags","blobs_url":"https://api.github.com/repos/akfish/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/akfish/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/akfish/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/akfish/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/akfish/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/akfish/PyGithub/languages","stargazers_url":"https://api.github.com/repos/akfish/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/akfish/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/akfish/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/akfish/PyGithub/subscription","commits_url":"https://api.github.com/repos/akfish/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/akfish/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/akfish/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/akfish/PyGithub/issues/comments/{number}","contents_url":"https://api.github.com/repos/akfish/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/akfish/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/akfish/PyGithub/merges","archive_url":"https://api.github.com/repos/akfish/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/akfish/PyGithub/downloads","issues_url":"https://api.github.com/repos/akfish/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/akfish/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/akfish/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/akfish/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/akfish/PyGithub/labels{/name}","created_at":"2013-08-16T10:56:11Z","updated_at":"2013-08-22T02:09:11Z","pushed_at":"2013-08-22T02:09:09Z","git_url":"git://github.com/akfish/PyGithub.git","ssh_url":"git@github.com:akfish/PyGithub.git","clone_url":"https://github.com/akfish/PyGithub.git","svn_url":"https://github.com/akfish/PyGithub","homepage":"http://jacquev6.github.com/PyGithub","size":6736,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"master_branch":"master","default_branch":"master","permissions":{"admin":true,"push":true,"pull":true},"network_count":70,"parent":{"id":3544490,"name":"PyGithub","full_name":"jacquev6/PyGithub","owner":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"private":false,"html_url":"https://github.com/jacquev6/PyGithub","description":"Python library implementing the full Github API v3","fork":false,"url":"https://api.github.com/repos/jacquev6/PyGithub","forks_url":"https://api.github.com/repos/jacquev6/PyGithub/forks","keys_url":"https://api.github.com/repos/jacquev6/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jacquev6/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jacquev6/PyGithub/teams","hooks_url":"https://api.github.com/repos/jacquev6/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/jacquev6/PyGithub/events","assignees_url":"https://api.github.com/repos/jacquev6/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/jacquev6/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/jacquev6/PyGithub/tags","blobs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jacquev6/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jacquev6/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/jacquev6/PyGithub/languages","stargazers_url":"https://api.github.com/repos/jacquev6/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/jacquev6/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/jacquev6/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/jacquev6/PyGithub/subscription","commits_url":"https://api.github.com/repos/jacquev6/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/{number}","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/jacquev6/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jacquev6/PyGithub/merges","archive_url":"https://api.github.com/repos/jacquev6/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jacquev6/PyGithub/downloads","issues_url":"https://api.github.com/repos/jacquev6/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/jacquev6/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/jacquev6/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/labels{/name}","created_at":"2012-02-25T12:53:47Z","updated_at":"2013-08-21T20:32:08Z","pushed_at":"2013-08-21T20:31:45Z","git_url":"git://github.com/jacquev6/PyGithub.git","ssh_url":"git@github.com:jacquev6/PyGithub.git","clone_url":"https://github.com/jacquev6/PyGithub.git","svn_url":"https://github.com/jacquev6/PyGithub","homepage":"http://jacquev6.github.com/PyGithub","size":7437,"watchers_count":248,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"forks_count":70,"mirror_url":null,"open_issues_count":17,"forks":70,"open_issues":17,"watchers":248,"master_branch":"master","default_branch":"master"},"source":{"id":3544490,"name":"PyGithub","full_name":"jacquev6/PyGithub","owner":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"private":false,"html_url":"https://github.com/jacquev6/PyGithub","description":"Python library implementing the full Github API v3","fork":false,"url":"https://api.github.com/repos/jacquev6/PyGithub","forks_url":"https://api.github.com/repos/jacquev6/PyGithub/forks","keys_url":"https://api.github.com/repos/jacquev6/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jacquev6/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jacquev6/PyGithub/teams","hooks_url":"https://api.github.com/repos/jacquev6/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/jacquev6/PyGithub/events","assignees_url":"https://api.github.com/repos/jacquev6/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/jacquev6/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/jacquev6/PyGithub/tags","blobs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jacquev6/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jacquev6/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/jacquev6/PyGithub/languages","stargazers_url":"https://api.github.com/repos/jacquev6/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/jacquev6/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/jacquev6/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/jacquev6/PyGithub/subscription","commits_url":"https://api.github.com/repos/jacquev6/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/{number}","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/jacquev6/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jacquev6/PyGithub/merges","archive_url":"https://api.github.com/repos/jacquev6/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jacquev6/PyGithub/downloads","issues_url":"https://api.github.com/repos/jacquev6/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/jacquev6/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/jacquev6/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/labels{/name}","created_at":"2012-02-25T12:53:47Z","updated_at":"2013-08-21T20:32:08Z","pushed_at":"2013-08-21T20:31:45Z","git_url":"git://github.com/jacquev6/PyGithub.git","ssh_url":"git@github.com:jacquev6/PyGithub.git","clone_url":"https://github.com/jacquev6/PyGithub.git","svn_url":"https://github.com/jacquev6/PyGithub","homepage":"http://jacquev6.github.com/PyGithub","size":7437,"watchers_count":248,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"forks_count":70,"mirror_url":null,"open_issues_count":17,"forks":70,"open_issues":17,"watchers":248,"master_branch":"master","default_branch":"master"}} -https -GET -api.github.com -None -/repos/akfish/PyGithub -{'If-None-Match': '"8600bedcb7fed1d8065e1693e05529ce"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Thu, 22 Aug 2013 02:09:11 GMT'} -null -304 -[('status', '304 Not Modified'), ('x-ratelimit-remaining', '4988'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('last-modified', 'Thu, 22 Aug 2013 02:09:11 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"8600bedcb7fed1d8065e1693e05529ce"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Thu, 22 Aug 2013 02:13:10 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1377140429')] - - diff --git a/github/tests/ReplayData/ConditionalRequestUpdate.testDidNotUpdate.txt b/github/tests/ReplayData/ConditionalRequestUpdate.testDidNotUpdate.txt new file mode 100755 index 00000000..025aee8c --- /dev/null +++ b/github/tests/ReplayData/ConditionalRequestUpdate.testDidNotUpdate.txt @@ -0,0 +1,11 @@ +https +GET +api.github.com +None +/repos/akfish/PyGithub +{'If-None-Match': '"8600bedcb7fed1d8065e1693e05529ce"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Thu, 22 Aug 2013 02:09:11 GMT'} +null +304 +[('status', '304 Not Modified'), ('x-ratelimit-remaining', '4988'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('last-modified', 'Thu, 22 Aug 2013 02:09:11 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"8600bedcb7fed1d8065e1693e05529ce"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Thu, 22 Aug 2013 02:13:10 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1377140429')] + + From bae0a37d180a4b224c6aa808d03722908109c57d Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Fri, 23 Aug 2013 11:10:35 +0200 Subject: [PATCH 079/103] #193: Don't use a try-except for a usual execution flow in GithubObject.update (and factorize assignment of headers in _storeAndUseAttributes, as done for rawData) --- github/GithubException.py | 6 ------ github/GithubObject.py | 36 ++++++++++++++++++------------------ github/Requester.py | 2 -- 3 files changed, 18 insertions(+), 26 deletions(-) diff --git a/github/GithubException.py b/github/GithubException.py index 869c83d7..02e7a75e 100644 --- a/github/GithubException.py +++ b/github/GithubException.py @@ -77,9 +77,3 @@ class RateLimitExceededException(GithubException): """ Exception raised when the rate limit is exceeded (when Github API replies with a 403 rate limit exceeded HTML status) """ - - -class NotModifiedException(GithubException): - """ - Exception raised when conditional request is made to a resoure that has not changed - """ diff --git a/github/GithubObject.py b/github/GithubObject.py index 92efb7f2..6bc5a7bb 100644 --- a/github/GithubObject.py +++ b/github/GithubObject.py @@ -55,20 +55,20 @@ class GithubObject(object): def __init__(self, requester, headers, attributes, completed): self._requester = requester - # Make sure headers are signed before any operations on attributes - # Object creatation requires headers as parameter - self._headers = headers self._initAttributes() - self._storeAndUseAttributes(attributes) + self._storeAndUseAttributes(headers, attributes) # Ask requester to do some checking, for debug and test purpose # Since it's most handy to access and kinda all-knowing if self.CHECK_AFTER_INIT_FLAG: requester.check_me(self) - def _storeAndUseAttributes(self, attributes): - self._useAttributes(attributes) + def _storeAndUseAttributes(self, headers, attributes): + # Make sure headers are assigned before calling _useAttributes + # (Some derived classes will use headers in _useAttributes) + self._headers = headers self._rawData = attributes + self._useAttributes(attributes) @property def raw_data(self): @@ -144,18 +144,19 @@ class GithubObject(object): if self.last_modified is not None: conditionalRequestHeader[Consts.REQ_IF_MODIFIED_SINCE] = self.last_modified - try: - headers, data = self._requester.requestJsonAndCheck( - "GET", - self._url, - conditionalRequestHeader, - None - ) - self._storeAndUseAttributes(data) + status, responseHeaders, output = self._requester.requestJson( + "GET", + self._url, + conditionalRequestHeader, + None + ) + if status == 304: + return False + else: + headers, data = self._requester._Requester__check(status, responseHeaders, output) + self._storeAndUseAttributes(headers, data) self.__completed = True return True - except GithubException.NotModifiedException: # #193: Why raise and catch? Can't we just check? - return False class NonCompletableGithubObject(GithubObject): @@ -183,6 +184,5 @@ class CompletableGithubObject(GithubObject): None, None ) - self._headers = headers - self._storeAndUseAttributes(data) + self._storeAndUseAttributes(headers, data) self.__completed = True diff --git a/github/Requester.py b/github/Requester.py index 9ac335e6..792861d9 100644 --- a/github/Requester.py +++ b/github/Requester.py @@ -179,8 +179,6 @@ class Requester: # Log frame self.DEBUG_ON_RESPONSE(status, responseHeaders, output) - if status == 304: - raise GithubException.NotModifiedException(status, output) if status >= 400: raise self.__createException(status, output) return responseHeaders, output From 03d7fb012e9d032165c43f93a4c67bc29af9366f Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Fri, 23 Aug 2013 11:15:17 +0200 Subject: [PATCH 080/103] #193: Add remarks --- github/GithubObject.py | 1 + github/Requester.py | 1 + 2 files changed, 2 insertions(+) diff --git a/github/GithubObject.py b/github/GithubObject.py index 6bc5a7bb..bc32b257 100644 --- a/github/GithubObject.py +++ b/github/GithubObject.py @@ -133,6 +133,7 @@ class GithubObject(object): ''' return self._headers.get(Consts.RES_LAST_MODIFED) + # #193: Should be only in CompletableGithubObject, NonCompletableGithubObjects don't have urls def update(self): ''' Check and update the object with conditional request diff --git a/github/Requester.py b/github/Requester.py index 792861d9..feed86b2 100644 --- a/github/Requester.py +++ b/github/Requester.py @@ -176,6 +176,7 @@ class Requester: def __check(self, status, responseHeaders, output): output = self.__structuredFromJson(output) + # #193: Shouldn't next line be in __requestEncode? (__check is not called on all requests) # Log frame self.DEBUG_ON_RESPONSE(status, responseHeaders, output) From 64cf539c83174f95b3410c7decd2549424385ce1 Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Fri, 23 Aug 2013 11:31:01 +0200 Subject: [PATCH 081/103] #193: Add a param to Requester.requestXxx for request headers --- github/AuthenticatedUser.py | 25 ++++++++++++++++++++ github/Authorization.py | 2 ++ github/Commit.py | 2 ++ github/CommitComment.py | 2 ++ github/Download.py | 1 + github/Gist.py | 8 +++++++ github/GistComment.py | 2 ++ github/GitRef.py | 2 ++ github/GithubObject.py | 2 ++ github/Hook.py | 3 +++ github/Issue.py | 7 ++++++ github/IssueComment.py | 2 ++ github/Label.py | 2 ++ github/Legacy.py | 1 + github/MainClass.py | 11 +++++++++ github/Milestone.py | 2 ++ github/NamedUser.py | 3 +++ github/Organization.py | 11 +++++++++ github/PaginatedList.py | 24 +++++++++++++++++--- github/PullRequest.py | 7 ++++++ github/PullRequestComment.py | 2 ++ github/Repository.py | 44 ++++++++++++++++++++++++++++++++++++ github/RepositoryKey.py | 2 ++ github/Requester.py | 34 +++++++++------------------- github/Team.py | 8 +++++++ github/UserKey.py | 2 ++ 26 files changed, 185 insertions(+), 26 deletions(-) diff --git a/github/AuthenticatedUser.py b/github/AuthenticatedUser.py index e035f9a1..d403893f 100644 --- a/github/AuthenticatedUser.py +++ b/github/AuthenticatedUser.py @@ -258,6 +258,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): "POST", "/user/emails", None, + None, post_parameters ) @@ -272,6 +273,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): "PUT", "/user/following/" + following._identity, None, + None, None ) @@ -286,6 +288,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): "PUT", "/user/starred/" + starred._identity, None, + None, None ) @@ -300,6 +303,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): "PUT", "/user/subscriptions/" + subscription._identity, None, + None, None ) @@ -314,6 +318,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): "PUT", "/user/watched/" + watched._identity, None, + None, None ) @@ -347,6 +352,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): "POST", "/authorizations", None, + None, post_parameters ) return github.Authorization.Authorization(self._requester, headers, data, completed=True) @@ -362,6 +368,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): "POST", "/repos/" + repo.owner.login + "/" + repo.name + "/forks", None, + None, None ) return github.Repository.Repository(self._requester, headers, data, completed=True) @@ -387,6 +394,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): "POST", "/gists", None, + None, post_parameters ) return github.Gist.Gist(self._requester, headers, data, completed=True) @@ -408,6 +416,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): "POST", "/user/keys", None, + None, post_parameters ) return github.UserKey.UserKey(self._requester, headers, data, completed=True) @@ -458,6 +467,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): "POST", "/user/repos", None, + None, post_parameters ) return github.Repository.Repository(self._requester, headers, data, completed=True) @@ -500,6 +510,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): "PATCH", "/user", None, + None, post_parameters ) self._useAttributes(data) @@ -515,6 +526,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): "GET", "/authorizations/" + str(id), None, + None, None ) return github.Authorization.Authorization(self._requester, headers, data, completed=True) @@ -540,6 +552,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): "GET", "/user/emails", None, + None, None ) return data @@ -679,6 +692,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): "GET", "/user/keys/" + str(id), None, + None, None ) return github.UserKey.UserKey(self._requester, headers, data, completed=True) @@ -706,6 +720,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): "GET", "/notifications/threads/" + id, None, + None, None ) return github.Notification.Notification(self._requester, headers, data, completed=True) @@ -770,6 +785,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): "GET", "/repos/" + self.login + "/" + name, None, + None, None ) return github.Repository.Repository(self._requester, headers, data, completed=True) @@ -858,6 +874,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): "GET", "/user/following/" + following._identity, None, + None, None ) return status == 204 @@ -873,6 +890,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): "GET", "/user/starred/" + starred._identity, None, + None, None ) return status == 204 @@ -888,6 +906,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): "GET", "/user/subscriptions/" + subscription._identity, None, + None, None ) return status == 204 @@ -903,6 +922,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): "GET", "/user/watched/" + watched._identity, None, + None, None ) return status == 204 @@ -919,6 +939,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): "DELETE", "/user/emails", None, + None, post_parameters ) @@ -933,6 +954,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): "DELETE", "/user/following/" + following._identity, None, + None, None ) @@ -947,6 +969,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): "DELETE", "/user/starred/" + starred._identity, None, + None, None ) @@ -961,6 +984,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): "DELETE", "/user/subscriptions/" + subscription._identity, None, + None, None ) @@ -975,6 +999,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): "DELETE", "/user/watched/" + watched._identity, None, + None, None ) diff --git a/github/Authorization.py b/github/Authorization.py index 2289fd34..f287a2b6 100644 --- a/github/Authorization.py +++ b/github/Authorization.py @@ -115,6 +115,7 @@ class Authorization(github.GithubObject.CompletableGithubObject): "DELETE", self.url, None, + None, None ) @@ -148,6 +149,7 @@ class Authorization(github.GithubObject.CompletableGithubObject): "PATCH", self.url, None, + None, post_parameters ) self._useAttributes(data) diff --git a/github/Commit.py b/github/Commit.py index 5e909213..ad744e39 100644 --- a/github/Commit.py +++ b/github/Commit.py @@ -131,6 +131,7 @@ class Commit(github.GithubObject.CompletableGithubObject): "POST", self.url + "/comments", None, + None, post_parameters ) return github.CommitComment.CommitComment(self._requester, headers, data, completed=True) @@ -157,6 +158,7 @@ class Commit(github.GithubObject.CompletableGithubObject): "POST", self._parentUrl(self._parentUrl(self.url)) + "/statuses/" + self.sha, None, + None, post_parameters ) return github.CommitStatus.CommitStatus(self._requester, headers, data, completed=True) diff --git a/github/CommitComment.py b/github/CommitComment.py index 55c2cf86..061737bf 100644 --- a/github/CommitComment.py +++ b/github/CommitComment.py @@ -131,6 +131,7 @@ class CommitComment(github.GithubObject.CompletableGithubObject): "DELETE", self.url, None, + None, None ) @@ -148,6 +149,7 @@ class CommitComment(github.GithubObject.CompletableGithubObject): "PATCH", self.url, None, + None, post_parameters ) self._useAttributes(data) diff --git a/github/Download.py b/github/Download.py index 86b7ae44..a4b3b656 100644 --- a/github/Download.py +++ b/github/Download.py @@ -201,6 +201,7 @@ class Download(github.GithubObject.CompletableGithubObject): "DELETE", self.url, None, + None, None ) diff --git a/github/Gist.py b/github/Gist.py index a1497685..de4ded9e 100644 --- a/github/Gist.py +++ b/github/Gist.py @@ -173,6 +173,7 @@ class Gist(github.GithubObject.CompletableGithubObject): "POST", self.url + "/comments", None, + None, post_parameters ) return github.GistComment.GistComment(self._requester, headers, data, completed=True) @@ -186,6 +187,7 @@ class Gist(github.GithubObject.CompletableGithubObject): "POST", self.url + "/forks", None, + None, None ) return Gist(self._requester, headers, data, completed=True) @@ -199,6 +201,7 @@ class Gist(github.GithubObject.CompletableGithubObject): "DELETE", self.url, None, + None, None ) @@ -220,6 +223,7 @@ class Gist(github.GithubObject.CompletableGithubObject): "PATCH", self.url, None, + None, post_parameters ) self._useAttributes(data) @@ -235,6 +239,7 @@ class Gist(github.GithubObject.CompletableGithubObject): "GET", self.url + "/comments/" + str(id), None, + None, None ) return github.GistComment.GistComment(self._requester, headers, data, completed=True) @@ -260,6 +265,7 @@ class Gist(github.GithubObject.CompletableGithubObject): "GET", self.url + "/star", None, + None, None ) return status == 204 @@ -273,6 +279,7 @@ class Gist(github.GithubObject.CompletableGithubObject): "DELETE", self.url + "/star", None, + None, None ) @@ -285,6 +292,7 @@ class Gist(github.GithubObject.CompletableGithubObject): "PUT", self.url + "/star", None, + None, None ) diff --git a/github/GistComment.py b/github/GistComment.py index 6c7e2461..f0b5c80c 100644 --- a/github/GistComment.py +++ b/github/GistComment.py @@ -91,6 +91,7 @@ class GistComment(github.GithubObject.CompletableGithubObject): "DELETE", self.url, None, + None, None ) @@ -108,6 +109,7 @@ class GistComment(github.GithubObject.CompletableGithubObject): "PATCH", self.url, None, + None, post_parameters ) self._useAttributes(data) diff --git a/github/GitRef.py b/github/GitRef.py index a666156b..84ec00c5 100644 --- a/github/GitRef.py +++ b/github/GitRef.py @@ -67,6 +67,7 @@ class GitRef(github.GithubObject.CompletableGithubObject): "DELETE", self.url, None, + None, None ) @@ -88,6 +89,7 @@ class GitRef(github.GithubObject.CompletableGithubObject): "PATCH", self.url, None, + None, post_parameters ) self._useAttributes(data) diff --git a/github/GithubObject.py b/github/GithubObject.py index bc32b257..4fddd29d 100644 --- a/github/GithubObject.py +++ b/github/GithubObject.py @@ -148,6 +148,7 @@ class GithubObject(object): status, responseHeaders, output = self._requester.requestJson( "GET", self._url, + None, conditionalRequestHeader, None ) @@ -183,6 +184,7 @@ class CompletableGithubObject(GithubObject): "GET", self._url, None, + None, None ) self._storeAndUseAttributes(headers, data) diff --git a/github/Hook.py b/github/Hook.py index 721bdd7a..ea0be67b 100644 --- a/github/Hook.py +++ b/github/Hook.py @@ -115,6 +115,7 @@ class Hook(github.GithubObject.CompletableGithubObject): "DELETE", self.url, None, + None, None ) @@ -151,6 +152,7 @@ class Hook(github.GithubObject.CompletableGithubObject): "PATCH", self.url, None, + None, post_parameters ) self._useAttributes(data) @@ -164,6 +166,7 @@ class Hook(github.GithubObject.CompletableGithubObject): "POST", self.url + "/tests", None, + None, None ) diff --git a/github/Issue.py b/github/Issue.py index 1cdcc6bb..260967d3 100644 --- a/github/Issue.py +++ b/github/Issue.py @@ -204,6 +204,7 @@ class Issue(github.GithubObject.CompletableGithubObject): "POST", self.url + "/labels", None, + None, post_parameters ) @@ -221,6 +222,7 @@ class Issue(github.GithubObject.CompletableGithubObject): "POST", self.url + "/comments", None, + None, post_parameters ) return github.IssueComment.IssueComment(self._requester, headers, data, completed=True) @@ -234,6 +236,7 @@ class Issue(github.GithubObject.CompletableGithubObject): "DELETE", self.url + "/labels", None, + None, None ) @@ -271,6 +274,7 @@ class Issue(github.GithubObject.CompletableGithubObject): "PATCH", self.url, None, + None, post_parameters ) self._useAttributes(data) @@ -286,6 +290,7 @@ class Issue(github.GithubObject.CompletableGithubObject): "GET", self._parentUrl(self.url) + "/comments/" + str(id), None, + None, None ) return github.IssueComment.IssueComment(self._requester, headers, data, completed=True) @@ -337,6 +342,7 @@ class Issue(github.GithubObject.CompletableGithubObject): "DELETE", self.url + "/labels/" + label._identity, None, + None, None ) @@ -352,6 +358,7 @@ class Issue(github.GithubObject.CompletableGithubObject): "PUT", self.url + "/labels", None, + None, post_parameters ) diff --git a/github/IssueComment.py b/github/IssueComment.py index 5a3c62da..c1af97f8 100644 --- a/github/IssueComment.py +++ b/github/IssueComment.py @@ -100,6 +100,7 @@ class IssueComment(github.GithubObject.CompletableGithubObject): "DELETE", self.url, None, + None, None ) @@ -117,6 +118,7 @@ class IssueComment(github.GithubObject.CompletableGithubObject): "PATCH", self.url, None, + None, post_parameters ) self._useAttributes(data) diff --git a/github/Label.py b/github/Label.py index b3c75501..b961af18 100644 --- a/github/Label.py +++ b/github/Label.py @@ -68,6 +68,7 @@ class Label(github.GithubObject.CompletableGithubObject): "DELETE", self.url, None, + None, None ) @@ -88,6 +89,7 @@ class Label(github.GithubObject.CompletableGithubObject): "PATCH", self.url, None, + None, post_parameters ) self._useAttributes(data) diff --git a/github/Legacy.py b/github/Legacy.py index 1ed760e2..a0e3493f 100644 --- a/github/Legacy.py +++ b/github/Legacy.py @@ -59,6 +59,7 @@ class PaginatedList(github.PaginatedList.PaginatedListBase): "GET", self.__url, args, + None, None ) self.__continue = len(data[self.__key]) > 0 diff --git a/github/MainClass.py b/github/MainClass.py index ae1f612f..4eab8517 100644 --- a/github/MainClass.py +++ b/github/MainClass.py @@ -106,6 +106,7 @@ class Github(object): 'GET', '/rate_limit', None, + None, None ) return self.__requester.rate_limiting @@ -121,6 +122,7 @@ class Github(object): 'GET', '/rate_limit', None, + None, None ) return self.__requester.rate_limiting_resettime @@ -146,6 +148,7 @@ class Github(object): "GET", "/users/" + login, None, + None, None ) return github.NamedUser.NamedUser(self.__requester, headers, data, completed=True) @@ -178,6 +181,7 @@ class Github(object): "GET", "/orgs/" + login, None, + None, None ) return github.Organization.Organization(self.__requester, headers, data, completed=True) @@ -192,6 +196,7 @@ class Github(object): "GET", "/repos/" + full_name, None, + None, None ) return Repository.Repository(self.__requester, headers, data, completed=True) @@ -224,6 +229,7 @@ class Github(object): "GET", "/gists/" + id, None, + None, None ) return github.Gist.Gist(self.__requester, headers, data, completed=True) @@ -286,6 +292,7 @@ class Github(object): "GET", "/legacy/user/email/" + email, None, + None, None ) return github.NamedUser.NamedUser(self.__requester, headers, Legacy.convertUser(data["user"]), completed=False) @@ -309,6 +316,7 @@ class Github(object): "POST", "/markdown", None, + None, post_parameters ) return data @@ -322,6 +330,7 @@ class Github(object): "GET", "/hooks", None, + None, None ) return [HookDescription.HookDescription(self.__requester, headers, attributes, completed=True) for attributes in data] @@ -335,6 +344,7 @@ class Github(object): "GET", "/gitignore/templates", None, + None, None ) return data @@ -349,6 +359,7 @@ class Github(object): "GET", "/gitignore/templates/" + name, None, + None, None ) return GitignoreTemplate.GitignoreTemplate(self.__requester, headers, attributes, completed=True) diff --git a/github/Milestone.py b/github/Milestone.py index db38437f..0f23eb78 100644 --- a/github/Milestone.py +++ b/github/Milestone.py @@ -136,6 +136,7 @@ class Milestone(github.GithubObject.CompletableGithubObject): "DELETE", self.url, None, + None, None ) @@ -165,6 +166,7 @@ class Milestone(github.GithubObject.CompletableGithubObject): "PATCH", self.url, None, + None, post_parameters ) self._useAttributes(data) diff --git a/github/NamedUser.py b/github/NamedUser.py index ca29d38e..435b1bf2 100644 --- a/github/NamedUser.py +++ b/github/NamedUser.py @@ -270,6 +270,7 @@ class NamedUser(github.GithubObject.CompletableGithubObject): "POST", self.url + "/gists", None, + None, post_parameters ) return github.Gist.Gist(self._requester, headers, data, completed=True) @@ -393,6 +394,7 @@ class NamedUser(github.GithubObject.CompletableGithubObject): "GET", "/repos/" + self.login + "/" + name, None, + None, None ) return github.Repository.Repository(self._requester, headers, data, completed=True) @@ -461,6 +463,7 @@ class NamedUser(github.GithubObject.CompletableGithubObject): "GET", self.url + "/following/" + following._identity, None, + None, None ) return status == 204 diff --git a/github/Organization.py b/github/Organization.py index d252a054..aa904fce 100644 --- a/github/Organization.py +++ b/github/Organization.py @@ -246,6 +246,7 @@ class Organization(github.GithubObject.CompletableGithubObject): "PUT", self.url + "/public_members/" + public_member._identity, None, + None, None ) @@ -263,6 +264,7 @@ class Organization(github.GithubObject.CompletableGithubObject): "POST", "/repos/" + repo.owner.login + "/" + repo.name + "/forks", url_parameters, + None, None ) return github.Repository.Repository(self._requester, headers, data, completed=True) @@ -317,6 +319,7 @@ class Organization(github.GithubObject.CompletableGithubObject): "POST", self.url + "/repos", None, + None, post_parameters ) return github.Repository.Repository(self._requester, headers, data, completed=True) @@ -343,6 +346,7 @@ class Organization(github.GithubObject.CompletableGithubObject): "POST", self.url + "/teams", None, + None, post_parameters ) return github.Team.Team(self._requester, headers, data, completed=True) @@ -381,6 +385,7 @@ class Organization(github.GithubObject.CompletableGithubObject): "PATCH", self.url, None, + None, post_parameters ) self._useAttributes(data) @@ -470,6 +475,7 @@ class Organization(github.GithubObject.CompletableGithubObject): "GET", "/repos/" + self.login + "/" + name, None, + None, None ) return github.Repository.Repository(self._requester, headers, data, completed=True) @@ -502,6 +508,7 @@ class Organization(github.GithubObject.CompletableGithubObject): "GET", "/teams/" + str(id), None, + None, None ) return github.Team.Team(self._requester, headers, data, completed=True) @@ -529,6 +536,7 @@ class Organization(github.GithubObject.CompletableGithubObject): "GET", self.url + "/members/" + member._identity, None, + None, None ) return status == 204 @@ -544,6 +552,7 @@ class Organization(github.GithubObject.CompletableGithubObject): "GET", self.url + "/public_members/" + public_member._identity, None, + None, None ) return status == 204 @@ -559,6 +568,7 @@ class Organization(github.GithubObject.CompletableGithubObject): "DELETE", self.url + "/members/" + member._identity, None, + None, None ) @@ -573,6 +583,7 @@ class Organization(github.GithubObject.CompletableGithubObject): "DELETE", self.url + "/public_members/" + public_member._identity, None, + None, None ) diff --git a/github/PaginatedList.py b/github/PaginatedList.py index e450dfd8..45b2546d 100644 --- a/github/PaginatedList.py +++ b/github/PaginatedList.py @@ -119,7 +119,13 @@ class PaginatedList(PaginatedListBase): self._reversed = False def _getLastPageUrl(self): - headers, data = self.__requester.requestJsonAndCheck("GET", self.__firstUrl, self.__nextParams, None) + headers, data = self.__requester.requestJsonAndCheck( + "GET", + self.__firstUrl, + self.__nextParams, + None, + None + ) links = self.__parseLinkHeader(headers) lastUrl = links.get("last") return lastUrl @@ -140,7 +146,13 @@ class PaginatedList(PaginatedListBase): return self.__nextUrl is not None def _fetchNextPage(self): - headers, data = self.__requester.requestJsonAndCheck("GET", self.__nextUrl, self.__nextParams, None) + headers, data = self.__requester.requestJsonAndCheck( + "GET", + self.__nextUrl, + self.__nextParams, + None, + None + ) self.__nextUrl = None if len(data) > 0: @@ -177,7 +189,13 @@ class PaginatedList(PaginatedListBase): params["page"] = page + 1 if self.__requester.per_page != 30: params["per_page"] = self.__requester.per_page - headers, data = self.__requester.requestJsonAndCheck("GET", self.__firstUrl, params, None) + headers, data = self.__requester.requestJsonAndCheck( + "GET", + self.__firstUrl, + params, + None, + None + ) return [ self.__contentClass(self.__requester, headers, element, completed=False) diff --git a/github/PullRequest.py b/github/PullRequest.py index 8ea72e55..2b9b022b 100644 --- a/github/PullRequest.py +++ b/github/PullRequest.py @@ -293,6 +293,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject): "POST", self.url + "/comments", None, + None, post_parameters ) return github.PullRequestComment.PullRequestComment(self._requester, headers, data, completed=True) @@ -311,6 +312,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject): "POST", self._parentUrl(self._parentUrl(self.url)) + "/issues/" + str(self.number) + "/comments", None, + None, post_parameters ) return github.IssueComment.IssueComment(self._requester, headers, data, completed=True) @@ -337,6 +339,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject): "PATCH", self.url, None, + None, post_parameters ) self._useAttributes(data) @@ -360,6 +363,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject): "GET", self._parentUrl(self.url) + "/comments/" + str(id), None, + None, None ) return github.PullRequestComment.PullRequestComment(self._requester, headers, data, completed=True) @@ -418,6 +422,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject): "GET", self._parentUrl(self._parentUrl(self.url)) + "/issues/comments/" + str(id), None, + None, None ) return github.IssueComment.IssueComment(self._requester, headers, data, completed=True) @@ -443,6 +448,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject): "GET", self.url + "/merge", None, + None, None ) return status == 204 @@ -461,6 +467,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject): "PUT", self.url + "/merge", None, + None, post_parameters ) return github.PullRequestMergeStatus.PullRequestMergeStatus(self._requester, headers, data, completed=True) diff --git a/github/PullRequestComment.py b/github/PullRequestComment.py index efc520cf..4d250d56 100644 --- a/github/PullRequestComment.py +++ b/github/PullRequestComment.py @@ -141,6 +141,7 @@ class PullRequestComment(github.GithubObject.CompletableGithubObject): "DELETE", self.url, None, + None, None ) @@ -158,6 +159,7 @@ class PullRequestComment(github.GithubObject.CompletableGithubObject): "PATCH", self.url, None, + None, post_parameters ) self._useAttributes(data) diff --git a/github/Repository.py b/github/Repository.py index ed5934d5..9a62e13d 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -319,6 +319,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "PUT", self.url + "/collaborators/" + collaborator._identity, None, + None, None ) @@ -335,6 +336,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "GET", self.url + "/compare/" + base + "..." + head, None, + None, None ) return github.Comparison.Comparison(self._requester, headers, data, completed=True) @@ -364,6 +366,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "POST", self.url + "/downloads", None, + None, post_parameters ) return github.Download.Download(self._requester, headers, data, completed=True) @@ -385,6 +388,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "POST", self.url + "/git/blobs", None, + None, post_parameters ) return github.GitBlob.GitBlob(self._requester, headers, data, completed=True) @@ -417,6 +421,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "POST", self.url + "/git/commits", None, + None, post_parameters ) return github.GitCommit.GitCommit(self._requester, headers, data, completed=True) @@ -438,6 +443,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "POST", self.url + "/git/refs", None, + None, post_parameters ) return github.GitRef.GitRef(self._requester, headers, data, completed=True) @@ -469,6 +475,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "POST", self.url + "/git/tags", None, + None, post_parameters ) return github.GitTag.GitTag(self._requester, headers, data, completed=True) @@ -491,6 +498,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "POST", self.url + "/git/trees", None, + None, post_parameters ) return github.GitTree.GitTree(self._requester, headers, data, completed=True) @@ -520,6 +528,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "POST", self.url + "/hooks", None, + None, post_parameters ) return github.Hook.Hook(self._requester, headers, data, completed=True) @@ -554,6 +563,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "POST", self.url + "/issues", None, + None, post_parameters ) return github.Issue.Issue(self._requester, headers, data, completed=True) @@ -575,6 +585,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "POST", self.url + "/keys", None, + None, post_parameters ) return github.RepositoryKey.RepositoryKey(self._requester, headers, data, completed=True, repoUrl=self._url) @@ -596,6 +607,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "POST", self.url + "/labels", None, + None, post_parameters ) return github.Label.Label(self._requester, headers, data, completed=True) @@ -626,6 +638,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "POST", self.url + "/milestones", None, + None, post_parameters ) return github.Milestone.Milestone(self._requester, headers, data, completed=True) @@ -664,6 +677,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "POST", self.url + "/pulls", None, + None, post_parameters ) return github.PullRequest.PullRequest(self._requester, headers, data, completed=True) @@ -677,6 +691,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "DELETE", self.url, None, + None, None ) @@ -722,6 +737,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "PATCH", self.url, None, + None, post_parameters ) self._useAttributes(data) @@ -742,6 +758,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "GET", url, None, + None, None ) return headers["location"] @@ -769,6 +786,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "GET", self.url + "/branches/" + branch, None, + None, None ) return github.Branch.Branch(self._requester, headers, data, completed=True) @@ -808,6 +826,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "GET", self.url + "/comments/" + str(id), None, + None, None ) return github.CommitComment.CommitComment(self._requester, headers, data, completed=True) @@ -835,6 +854,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "GET", self.url + "/commits/" + sha, None, + None, None ) return github.Commit.Commit(self._requester, headers, data, completed=True) @@ -893,6 +913,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "GET", self.url + "/contents" + path, url_parameters, + None, None ) return github.ContentFile.ContentFile(self._requester, headers, data, completed=True) @@ -913,6 +934,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "GET", self.url + "/contents" + path, url_parameters, + None, None ) @@ -922,6 +944,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "GET", headers['location'], url_parameters, + None, None ) @@ -953,6 +976,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "GET", self.url + "/downloads/" + str(id), None, + None, None ) return github.Download.Download(self._requester, headers, data, completed=True) @@ -1004,6 +1028,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "GET", self.url + "/git/blobs/" + sha, None, + None, None ) return github.GitBlob.GitBlob(self._requester, headers, data, completed=True) @@ -1019,6 +1044,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "GET", self.url + "/git/commits/" + sha, None, + None, None ) return github.GitCommit.GitCommit(self._requester, headers, data, completed=True) @@ -1037,6 +1063,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "GET", self.url + prefix + ref, None, + None, None ) return github.GitRef.GitRef(self._requester, headers, data, completed=True) @@ -1064,6 +1091,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "GET", self.url + "/git/tags/" + sha, None, + None, None ) return github.GitTag.GitTag(self._requester, headers, data, completed=True) @@ -1084,6 +1112,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "GET", self.url + "/git/trees/" + sha, url_parameters, + None, None ) return github.GitTree.GitTree(self._requester, headers, data, completed=True) @@ -1099,6 +1128,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "GET", self.url + "/hooks/" + str(id), None, + None, None ) return github.Hook.Hook(self._requester, headers, data, completed=True) @@ -1126,6 +1156,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "GET", self.url + "/issues/" + str(number), None, + None, None ) return github.Issue.Issue(self._requester, headers, data, completed=True) @@ -1217,6 +1248,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "GET", self.url + "/issues/events/" + str(id), None, + None, None ) return github.IssueEvent.IssueEvent(self._requester, headers, data, completed=True) @@ -1244,6 +1276,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "GET", self.url + "/keys/" + str(id), None, + None, None ) return github.RepositoryKey.RepositoryKey(self._requester, headers, data, completed=True, repoUrl=self._url) @@ -1271,6 +1304,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "GET", self.url + "/labels/" + urllib.quote(name), None, + None, None ) return github.Label.Label(self._requester, headers, data, completed=True) @@ -1296,6 +1330,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "GET", self.url + "/languages", None, + None, None ) return data @@ -1311,6 +1346,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "GET", self.url + "/milestones/" + str(number), None, + None, None ) return github.Milestone.Milestone(self._requester, headers, data, completed=True) @@ -1363,6 +1399,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "GET", self.url + "/pulls/" + str(number), None, + None, None ) return github.PullRequest.PullRequest(self._requester, headers, data, completed=True) @@ -1433,6 +1470,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "GET", self.url + "/readme", url_parameters, + None, None ) return github.ContentFile.ContentFile(self._requester, headers, data, completed=True) @@ -1508,6 +1546,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "GET", self.url + "/assignees/" + assignee._identity, None, + None, None ) return status == 204 @@ -1523,6 +1562,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "GET", self.url + "/collaborators/" + collaborator._identity, None, + None, None ) return status == 204 @@ -1540,6 +1580,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "GET", "/legacy/issues/search/" + self.owner.login + "/" + self.name + "/" + state + "/" + urllib.quote(keyword), None, + None, None ) return [ @@ -1568,6 +1609,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "POST", self.url + "/merges", None, + None, post_parameters ) if data is None: @@ -1586,6 +1628,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "DELETE", self.url + "/collaborators/" + collaborator._identity, None, + None, None ) @@ -1627,6 +1670,7 @@ class Repository(github.GithubObject.CompletableGithubObject): "POST", "/hub", None, + None, post_parameters, ) diff --git a/github/RepositoryKey.py b/github/RepositoryKey.py index 074985d8..22b59621 100644 --- a/github/RepositoryKey.py +++ b/github/RepositoryKey.py @@ -91,6 +91,7 @@ class RepositoryKey(github.GithubObject.CompletableGithubObject): "DELETE", self.__customUrl, None, + None, None ) @@ -112,6 +113,7 @@ class RepositoryKey(github.GithubObject.CompletableGithubObject): "PATCH", self.__customUrl, None, + None, post_parameters ) self._useAttributes(data) diff --git a/github/Requester.py b/github/Requester.py index feed86b2..b161de13 100644 --- a/github/Requester.py +++ b/github/Requester.py @@ -168,11 +168,11 @@ class Requester: 'See http://developer.github.com/v3/#user-agent-required' self.__userAgent = user_agent - def requestJsonAndCheck(self, verb, url, parameters, input): - return self.__check(*self.requestJson(verb, url, parameters, input)) + def requestJsonAndCheck(self, verb, url, parameters, headers, input): + return self.__check(*self.requestJson(verb, url, parameters, headers, input)) - def requestMultipartAndCheck(self, verb, url, parameters, input): - return self.__check(*self.requestMultipart(verb, url, parameters, input)) + def requestMultipartAndCheck(self, verb, url, parameters, headers, input): + return self.__check(*self.requestMultipart(verb, url, parameters, headers, input)) def __check(self, status, responseHeaders, output): output = self.__structuredFromJson(output) @@ -208,13 +208,13 @@ class Requester: except ValueError, e: return {'data': data} - def requestJson(self, verb, url, parameters, input): + def requestJson(self, verb, url, parameters, headers, input): def encode(input): return "application/json", json.dumps(input) - return self.__requestEncode(verb, url, parameters, input, encode) + return self.__requestEncode(verb, url, parameters, headers, input, encode) - def requestMultipart(self, verb, url, parameters, input): + def requestMultipart(self, verb, url, parameters, headers, input): def encode(input): boundary = "----------------------------3c3ba8b523b2" eol = "\r\n" @@ -228,16 +228,16 @@ class Requester: encoded_input += "--" + boundary + "--" + eol return "multipart/form-data; boundary=" + boundary, encoded_input - return self.__requestEncode(verb, url, parameters, input, encode) + return self.__requestEncode(verb, url, parameters, headers, input, encode) - def __requestEncode(self, verb, url, parameters, input, encode): + def __requestEncode(self, verb, url, parameters, requestHeaders, input, encode): assert verb in ["HEAD", "GET", "POST", "PATCH", "PUT", "DELETE"] if parameters is None: parameters = dict() + if requestHeaders is None: + requestHeaders = dict() - requestHeaders = dict() self.__authenticate(url, requestHeaders, parameters) - self.__conditional(requestHeaders, parameters) requestHeaders["User-Agent"] = self.__userAgent url = self.__makeAbsoluteUrl(url) @@ -288,18 +288,6 @@ class Requester: if self.__authorizationHeader is not None: requestHeaders["Authorization"] = self.__authorizationHeader - def __conditional(self, requestHeaders, parameters): - # #193: Why pass etag and last_modified by param "parameters"? - # #193: May be better to add a specific param "headers" to methods requestFoobar? - etag = parameters.get(Consts.REQ_IF_NONE_MATCH) - last_modified = parameters.get(Consts.REQ_IF_MODIFIED_SINCE) - if etag is not None: - requestHeaders[Consts.REQ_IF_NONE_MATCH] = etag - del parameters[Consts.REQ_IF_NONE_MATCH] - if last_modified is not None: - requestHeaders[Consts.REQ_IF_MODIFIED_SINCE] = last_modified - del parameters[Consts.REQ_IF_MODIFIED_SINCE] - def __makeAbsoluteUrl(self, url): # URLs generated locally will be relative to __base_url # URLs returned from the server will start with __base_url diff --git a/github/Team.py b/github/Team.py index 804ed3ab..d8fb7379 100644 --- a/github/Team.py +++ b/github/Team.py @@ -96,6 +96,7 @@ class Team(github.GithubObject.CompletableGithubObject): "PUT", self.url + "/members/" + member._identity, None, + None, None ) @@ -110,6 +111,7 @@ class Team(github.GithubObject.CompletableGithubObject): "PUT", self.url + "/repos/" + repo._identity, None, + None, None ) @@ -122,6 +124,7 @@ class Team(github.GithubObject.CompletableGithubObject): "DELETE", self.url, None, + None, None ) @@ -143,6 +146,7 @@ class Team(github.GithubObject.CompletableGithubObject): "PATCH", self.url, None, + None, post_parameters ) self._useAttributes(data) @@ -182,6 +186,7 @@ class Team(github.GithubObject.CompletableGithubObject): "GET", self.url + "/members/" + member._identity, None, + None, None ) return status == 204 @@ -197,6 +202,7 @@ class Team(github.GithubObject.CompletableGithubObject): "GET", self.url + "/repos/" + repo._identity, None, + None, None ) return status == 204 @@ -212,6 +218,7 @@ class Team(github.GithubObject.CompletableGithubObject): "DELETE", self.url + "/members/" + member._identity, None, + None, None ) @@ -226,6 +233,7 @@ class Team(github.GithubObject.CompletableGithubObject): "DELETE", self.url + "/repos/" + repo._identity, None, + None, None ) diff --git a/github/UserKey.py b/github/UserKey.py index 44cc5808..83a26009 100644 --- a/github/UserKey.py +++ b/github/UserKey.py @@ -82,6 +82,7 @@ class UserKey(github.GithubObject.CompletableGithubObject): "DELETE", self.url, None, + None, None ) @@ -103,6 +104,7 @@ class UserKey(github.GithubObject.CompletableGithubObject): "PATCH", self.url, None, + None, post_parameters ) self._useAttributes(data) From e084b5138106d4ad371a69ca9519862f09c855ae Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Fri, 23 Aug 2013 14:51:34 +0200 Subject: [PATCH 082/103] #193: Fix test coverage --- github/GithubObject.py | 58 +++++++++++++------ github/Requester.py | 26 ++++----- github/tests/ConditionalRequestUpdate.py | 4 ++ ...uestUpdate.testUpdateObjectWithoutEtag.txt | 22 +++++++ 4 files changed, 77 insertions(+), 33 deletions(-) create mode 100755 github/tests/ReplayData/ConditionalRequestUpdate.testUpdateObjectWithoutEtag.txt diff --git a/github/GithubObject.py b/github/GithubObject.py index 4fddd29d..29e8a7bb 100644 --- a/github/GithubObject.py +++ b/github/GithubObject.py @@ -60,7 +60,7 @@ class GithubObject(object): # Ask requester to do some checking, for debug and test purpose # Since it's most handy to access and kinda all-knowing - if self.CHECK_AFTER_INIT_FLAG: + if self.CHECK_AFTER_INIT_FLAG: # pragma no branch (Flag always set in tests) requester.check_me(self) def _storeAndUseAttributes(self, headers, attributes): @@ -100,24 +100,46 @@ class GithubObject(object): else: return datetime.datetime.strptime(s, "%Y-%m-%dT%H:%M:%SZ") - def save(self, file_name): # #193: Could we use file-like objects? It would be more "pythonic" than passing filenames. - ''' - Save instance to a file - :param file_name: the full path of target file - ''' - with open(file_name, 'wb') as f: - pickle.dump(self, f) # #193: This will also save self._requester, and the login/password of the user. She might not appriciate. - # #193: May be better to pickle only self._rawData and self._headers and restore the object with Github.create_from_raw_data + # #193: I temporarily comment out those two methods + # We need to address the following: + # - The interface should use file-like objects (not file names) + # - it's more "pythonic" + # - it allows user to save several objects in the same physical file + # - it's easier to unit-test because we can inject in-memory file-like objects + # - We should not save identification information + # - We should not re-create several instances of Requester when loading objects + # - This would lead to very surprising behaviors, when changing Github.per_page or anything impacting this central part of PyGithub + # - It should be possible to restore a saved object without knowing its previous type + # - The "load" method should not make the user think she must know this previous type + # - In particular, it shouldn't be a classmethod of GithubObject + # - They should be covered by unit tests + # + # My proposal, to be experimented and discussed: + # - in "save", pickle a tuple containing the class of the object, its rawData and its headers + # - make "load" a method of class Github + # - it will unpickle everything and call Github.create_from_raw_data + # - I would even make "save" a method of Github, to keep it symetric with "load" + # + # Using __get_state__ would not be enought because we wouldn't have access + # to the Requester instance in __set_state__. - @classmethod # #193: Could be a @staticmethod? The docstring would be simpler (no need to explain the type will be same as saved). - def load(cls, file_name): # #193: Could we use file-like objects? It would be more "pythonic" than passing filenames. - ''' - Load saved instance from file - :param file_name: the full path to saved file - :rtype: saved instance. The type of loaded instance remains its orginal one and will not be affected by from which derived class the method is called. - ''' - with open(file_name, 'rb') as f: - return pickle.load(f) + # def save(self, file_name): + # ''' + # Save instance to a file + # :param file_name: the full path of target file + # ''' + # with open(file_name, 'wb') as f: + # pickle.dump(self, f) + + # @classmethod + # def load(cls, file_name): + # ''' + # Load saved instance from file + # :param file_name: the full path to saved file + # :rtype: saved instance. The type of loaded instance remains its orginal one and will not be affected by from which derived class the method is called. + # ''' + # with open(file_name, 'rb') as f: + # return pickle.load(f) @property def etag(self): diff --git a/github/Requester.py b/github/Requester.py index b161de13..d39715a9 100644 --- a/github/Requester.py +++ b/github/Requester.py @@ -90,30 +90,26 @@ class Requester: The structure of a frame: [requestHeader, statusCode, responseHeader, raw_data] Some of them may be None ''' - if not self.DEBUG_FLAG: - return + if self.DEBUG_FLAG: # pragma no branch (Flag always set in tests) + new_frame = [requestHeader, None, None, None] + if self._frameCount < self.DEBUG_FRAME_BUFFER_SIZE - 1: # pragma no branch (Should be covered) + self._frameBuffer.append(new_frame) + else: + self._frameBuffer[0] = new_frame # pragma no cover (Should be covered) - new_frame = [requestHeader, None, None, None] - if self._frameCount < self.DEBUG_FRAME_BUFFER_SIZE - 1: - self._frameBuffer.append(new_frame) - else: - self._frameBuffer[0] = new_frame - - self._frameCount = len(self._frameBuffer) - 1 + self._frameCount = len(self._frameBuffer) - 1 def DEBUG_ON_RESPONSE(self, statusCode, responseHeader, data): ''' Update current frame with response Current frame index will be attached to responseHeader ''' - if not self.DEBUG_FLAG: - return - - self._frameBuffer[self._frameCount][1:4] = [statusCode, responseHeader, data] - responseHeader[self.DEBUG_HEADER_KEY] = self._frameCount + if self.DEBUG_FLAG: # pragma no branch (Flag always set in tests) + self._frameBuffer[self._frameCount][1:4] = [statusCode, responseHeader, data] + responseHeader[self.DEBUG_HEADER_KEY] = self._frameCount def check_me(self, obj): - if self.DEBUG_FLAG and self.ON_CHECK_ME is not None: + if self.DEBUG_FLAG and self.ON_CHECK_ME is not None: # pragma no branch (Flag always set in tests) frame = None if self.DEBUG_HEADER_KEY in obj._headers: frame_index = obj._headers[self.DEBUG_HEADER_KEY] diff --git a/github/tests/ConditionalRequestUpdate.py b/github/tests/ConditionalRequestUpdate.py index 5b3eab97..157834e2 100644 --- a/github/tests/ConditionalRequestUpdate.py +++ b/github/tests/ConditionalRequestUpdate.py @@ -37,3 +37,7 @@ class ConditionalRequestUpdate(Framework.TestCase): def testDidUpdate(self): self.assertTrue(self.repo.update(), msg="The repo should be changed by now. But update() != True") + + def testUpdateObjectWithoutEtag(self): + r = self.g.get_repo("jacquev6/PyGithub") + self.assertTrue(r.update()) diff --git a/github/tests/ReplayData/ConditionalRequestUpdate.testUpdateObjectWithoutEtag.txt b/github/tests/ReplayData/ConditionalRequestUpdate.testUpdateObjectWithoutEtag.txt new file mode 100755 index 00000000..6ef154b5 --- /dev/null +++ b/github/tests/ReplayData/ConditionalRequestUpdate.testUpdateObjectWithoutEtag.txt @@ -0,0 +1,22 @@ +https +GET +api.github.com +None +/repos/jacquev6/PyGithub +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4911'), ('content-length', '1129'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('date', 'Sun, 27 May 2012 07:17:09 GMT'), ('content-type', 'application/json; charset=utf-8')] +{"clone_url":"https://github.com/jacquev6/PyGithub.git","has_downloads":true,"watchers":15,"git_url":"git://github.com/jacquev6/PyGithub.git","updated_at":"2012-05-27T06:55:28Z","permissions":{"pull":true,"admin":true,"push":true},"homepage":"http://vincent-jacques.net/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub","mirror_url":null,"has_wiki":false,"has_issues":true,"fork":false,"forks":3,"size":308,"private":false,"open_issues":16,"svn_url":"https://github.com/jacquev6/PyGithub","owner":{"url":"https://api.github.com/users/jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","id":327146},"name":"PyGithub","language":"Python","description":"Python library implementing the full Github API v3","ssh_url":"git@github.com:jacquev6/PyGithub.git","pushed_at":"2012-05-27T06:00:28Z","created_at":"2012-02-25T12:53:47Z","id":3544490,"html_url":"https://github.com/jacquev6/PyGithub","full_name":"jacquev6/PyGithub"} + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4911'), ('content-length', '1129'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('date', 'Sun, 27 May 2012 07:17:09 GMT'), ('content-type', 'application/json; charset=utf-8')] +{"clone_url":"https://github.com/jacquev6/PyGithub.git","has_downloads":true,"watchers":15,"git_url":"git://github.com/jacquev6/PyGithub.git","updated_at":"2012-05-27T06:55:28Z","permissions":{"pull":true,"admin":true,"push":true},"homepage":"http://vincent-jacques.net/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub","mirror_url":null,"has_wiki":false,"has_issues":true,"fork":false,"forks":3,"size":308,"private":false,"open_issues":16,"svn_url":"https://github.com/jacquev6/PyGithub","owner":{"url":"https://api.github.com/users/jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","id":327146},"name":"PyGithub","language":"Python","description":"Python library implementing the full Github API v3","ssh_url":"git@github.com:jacquev6/PyGithub.git","pushed_at":"2012-05-27T06:00:28Z","created_at":"2012-02-25T12:53:47Z","id":3544490,"html_url":"https://github.com/jacquev6/PyGithub","full_name":"jacquev6/PyGithub"} + From 020a3c9917f42d98c1761527825061d2db8352fd Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Fri, 23 Aug 2013 18:45:16 +0200 Subject: [PATCH 083/103] Move method update to CompletableGithubObject --- github/GithubObject.py | 53 +++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/github/GithubObject.py b/github/GithubObject.py index 29e8a7bb..5f4a979c 100644 --- a/github/GithubObject.py +++ b/github/GithubObject.py @@ -155,33 +155,6 @@ class GithubObject(object): ''' return self._headers.get(Consts.RES_LAST_MODIFED) - # #193: Should be only in CompletableGithubObject, NonCompletableGithubObjects don't have urls - def update(self): - ''' - Check and update the object with conditional request - :rtype: Boolean value indicating whether the object is changed - ''' - conditionalRequestHeader = dict() - if self.etag is not None: - conditionalRequestHeader[Consts.REQ_IF_NONE_MATCH] = self.etag - if self.last_modified is not None: - conditionalRequestHeader[Consts.REQ_IF_MODIFIED_SINCE] = self.last_modified - - status, responseHeaders, output = self._requester.requestJson( - "GET", - self._url, - None, - conditionalRequestHeader, - None - ) - if status == 304: - return False - else: - headers, data = self._requester._Requester__check(status, responseHeaders, output) - self._storeAndUseAttributes(headers, data) - self.__completed = True - return True - class NonCompletableGithubObject(GithubObject): def _completeIfNeeded(self): @@ -211,3 +184,29 @@ class CompletableGithubObject(GithubObject): ) self._storeAndUseAttributes(headers, data) self.__completed = True + + def update(self): + ''' + Check and update the object with conditional request + :rtype: Boolean value indicating whether the object is changed + ''' + conditionalRequestHeader = dict() + if self.etag is not None: + conditionalRequestHeader[Consts.REQ_IF_NONE_MATCH] = self.etag + if self.last_modified is not None: + conditionalRequestHeader[Consts.REQ_IF_MODIFIED_SINCE] = self.last_modified + + status, responseHeaders, output = self._requester.requestJson( + "GET", + self._url, + None, + conditionalRequestHeader, + None + ) + if status == 304: + return False + else: + headers, data = self._requester._Requester__check(status, responseHeaders, output) + self._storeAndUseAttributes(headers, data) + self.__completed = True + return True From fb6980ce36766e4dd1ab03b48ac4b5adf876dc84 Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Fri, 23 Aug 2013 19:05:53 +0200 Subject: [PATCH 084/103] Move the DEBUG_ON_RESPONSE call to Requester.__requestEncode --- github/Requester.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/github/Requester.py b/github/Requester.py index d39715a9..27f871e5 100644 --- a/github/Requester.py +++ b/github/Requester.py @@ -172,10 +172,6 @@ class Requester: def __check(self, status, responseHeaders, output): output = self.__structuredFromJson(output) - # #193: Shouldn't next line be in __requestEncode? (__check is not called on all requests) - # Log frame - self.DEBUG_ON_RESPONSE(status, responseHeaders, output) - if status >= 400: raise self.__createException(status, output) return responseHeaders, output @@ -255,6 +251,8 @@ class Requester: if "x-oauth-scopes" in responseHeaders: self.oauth_scopes = responseHeaders["x-oauth-scopes"].split(", ") + self.DEBUG_ON_RESPONSE(status, responseHeaders, output) + return status, responseHeaders, output def __requestRaw(self, verb, url, requestHeaders, input): From 38b137fb37c0fdc74f8802a4184518e105db9121 Mon Sep 17 00:00:00 2001 From: AKFish Date: Sat, 24 Aug 2013 07:21:41 +0800 Subject: [PATCH 085/103] Fix line ending --- github/Consts.py | 86 ++++++++++++------------ github/tests/ConditionalRequestUpdate.py | 86 ++++++++++++------------ 2 files changed, 86 insertions(+), 86 deletions(-) diff --git a/github/Consts.py b/github/Consts.py index 5283101d..b3b47914 100644 --- a/github/Consts.py +++ b/github/Consts.py @@ -1,43 +1,43 @@ -# -*- coding: utf-8 -*- - -############################ Copyrights and license ############################ -# # -# Copyright 2013 AKFish # -# # -# 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 . # -# # -################################################################################ - -# #193: Line endings should be linux style - -# TODO: As of Thu Aug 21 22:40:13 (BJT) Chinese Standard Time 2013 -# lots of consts in this project are explict -# should realy round them up and reference them by consts -# EDIT: well, maybe :-) - -################################################################################ -# Request Header # -# (Case sensitive) # -################################################################################ -REQ_IF_NONE_MATCH = "If-None-Match" -REQ_IF_MODIFIED_SINCE = "If-Modified-Since" - -################################################################################ -# Response Header # -# (Lower Case) # -################################################################################ -RES_ETAG = "etag" -RES_LAST_MODIFED = "last-modified" +# -*- coding: utf-8 -*- + +############################ Copyrights and license ############################ +# # +# Copyright 2013 AKFish # +# # +# 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 . # +# # +################################################################################ + +# #193: Line endings should be linux style + +# TODO: As of Thu Aug 21 22:40:13 (BJT) Chinese Standard Time 2013 +# lots of consts in this project are explict +# should realy round them up and reference them by consts +# EDIT: well, maybe :-) + +################################################################################ +# Request Header # +# (Case sensitive) # +################################################################################ +REQ_IF_NONE_MATCH = "If-None-Match" +REQ_IF_MODIFIED_SINCE = "If-Modified-Since" + +################################################################################ +# Response Header # +# (Lower Case) # +################################################################################ +RES_ETAG = "etag" +RES_LAST_MODIFED = "last-modified" diff --git a/github/tests/ConditionalRequestUpdate.py b/github/tests/ConditionalRequestUpdate.py index 157834e2..bfd3f87d 100644 --- a/github/tests/ConditionalRequestUpdate.py +++ b/github/tests/ConditionalRequestUpdate.py @@ -1,43 +1,43 @@ -# -*- coding: utf-8 -*- - -############################ Copyrights and license ############################ -# # -# Copyright 2013 AKFish # -# # -# 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 . # -# # -################################################################################ - -# #193: Line endings should be linux style - -import Framework -import github - - -class ConditionalRequestUpdate(Framework.TestCase): - def setUp(self): - Framework.TestCase.setUp(self) - self.repo = self.g.get_repo("akfish/PyGithub") - - def testDidNotUpdate(self): - self.assertFalse(self.repo.update(), msg="The repo is not changes. But update() != False") - - def testDidUpdate(self): - self.assertTrue(self.repo.update(), msg="The repo should be changed by now. But update() != True") - - def testUpdateObjectWithoutEtag(self): - r = self.g.get_repo("jacquev6/PyGithub") - self.assertTrue(r.update()) +# -*- coding: utf-8 -*- + +############################ Copyrights and license ############################ +# # +# Copyright 2013 AKFish # +# # +# 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 . # +# # +################################################################################ + +# #193: Line endings should be linux style + +import Framework +import github + + +class ConditionalRequestUpdate(Framework.TestCase): + def setUp(self): + Framework.TestCase.setUp(self) + self.repo = self.g.get_repo("akfish/PyGithub") + + def testDidNotUpdate(self): + self.assertFalse(self.repo.update(), msg="The repo is not changes. But update() != False") + + def testDidUpdate(self): + self.assertTrue(self.repo.update(), msg="The repo should be changed by now. But update() != True") + + def testUpdateObjectWithoutEtag(self): + r = self.g.get_repo("jacquev6/PyGithub") + self.assertTrue(r.update()) From 3fe9edf08707d2c289d4e6a05f7521751cf9f8e4 Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Wed, 4 Sep 2013 23:28:44 +0200 Subject: [PATCH 086/103] Implement object persistence This follows my proposal for #193. Largely inspired by AKFish's work. --- github/GithubObject.py | 52 +++--------------- github/MainClass.py | 26 ++++++++- github/tests/AllTests.py | 1 + github/tests/Persistence.py | 54 +++++++++++++++++++ github/tests/ReplayData/Persistence.setUp.txt | 11 ++++ .../Persistence.testLoadAndUpdate.txt | 11 ++++ 6 files changed, 110 insertions(+), 45 deletions(-) create mode 100644 github/tests/Persistence.py create mode 100644 github/tests/ReplayData/Persistence.setUp.txt create mode 100644 github/tests/ReplayData/Persistence.testLoadAndUpdate.txt diff --git a/github/GithubObject.py b/github/GithubObject.py index 5f4a979c..c2ae7f6d 100644 --- a/github/GithubObject.py +++ b/github/GithubObject.py @@ -24,10 +24,7 @@ # # ################################################################################ -from __future__ import with_statement - import datetime -import pickle import GithubException import Consts @@ -78,6 +75,14 @@ class GithubObject(object): self._completeIfNeeded() return self._rawData + @property + def raw_headers(self): + """ + :type: dict + """ + self._completeIfNeeded() + return self._headers + @staticmethod def _parentUrl(url): return "/".join(url.split("/")[: -1]) @@ -100,47 +105,6 @@ class GithubObject(object): else: return datetime.datetime.strptime(s, "%Y-%m-%dT%H:%M:%SZ") - # #193: I temporarily comment out those two methods - # We need to address the following: - # - The interface should use file-like objects (not file names) - # - it's more "pythonic" - # - it allows user to save several objects in the same physical file - # - it's easier to unit-test because we can inject in-memory file-like objects - # - We should not save identification information - # - We should not re-create several instances of Requester when loading objects - # - This would lead to very surprising behaviors, when changing Github.per_page or anything impacting this central part of PyGithub - # - It should be possible to restore a saved object without knowing its previous type - # - The "load" method should not make the user think she must know this previous type - # - In particular, it shouldn't be a classmethod of GithubObject - # - They should be covered by unit tests - # - # My proposal, to be experimented and discussed: - # - in "save", pickle a tuple containing the class of the object, its rawData and its headers - # - make "load" a method of class Github - # - it will unpickle everything and call Github.create_from_raw_data - # - I would even make "save" a method of Github, to keep it symetric with "load" - # - # Using __get_state__ would not be enought because we wouldn't have access - # to the Requester instance in __set_state__. - - # def save(self, file_name): - # ''' - # Save instance to a file - # :param file_name: the full path of target file - # ''' - # with open(file_name, 'wb') as f: - # pickle.dump(self, f) - - # @classmethod - # def load(cls, file_name): - # ''' - # Load saved instance from file - # :param file_name: the full path to saved file - # :rtype: saved instance. The type of loaded instance remains its orginal one and will not be affected by from which derived class the method is called. - # ''' - # with open(file_name, 'rb') as f: - # return pickle.load(f) - @property def etag(self): ''' diff --git a/github/MainClass.py b/github/MainClass.py index 4eab8517..3efde171 100644 --- a/github/MainClass.py +++ b/github/MainClass.py @@ -26,6 +26,7 @@ ################################################################################ import urllib +import pickle from Requester import Requester import AuthenticatedUser @@ -366,10 +367,33 @@ class Github(object): def create_from_raw_data(self, klass, raw_data, headers={}): """ - Creates an object from raw_data previously obtained by :attr:`github.GithubObject.GithubObject.raw_data` + Creates an object from raw_data previously obtained by :attr:`github.GithubObject.GithubObject.raw_data`, + and optionaly headers previously obtained by :attr:`github.GithubObject.GithubObject.raw_headers`. :param klass: the class of the object to create :param raw_data: dict + :param headers: dict :rtype: instance of class ``klass`` """ return klass(self.__requester, headers, raw_data, completed=True) + + def dump(self, obj, file, protocol=0): + """ + Dumps (pickles) a PyGithub object to a file-like object. + Some effort is made to not pickle sensitive informations like the Github credentials used in the :class:`Github` instance. + But NO EFFORT is made to remove sensitive information from the object's attributes. + + :param obj: the object to pickle + :param file: the file-like object to pickle to + :param protocol: the `pickling protocol `_ + """ + pickle.dump((obj.__class__, obj.raw_data, obj.raw_headers), file, protocol) + + def load(self, f): + """ + Loads (unpickles) a PyGithub object from a file-like object. + + :param f: the file-like object to unpickle from + :return: the unpickled object + """ + return self.create_from_raw_data(*pickle.load(f)) diff --git a/github/tests/AllTests.py b/github/tests/AllTests.py index 53789e0f..5c2ce6da 100644 --- a/github/tests/AllTests.py +++ b/github/tests/AllTests.py @@ -81,3 +81,4 @@ from Issue158 import * from Issue174 import * from ConditionalRequestUpdate import ConditionalRequestUpdate +from Persistence import Persistence diff --git a/github/tests/Persistence.py b/github/tests/Persistence.py new file mode 100644 index 00000000..deb52e70 --- /dev/null +++ b/github/tests/Persistence.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- + +############################ Copyrights and license ############################ +# # +# Copyright 2013 Vincent Jacques # +# # +# 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 . # +# # +################################################################################ + +import Framework +import github + +if Framework.atLeastPython26: + from io import BytesIO as IO +else: + from StringIO import StringIO as IO + +class Persistence(Framework.TestCase): + def setUp(self): + Framework.TestCase.setUp(self) + self.repo = self.g.get_repo("akfish/PyGithub") + + self.dumpedRepo = IO() + self.g.dump(self.repo, self.dumpedRepo) + self.dumpedRepo.seek(0) + + def tearDown(self): + self.dumpedRepo.close() + + def testLoad(self): + loadedRepo = self.g.load(self.dumpedRepo) + self.assertIsInstance(loadedRepo, github.Repository.Repository) + self.assertIs(loadedRepo._requester, self.repo._requester) + self.assertIs(loadedRepo.owner._requester, self.repo._requester) + self.assertEqual(loadedRepo.name, "PyGithub") + self.assertEqual(loadedRepo.url, "https://api.github.com/repos/akfish/PyGithub") + + def testLoadAndUpdate(self): + loadedRepo = self.g.load(self.dumpedRepo) + self.assertTrue(loadedRepo.update()) diff --git a/github/tests/ReplayData/Persistence.setUp.txt b/github/tests/ReplayData/Persistence.setUp.txt new file mode 100644 index 00000000..dfc62ba2 --- /dev/null +++ b/github/tests/ReplayData/Persistence.setUp.txt @@ -0,0 +1,11 @@ +https +GET +api.github.com +None +/repos/akfish/PyGithub +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4988'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '13698'), ('server', 'GitHub.com'), ('last-modified', 'Thu, 22 Aug 2013 02:09:11 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"8600bedcb7fed1d8065e1693e05529ce"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Thu, 22 Aug 2013 02:13:08 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1377140429')] +{"id":12156762,"name":"PyGithub","full_name":"akfish/PyGithub","owner":{"login":"akfish","id":922715,"avatar_url":"https://1.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"private":false,"html_url":"https://github.com/akfish/PyGithub","description":"Python library implementing the full Github API v3","fork":true,"url":"https://api.github.com/repos/akfish/PyGithub","forks_url":"https://api.github.com/repos/akfish/PyGithub/forks","keys_url":"https://api.github.com/repos/akfish/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/akfish/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/akfish/PyGithub/teams","hooks_url":"https://api.github.com/repos/akfish/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/akfish/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/akfish/PyGithub/events","assignees_url":"https://api.github.com/repos/akfish/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/akfish/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/akfish/PyGithub/tags","blobs_url":"https://api.github.com/repos/akfish/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/akfish/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/akfish/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/akfish/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/akfish/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/akfish/PyGithub/languages","stargazers_url":"https://api.github.com/repos/akfish/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/akfish/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/akfish/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/akfish/PyGithub/subscription","commits_url":"https://api.github.com/repos/akfish/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/akfish/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/akfish/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/akfish/PyGithub/issues/comments/{number}","contents_url":"https://api.github.com/repos/akfish/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/akfish/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/akfish/PyGithub/merges","archive_url":"https://api.github.com/repos/akfish/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/akfish/PyGithub/downloads","issues_url":"https://api.github.com/repos/akfish/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/akfish/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/akfish/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/akfish/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/akfish/PyGithub/labels{/name}","created_at":"2013-08-16T10:56:11Z","updated_at":"2013-08-22T02:09:11Z","pushed_at":"2013-08-22T02:09:09Z","git_url":"git://github.com/akfish/PyGithub.git","ssh_url":"git@github.com:akfish/PyGithub.git","clone_url":"https://github.com/akfish/PyGithub.git","svn_url":"https://github.com/akfish/PyGithub","homepage":"http://jacquev6.github.com/PyGithub","size":6736,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"master_branch":"master","default_branch":"master","permissions":{"admin":true,"push":true,"pull":true},"network_count":70,"parent":{"id":3544490,"name":"PyGithub","full_name":"jacquev6/PyGithub","owner":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"private":false,"html_url":"https://github.com/jacquev6/PyGithub","description":"Python library implementing the full Github API v3","fork":false,"url":"https://api.github.com/repos/jacquev6/PyGithub","forks_url":"https://api.github.com/repos/jacquev6/PyGithub/forks","keys_url":"https://api.github.com/repos/jacquev6/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jacquev6/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jacquev6/PyGithub/teams","hooks_url":"https://api.github.com/repos/jacquev6/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/jacquev6/PyGithub/events","assignees_url":"https://api.github.com/repos/jacquev6/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/jacquev6/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/jacquev6/PyGithub/tags","blobs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jacquev6/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jacquev6/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/jacquev6/PyGithub/languages","stargazers_url":"https://api.github.com/repos/jacquev6/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/jacquev6/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/jacquev6/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/jacquev6/PyGithub/subscription","commits_url":"https://api.github.com/repos/jacquev6/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/{number}","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/jacquev6/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jacquev6/PyGithub/merges","archive_url":"https://api.github.com/repos/jacquev6/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jacquev6/PyGithub/downloads","issues_url":"https://api.github.com/repos/jacquev6/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/jacquev6/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/jacquev6/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/labels{/name}","created_at":"2012-02-25T12:53:47Z","updated_at":"2013-08-21T20:32:08Z","pushed_at":"2013-08-21T20:31:45Z","git_url":"git://github.com/jacquev6/PyGithub.git","ssh_url":"git@github.com:jacquev6/PyGithub.git","clone_url":"https://github.com/jacquev6/PyGithub.git","svn_url":"https://github.com/jacquev6/PyGithub","homepage":"http://jacquev6.github.com/PyGithub","size":7437,"watchers_count":248,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"forks_count":70,"mirror_url":null,"open_issues_count":17,"forks":70,"open_issues":17,"watchers":248,"master_branch":"master","default_branch":"master"},"source":{"id":3544490,"name":"PyGithub","full_name":"jacquev6/PyGithub","owner":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"private":false,"html_url":"https://github.com/jacquev6/PyGithub","description":"Python library implementing the full Github API v3","fork":false,"url":"https://api.github.com/repos/jacquev6/PyGithub","forks_url":"https://api.github.com/repos/jacquev6/PyGithub/forks","keys_url":"https://api.github.com/repos/jacquev6/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jacquev6/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jacquev6/PyGithub/teams","hooks_url":"https://api.github.com/repos/jacquev6/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/jacquev6/PyGithub/events","assignees_url":"https://api.github.com/repos/jacquev6/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/jacquev6/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/jacquev6/PyGithub/tags","blobs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jacquev6/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jacquev6/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/jacquev6/PyGithub/languages","stargazers_url":"https://api.github.com/repos/jacquev6/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/jacquev6/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/jacquev6/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/jacquev6/PyGithub/subscription","commits_url":"https://api.github.com/repos/jacquev6/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/{number}","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/jacquev6/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jacquev6/PyGithub/merges","archive_url":"https://api.github.com/repos/jacquev6/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jacquev6/PyGithub/downloads","issues_url":"https://api.github.com/repos/jacquev6/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/jacquev6/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/jacquev6/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/labels{/name}","created_at":"2012-02-25T12:53:47Z","updated_at":"2013-08-21T20:32:08Z","pushed_at":"2013-08-21T20:31:45Z","git_url":"git://github.com/jacquev6/PyGithub.git","ssh_url":"git@github.com:jacquev6/PyGithub.git","clone_url":"https://github.com/jacquev6/PyGithub.git","svn_url":"https://github.com/jacquev6/PyGithub","homepage":"http://jacquev6.github.com/PyGithub","size":7437,"watchers_count":248,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"forks_count":70,"mirror_url":null,"open_issues_count":17,"forks":70,"open_issues":17,"watchers":248,"master_branch":"master","default_branch":"master"}} + diff --git a/github/tests/ReplayData/Persistence.testLoadAndUpdate.txt b/github/tests/ReplayData/Persistence.testLoadAndUpdate.txt new file mode 100644 index 00000000..b6d8aeec --- /dev/null +++ b/github/tests/ReplayData/Persistence.testLoadAndUpdate.txt @@ -0,0 +1,11 @@ +https +GET +api.github.com +None +/repos/akfish/PyGithub +{'If-None-Match': '"8600bedcb7fed1d8065e1693e05529ce"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Thu, 22 Aug 2013 02:09:11 GMT'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4987'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '13712'), ('server', 'GitHub.com'), ('last-modified', 'Thu, 22 Aug 2013 02:14:54 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"ef281ef0e821c18f80da36902727160b"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Thu, 22 Aug 2013 02:15:01 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1377140429')] +{"id":12156762,"name":"PyGithub","full_name":"akfish/PyGithub","owner":{"login":"akfish","id":922715,"avatar_url":"https://0.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"private":false,"html_url":"https://github.com/akfish/PyGithub","description":"Python library implementing the full Github API v3 - AKFish Fork","fork":true,"url":"https://api.github.com/repos/akfish/PyGithub","forks_url":"https://api.github.com/repos/akfish/PyGithub/forks","keys_url":"https://api.github.com/repos/akfish/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/akfish/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/akfish/PyGithub/teams","hooks_url":"https://api.github.com/repos/akfish/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/akfish/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/akfish/PyGithub/events","assignees_url":"https://api.github.com/repos/akfish/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/akfish/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/akfish/PyGithub/tags","blobs_url":"https://api.github.com/repos/akfish/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/akfish/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/akfish/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/akfish/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/akfish/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/akfish/PyGithub/languages","stargazers_url":"https://api.github.com/repos/akfish/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/akfish/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/akfish/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/akfish/PyGithub/subscription","commits_url":"https://api.github.com/repos/akfish/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/akfish/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/akfish/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/akfish/PyGithub/issues/comments/{number}","contents_url":"https://api.github.com/repos/akfish/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/akfish/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/akfish/PyGithub/merges","archive_url":"https://api.github.com/repos/akfish/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/akfish/PyGithub/downloads","issues_url":"https://api.github.com/repos/akfish/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/akfish/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/akfish/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/akfish/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/akfish/PyGithub/labels{/name}","created_at":"2013-08-16T10:56:11Z","updated_at":"2013-08-22T02:14:54Z","pushed_at":"2013-08-22T02:09:09Z","git_url":"git://github.com/akfish/PyGithub.git","ssh_url":"git@github.com:akfish/PyGithub.git","clone_url":"https://github.com/akfish/PyGithub.git","svn_url":"https://github.com/akfish/PyGithub","homepage":"http://jacquev6.github.com/PyGithub","size":6736,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"master_branch":"master","default_branch":"master","permissions":{"admin":true,"push":true,"pull":true},"network_count":70,"parent":{"id":3544490,"name":"PyGithub","full_name":"jacquev6/PyGithub","owner":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"private":false,"html_url":"https://github.com/jacquev6/PyGithub","description":"Python library implementing the full Github API v3","fork":false,"url":"https://api.github.com/repos/jacquev6/PyGithub","forks_url":"https://api.github.com/repos/jacquev6/PyGithub/forks","keys_url":"https://api.github.com/repos/jacquev6/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jacquev6/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jacquev6/PyGithub/teams","hooks_url":"https://api.github.com/repos/jacquev6/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/jacquev6/PyGithub/events","assignees_url":"https://api.github.com/repos/jacquev6/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/jacquev6/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/jacquev6/PyGithub/tags","blobs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jacquev6/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jacquev6/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/jacquev6/PyGithub/languages","stargazers_url":"https://api.github.com/repos/jacquev6/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/jacquev6/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/jacquev6/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/jacquev6/PyGithub/subscription","commits_url":"https://api.github.com/repos/jacquev6/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/{number}","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/jacquev6/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jacquev6/PyGithub/merges","archive_url":"https://api.github.com/repos/jacquev6/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jacquev6/PyGithub/downloads","issues_url":"https://api.github.com/repos/jacquev6/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/jacquev6/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/jacquev6/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/labels{/name}","created_at":"2012-02-25T12:53:47Z","updated_at":"2013-08-21T20:32:08Z","pushed_at":"2013-08-21T20:31:45Z","git_url":"git://github.com/jacquev6/PyGithub.git","ssh_url":"git@github.com:jacquev6/PyGithub.git","clone_url":"https://github.com/jacquev6/PyGithub.git","svn_url":"https://github.com/jacquev6/PyGithub","homepage":"http://jacquev6.github.com/PyGithub","size":7437,"watchers_count":248,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"forks_count":70,"mirror_url":null,"open_issues_count":17,"forks":70,"open_issues":17,"watchers":248,"master_branch":"master","default_branch":"master"},"source":{"id":3544490,"name":"PyGithub","full_name":"jacquev6/PyGithub","owner":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"private":false,"html_url":"https://github.com/jacquev6/PyGithub","description":"Python library implementing the full Github API v3","fork":false,"url":"https://api.github.com/repos/jacquev6/PyGithub","forks_url":"https://api.github.com/repos/jacquev6/PyGithub/forks","keys_url":"https://api.github.com/repos/jacquev6/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jacquev6/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jacquev6/PyGithub/teams","hooks_url":"https://api.github.com/repos/jacquev6/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/jacquev6/PyGithub/events","assignees_url":"https://api.github.com/repos/jacquev6/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/jacquev6/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/jacquev6/PyGithub/tags","blobs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jacquev6/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jacquev6/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/jacquev6/PyGithub/languages","stargazers_url":"https://api.github.com/repos/jacquev6/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/jacquev6/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/jacquev6/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/jacquev6/PyGithub/subscription","commits_url":"https://api.github.com/repos/jacquev6/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/{number}","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/jacquev6/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jacquev6/PyGithub/merges","archive_url":"https://api.github.com/repos/jacquev6/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jacquev6/PyGithub/downloads","issues_url":"https://api.github.com/repos/jacquev6/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/jacquev6/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/jacquev6/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/labels{/name}","created_at":"2012-02-25T12:53:47Z","updated_at":"2013-08-21T20:32:08Z","pushed_at":"2013-08-21T20:31:45Z","git_url":"git://github.com/jacquev6/PyGithub.git","ssh_url":"git@github.com:jacquev6/PyGithub.git","clone_url":"https://github.com/jacquev6/PyGithub.git","svn_url":"https://github.com/jacquev6/PyGithub","homepage":"http://jacquev6.github.com/PyGithub","size":7437,"watchers_count":248,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"forks_count":70,"mirror_url":null,"open_issues_count":17,"forks":70,"open_issues":17,"watchers":248,"master_branch":"master","default_branch":"master"}} + From c412d49c9fd28406156dff664a1f848da1e95d0b Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Thu, 5 Sep 2013 17:50:57 +0200 Subject: [PATCH 087/103] Adapt to Python 2.5 --- github/tests/Persistence.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/github/tests/Persistence.py b/github/tests/Persistence.py index deb52e70..49519b71 100644 --- a/github/tests/Persistence.py +++ b/github/tests/Persistence.py @@ -43,7 +43,7 @@ class Persistence(Framework.TestCase): def testLoad(self): loadedRepo = self.g.load(self.dumpedRepo) - self.assertIsInstance(loadedRepo, github.Repository.Repository) + self.assertTrue(isinstance(loadedRepo, github.Repository.Repository)) self.assertIs(loadedRepo._requester, self.repo._requester) self.assertIs(loadedRepo.owner._requester, self.repo._requester) self.assertEqual(loadedRepo.name, "PyGithub") From 6cb149dce41cf1f110ae1f1d6a5c6bdd66790b69 Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Thu, 5 Sep 2013 17:53:31 +0200 Subject: [PATCH 088/103] Adapt to Python 2.5 (again:)) --- github/tests/Persistence.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/github/tests/Persistence.py b/github/tests/Persistence.py index 49519b71..c20f9a7c 100644 --- a/github/tests/Persistence.py +++ b/github/tests/Persistence.py @@ -44,8 +44,8 @@ class Persistence(Framework.TestCase): def testLoad(self): loadedRepo = self.g.load(self.dumpedRepo) self.assertTrue(isinstance(loadedRepo, github.Repository.Repository)) - self.assertIs(loadedRepo._requester, self.repo._requester) - self.assertIs(loadedRepo.owner._requester, self.repo._requester) + self.assertTrue(loadedRepo._requester is self.repo._requester) + self.assertTrue(loadedRepo.owner._requester is self.repo._requester) self.assertEqual(loadedRepo.name, "PyGithub") self.assertEqual(loadedRepo.url, "https://api.github.com/repos/akfish/PyGithub") From d18d1b0354a5c7de920b30ef1e5950a5479dd866 Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Thu, 5 Sep 2013 18:01:03 +0200 Subject: [PATCH 089/103] Update readme --- README.rst | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 88c8fa06..5c724258 100644 --- a/README.rst +++ b/README.rst @@ -10,8 +10,11 @@ PyGithub is stable. I will maintain it up to date with the API, and fix bugs if What's new? =========== -`Version 1.19.0 `_ (?? ??th, 2013) +`Version 1.19.0 `_ (September ??th, 2013) (AKFish's edition) +----------------------------------------------------------------------------------------------------------------------------------- +* Implement `conditional requests `_ by the method ``GithubObject.update``. Thank you very much `akfish `_ for the pull request and your collaboration! +* Implement persistence of PyGithub objects: ``Github.save`` and ``Github.load``. Don't forget to ``update`` your objects after loading them, it won't decrease your rate limiting quota if nothing has changed. Again, thank you `akfish `_ * Implement ``Github.get_repos`` to get all public repositories * Implement ``NamedUser.has_in_following`` * Technical change: HTTP headers are now stored in retrieved objects. This is a base for new functionalities. Thank you `akfish `_ for the pull request From 2e3ab5cc9295c4e3c3c6a0d1c179a49df0db96e5 Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Thu, 5 Sep 2013 18:04:49 +0200 Subject: [PATCH 090/103] Say thank you to stargazers --- README.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.rst b/README.rst index 88c8fa06..22fd4ef3 100644 --- a/README.rst +++ b/README.rst @@ -7,9 +7,15 @@ Should you have any question, any remark, or if you find a bug, or if there is s PyGithub is stable. I will maintain it up to date with the API, and fix bugs if any, but I don't plan new heavy developments. + What's new? =========== +Thank you, dear stargazers! +--------------------------- + +Starting today (September 05th, 2013), we now need more than 8 bits to store the number of `stargazers `_! Thank you so much! + `Version 1.19.0 `_ (?? ??th, 2013) * Implement ``Github.get_repos`` to get all public repositories From 1d0ba7ef6461ccdd25af74bfed61d3ceb5bc926d Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Thu, 5 Sep 2013 18:23:47 +0200 Subject: [PATCH 091/103] Don't assume there is a 'message' field in case of error --- github/Requester.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/github/Requester.py b/github/Requester.py index 27f871e5..bae74618 100644 --- a/github/Requester.py +++ b/github/Requester.py @@ -177,13 +177,13 @@ class Requester: return responseHeaders, output def __createException(self, status, output): - if status == 401 and output["message"] == "Bad credentials": + if status == 401 and output.get("message") == "Bad credentials": cls = GithubException.BadCredentialsException - elif status == 403 and output["message"].startswith("Missing or invalid User Agent string"): + elif status == 403 and output.get("message").startswith("Missing or invalid User Agent string"): cls = GithubException.BadUserAgentException - elif status == 403 and output["message"].startswith("API Rate Limit Exceeded"): + elif status == 403 and output.get("message").startswith("API Rate Limit Exceeded"): cls = GithubException.RateLimitExceededException - elif status == 404 and output["message"] == "Not Found": + elif status == 404 and output.get("message") == "Not Found": cls = GithubException.UnknownObjectException else: cls = GithubException.GithubException From dc610dfaac50dd5bbbd572986cda35f6729aee5b Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Fri, 6 Sep 2013 10:51:50 +0200 Subject: [PATCH 092/103] Small fixes and todos --- github/MainClass.py | 6 +++++- github/tests/Persistence.py | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/github/MainClass.py b/github/MainClass.py index 3efde171..676fa914 100644 --- a/github/MainClass.py +++ b/github/MainClass.py @@ -93,8 +93,12 @@ class Github(object): def __set_per_page(self, value): self.__requester.per_page = value + # v2: Remove this property? Why should it be necessary to read/modify it after construction per_page = property(__get_per_page, __set_per_page) + # v2: Provide a unified way to access values of headers of last response + # v2: (and add/keep ad hoc properties for specific useful headers like rate limiting, oauth scopes, etc.) + # v2: Return an instance of a class: using a tuple did not allow to add a field "resettime" @property def rate_limiting(self): """ @@ -325,7 +329,7 @@ class Github(object): def get_hooks(self): """ :calls: `GET /hooks `_ - :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.HookDescription.HookDescription` + :rtype: list of :class:`github.HookDescription.HookDescription` """ headers, data = self.__requester.requestJsonAndCheck( "GET", diff --git a/github/tests/Persistence.py b/github/tests/Persistence.py index c20f9a7c..300e9174 100644 --- a/github/tests/Persistence.py +++ b/github/tests/Persistence.py @@ -29,6 +29,7 @@ if Framework.atLeastPython26: else: from StringIO import StringIO as IO + class Persistence(Framework.TestCase): def setUp(self): Framework.TestCase.setUp(self) From 2081675afbfed404f6a580bce0ec363bebbfd98b Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Fri, 6 Sep 2013 11:00:59 +0200 Subject: [PATCH 093/103] Fix doc generation --- doc/conf.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/conf.py b/doc/conf.py index 63f326af..9f856df3 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -281,6 +281,7 @@ githubClasses = [ "../github/MainClass.py", "../github/PaginatedList.py", "../github/Requester.py", + "../github/Consts.py", "../github/__init__.py"] ] @@ -318,7 +319,7 @@ for githubClass in githubClasses + ["MainClass"]: if not isProperty: assert method is None, method + " has no :calls: section" method = line.split("(")[0][8:] - if method in ["_initAttributes", "_useAttributes", "__init__", "__create_pull_1", "__create_pull_2", "__create_pull", "_hub", "__get_FIX_REPO_GET_GIT_REF", "__set_FIX_REPO_GET_GIT_REF", "__get_per_page", "__set_per_page"]: + if method in ["_initAttributes", "_useAttributes", "__init__", "__create_pull_1", "__create_pull_2", "__create_pull", "_hub", "__get_FIX_REPO_GET_GIT_REF", "__set_FIX_REPO_GET_GIT_REF", "__get_per_page", "__set_per_page", "create_from_raw_data", "dump", "load"]: method = None isProperty = False if line.startswith(" :calls: `"): From f2feb81dae1b28af80c559db7328f2d6fe017911 Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Thu, 5 Sep 2013 18:56:56 +0200 Subject: [PATCH 094/103] Add default parameters to greatly reduce code redoundancy --- github/AuthenticatedUser.py | 118 +++++---------------- github/Authorization.py | 9 +- github/Commit.py | 8 +- github/CommitComment.py | 9 +- github/Download.py | 5 +- github/Gist.py | 38 ++----- github/GistComment.py | 9 +- github/GitRef.py | 9 +- github/GithubObject.py | 9 +- github/Hook.py | 14 +-- github/Issue.py | 31 ++---- github/IssueComment.py | 9 +- github/Label.py | 9 +- github/Legacy.py | 4 +- github/MainClass.py | 54 ++-------- github/Milestone.py | 9 +- github/NamedUser.py | 14 +-- github/Organization.py | 51 ++------- github/PaginatedList.py | 12 +-- github/PullRequest.py | 31 ++---- github/PullRequestComment.py | 9 +- github/Repository.py | 200 ++++++++--------------------------- github/RepositoryKey.py | 9 +- github/Requester.py | 8 +- github/Team.py | 39 ++----- github/UserKey.py | 9 +- 26 files changed, 160 insertions(+), 566 deletions(-) diff --git a/github/AuthenticatedUser.py b/github/AuthenticatedUser.py index d403893f..67a289c3 100644 --- a/github/AuthenticatedUser.py +++ b/github/AuthenticatedUser.py @@ -257,9 +257,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", "/user/emails", - None, - None, - post_parameters + input=post_parameters ) def add_to_following(self, following): @@ -271,10 +269,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): assert isinstance(following, github.NamedUser.NamedUser), following headers, data = self._requester.requestJsonAndCheck( "PUT", - "/user/following/" + following._identity, - None, - None, - None + "/user/following/" + following._identity ) def add_to_starred(self, starred): @@ -286,10 +281,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): assert isinstance(starred, github.Repository.Repository), starred headers, data = self._requester.requestJsonAndCheck( "PUT", - "/user/starred/" + starred._identity, - None, - None, - None + "/user/starred/" + starred._identity ) def add_to_subscriptions(self, subscription): @@ -301,10 +293,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): assert isinstance(subscription, github.Repository.Repository), subscription headers, data = self._requester.requestJsonAndCheck( "PUT", - "/user/subscriptions/" + subscription._identity, - None, - None, - None + "/user/subscriptions/" + subscription._identity ) def add_to_watched(self, watched): @@ -316,10 +305,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): assert isinstance(watched, github.Repository.Repository), watched headers, data = self._requester.requestJsonAndCheck( "PUT", - "/user/watched/" + watched._identity, - None, - None, - None + "/user/watched/" + watched._identity ) def create_authorization(self, scopes=github.GithubObject.NotSet, note=github.GithubObject.NotSet, note_url=github.GithubObject.NotSet, client_id=github.GithubObject.NotSet, client_secret=github.GithubObject.NotSet): @@ -351,9 +337,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", "/authorizations", - None, - None, - post_parameters + input=post_parameters ) return github.Authorization.Authorization(self._requester, headers, data, completed=True) @@ -366,10 +350,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): assert isinstance(repo, github.Repository.Repository), repo headers, data = self._requester.requestJsonAndCheck( "POST", - "/repos/" + repo.owner.login + "/" + repo.name + "/forks", - None, - None, - None + "/repos/" + repo.owner.login + "/" + repo.name + "/forks" ) return github.Repository.Repository(self._requester, headers, data, completed=True) @@ -393,9 +374,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", "/gists", - None, - None, - post_parameters + input=post_parameters ) return github.Gist.Gist(self._requester, headers, data, completed=True) @@ -415,9 +394,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", "/user/keys", - None, - None, - post_parameters + input=post_parameters ) return github.UserKey.UserKey(self._requester, headers, data, completed=True) @@ -466,9 +443,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", "/user/repos", - None, - None, - post_parameters + input=post_parameters ) return github.Repository.Repository(self._requester, headers, data, completed=True) @@ -509,9 +484,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "PATCH", "/user", - None, - None, - post_parameters + input=post_parameters ) self._useAttributes(data) @@ -524,10 +497,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): assert isinstance(id, (int, long)), id headers, data = self._requester.requestJsonAndCheck( "GET", - "/authorizations/" + str(id), - None, - None, - None + "/authorizations/" + str(id) ) return github.Authorization.Authorization(self._requester, headers, data, completed=True) @@ -550,10 +520,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): """ headers, data = self._requester.requestJsonAndCheck( "GET", - "/user/emails", - None, - None, - None + "/user/emails" ) return data @@ -690,10 +657,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): assert isinstance(id, (int, long)), id headers, data = self._requester.requestJsonAndCheck( "GET", - "/user/keys/" + str(id), - None, - None, - None + "/user/keys/" + str(id) ) return github.UserKey.UserKey(self._requester, headers, data, completed=True) @@ -718,10 +682,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): assert isinstance(id, (str, unicode)), id headers, data = self._requester.requestJsonAndCheck( "GET", - "/notifications/threads/" + id, - None, - None, - None + "/notifications/threads/" + id ) return github.Notification.Notification(self._requester, headers, data, completed=True) @@ -783,10 +744,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): assert isinstance(name, (str, unicode)), name headers, data = self._requester.requestJsonAndCheck( "GET", - "/repos/" + self.login + "/" + name, - None, - None, - None + "/repos/" + self.login + "/" + name ) return github.Repository.Repository(self._requester, headers, data, completed=True) @@ -872,10 +830,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): assert isinstance(following, github.NamedUser.NamedUser), following status, headers, data = self._requester.requestJson( "GET", - "/user/following/" + following._identity, - None, - None, - None + "/user/following/" + following._identity ) return status == 204 @@ -888,10 +843,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): assert isinstance(starred, github.Repository.Repository), starred status, headers, data = self._requester.requestJson( "GET", - "/user/starred/" + starred._identity, - None, - None, - None + "/user/starred/" + starred._identity ) return status == 204 @@ -904,10 +856,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): assert isinstance(subscription, github.Repository.Repository), subscription status, headers, data = self._requester.requestJson( "GET", - "/user/subscriptions/" + subscription._identity, - None, - None, - None + "/user/subscriptions/" + subscription._identity ) return status == 204 @@ -920,10 +869,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): assert isinstance(watched, github.Repository.Repository), watched status, headers, data = self._requester.requestJson( "GET", - "/user/watched/" + watched._identity, - None, - None, - None + "/user/watched/" + watched._identity ) return status == 204 @@ -938,9 +884,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "DELETE", "/user/emails", - None, - None, - post_parameters + input=post_parameters ) def remove_from_following(self, following): @@ -952,10 +896,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): assert isinstance(following, github.NamedUser.NamedUser), following headers, data = self._requester.requestJsonAndCheck( "DELETE", - "/user/following/" + following._identity, - None, - None, - None + "/user/following/" + following._identity ) def remove_from_starred(self, starred): @@ -967,10 +908,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): assert isinstance(starred, github.Repository.Repository), starred headers, data = self._requester.requestJsonAndCheck( "DELETE", - "/user/starred/" + starred._identity, - None, - None, - None + "/user/starred/" + starred._identity ) def remove_from_subscriptions(self, subscription): @@ -982,10 +920,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): assert isinstance(subscription, github.Repository.Repository), subscription headers, data = self._requester.requestJsonAndCheck( "DELETE", - "/user/subscriptions/" + subscription._identity, - None, - None, - None + "/user/subscriptions/" + subscription._identity ) def remove_from_watched(self, watched): @@ -997,10 +932,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): assert isinstance(watched, github.Repository.Repository), watched headers, data = self._requester.requestJsonAndCheck( "DELETE", - "/user/watched/" + watched._identity, - None, - None, - None + "/user/watched/" + watched._identity ) def _initAttributes(self): diff --git a/github/Authorization.py b/github/Authorization.py index f287a2b6..a004fedf 100644 --- a/github/Authorization.py +++ b/github/Authorization.py @@ -113,10 +113,7 @@ class Authorization(github.GithubObject.CompletableGithubObject): """ headers, data = self._requester.requestJsonAndCheck( "DELETE", - self.url, - None, - None, - None + self.url ) def edit(self, scopes=github.GithubObject.NotSet, add_scopes=github.GithubObject.NotSet, remove_scopes=github.GithubObject.NotSet, note=github.GithubObject.NotSet, note_url=github.GithubObject.NotSet): @@ -148,9 +145,7 @@ class Authorization(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "PATCH", self.url, - None, - None, - post_parameters + input=post_parameters ) self._useAttributes(data) diff --git a/github/Commit.py b/github/Commit.py index ad744e39..828da3fe 100644 --- a/github/Commit.py +++ b/github/Commit.py @@ -130,9 +130,7 @@ class Commit(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", self.url + "/comments", - None, - None, - post_parameters + input=post_parameters ) return github.CommitComment.CommitComment(self._requester, headers, data, completed=True) @@ -157,9 +155,7 @@ class Commit(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", self._parentUrl(self._parentUrl(self.url)) + "/statuses/" + self.sha, - None, - None, - post_parameters + input=post_parameters ) return github.CommitStatus.CommitStatus(self._requester, headers, data, completed=True) diff --git a/github/CommitComment.py b/github/CommitComment.py index 061737bf..c2c897d1 100644 --- a/github/CommitComment.py +++ b/github/CommitComment.py @@ -129,10 +129,7 @@ class CommitComment(github.GithubObject.CompletableGithubObject): """ headers, data = self._requester.requestJsonAndCheck( "DELETE", - self.url, - None, - None, - None + self.url ) def edit(self, body): @@ -148,9 +145,7 @@ class CommitComment(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "PATCH", self.url, - None, - None, - post_parameters + input=post_parameters ) self._useAttributes(data) diff --git a/github/Download.py b/github/Download.py index a4b3b656..2cd057ca 100644 --- a/github/Download.py +++ b/github/Download.py @@ -199,10 +199,7 @@ class Download(github.GithubObject.CompletableGithubObject): """ headers, data = self._requester.requestJsonAndCheck( "DELETE", - self.url, - None, - None, - None + self.url ) def _initAttributes(self): diff --git a/github/Gist.py b/github/Gist.py index de4ded9e..65de668e 100644 --- a/github/Gist.py +++ b/github/Gist.py @@ -172,9 +172,7 @@ class Gist(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", self.url + "/comments", - None, - None, - post_parameters + input=post_parameters ) return github.GistComment.GistComment(self._requester, headers, data, completed=True) @@ -185,10 +183,7 @@ class Gist(github.GithubObject.CompletableGithubObject): """ headers, data = self._requester.requestJsonAndCheck( "POST", - self.url + "/forks", - None, - None, - None + self.url + "/forks" ) return Gist(self._requester, headers, data, completed=True) @@ -199,10 +194,7 @@ class Gist(github.GithubObject.CompletableGithubObject): """ headers, data = self._requester.requestJsonAndCheck( "DELETE", - self.url, - None, - None, - None + self.url ) def edit(self, description=github.GithubObject.NotSet, files=github.GithubObject.NotSet): @@ -222,9 +214,7 @@ class Gist(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "PATCH", self.url, - None, - None, - post_parameters + input=post_parameters ) self._useAttributes(data) @@ -237,10 +227,7 @@ class Gist(github.GithubObject.CompletableGithubObject): assert isinstance(id, (int, long)), id headers, data = self._requester.requestJsonAndCheck( "GET", - self.url + "/comments/" + str(id), - None, - None, - None + self.url + "/comments/" + str(id) ) return github.GistComment.GistComment(self._requester, headers, data, completed=True) @@ -263,10 +250,7 @@ class Gist(github.GithubObject.CompletableGithubObject): """ status, headers, data = self._requester.requestJson( "GET", - self.url + "/star", - None, - None, - None + self.url + "/star" ) return status == 204 @@ -277,10 +261,7 @@ class Gist(github.GithubObject.CompletableGithubObject): """ headers, data = self._requester.requestJsonAndCheck( "DELETE", - self.url + "/star", - None, - None, - None + self.url + "/star" ) def set_starred(self): @@ -290,10 +271,7 @@ class Gist(github.GithubObject.CompletableGithubObject): """ headers, data = self._requester.requestJsonAndCheck( "PUT", - self.url + "/star", - None, - None, - None + self.url + "/star" ) def _initAttributes(self): diff --git a/github/GistComment.py b/github/GistComment.py index f0b5c80c..5ee0664c 100644 --- a/github/GistComment.py +++ b/github/GistComment.py @@ -89,10 +89,7 @@ class GistComment(github.GithubObject.CompletableGithubObject): """ headers, data = self._requester.requestJsonAndCheck( "DELETE", - self.url, - None, - None, - None + self.url ) def edit(self, body): @@ -108,9 +105,7 @@ class GistComment(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "PATCH", self.url, - None, - None, - post_parameters + input=post_parameters ) self._useAttributes(data) diff --git a/github/GitRef.py b/github/GitRef.py index 84ec00c5..97a2ca4d 100644 --- a/github/GitRef.py +++ b/github/GitRef.py @@ -65,10 +65,7 @@ class GitRef(github.GithubObject.CompletableGithubObject): """ headers, data = self._requester.requestJsonAndCheck( "DELETE", - self.url, - None, - None, - None + self.url ) def edit(self, sha, force=github.GithubObject.NotSet): @@ -88,9 +85,7 @@ class GitRef(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "PATCH", self.url, - None, - None, - post_parameters + input=post_parameters ) self._useAttributes(data) diff --git a/github/GithubObject.py b/github/GithubObject.py index c2ae7f6d..91c079b7 100644 --- a/github/GithubObject.py +++ b/github/GithubObject.py @@ -141,10 +141,7 @@ class CompletableGithubObject(GithubObject): def __complete(self): headers, data = self._requester.requestJsonAndCheck( "GET", - self._url, - None, - None, - None + self._url ) self._storeAndUseAttributes(headers, data) self.__completed = True @@ -163,9 +160,7 @@ class CompletableGithubObject(GithubObject): status, responseHeaders, output = self._requester.requestJson( "GET", self._url, - None, - conditionalRequestHeader, - None + headers=conditionalRequestHeader ) if status == 304: return False diff --git a/github/Hook.py b/github/Hook.py index ea0be67b..447a0e9a 100644 --- a/github/Hook.py +++ b/github/Hook.py @@ -113,10 +113,7 @@ class Hook(github.GithubObject.CompletableGithubObject): """ headers, data = self._requester.requestJsonAndCheck( "DELETE", - self.url, - None, - None, - None + self.url ) def edit(self, name, config, events=github.GithubObject.NotSet, add_events=github.GithubObject.NotSet, remove_events=github.GithubObject.NotSet, active=github.GithubObject.NotSet): @@ -151,9 +148,7 @@ class Hook(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "PATCH", self.url, - None, - None, - post_parameters + input=post_parameters ) self._useAttributes(data) @@ -164,10 +159,7 @@ class Hook(github.GithubObject.CompletableGithubObject): """ headers, data = self._requester.requestJsonAndCheck( "POST", - self.url + "/tests", - None, - None, - None + self.url + "/tests" ) def _initAttributes(self): diff --git a/github/Issue.py b/github/Issue.py index 260967d3..b849e8d4 100644 --- a/github/Issue.py +++ b/github/Issue.py @@ -203,9 +203,7 @@ class Issue(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", self.url + "/labels", - None, - None, - post_parameters + input=post_parameters ) def create_comment(self, body): @@ -221,9 +219,7 @@ class Issue(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", self.url + "/comments", - None, - None, - post_parameters + input=post_parameters ) return github.IssueComment.IssueComment(self._requester, headers, data, completed=True) @@ -234,10 +230,7 @@ class Issue(github.GithubObject.CompletableGithubObject): """ headers, data = self._requester.requestJsonAndCheck( "DELETE", - self.url + "/labels", - None, - None, - None + self.url + "/labels" ) def edit(self, title=github.GithubObject.NotSet, body=github.GithubObject.NotSet, assignee=github.GithubObject.NotSet, state=github.GithubObject.NotSet, milestone=github.GithubObject.NotSet, labels=github.GithubObject.NotSet): @@ -273,9 +266,7 @@ class Issue(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "PATCH", self.url, - None, - None, - post_parameters + input=post_parameters ) self._useAttributes(data) @@ -288,10 +279,7 @@ class Issue(github.GithubObject.CompletableGithubObject): assert isinstance(id, (int, long)), id headers, data = self._requester.requestJsonAndCheck( "GET", - self._parentUrl(self.url) + "/comments/" + str(id), - None, - None, - None + self._parentUrl(self.url) + "/comments/" + str(id) ) return github.IssueComment.IssueComment(self._requester, headers, data, completed=True) @@ -340,10 +328,7 @@ class Issue(github.GithubObject.CompletableGithubObject): assert isinstance(label, github.Label.Label), label headers, data = self._requester.requestJsonAndCheck( "DELETE", - self.url + "/labels/" + label._identity, - None, - None, - None + self.url + "/labels/" + label._identity ) def set_labels(self, *labels): @@ -357,9 +342,7 @@ class Issue(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "PUT", self.url + "/labels", - None, - None, - post_parameters + input=post_parameters ) @property diff --git a/github/IssueComment.py b/github/IssueComment.py index c1af97f8..149a6f6f 100644 --- a/github/IssueComment.py +++ b/github/IssueComment.py @@ -98,10 +98,7 @@ class IssueComment(github.GithubObject.CompletableGithubObject): """ headers, data = self._requester.requestJsonAndCheck( "DELETE", - self.url, - None, - None, - None + self.url ) def edit(self, body): @@ -117,9 +114,7 @@ class IssueComment(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "PATCH", self.url, - None, - None, - post_parameters + input=post_parameters ) self._useAttributes(data) diff --git a/github/Label.py b/github/Label.py index b961af18..813cd5f0 100644 --- a/github/Label.py +++ b/github/Label.py @@ -66,10 +66,7 @@ class Label(github.GithubObject.CompletableGithubObject): """ headers, data = self._requester.requestJsonAndCheck( "DELETE", - self.url, - None, - None, - None + self.url ) def edit(self, name, color): @@ -88,9 +85,7 @@ class Label(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "PATCH", self.url, - None, - None, - post_parameters + input=post_parameters ) self._useAttributes(data) diff --git a/github/Legacy.py b/github/Legacy.py index a0e3493f..cfe48d67 100644 --- a/github/Legacy.py +++ b/github/Legacy.py @@ -58,9 +58,7 @@ class PaginatedList(github.PaginatedList.PaginatedListBase): headers, data = self.__requester.requestJsonAndCheck( "GET", self.__url, - args, - None, - None + parameters=args ) self.__continue = len(data[self.__key]) > 0 diff --git a/github/MainClass.py b/github/MainClass.py index 676fa914..2b1e298d 100644 --- a/github/MainClass.py +++ b/github/MainClass.py @@ -109,10 +109,7 @@ class Github(object): if limit < 0: self.__requester.requestJsonAndCheck( 'GET', - '/rate_limit', - None, - None, - None + '/rate_limit' ) return self.__requester.rate_limiting @@ -125,10 +122,7 @@ class Github(object): if self.__requester.rate_limiting_resettime == 0: self.__requester.requestJsonAndCheck( 'GET', - '/rate_limit', - None, - None, - None + '/rate_limit' ) return self.__requester.rate_limiting_resettime @@ -151,10 +145,7 @@ class Github(object): else: headers, data = self.__requester.requestJsonAndCheck( "GET", - "/users/" + login, - None, - None, - None + "/users/" + login ) return github.NamedUser.NamedUser(self.__requester, headers, data, completed=True) @@ -184,10 +175,7 @@ class Github(object): assert isinstance(login, (str, unicode)), login headers, data = self.__requester.requestJsonAndCheck( "GET", - "/orgs/" + login, - None, - None, - None + "/orgs/" + login ) return github.Organization.Organization(self.__requester, headers, data, completed=True) @@ -199,10 +187,7 @@ class Github(object): assert isinstance(full_name, (str, unicode)), full_name headers, data = self.__requester.requestJsonAndCheck( "GET", - "/repos/" + full_name, - None, - None, - None + "/repos/" + full_name ) return Repository.Repository(self.__requester, headers, data, completed=True) @@ -232,10 +217,7 @@ class Github(object): assert isinstance(id, (str, unicode)), id headers, data = self.__requester.requestJsonAndCheck( "GET", - "/gists/" + id, - None, - None, - None + "/gists/" + id ) return github.Gist.Gist(self.__requester, headers, data, completed=True) @@ -295,10 +277,7 @@ class Github(object): assert isinstance(email, (str, unicode)), email headers, data = self.__requester.requestJsonAndCheck( "GET", - "/legacy/user/email/" + email, - None, - None, - None + "/legacy/user/email/" + email ) return github.NamedUser.NamedUser(self.__requester, headers, Legacy.convertUser(data["user"]), completed=False) @@ -320,9 +299,7 @@ class Github(object): status, headers, data = self.__requester.requestJson( "POST", "/markdown", - None, - None, - post_parameters + input=post_parameters ) return data @@ -333,10 +310,7 @@ class Github(object): """ headers, data = self.__requester.requestJsonAndCheck( "GET", - "/hooks", - None, - None, - None + "/hooks" ) return [HookDescription.HookDescription(self.__requester, headers, attributes, completed=True) for attributes in data] @@ -347,10 +321,7 @@ class Github(object): """ headers, data = self.__requester.requestJsonAndCheck( "GET", - "/gitignore/templates", - None, - None, - None + "/gitignore/templates" ) return data @@ -362,10 +333,7 @@ class Github(object): assert isinstance(name, (str, unicode)), name headers, attributes = self.__requester.requestJsonAndCheck( "GET", - "/gitignore/templates/" + name, - None, - None, - None + "/gitignore/templates/" + name ) return GitignoreTemplate.GitignoreTemplate(self.__requester, headers, attributes, completed=True) diff --git a/github/Milestone.py b/github/Milestone.py index 0f23eb78..c07ec389 100644 --- a/github/Milestone.py +++ b/github/Milestone.py @@ -134,10 +134,7 @@ class Milestone(github.GithubObject.CompletableGithubObject): """ headers, data = self._requester.requestJsonAndCheck( "DELETE", - self.url, - None, - None, - None + self.url ) def edit(self, title, state=github.GithubObject.NotSet, description=github.GithubObject.NotSet, due_on=github.GithubObject.NotSet): @@ -165,9 +162,7 @@ class Milestone(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "PATCH", self.url, - None, - None, - post_parameters + input=post_parameters ) self._useAttributes(data) diff --git a/github/NamedUser.py b/github/NamedUser.py index 435b1bf2..ec9bfbed 100644 --- a/github/NamedUser.py +++ b/github/NamedUser.py @@ -269,9 +269,7 @@ class NamedUser(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", self.url + "/gists", - None, - None, - post_parameters + input=post_parameters ) return github.Gist.Gist(self._requester, headers, data, completed=True) @@ -392,10 +390,7 @@ class NamedUser(github.GithubObject.CompletableGithubObject): assert isinstance(name, (str, unicode)), name headers, data = self._requester.requestJsonAndCheck( "GET", - "/repos/" + self.login + "/" + name, - None, - None, - None + "/repos/" + self.login + "/" + name ) return github.Repository.Repository(self._requester, headers, data, completed=True) @@ -461,10 +456,7 @@ class NamedUser(github.GithubObject.CompletableGithubObject): assert isinstance(following, github.NamedUser.NamedUser), following status, headers, data = self._requester.requestJson( "GET", - self.url + "/following/" + following._identity, - None, - None, - None + self.url + "/following/" + following._identity ) return status == 204 diff --git a/github/Organization.py b/github/Organization.py index aa904fce..68245f3e 100644 --- a/github/Organization.py +++ b/github/Organization.py @@ -244,10 +244,7 @@ class Organization(github.GithubObject.CompletableGithubObject): assert isinstance(public_member, github.NamedUser.NamedUser), public_member headers, data = self._requester.requestJsonAndCheck( "PUT", - self.url + "/public_members/" + public_member._identity, - None, - None, - None + self.url + "/public_members/" + public_member._identity ) def create_fork(self, repo): @@ -263,9 +260,7 @@ class Organization(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", "/repos/" + repo.owner.login + "/" + repo.name + "/forks", - url_parameters, - None, - None + parameters=url_parameters ) return github.Repository.Repository(self._requester, headers, data, completed=True) @@ -318,9 +313,7 @@ class Organization(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", self.url + "/repos", - None, - None, - post_parameters + input=post_parameters ) return github.Repository.Repository(self._requester, headers, data, completed=True) @@ -345,9 +338,7 @@ class Organization(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", self.url + "/teams", - None, - None, - post_parameters + input=post_parameters ) return github.Team.Team(self._requester, headers, data, completed=True) @@ -384,9 +375,7 @@ class Organization(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "PATCH", self.url, - None, - None, - post_parameters + input=post_parameters ) self._useAttributes(data) @@ -473,10 +462,7 @@ class Organization(github.GithubObject.CompletableGithubObject): assert isinstance(name, (str, unicode)), name headers, data = self._requester.requestJsonAndCheck( "GET", - "/repos/" + self.login + "/" + name, - None, - None, - None + "/repos/" + self.login + "/" + name ) return github.Repository.Repository(self._requester, headers, data, completed=True) @@ -506,10 +492,7 @@ class Organization(github.GithubObject.CompletableGithubObject): assert isinstance(id, (int, long)), id headers, data = self._requester.requestJsonAndCheck( "GET", - "/teams/" + str(id), - None, - None, - None + "/teams/" + str(id) ) return github.Team.Team(self._requester, headers, data, completed=True) @@ -534,10 +517,7 @@ class Organization(github.GithubObject.CompletableGithubObject): assert isinstance(member, github.NamedUser.NamedUser), member status, headers, data = self._requester.requestJson( "GET", - self.url + "/members/" + member._identity, - None, - None, - None + self.url + "/members/" + member._identity ) return status == 204 @@ -550,10 +530,7 @@ class Organization(github.GithubObject.CompletableGithubObject): assert isinstance(public_member, github.NamedUser.NamedUser), public_member status, headers, data = self._requester.requestJson( "GET", - self.url + "/public_members/" + public_member._identity, - None, - None, - None + self.url + "/public_members/" + public_member._identity ) return status == 204 @@ -566,10 +543,7 @@ class Organization(github.GithubObject.CompletableGithubObject): assert isinstance(member, github.NamedUser.NamedUser), member headers, data = self._requester.requestJsonAndCheck( "DELETE", - self.url + "/members/" + member._identity, - None, - None, - None + self.url + "/members/" + member._identity ) def remove_from_public_members(self, public_member): @@ -581,10 +555,7 @@ class Organization(github.GithubObject.CompletableGithubObject): assert isinstance(public_member, github.NamedUser.NamedUser), public_member headers, data = self._requester.requestJsonAndCheck( "DELETE", - self.url + "/public_members/" + public_member._identity, - None, - None, - None + self.url + "/public_members/" + public_member._identity ) def _initAttributes(self): diff --git a/github/PaginatedList.py b/github/PaginatedList.py index 45b2546d..4c22b991 100644 --- a/github/PaginatedList.py +++ b/github/PaginatedList.py @@ -122,9 +122,7 @@ class PaginatedList(PaginatedListBase): headers, data = self.__requester.requestJsonAndCheck( "GET", self.__firstUrl, - self.__nextParams, - None, - None + parameters=self.__nextParams ) links = self.__parseLinkHeader(headers) lastUrl = links.get("last") @@ -149,9 +147,7 @@ class PaginatedList(PaginatedListBase): headers, data = self.__requester.requestJsonAndCheck( "GET", self.__nextUrl, - self.__nextParams, - None, - None + parameters=self.__nextParams ) self.__nextUrl = None @@ -192,9 +188,7 @@ class PaginatedList(PaginatedListBase): headers, data = self.__requester.requestJsonAndCheck( "GET", self.__firstUrl, - params, - None, - None + parameters=params ) return [ diff --git a/github/PullRequest.py b/github/PullRequest.py index 2b9b022b..85867c60 100644 --- a/github/PullRequest.py +++ b/github/PullRequest.py @@ -292,9 +292,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", self.url + "/comments", - None, - None, - post_parameters + input=post_parameters ) return github.PullRequestComment.PullRequestComment(self._requester, headers, data, completed=True) @@ -311,9 +309,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", self._parentUrl(self._parentUrl(self.url)) + "/issues/" + str(self.number) + "/comments", - None, - None, - post_parameters + input=post_parameters ) return github.IssueComment.IssueComment(self._requester, headers, data, completed=True) @@ -338,9 +334,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "PATCH", self.url, - None, - None, - post_parameters + input=post_parameters ) self._useAttributes(data) @@ -361,10 +355,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject): assert isinstance(id, (int, long)), id headers, data = self._requester.requestJsonAndCheck( "GET", - self._parentUrl(self.url) + "/comments/" + str(id), - None, - None, - None + self._parentUrl(self.url) + "/comments/" + str(id) ) return github.PullRequestComment.PullRequestComment(self._requester, headers, data, completed=True) @@ -420,10 +411,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject): assert isinstance(id, (int, long)), id headers, data = self._requester.requestJsonAndCheck( "GET", - self._parentUrl(self._parentUrl(self.url)) + "/issues/comments/" + str(id), - None, - None, - None + self._parentUrl(self._parentUrl(self.url)) + "/issues/comments/" + str(id) ) return github.IssueComment.IssueComment(self._requester, headers, data, completed=True) @@ -446,10 +434,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject): """ status, headers, data = self._requester.requestJson( "GET", - self.url + "/merge", - None, - None, - None + self.url + "/merge" ) return status == 204 @@ -466,9 +451,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "PUT", self.url + "/merge", - None, - None, - post_parameters + input=post_parameters ) return github.PullRequestMergeStatus.PullRequestMergeStatus(self._requester, headers, data, completed=True) diff --git a/github/PullRequestComment.py b/github/PullRequestComment.py index 4d250d56..1e96426e 100644 --- a/github/PullRequestComment.py +++ b/github/PullRequestComment.py @@ -139,10 +139,7 @@ class PullRequestComment(github.GithubObject.CompletableGithubObject): """ headers, data = self._requester.requestJsonAndCheck( "DELETE", - self.url, - None, - None, - None + self.url ) def edit(self, body): @@ -158,9 +155,7 @@ class PullRequestComment(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "PATCH", self.url, - None, - None, - post_parameters + input=post_parameters ) self._useAttributes(data) diff --git a/github/Repository.py b/github/Repository.py index 9a62e13d..7eb3d235 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -317,10 +317,7 @@ class Repository(github.GithubObject.CompletableGithubObject): assert isinstance(collaborator, github.NamedUser.NamedUser), collaborator headers, data = self._requester.requestJsonAndCheck( "PUT", - self.url + "/collaborators/" + collaborator._identity, - None, - None, - None + self.url + "/collaborators/" + collaborator._identity ) def compare(self, base, head): @@ -334,10 +331,7 @@ class Repository(github.GithubObject.CompletableGithubObject): assert isinstance(head, (str, unicode)), head headers, data = self._requester.requestJsonAndCheck( "GET", - self.url + "/compare/" + base + "..." + head, - None, - None, - None + self.url + "/compare/" + base + "..." + head ) return github.Comparison.Comparison(self._requester, headers, data, completed=True) @@ -365,9 +359,7 @@ class Repository(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", self.url + "/downloads", - None, - None, - post_parameters + input=post_parameters ) return github.Download.Download(self._requester, headers, data, completed=True) @@ -387,9 +379,7 @@ class Repository(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", self.url + "/git/blobs", - None, - None, - post_parameters + input=post_parameters ) return github.GitBlob.GitBlob(self._requester, headers, data, completed=True) @@ -420,9 +410,7 @@ class Repository(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", self.url + "/git/commits", - None, - None, - post_parameters + input=post_parameters ) return github.GitCommit.GitCommit(self._requester, headers, data, completed=True) @@ -442,9 +430,7 @@ class Repository(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", self.url + "/git/refs", - None, - None, - post_parameters + input=post_parameters ) return github.GitRef.GitRef(self._requester, headers, data, completed=True) @@ -474,9 +460,7 @@ class Repository(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", self.url + "/git/tags", - None, - None, - post_parameters + input=post_parameters ) return github.GitTag.GitTag(self._requester, headers, data, completed=True) @@ -497,9 +481,7 @@ class Repository(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", self.url + "/git/trees", - None, - None, - post_parameters + input=post_parameters ) return github.GitTree.GitTree(self._requester, headers, data, completed=True) @@ -527,9 +509,7 @@ class Repository(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", self.url + "/hooks", - None, - None, - post_parameters + input=post_parameters ) return github.Hook.Hook(self._requester, headers, data, completed=True) @@ -562,9 +542,7 @@ class Repository(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", self.url + "/issues", - None, - None, - post_parameters + input=post_parameters ) return github.Issue.Issue(self._requester, headers, data, completed=True) @@ -584,9 +562,7 @@ class Repository(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", self.url + "/keys", - None, - None, - post_parameters + input=post_parameters ) return github.RepositoryKey.RepositoryKey(self._requester, headers, data, completed=True, repoUrl=self._url) @@ -606,9 +582,7 @@ class Repository(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", self.url + "/labels", - None, - None, - post_parameters + input=post_parameters ) return github.Label.Label(self._requester, headers, data, completed=True) @@ -637,9 +611,7 @@ class Repository(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", self.url + "/milestones", - None, - None, - post_parameters + input=post_parameters ) return github.Milestone.Milestone(self._requester, headers, data, completed=True) @@ -676,9 +648,7 @@ class Repository(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", self.url + "/pulls", - None, - None, - post_parameters + input=post_parameters ) return github.PullRequest.PullRequest(self._requester, headers, data, completed=True) @@ -689,10 +659,7 @@ class Repository(github.GithubObject.CompletableGithubObject): """ headers, data = self._requester.requestJsonAndCheck( "DELETE", - self.url, - None, - None, - None + self.url ) def edit(self, name, description=github.GithubObject.NotSet, homepage=github.GithubObject.NotSet, public=github.GithubObject.NotSet, has_issues=github.GithubObject.NotSet, has_wiki=github.GithubObject.NotSet, has_downloads=github.GithubObject.NotSet, default_branch=github.GithubObject.NotSet): @@ -736,9 +703,7 @@ class Repository(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "PATCH", self.url, - None, - None, - post_parameters + input=post_parameters ) self._useAttributes(data) @@ -756,10 +721,7 @@ class Repository(github.GithubObject.CompletableGithubObject): url += "/" + ref headers, data = self._requester.requestJsonAndCheck( "GET", - url, - None, - None, - None + url ) return headers["location"] @@ -784,10 +746,7 @@ class Repository(github.GithubObject.CompletableGithubObject): assert isinstance(branch, (str, unicode)), branch headers, data = self._requester.requestJsonAndCheck( "GET", - self.url + "/branches/" + branch, - None, - None, - None + self.url + "/branches/" + branch ) return github.Branch.Branch(self._requester, headers, data, completed=True) @@ -824,10 +783,7 @@ class Repository(github.GithubObject.CompletableGithubObject): assert isinstance(id, (int, long)), id headers, data = self._requester.requestJsonAndCheck( "GET", - self.url + "/comments/" + str(id), - None, - None, - None + self.url + "/comments/" + str(id) ) return github.CommitComment.CommitComment(self._requester, headers, data, completed=True) @@ -852,10 +808,7 @@ class Repository(github.GithubObject.CompletableGithubObject): assert isinstance(sha, (str, unicode)), sha headers, data = self._requester.requestJsonAndCheck( "GET", - self.url + "/commits/" + sha, - None, - None, - None + self.url + "/commits/" + sha ) return github.Commit.Commit(self._requester, headers, data, completed=True) @@ -912,9 +865,7 @@ class Repository(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "GET", self.url + "/contents" + path, - url_parameters, - None, - None + parameters=url_parameters ) return github.ContentFile.ContentFile(self._requester, headers, data, completed=True) @@ -933,9 +884,7 @@ class Repository(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "GET", self.url + "/contents" + path, - url_parameters, - None, - None + parameters=url_parameters ) # Handle 302 redirect response @@ -943,9 +892,7 @@ class Repository(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "GET", headers['location'], - url_parameters, - None, - None + parameters=url_parameters ) return [ @@ -974,10 +921,7 @@ class Repository(github.GithubObject.CompletableGithubObject): assert isinstance(id, (int, long)), id headers, data = self._requester.requestJsonAndCheck( "GET", - self.url + "/downloads/" + str(id), - None, - None, - None + self.url + "/downloads/" + str(id) ) return github.Download.Download(self._requester, headers, data, completed=True) @@ -1026,10 +970,7 @@ class Repository(github.GithubObject.CompletableGithubObject): assert isinstance(sha, (str, unicode)), sha headers, data = self._requester.requestJsonAndCheck( "GET", - self.url + "/git/blobs/" + sha, - None, - None, - None + self.url + "/git/blobs/" + sha ) return github.GitBlob.GitBlob(self._requester, headers, data, completed=True) @@ -1042,10 +983,7 @@ class Repository(github.GithubObject.CompletableGithubObject): assert isinstance(sha, (str, unicode)), sha headers, data = self._requester.requestJsonAndCheck( "GET", - self.url + "/git/commits/" + sha, - None, - None, - None + self.url + "/git/commits/" + sha ) return github.GitCommit.GitCommit(self._requester, headers, data, completed=True) @@ -1061,10 +999,7 @@ class Repository(github.GithubObject.CompletableGithubObject): assert isinstance(ref, (str, unicode)), ref headers, data = self._requester.requestJsonAndCheck( "GET", - self.url + prefix + ref, - None, - None, - None + self.url + prefix + ref ) return github.GitRef.GitRef(self._requester, headers, data, completed=True) @@ -1089,10 +1024,7 @@ class Repository(github.GithubObject.CompletableGithubObject): assert isinstance(sha, (str, unicode)), sha headers, data = self._requester.requestJsonAndCheck( "GET", - self.url + "/git/tags/" + sha, - None, - None, - None + self.url + "/git/tags/" + sha ) return github.GitTag.GitTag(self._requester, headers, data, completed=True) @@ -1111,9 +1043,7 @@ class Repository(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "GET", self.url + "/git/trees/" + sha, - url_parameters, - None, - None + parameters=url_parameters ) return github.GitTree.GitTree(self._requester, headers, data, completed=True) @@ -1126,10 +1056,7 @@ class Repository(github.GithubObject.CompletableGithubObject): assert isinstance(id, (int, long)), id headers, data = self._requester.requestJsonAndCheck( "GET", - self.url + "/hooks/" + str(id), - None, - None, - None + self.url + "/hooks/" + str(id) ) return github.Hook.Hook(self._requester, headers, data, completed=True) @@ -1154,10 +1081,7 @@ class Repository(github.GithubObject.CompletableGithubObject): assert isinstance(number, (int, long)), number headers, data = self._requester.requestJsonAndCheck( "GET", - self.url + "/issues/" + str(number), - None, - None, - None + self.url + "/issues/" + str(number) ) return github.Issue.Issue(self._requester, headers, data, completed=True) @@ -1246,10 +1170,7 @@ class Repository(github.GithubObject.CompletableGithubObject): assert isinstance(id, (int, long)), id headers, data = self._requester.requestJsonAndCheck( "GET", - self.url + "/issues/events/" + str(id), - None, - None, - None + self.url + "/issues/events/" + str(id) ) return github.IssueEvent.IssueEvent(self._requester, headers, data, completed=True) @@ -1274,10 +1195,7 @@ class Repository(github.GithubObject.CompletableGithubObject): assert isinstance(id, (int, long)), id headers, data = self._requester.requestJsonAndCheck( "GET", - self.url + "/keys/" + str(id), - None, - None, - None + self.url + "/keys/" + str(id) ) return github.RepositoryKey.RepositoryKey(self._requester, headers, data, completed=True, repoUrl=self._url) @@ -1302,10 +1220,7 @@ class Repository(github.GithubObject.CompletableGithubObject): assert isinstance(name, (str, unicode)), name headers, data = self._requester.requestJsonAndCheck( "GET", - self.url + "/labels/" + urllib.quote(name), - None, - None, - None + self.url + "/labels/" + urllib.quote(name) ) return github.Label.Label(self._requester, headers, data, completed=True) @@ -1328,10 +1243,7 @@ class Repository(github.GithubObject.CompletableGithubObject): """ headers, data = self._requester.requestJsonAndCheck( "GET", - self.url + "/languages", - None, - None, - None + self.url + "/languages" ) return data @@ -1344,10 +1256,7 @@ class Repository(github.GithubObject.CompletableGithubObject): assert isinstance(number, (int, long)), number headers, data = self._requester.requestJsonAndCheck( "GET", - self.url + "/milestones/" + str(number), - None, - None, - None + self.url + "/milestones/" + str(number) ) return github.Milestone.Milestone(self._requester, headers, data, completed=True) @@ -1397,10 +1306,7 @@ class Repository(github.GithubObject.CompletableGithubObject): assert isinstance(number, (int, long)), number headers, data = self._requester.requestJsonAndCheck( "GET", - self.url + "/pulls/" + str(number), - None, - None, - None + self.url + "/pulls/" + str(number) ) return github.PullRequest.PullRequest(self._requester, headers, data, completed=True) @@ -1469,9 +1375,7 @@ class Repository(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "GET", self.url + "/readme", - url_parameters, - None, - None + parameters=url_parameters ) return github.ContentFile.ContentFile(self._requester, headers, data, completed=True) @@ -1544,10 +1448,7 @@ class Repository(github.GithubObject.CompletableGithubObject): assert isinstance(assignee, github.NamedUser.NamedUser), assignee status, headers, data = self._requester.requestJson( "GET", - self.url + "/assignees/" + assignee._identity, - None, - None, - None + self.url + "/assignees/" + assignee._identity ) return status == 204 @@ -1560,10 +1461,7 @@ class Repository(github.GithubObject.CompletableGithubObject): assert isinstance(collaborator, github.NamedUser.NamedUser), collaborator status, headers, data = self._requester.requestJson( "GET", - self.url + "/collaborators/" + collaborator._identity, - None, - None, - None + self.url + "/collaborators/" + collaborator._identity ) return status == 204 @@ -1578,10 +1476,7 @@ class Repository(github.GithubObject.CompletableGithubObject): assert isinstance(keyword, (str, unicode)), keyword headers, data = self._requester.requestJsonAndCheck( "GET", - "/legacy/issues/search/" + self.owner.login + "/" + self.name + "/" + state + "/" + urllib.quote(keyword), - None, - None, - None + "/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) @@ -1608,9 +1503,7 @@ class Repository(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "POST", self.url + "/merges", - None, - None, - post_parameters + input=post_parameters ) if data is None: return None @@ -1626,10 +1519,7 @@ class Repository(github.GithubObject.CompletableGithubObject): assert isinstance(collaborator, github.NamedUser.NamedUser), collaborator headers, data = self._requester.requestJsonAndCheck( "DELETE", - self.url + "/collaborators/" + collaborator._identity, - None, - None, - None + self.url + "/collaborators/" + collaborator._identity ) def subscribe_to_hub(self, event, callback, secret=github.GithubObject.NotSet): @@ -1669,9 +1559,7 @@ class Repository(github.GithubObject.CompletableGithubObject): responseHeaders, output = self._requester.requestMultipartAndCheck( "POST", "/hub", - None, - None, - post_parameters, + input=post_parameters ) @property diff --git a/github/RepositoryKey.py b/github/RepositoryKey.py index 22b59621..69e1c616 100644 --- a/github/RepositoryKey.py +++ b/github/RepositoryKey.py @@ -89,10 +89,7 @@ class RepositoryKey(github.GithubObject.CompletableGithubObject): """ headers, data = self._requester.requestJsonAndCheck( "DELETE", - self.__customUrl, - None, - None, - None + self.__customUrl ) def edit(self, title=github.GithubObject.NotSet, key=github.GithubObject.NotSet): @@ -112,9 +109,7 @@ class RepositoryKey(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "PATCH", self.__customUrl, - None, - None, - post_parameters + input=post_parameters ) self._useAttributes(data) diff --git a/github/Requester.py b/github/Requester.py index bae74618..670d66b6 100644 --- a/github/Requester.py +++ b/github/Requester.py @@ -164,10 +164,10 @@ class Requester: 'See http://developer.github.com/v3/#user-agent-required' self.__userAgent = user_agent - def requestJsonAndCheck(self, verb, url, parameters, headers, input): + def requestJsonAndCheck(self, verb, url, parameters=None, headers=None, input=None): return self.__check(*self.requestJson(verb, url, parameters, headers, input)) - def requestMultipartAndCheck(self, verb, url, parameters, headers, input): + def requestMultipartAndCheck(self, verb, url, parameters=None, headers=None, input=None): return self.__check(*self.requestMultipart(verb, url, parameters, headers, input)) def __check(self, status, responseHeaders, output): @@ -200,13 +200,13 @@ class Requester: except ValueError, e: return {'data': data} - def requestJson(self, verb, url, parameters, headers, input): + def requestJson(self, verb, url, parameters=None, headers=None, input=None): def encode(input): return "application/json", json.dumps(input) return self.__requestEncode(verb, url, parameters, headers, input, encode) - def requestMultipart(self, verb, url, parameters, headers, input): + def requestMultipart(self, verb, url, parameters=None, headers=None, input=None): def encode(input): boundary = "----------------------------3c3ba8b523b2" eol = "\r\n" diff --git a/github/Team.py b/github/Team.py index d8fb7379..9b687d80 100644 --- a/github/Team.py +++ b/github/Team.py @@ -94,10 +94,7 @@ class Team(github.GithubObject.CompletableGithubObject): assert isinstance(member, github.NamedUser.NamedUser), member headers, data = self._requester.requestJsonAndCheck( "PUT", - self.url + "/members/" + member._identity, - None, - None, - None + self.url + "/members/" + member._identity ) def add_to_repos(self, repo): @@ -109,10 +106,7 @@ class Team(github.GithubObject.CompletableGithubObject): assert isinstance(repo, github.Repository.Repository), repo headers, data = self._requester.requestJsonAndCheck( "PUT", - self.url + "/repos/" + repo._identity, - None, - None, - None + self.url + "/repos/" + repo._identity ) def delete(self): @@ -122,10 +116,7 @@ class Team(github.GithubObject.CompletableGithubObject): """ headers, data = self._requester.requestJsonAndCheck( "DELETE", - self.url, - None, - None, - None + self.url ) def edit(self, name, permission=github.GithubObject.NotSet): @@ -145,9 +136,7 @@ class Team(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "PATCH", self.url, - None, - None, - post_parameters + input=post_parameters ) self._useAttributes(data) @@ -184,10 +173,7 @@ class Team(github.GithubObject.CompletableGithubObject): assert isinstance(member, github.NamedUser.NamedUser), member status, headers, data = self._requester.requestJson( "GET", - self.url + "/members/" + member._identity, - None, - None, - None + self.url + "/members/" + member._identity ) return status == 204 @@ -200,10 +186,7 @@ class Team(github.GithubObject.CompletableGithubObject): assert isinstance(repo, github.Repository.Repository), repo status, headers, data = self._requester.requestJson( "GET", - self.url + "/repos/" + repo._identity, - None, - None, - None + self.url + "/repos/" + repo._identity ) return status == 204 @@ -216,10 +199,7 @@ class Team(github.GithubObject.CompletableGithubObject): assert isinstance(member, github.NamedUser.NamedUser), member headers, data = self._requester.requestJsonAndCheck( "DELETE", - self.url + "/members/" + member._identity, - None, - None, - None + self.url + "/members/" + member._identity ) def remove_from_repos(self, repo): @@ -231,10 +211,7 @@ class Team(github.GithubObject.CompletableGithubObject): assert isinstance(repo, github.Repository.Repository), repo headers, data = self._requester.requestJsonAndCheck( "DELETE", - self.url + "/repos/" + repo._identity, - None, - None, - None + self.url + "/repos/" + repo._identity ) @property diff --git a/github/UserKey.py b/github/UserKey.py index 83a26009..9ca0133b 100644 --- a/github/UserKey.py +++ b/github/UserKey.py @@ -80,10 +80,7 @@ class UserKey(github.GithubObject.CompletableGithubObject): """ headers, data = self._requester.requestJsonAndCheck( "DELETE", - self.url, - None, - None, - None + self.url ) def edit(self, title=github.GithubObject.NotSet, key=github.GithubObject.NotSet): @@ -103,9 +100,7 @@ class UserKey(github.GithubObject.CompletableGithubObject): headers, data = self._requester.requestJsonAndCheck( "PATCH", self.url, - None, - None, - post_parameters + input=post_parameters ) self._useAttributes(data) From c819580ce872f251e8ec23deee95d9fb15ca19c9 Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Fri, 6 Sep 2013 10:51:13 +0200 Subject: [PATCH 095/103] Get status of Github API (#188) --- github/MainClass.py | 44 +++++++++++++ github/Requester.py | 24 ++++--- github/Status.py | 56 ++++++++++++++++ github/StatusMessage.py | 66 +++++++++++++++++++ github/tests/AllTests.py | 1 + .../ReplayData/Status.testGetLastMessage.txt | 11 ++++ .../ReplayData/Status.testGetMessages.txt | 11 ++++ .../tests/ReplayData/Status.testGetStatus.txt | 11 ++++ github/tests/Status.py | 43 ++++++++++++ 9 files changed, 257 insertions(+), 10 deletions(-) create mode 100644 github/Status.py create mode 100644 github/StatusMessage.py create mode 100644 github/tests/ReplayData/Status.testGetLastMessage.txt create mode 100644 github/tests/ReplayData/Status.testGetMessages.txt create mode 100644 github/tests/ReplayData/Status.testGetStatus.txt create mode 100644 github/tests/Status.py diff --git a/github/MainClass.py b/github/MainClass.py index 2b1e298d..a4af1a61 100644 --- a/github/MainClass.py +++ b/github/MainClass.py @@ -40,6 +40,8 @@ import github.GithubObject import HookDescription import GitignoreTemplate import Notification +import Status +import StatusMessage DEFAULT_BASE_URL = "https://api.github.com" @@ -369,3 +371,45 @@ class Github(object): :return: the unpickled object """ return self.create_from_raw_data(*pickle.load(f)) + + def get_api_status(self): + """ + This doesn't work with a Github Enterprise installation, because it always targets https://status.github.com. + + :calls: `GET /api/status.json `_ + :rtype: :class:`github.Status.Status` + """ + headers, attributes = self.__requester.requestJsonAndCheck( + "GET", + "/api/status.json", + cnx="status" + ) + return Status.Status(self.__requester, headers, attributes, completed=True) + + def get_last_api_status_message(self): + """ + This doesn't work with a Github Enterprise installation, because it always targets https://status.github.com. + + :calls: `GET /api/last-message.json `_ + :rtype: :class:`github.StatusMessage.StatusMessage` + """ + headers, attributes = self.__requester.requestJsonAndCheck( + "GET", + "/api/last-message.json", + cnx="status" + ) + return StatusMessage.StatusMessage(self.__requester, headers, attributes, completed=True) + + def get_api_status_messages(self): + """ + This doesn't work with a Github Enterprise installation, because it always targets https://status.github.com. + + :calls: `GET /api/messages.json `_ + :rtype: list of :class:`github.StatusMessage.StatusMessage` + """ + headers, data = self.__requester.requestJsonAndCheck( + "GET", + "/api/messages.json", + cnx="status" + ) + return [StatusMessage.StatusMessage(self.__requester, headers, attributes, completed=True) for attributes in data] diff --git a/github/Requester.py b/github/Requester.py index 670d66b6..836b776e 100644 --- a/github/Requester.py +++ b/github/Requester.py @@ -164,8 +164,8 @@ class Requester: 'See http://developer.github.com/v3/#user-agent-required' self.__userAgent = user_agent - def requestJsonAndCheck(self, verb, url, parameters=None, headers=None, input=None): - return self.__check(*self.requestJson(verb, url, parameters, headers, input)) + def requestJsonAndCheck(self, verb, url, parameters=None, headers=None, input=None, cnx=None): + return self.__check(*self.requestJson(verb, url, parameters, headers, input, cnx)) def requestMultipartAndCheck(self, verb, url, parameters=None, headers=None, input=None): return self.__check(*self.requestMultipart(verb, url, parameters, headers, input)) @@ -200,11 +200,11 @@ class Requester: except ValueError, e: return {'data': data} - def requestJson(self, verb, url, parameters=None, headers=None, input=None): + def requestJson(self, verb, url, parameters=None, headers=None, input=None, cnx=None): def encode(input): return "application/json", json.dumps(input) - return self.__requestEncode(verb, url, parameters, headers, input, encode) + return self.__requestEncode(cnx, verb, url, parameters, headers, input, encode) def requestMultipart(self, verb, url, parameters=None, headers=None, input=None): def encode(input): @@ -220,9 +220,9 @@ class Requester: encoded_input += "--" + boundary + "--" + eol return "multipart/form-data; boundary=" + boundary, encoded_input - return self.__requestEncode(verb, url, parameters, headers, input, encode) + return self.__requestEncode(None, verb, url, parameters, headers, input, encode) - def __requestEncode(self, verb, url, parameters, requestHeaders, input, encode): + def __requestEncode(self, cnx, verb, url, parameters, requestHeaders, input, encode): assert verb in ["HEAD", "GET", "POST", "PATCH", "PUT", "DELETE"] if parameters is None: parameters = dict() @@ -241,7 +241,7 @@ class Requester: self.NEW_DEBUG_FRAME(requestHeaders) - status, responseHeaders, output = self.__requestRaw(verb, url, requestHeaders, encoded_input) + status, responseHeaders, output = self.__requestRaw(cnx, verb, url, requestHeaders, encoded_input) if "x-ratelimit-remaining" in responseHeaders and "x-ratelimit-limit" in responseHeaders: self.rate_limiting = (int(responseHeaders["x-ratelimit-remaining"]), int(responseHeaders["x-ratelimit-limit"])) @@ -255,8 +255,12 @@ class Requester: return status, responseHeaders, output - def __requestRaw(self, verb, url, requestHeaders, input): - cnx = self.__createConnection() + def __requestRaw(self, cnx, verb, url, requestHeaders, input): + if cnx is None: + cnx = self.__createConnection() + else: + assert cnx == "status" + cnx = self.__httpsConnectionClass("status.github.com", 443) cnx.request( verb, url, @@ -310,7 +314,7 @@ class Requester: kwds["strict"] = True # Useless in Python3, would generate a deprecation warning if atLeastPython26: # pragma no branch (Branch useful only with Python 2.5) kwds["timeout"] = self.__timeout # Did not exist before Python2.6 - return self.__connectionClass(host=self.__hostname, port=self.__port, **kwds) + return self.__connectionClass(self.__hostname, self.__port, **kwds) def __log(self, verb, url, requestHeaders, input, status, responseHeaders, output): logger = logging.getLogger(__name__) diff --git a/github/Status.py b/github/Status.py new file mode 100644 index 00000000..6c117241 --- /dev/null +++ b/github/Status.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- + +############################ Copyrights and license ############################ +# # +# Copyright 2013 Vincent Jacques # +# # +# 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 . # +# # +################################################################################ + +import github.GithubObject + + +class Status(github.GithubObject.NonCompletableGithubObject): + """ + This class represents status as defined in https://status.github.com/api + """ + + @property + def status(self): + """ + :type: string + """ + return self._NoneIfNotSet(self._status) + + @property + def last_updated(self): + """ + :type: datetime.datetime + """ + return self._NoneIfNotSet(self._last_updated) + + def _initAttributes(self): + self._status = github.GithubObject.NotSet + self._last_updated = github.GithubObject.NotSet + + def _useAttributes(self, attributes): + if "status" in attributes: # pragma no branch + assert attributes["status"] is None or isinstance(attributes["status"], (str, unicode)), attributes["status"] + self._status = attributes["status"] + if "last_updated" in attributes: # pragma no branch + assert attributes["last_updated"] is None or isinstance(attributes["last_updated"], (str, unicode)), attributes["last_updated"] + self._last_updated = self._parseDatetime(attributes["last_updated"]) diff --git a/github/StatusMessage.py b/github/StatusMessage.py new file mode 100644 index 00000000..266e1b05 --- /dev/null +++ b/github/StatusMessage.py @@ -0,0 +1,66 @@ +# -*- coding: utf-8 -*- + +############################ Copyrights and license ############################ +# # +# Copyright 2013 Vincent Jacques # +# # +# 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 . # +# # +################################################################################ + +import github.GithubObject + + +class StatusMessage(github.GithubObject.NonCompletableGithubObject): + """ + This class represents status messages as defined in https://status.github.com/api + """ + + @property + def body(self): + """ + :type: string + """ + return self._NoneIfNotSet(self._body) + + @property + def status(self): + """ + :type: string + """ + return self._NoneIfNotSet(self._status) + + @property + def created_on(self): + """ + :type: datetime.datetime + """ + return self._NoneIfNotSet(self._created_on) + + def _initAttributes(self): + self._status = github.GithubObject.NotSet + self._created_on = github.GithubObject.NotSet + + def _useAttributes(self, attributes): + if "body" in attributes: # pragma no branch + assert attributes["body"] is None or isinstance(attributes["body"], (str, unicode)), attributes["body"] + self._body = attributes["body"] + if "status" in attributes: # pragma no branch + assert attributes["status"] is None or isinstance(attributes["status"], (str, unicode)), attributes["status"] + self._status = attributes["status"] + if "created_on" in attributes: # pragma no branch + assert attributes["created_on"] is None or isinstance(attributes["created_on"], (str, unicode)), attributes["created_on"] + self._created_on = self._parseDatetime(attributes["created_on"]) diff --git a/github/tests/AllTests.py b/github/tests/AllTests.py index 5c2ce6da..4ddefece 100644 --- a/github/tests/AllTests.py +++ b/github/tests/AllTests.py @@ -56,6 +56,7 @@ from PullRequestFile import * from RateLimiting import * from Repository import * from RepositoryKey import * +from Status import * from Tag import * from Team import * from UserKey import * diff --git a/github/tests/ReplayData/Status.testGetLastMessage.txt b/github/tests/ReplayData/Status.testGetLastMessage.txt new file mode 100644 index 00000000..3d4b27e8 --- /dev/null +++ b/github/tests/ReplayData/Status.testGetLastMessage.txt @@ -0,0 +1,11 @@ +https +GET +status.github.com +443 +/api/last-message.json +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('content-length', '93'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('connection', 'keep-alive'), ('date', 'Fri, 06 Sep 2013 08:34:01 GMT'), ('content-type', 'application/json;charset=utf-8')] +{"status":"good","body":"Everything operating normally.","created_on":"2013-09-01T15:41:46Z"} + diff --git a/github/tests/ReplayData/Status.testGetMessages.txt b/github/tests/ReplayData/Status.testGetMessages.txt new file mode 100644 index 00000000..6c79412a --- /dev/null +++ b/github/tests/ReplayData/Status.testGetMessages.txt @@ -0,0 +1,11 @@ +https +GET +status.github.com +443 +/api/messages.json +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('content-length', '1492'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('connection', 'keep-alive'), ('date', 'Fri, 06 Sep 2013 08:41:31 GMT'), ('content-type', 'application/json;charset=utf-8')] +[{"status":"good","body":"Everything operating normally.","created_on":"2013-09-01T15:41:46Z"},{"status":"minor","body":"GitHub Pages are currently unavailable. We're investigating the problem.","created_on":"2013-09-01T15:26:59Z"},{"status":"good","body":"Everything operating normally.","created_on":"2013-09-01T15:17:24Z"},{"status":"minor","body":"We are investigating an increased rate of errors on GitHub.com","created_on":"2013-09-01T15:14:24Z"},{"status":"good","body":"Everything operating normally.","created_on":"2013-09-01T06:52:46Z"},{"status":"minor","body":"Some GitHub pages are again unavailable. We are continuing to investigate.","created_on":"2013-09-01T06:50:31Z"},{"status":"good","body":"Everything operating normally.","created_on":"2013-09-01T06:47:25Z"},{"status":"minor","body":"Some GitHub pages are temporarily unavailable.","created_on":"2013-09-01T06:43:03Z"},{"status":"good","body":"We're back up, now featuring a massively upgraded DB cluster with SSDs and 10Gbps networking! Thanks for your patience.","created_on":"2013-08-31T12:13:04Z"},{"status":"major","body":"We're beginning our scheduled maintenance now, and expect to be back up in 20 minutes. https://github.com/blog/1603-site-maintenance-august-31st-2013","created_on":"2013-08-31T12:00:13Z"},{"status":"good","body":"Everything operating normally.","created_on":"2013-08-31T11:45:50Z"},{"status":"minor","body":"We are investigating issues with GitHub Pages","created_on":"2013-08-31T11:43:39Z"}] + diff --git a/github/tests/ReplayData/Status.testGetStatus.txt b/github/tests/ReplayData/Status.testGetStatus.txt new file mode 100644 index 00000000..e01aec02 --- /dev/null +++ b/github/tests/ReplayData/Status.testGetStatus.txt @@ -0,0 +1,11 @@ +https +GET +status.github.com +443 +/api/status.json +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('content-length', '55'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('connection', 'keep-alive'), ('date', 'Fri, 06 Sep 2013 08:29:36 GMT'), ('content-type', 'application/json;charset=utf-8')] +{"status":"good","last_updated":"2013-09-06T08:29:27Z"} + diff --git a/github/tests/Status.py b/github/tests/Status.py new file mode 100644 index 00000000..0bb3c935 --- /dev/null +++ b/github/tests/Status.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- + +############################ Copyrights and license ############################ +# # +# Copyright 2013 Vincent Jacques # +# # +# 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 . # +# # +################################################################################ + +import Framework + +import github +import datetime + + +class Status(Framework.TestCase): + def testGetStatus(self): + status = self.g.get_api_status() + self.assertEqual(status.status, "good") + self.assertEqual(status.last_updated, datetime.datetime(2013, 9, 6, 8, 29, 27)) + + def testGetLastMessage(self): + message = self.g.get_last_api_status_message() + self.assertEqual(message.status, "good") + self.assertEqual(message.body, "Everything operating normally.") + self.assertEqual(message.created_on, datetime.datetime(2013, 9, 1, 15, 41, 46)) + + def testGetMessages(self): + self.assertListKeyEqual(self.g.get_api_status_messages(), lambda m: m.status, ["good", "minor", "good", "minor", "good", "minor", "good", "minor", "good", "major", "good", "minor"]) From a0796782a82bf6ab4c8b1a0d434737aecad5fa9d Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Fri, 6 Sep 2013 11:10:46 +0200 Subject: [PATCH 096/103] Update readme --- README.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/README.rst b/README.rst index 32e67f35..6f728c26 100644 --- a/README.rst +++ b/README.rst @@ -23,6 +23,7 @@ Starting today (September 05th, 2013), we now need more than 8 bits to store the * Implement persistence of PyGithub objects: ``Github.save`` and ``Github.load``. Don't forget to ``update`` your objects after loading them, it won't decrease your rate limiting quota if nothing has changed. Again, thank you `akfish `_ * Implement ``Github.get_repos`` to get all public repositories * Implement ``NamedUser.has_in_following`` +* `Implement `_ ``Github.get_api_status``, ``Github.get_last_api_status_message`` and ``Github.get_api_status_messages``. Thank you `ruxandraburtica `_ for asking * Technical change: HTTP headers are now stored in retrieved objects. This is a base for new functionalities. Thank you `akfish `_ for the pull request * Use the new URL to fork gists (minor change) * Use the new URL to test hooks (minor change) From a9b9765254dc22d7d6bcd2352383ce1c0e4afc5d Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Fri, 6 Sep 2013 11:17:09 +0200 Subject: [PATCH 097/103] Acknowledge branch coverage lack --- github/Requester.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/github/Requester.py b/github/Requester.py index 836b776e..9901d3dd 100644 --- a/github/Requester.py +++ b/github/Requester.py @@ -324,4 +324,6 @@ class Requester: requestHeaders["Authorization"] = "Basic (login and password removed)" elif requestHeaders["Authorization"].startswith("token"): requestHeaders["Authorization"] = "token (oauth token removed)" + else: # pragma no cover (Cannot happen, but could if we add an authentication method => be prepared) + requestHeaders["Authorization"] = "(unknown auth removed)" # pragma no cover (Cannot happen, but could if we add an authentication method => be prepared) logger.debug("%s %s://%s%s %s %s ==> %i %s %s", str(verb), self.__scheme, self.__hostname, str(url), str(requestHeaders), str(input), status, str(responseHeaders), str(output)) From 8f4a309c0e3e244938f225bd7bb6e665ef36721f Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Fri, 6 Sep 2013 11:38:20 +0200 Subject: [PATCH 098/103] Github.get_rate_limit --- README.rst | 5 +- github/MainClass.py | 24 ++++--- github/Rate.py | 68 +++++++++++++++++++ github/RateLimit.py | 46 +++++++++++++ github/tests/AllTests.py | 2 +- github/tests/Issue142.py | 6 +- github/tests/RateLimiting.py | 8 +++ .../RateLimiting.testGetRateLimit.txt | 11 +++ 8 files changed, 154 insertions(+), 16 deletions(-) create mode 100644 github/Rate.py create mode 100644 github/RateLimit.py create mode 100644 github/tests/ReplayData/RateLimiting.testGetRateLimit.txt diff --git a/README.rst b/README.rst index 6f728c26..a356efa4 100644 --- a/README.rst +++ b/README.rst @@ -24,6 +24,7 @@ Starting today (September 05th, 2013), we now need more than 8 bits to store the * Implement ``Github.get_repos`` to get all public repositories * Implement ``NamedUser.has_in_following`` * `Implement `_ ``Github.get_api_status``, ``Github.get_last_api_status_message`` and ``Github.get_api_status_messages``. Thank you `ruxandraburtica `_ for asking +* Implement ``Github.get_rate_limit`` * Technical change: HTTP headers are now stored in retrieved objects. This is a base for new functionalities. Thank you `akfish `_ for the pull request * Use the new URL to fork gists (minor change) * Use the new URL to test hooks (minor change) @@ -52,10 +53,6 @@ Github API v3 URLs not (yet) covered by PyGithub * ``/notifications/threads/:id/subscription`` (DELETE) * ``/notifications/threads/:id/subscription`` (GET) * ``/notifications/threads/:id/subscription`` (PUT) -* ``/rate_limit`` (GET) - - * should be called in method ``Github.get_rate_limit``. See also ``Github.rate_limiting`` - * ``/repos/:owner/:repo/contents/:path`` (DELETE) * ``/repos/:owner/:repo/contents/:path`` (PUT) * ``/repos/:owner/:repo/notifications`` (GET) diff --git a/github/MainClass.py b/github/MainClass.py index a4af1a61..c628a04f 100644 --- a/github/MainClass.py +++ b/github/MainClass.py @@ -42,6 +42,7 @@ import GitignoreTemplate import Notification import Status import StatusMessage +import RateLimit DEFAULT_BASE_URL = "https://api.github.com" @@ -109,10 +110,7 @@ class Github(object): """ remaining, limit = self.__requester.rate_limiting if limit < 0: - self.__requester.requestJsonAndCheck( - 'GET', - '/rate_limit' - ) + self.get_rate_limit() return self.__requester.rate_limiting @property @@ -122,12 +120,22 @@ class Github(object): :type: int """ if self.__requester.rate_limiting_resettime == 0: - self.__requester.requestJsonAndCheck( - 'GET', - '/rate_limit' - ) + self.get_rate_limit() return self.__requester.rate_limiting_resettime + def get_rate_limit(self): + """ + Don't forget you can access the rate limit returned in headers of last Github API v3 response, by :attr:`github.MainClass.Github.rate_limiting` and :attr:`github.MainClass.Github.rate_limiting_resettime`. + + :calls: `GET /rate_limit `_ + :rtype: :class:`github.RateLimit.RateLimit` + """ + headers, attributes = self.__requester.requestJsonAndCheck( + 'GET', + '/rate_limit' + ) + return RateLimit.RateLimit(self.__requester, headers, attributes, True) + @property def oauth_scopes(self): """ diff --git a/github/Rate.py b/github/Rate.py new file mode 100644 index 00000000..18a61b76 --- /dev/null +++ b/github/Rate.py @@ -0,0 +1,68 @@ +# -*- coding: utf-8 -*- + +############################ Copyrights and license ############################ +# # +# Copyright 2013 Vincent Jacques # +# # +# 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 . # +# # +################################################################################ + +import github.GithubObject +import datetime + + +class Rate(github.GithubObject.NonCompletableGithubObject): + """ + This class represents rate limits as defined in http://developer.github.com/v3/rate_limit + """ + + @property + def limit(self): + """ + :type: integer + """ + return self._NoneIfNotSet(self._limit) + + @property + def remaining(self): + """ + :type: integer + """ + return self._NoneIfNotSet(self._remaining) + + @property + def reset(self): + """ + :type: datetime.datetime + """ + return self._NoneIfNotSet(self._reset) + + def _initAttributes(self): + self._limit = github.GithubObject.NotSet + self._remaining = github.GithubObject.NotSet + self._reset = github.GithubObject.NotSet + + def _useAttributes(self, attributes): + if "limit" in attributes: # pragma no branch + assert attributes["limit"] is None or isinstance(attributes["limit"], (int, long)), attributes["limit"] + self._limit = attributes["limit"] + if "remaining" in attributes: # pragma no branch + assert attributes["remaining"] is None or isinstance(attributes["remaining"], (int, long)), attributes["remaining"] + self._remaining = attributes["remaining"] + if "reset" in attributes: # pragma no branch + assert attributes["reset"] is None or isinstance(attributes["reset"], (int, long)), attributes["reset"] + self._reset = datetime.datetime.fromtimestamp(attributes["reset"]) diff --git a/github/RateLimit.py b/github/RateLimit.py new file mode 100644 index 00000000..38589049 --- /dev/null +++ b/github/RateLimit.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- + +############################ Copyrights and license ############################ +# # +# Copyright 2013 Vincent Jacques # +# # +# 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 . # +# # +################################################################################ + +import github.GithubObject +import github.Rate + + +class RateLimit(github.GithubObject.NonCompletableGithubObject): + """ + This class represents rate limits as defined in http://developer.github.com/v3/rate_limit + """ + + @property + def rate(self): + """ + :type: class:`github.Rate.Rate` + """ + return self._NoneIfNotSet(self._rate) + + def _initAttributes(self): + self._rate = github.GithubObject.NotSet + + def _useAttributes(self, attributes): + if "rate" in attributes: # pragma no branch + assert attributes["rate"] is None or isinstance(attributes["rate"], dict), attributes["rate"] + self._rate = None if attributes["rate"] is None else github.Rate.Rate(self._requester, self._headers, attributes["rate"], completed=False) diff --git a/github/tests/AllTests.py b/github/tests/AllTests.py index 4ddefece..4fabf12a 100644 --- a/github/tests/AllTests.py +++ b/github/tests/AllTests.py @@ -77,7 +77,7 @@ from Issue133 import * from Issue134 import * from Issue139 import * from Issue140 import * -# from Issue142 import * # Deactivated for Travis-CI because Github has lowered the rate limitations +from Issue142 import * from Issue158 import * from Issue174 import * diff --git a/github/tests/Issue142.py b/github/tests/Issue142.py index 8d4e6053..61e5e6a0 100644 --- a/github/tests/Issue142.py +++ b/github/tests/Issue142.py @@ -25,8 +25,8 @@ import unittest import github -class Issue142(unittest.TestCase): # https://github.com/jacquev6/PyGithub/issues/140 +class Issue142(unittest.TestCase): # https://github.com/jacquev6/PyGithub/issues/142 def testDecodeJson(self): # This test has to hit GitHub for real, because the record-replay framework looses types - # and python3 does not behave like python3 for strings and bytes - self.assertEqual(github.Github().get_user("jacquev6").name, "Vincent Jacques") + # and python3 does not behave like python2 for strings and bytes + self.assertEqual(github.Github().get_rate_limit().rate.limit, 60) diff --git a/github/tests/RateLimiting.py b/github/tests/RateLimiting.py index 69d24e38..66daaef1 100644 --- a/github/tests/RateLimiting.py +++ b/github/tests/RateLimiting.py @@ -24,6 +24,8 @@ # # ################################################################################ +import datetime + import Framework @@ -36,3 +38,9 @@ class RateLimiting(Framework.TestCase): def testResetTime(self): self.assertEqual(self.g.rate_limiting_resettime, 1375802816) + + def testGetRateLimit(self): + rateLimit = self.g.get_rate_limit() + self.assertEqual(rateLimit.rate.limit, 5000) + self.assertEqual(rateLimit.rate.remaining, 5000) + self.assertEqual(rateLimit.rate.reset, datetime.datetime(2013, 9, 6, 12, 29, 57)) diff --git a/github/tests/ReplayData/RateLimiting.testGetRateLimit.txt b/github/tests/ReplayData/RateLimiting.testGetRateLimit.txt new file mode 100644 index 00000000..8807677f --- /dev/null +++ b/github/tests/ReplayData/RateLimiting.testGetRateLimit.txt @@ -0,0 +1,11 @@ +https +GET +api.github.com +None +/rate_limit +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '5000'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '1a3fa558-6663-4055-91e3-b6824f5f850e'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('content-length', '59'), ('server', 'GitHub.com'), ('x-ratelimit-limit', '5000'), ('cache-control', 'no-cache'), ('date', 'Fri, 06 Sep 2013 09:29:57 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378463397')] +{"rate":{"limit":5000,"remaining":5000,"reset":1378463397}} + From a6b4165d6c5476eadebb6b316733e3ca030866fb Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Fri, 6 Sep 2013 11:39:12 +0200 Subject: [PATCH 099/103] ./manage.sh fix_headers --- github/Consts.py | 1 + github/Repository.py | 2 +- github/tests/AllTests.py | 1 + github/tests/ConditionalRequestUpdate.py | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/github/Consts.py b/github/Consts.py index b3b47914..d68ff702 100644 --- a/github/Consts.py +++ b/github/Consts.py @@ -3,6 +3,7 @@ ############################ Copyrights and license ############################ # # # Copyright 2013 AKFish # +# Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # diff --git a/github/Repository.py b/github/Repository.py index 7eb3d235..70d5e884 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -6,8 +6,8 @@ # Copyright 2012 Steve English # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # -# Copyright 2013 Adrian Petrescu # # Copyright 2013 AKFish # +# Copyright 2013 Adrian Petrescu # # Copyright 2013 Mark Roddy # # Copyright 2013 Vincent Jacques # # Copyright 2013 martinqt # diff --git a/github/tests/AllTests.py b/github/tests/AllTests.py index 4fabf12a..dc43670a 100644 --- a/github/tests/AllTests.py +++ b/github/tests/AllTests.py @@ -4,6 +4,7 @@ # # # Copyright 2012 Vincent Jacques # # Copyright 2012 Zearin # +# Copyright 2013 AKFish # # Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # diff --git a/github/tests/ConditionalRequestUpdate.py b/github/tests/ConditionalRequestUpdate.py index bfd3f87d..f1494c64 100644 --- a/github/tests/ConditionalRequestUpdate.py +++ b/github/tests/ConditionalRequestUpdate.py @@ -3,6 +3,7 @@ ############################ Copyrights and license ############################ # # # Copyright 2013 AKFish # +# Copyright 2013 Vincent Jacques # # # # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # # # From d102f358be518062a757a09b43534e82c61629ab Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Fri, 6 Sep 2013 14:21:42 +0200 Subject: [PATCH 100/103] Homogenize AllTests.py --- github/tests/AllTests.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/github/tests/AllTests.py b/github/tests/AllTests.py index dc43670a..9277747f 100644 --- a/github/tests/AllTests.py +++ b/github/tests/AllTests.py @@ -67,6 +67,8 @@ from Exceptions import * from Enterprise import * from Logging_ import * from RawData import * +from ConditionalRequestUpdate import * +from Persistence import * from Issue33 import * from Issue50 import * @@ -81,6 +83,3 @@ from Issue140 import * from Issue142 import * from Issue158 import * from Issue174 import * - -from ConditionalRequestUpdate import ConditionalRequestUpdate -from Persistence import Persistence From c0dae31a97ea83c21d6157ae8952b7f3e265dac4 Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Fri, 6 Sep 2013 17:14:59 +0200 Subject: [PATCH 101/103] Add many missing attributes --- README.rst | 1 + github/AuthenticatedUser.py | 135 ++++ github/Commit.py | 24 + github/CommitStatus.py | 11 + github/Comparison.py | 12 + github/ContentFile.py | 24 + github/File.py | 11 + github/Gist.py | 38 +- github/GistFile.py | 11 + github/GistHistoryState.py | 190 +++++ github/GitCommit.py | 12 + github/Hook.py | 12 + github/Issue.py | 36 + github/IssueComment.py | 12 + github/MainClass.py | 1 - github/Milestone.py | 24 + github/NamedUser.py | 120 ++++ github/Notification.py | 24 + github/Organization.py | 60 ++ github/PullRequest.py | 84 +++ github/PullRequestComment.py | 24 + github/Repository.py | 480 +++++++++++++ github/Team.py | 36 + github/tests/AllTests.py | 1 + github/tests/ExposeAllAttributes.py | 160 +++++ .../ExposeAllAttributes.testAllClasses.txt | 660 ++++++++++++++++++ scripts/add_attribute.py | 119 ++++ 27 files changed, 2320 insertions(+), 2 deletions(-) create mode 100644 github/tests/ExposeAllAttributes.py create mode 100644 github/tests/ReplayData/ExposeAllAttributes.testAllClasses.txt create mode 100644 scripts/add_attribute.py diff --git a/README.rst b/README.rst index a356efa4..c7d519cc 100644 --- a/README.rst +++ b/README.rst @@ -25,6 +25,7 @@ Starting today (September 05th, 2013), we now need more than 8 bits to store the * Implement ``NamedUser.has_in_following`` * `Implement `_ ``Github.get_api_status``, ``Github.get_last_api_status_message`` and ``Github.get_api_status_messages``. Thank you `ruxandraburtica `_ for asking * Implement ``Github.get_rate_limit`` +* Add many missing attributes * Technical change: HTTP headers are now stored in retrieved objects. This is a base for new functionalities. Thank you `akfish `_ for the pull request * Use the new URL to fork gists (minor change) * Use the new URL to test hooks (minor change) diff --git a/github/AuthenticatedUser.py b/github/AuthenticatedUser.py index 67a289c3..8ae83202 100644 --- a/github/AuthenticatedUser.py +++ b/github/AuthenticatedUser.py @@ -39,6 +39,7 @@ import github.UserKey import github.Issue import github.Event import github.Authorization +import github.Notification class AuthenticatedUser(github.GithubObject.CompletableGithubObject): @@ -110,6 +111,14 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._email) return self._NoneIfNotSet(self._email) + @property + def events_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._events_url) + return self._NoneIfNotSet(self._events_url) + @property def followers(self): """ @@ -118,6 +127,14 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._followers) return self._NoneIfNotSet(self._followers) + @property + def followers_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._followers_url) + return self._NoneIfNotSet(self._followers_url) + @property def following(self): """ @@ -126,6 +143,22 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._following) return self._NoneIfNotSet(self._following) + @property + def following_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._following_url) + return self._NoneIfNotSet(self._following_url) + + @property + def gists_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._gists_url) + return self._NoneIfNotSet(self._gists_url) + @property def gravatar_id(self): """ @@ -182,6 +215,14 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._name) return self._NoneIfNotSet(self._name) + @property + def organizations_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._organizations_url) + return self._NoneIfNotSet(self._organizations_url) + @property def owned_private_repos(self): """ @@ -222,6 +263,46 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._public_repos) return self._NoneIfNotSet(self._public_repos) + @property + def received_events_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._received_events_url) + return self._NoneIfNotSet(self._received_events_url) + + @property + def repos_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._repos_url) + return self._NoneIfNotSet(self._repos_url) + + @property + def site_admin(self): + """ + :type: bool + """ + self._completeIfNotSet(self._site_admin) + return self._NoneIfNotSet(self._site_admin) + + @property + def starred_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._starred_url) + return self._NoneIfNotSet(self._starred_url) + + @property + def subscriptions_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._subscriptions_url) + return self._NoneIfNotSet(self._subscriptions_url) + @property def total_private_repos(self): """ @@ -238,6 +319,14 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._type) return self._NoneIfNotSet(self._type) + @property + def updated_at(self): + """ + :type: datetime.datetime + """ + self._completeIfNotSet(self._updated_at) + return self._NoneIfNotSet(self._updated_at) + @property def url(self): """ @@ -689,6 +778,8 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): def get_notifications(self, all=github.GithubObject.NotSet, participating=github.GithubObject.NotSet): """ :calls: `GET /notifications `_ + :param all: bool + :param participating: bool :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Notification.Notification` """ @@ -944,8 +1035,12 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): self._created_at = github.GithubObject.NotSet self._disk_usage = github.GithubObject.NotSet self._email = github.GithubObject.NotSet + self._events_url = github.GithubObject.NotSet self._followers = github.GithubObject.NotSet + self._followers_url = github.GithubObject.NotSet self._following = github.GithubObject.NotSet + self._following_url = github.GithubObject.NotSet + self._gists_url = github.GithubObject.NotSet self._gravatar_id = github.GithubObject.NotSet self._hireable = github.GithubObject.NotSet self._html_url = github.GithubObject.NotSet @@ -953,13 +1048,20 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): self._location = github.GithubObject.NotSet self._login = github.GithubObject.NotSet self._name = github.GithubObject.NotSet + self._organizations_url = github.GithubObject.NotSet self._owned_private_repos = github.GithubObject.NotSet self._plan = github.GithubObject.NotSet self._private_gists = github.GithubObject.NotSet self._public_gists = github.GithubObject.NotSet self._public_repos = github.GithubObject.NotSet + self._received_events_url = github.GithubObject.NotSet + self._repos_url = github.GithubObject.NotSet + self._site_admin = github.GithubObject.NotSet + self._starred_url = github.GithubObject.NotSet + self._subscriptions_url = github.GithubObject.NotSet self._total_private_repos = github.GithubObject.NotSet self._type = github.GithubObject.NotSet + self._updated_at = github.GithubObject.NotSet self._url = github.GithubObject.NotSet def _useAttributes(self, attributes): @@ -987,12 +1089,24 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): if "email" in attributes: # pragma no branch assert attributes["email"] is None or isinstance(attributes["email"], (str, unicode)), attributes["email"] self._email = attributes["email"] + if "events_url" in attributes: # pragma no branch + assert attributes["events_url"] is None or isinstance(attributes["events_url"], (str, unicode)), attributes["events_url"] + self._events_url = attributes["events_url"] if "followers" in attributes: # pragma no branch assert attributes["followers"] is None or isinstance(attributes["followers"], (int, long)), attributes["followers"] self._followers = attributes["followers"] + if "followers_url" in attributes: # pragma no branch + assert attributes["followers_url"] is None or isinstance(attributes["followers_url"], (str, unicode)), attributes["followers_url"] + self._followers_url = attributes["followers_url"] if "following" in attributes: # pragma no branch assert attributes["following"] is None or isinstance(attributes["following"], (int, long)), attributes["following"] self._following = attributes["following"] + if "following_url" in attributes: # pragma no branch + assert attributes["following_url"] is None or isinstance(attributes["following_url"], (str, unicode)), attributes["following_url"] + self._following_url = attributes["following_url"] + if "gists_url" in attributes: # pragma no branch + assert attributes["gists_url"] is None or isinstance(attributes["gists_url"], (str, unicode)), attributes["gists_url"] + self._gists_url = attributes["gists_url"] if "gravatar_id" in attributes: # pragma no branch assert attributes["gravatar_id"] is None or isinstance(attributes["gravatar_id"], (str, unicode)), attributes["gravatar_id"] self._gravatar_id = attributes["gravatar_id"] @@ -1014,6 +1128,9 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): if "name" in attributes: # pragma no branch assert attributes["name"] is None or isinstance(attributes["name"], (str, unicode)), attributes["name"] self._name = attributes["name"] + if "organizations_url" in attributes: # pragma no branch + assert attributes["organizations_url"] is None or isinstance(attributes["organizations_url"], (str, unicode)), attributes["organizations_url"] + self._organizations_url = attributes["organizations_url"] if "owned_private_repos" in attributes: # pragma no branch assert attributes["owned_private_repos"] is None or isinstance(attributes["owned_private_repos"], (int, long)), attributes["owned_private_repos"] self._owned_private_repos = attributes["owned_private_repos"] @@ -1029,12 +1146,30 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject): if "public_repos" in attributes: # pragma no branch assert attributes["public_repos"] is None or isinstance(attributes["public_repos"], (int, long)), attributes["public_repos"] self._public_repos = attributes["public_repos"] + if "received_events_url" in attributes: # pragma no branch + assert attributes["received_events_url"] is None or isinstance(attributes["received_events_url"], (str, unicode)), attributes["received_events_url"] + self._received_events_url = attributes["received_events_url"] + if "repos_url" in attributes: # pragma no branch + assert attributes["repos_url"] is None or isinstance(attributes["repos_url"], (str, unicode)), attributes["repos_url"] + self._repos_url = attributes["repos_url"] + if "site_admin" in attributes: # pragma no branch + assert attributes["site_admin"] is None or isinstance(attributes["site_admin"], bool), attributes["site_admin"] + self._site_admin = attributes["site_admin"] + if "starred_url" in attributes: # pragma no branch + assert attributes["starred_url"] is None or isinstance(attributes["starred_url"], (str, unicode)), attributes["starred_url"] + self._starred_url = attributes["starred_url"] + if "subscriptions_url" in attributes: # pragma no branch + assert attributes["subscriptions_url"] is None or isinstance(attributes["subscriptions_url"], (str, unicode)), attributes["subscriptions_url"] + self._subscriptions_url = attributes["subscriptions_url"] if "total_private_repos" in attributes: # pragma no branch assert attributes["total_private_repos"] is None or isinstance(attributes["total_private_repos"], (int, long)), attributes["total_private_repos"] self._total_private_repos = attributes["total_private_repos"] if "type" in attributes: # pragma no branch assert attributes["type"] is None or isinstance(attributes["type"], (str, unicode)), attributes["type"] self._type = attributes["type"] + if "updated_at" in attributes: # pragma no branch + assert attributes["updated_at"] is None or isinstance(attributes["updated_at"], (str, unicode)), attributes["updated_at"] + self._updated_at = self._parseDatetime(attributes["updated_at"]) if "url" in attributes: # pragma no branch assert attributes["url"] is None or isinstance(attributes["url"], (str, unicode)), attributes["url"] self._url = attributes["url"] diff --git a/github/Commit.py b/github/Commit.py index 828da3fe..eb5fa9ce 100644 --- a/github/Commit.py +++ b/github/Commit.py @@ -49,6 +49,14 @@ class Commit(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._author) return self._NoneIfNotSet(self._author) + @property + def comments_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._comments_url) + return self._NoneIfNotSet(self._comments_url) + @property def commit(self): """ @@ -73,6 +81,14 @@ class Commit(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._files) return self._NoneIfNotSet(self._files) + @property + def html_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._html_url) + return self._NoneIfNotSet(self._html_url) + @property def parents(self): """ @@ -189,9 +205,11 @@ class Commit(github.GithubObject.CompletableGithubObject): def _initAttributes(self): self._author = github.GithubObject.NotSet + self._comments_url = github.GithubObject.NotSet self._commit = github.GithubObject.NotSet self._committer = github.GithubObject.NotSet self._files = github.GithubObject.NotSet + self._html_url = github.GithubObject.NotSet self._parents = github.GithubObject.NotSet self._sha = github.GithubObject.NotSet self._stats = github.GithubObject.NotSet @@ -201,6 +219,9 @@ class Commit(github.GithubObject.CompletableGithubObject): if "author" in attributes: # pragma no branch assert attributes["author"] is None or isinstance(attributes["author"], dict), attributes["author"] self._author = None if attributes["author"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["author"], completed=False) + if "comments_url" in attributes: # pragma no branch + assert attributes["comments_url"] is None or isinstance(attributes["comments_url"], (str, unicode)), attributes["comments_url"] + self._comments_url = attributes["comments_url"] if "commit" in attributes: # pragma no branch assert attributes["commit"] is None or isinstance(attributes["commit"], dict), attributes["commit"] self._commit = None if attributes["commit"] is None else github.GitCommit.GitCommit(self._requester, self._headers, attributes["commit"], completed=False) @@ -213,6 +234,9 @@ class Commit(github.GithubObject.CompletableGithubObject): github.File.File(self._requester, self._headers, element, completed=False) for element in attributes["files"] ] + if "html_url" in attributes: # pragma no branch + assert attributes["html_url"] is None or isinstance(attributes["html_url"], (str, unicode)), attributes["html_url"] + self._html_url = attributes["html_url"] if "parents" in attributes: # pragma no branch assert attributes["parents"] is None or all(isinstance(element, dict) for element in attributes["parents"]), attributes["parents"] self._parents = None if attributes["parents"] is None else [ diff --git a/github/CommitStatus.py b/github/CommitStatus.py index d08e0274..6ac935a8 100644 --- a/github/CommitStatus.py +++ b/github/CommitStatus.py @@ -83,6 +83,13 @@ class CommitStatus(github.GithubObject.NonCompletableGithubObject): """ return self._NoneIfNotSet(self._updated_at) + @property + def url(self): + """ + :type: string + """ + return self._NoneIfNotSet(self._url) + def _initAttributes(self): self._created_at = github.GithubObject.NotSet self._creator = github.GithubObject.NotSet @@ -91,6 +98,7 @@ class CommitStatus(github.GithubObject.NonCompletableGithubObject): self._state = github.GithubObject.NotSet self._target_url = github.GithubObject.NotSet self._updated_at = github.GithubObject.NotSet + self._url = github.GithubObject.NotSet def _useAttributes(self, attributes): if "created_at" in attributes: # pragma no branch @@ -114,3 +122,6 @@ class CommitStatus(github.GithubObject.NonCompletableGithubObject): if "updated_at" in attributes: # pragma no branch assert attributes["updated_at"] is None or isinstance(attributes["updated_at"], (str, unicode)), attributes["updated_at"] self._updated_at = self._parseDatetime(attributes["updated_at"]) + if "url" in attributes: # pragma no branch + assert attributes["url"] is None or isinstance(attributes["url"], (str, unicode)), attributes["url"] + self._url = attributes["url"] diff --git a/github/Comparison.py b/github/Comparison.py index f5f66bc1..f75a62d0 100644 --- a/github/Comparison.py +++ b/github/Comparison.py @@ -91,6 +91,14 @@ class Comparison(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._html_url) return self._NoneIfNotSet(self._html_url) + @property + def merge_base_commit(self): + """ + :type: :class:`github.Commit.Commit` + """ + self._completeIfNotSet(self._merge_base_commit) + return self._NoneIfNotSet(self._merge_base_commit) + @property def patch_url(self): """ @@ -139,6 +147,7 @@ class Comparison(github.GithubObject.CompletableGithubObject): self._diff_url = github.GithubObject.NotSet self._files = github.GithubObject.NotSet self._html_url = github.GithubObject.NotSet + self._merge_base_commit = github.GithubObject.NotSet self._patch_url = github.GithubObject.NotSet self._permalink_url = github.GithubObject.NotSet self._status = github.GithubObject.NotSet @@ -173,6 +182,9 @@ class Comparison(github.GithubObject.CompletableGithubObject): if "html_url" in attributes: # pragma no branch assert attributes["html_url"] is None or isinstance(attributes["html_url"], (str, unicode)), attributes["html_url"] self._html_url = attributes["html_url"] + if "merge_base_commit" in attributes: # pragma no branch + assert attributes["merge_base_commit"] is None or isinstance(attributes["merge_base_commit"], dict), attributes["merge_base_commit"] + self._merge_base_commit = None if attributes["merge_base_commit"] is None else github.Commit.Commit(self._requester, self._headers, attributes["merge_base_commit"], completed=False) if "patch_url" in attributes: # pragma no branch assert attributes["patch_url"] is None or isinstance(attributes["patch_url"], (str, unicode)), attributes["patch_url"] self._patch_url = attributes["patch_url"] diff --git a/github/ContentFile.py b/github/ContentFile.py index 03818842..d13154dc 100644 --- a/github/ContentFile.py +++ b/github/ContentFile.py @@ -48,6 +48,22 @@ class ContentFile(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._encoding) return self._NoneIfNotSet(self._encoding) + @property + def git_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._git_url) + return self._NoneIfNotSet(self._git_url) + + @property + def html_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._html_url) + return self._NoneIfNotSet(self._html_url) + @property def name(self): """ @@ -99,6 +115,8 @@ class ContentFile(github.GithubObject.CompletableGithubObject): def _initAttributes(self): self._content = github.GithubObject.NotSet self._encoding = github.GithubObject.NotSet + self._git_url = github.GithubObject.NotSet + self._html_url = github.GithubObject.NotSet self._name = github.GithubObject.NotSet self._path = github.GithubObject.NotSet self._sha = github.GithubObject.NotSet @@ -112,6 +130,12 @@ class ContentFile(github.GithubObject.CompletableGithubObject): if "encoding" in attributes: # pragma no branch assert attributes["encoding"] is None or isinstance(attributes["encoding"], (str, unicode)), attributes["encoding"] self._encoding = attributes["encoding"] + if "git_url" in attributes: # pragma no branch + assert attributes["git_url"] is None or isinstance(attributes["git_url"], (str, unicode)), attributes["git_url"] + self._git_url = attributes["git_url"] + if "html_url" in attributes: # pragma no branch + assert attributes["html_url"] is None or isinstance(attributes["html_url"], (str, unicode)), attributes["html_url"] + self._html_url = attributes["html_url"] if "name" in attributes: # pragma no branch assert attributes["name"] is None or isinstance(attributes["name"], (str, unicode)), attributes["name"] self._name = attributes["name"] diff --git a/github/File.py b/github/File.py index 6adaae8a..600f1e5f 100644 --- a/github/File.py +++ b/github/File.py @@ -53,6 +53,13 @@ class File(github.GithubObject.NonCompletableGithubObject): """ return self._NoneIfNotSet(self._changes) + @property + def contents_url(self): + """ + :type: string + """ + return self._NoneIfNotSet(self._contents_url) + @property def deletions(self): """ @@ -99,6 +106,7 @@ class File(github.GithubObject.NonCompletableGithubObject): self._additions = github.GithubObject.NotSet self._blob_url = github.GithubObject.NotSet self._changes = github.GithubObject.NotSet + self._contents_url = github.GithubObject.NotSet self._deletions = github.GithubObject.NotSet self._filename = github.GithubObject.NotSet self._patch = github.GithubObject.NotSet @@ -116,6 +124,9 @@ class File(github.GithubObject.NonCompletableGithubObject): if "changes" in attributes: # pragma no branch assert attributes["changes"] is None or isinstance(attributes["changes"], (int, long)), attributes["changes"] self._changes = attributes["changes"] + if "contents_url" in attributes: # pragma no branch + assert attributes["contents_url"] is None or isinstance(attributes["contents_url"], (str, unicode)), attributes["contents_url"] + self._contents_url = attributes["contents_url"] if "deletions" in attributes: # pragma no branch assert attributes["deletions"] is None or isinstance(attributes["deletions"], (int, long)), attributes["deletions"] self._deletions = attributes["deletions"] diff --git a/github/Gist.py b/github/Gist.py index 65de668e..1b2f6d35 100644 --- a/github/Gist.py +++ b/github/Gist.py @@ -47,6 +47,22 @@ class Gist(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._comments) return self._NoneIfNotSet(self._comments) + @property + def comments_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._comments_url) + return self._NoneIfNotSet(self._comments_url) + + @property + def commits_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._commits_url) + return self._NoneIfNotSet(self._commits_url) + @property def created_at(self): """ @@ -87,6 +103,14 @@ class Gist(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._forks) return self._NoneIfNotSet(self._forks) + @property + def forks_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._forks_url) + return self._NoneIfNotSet(self._forks_url) + @property def git_pull_url(self): """ @@ -276,11 +300,14 @@ class Gist(github.GithubObject.CompletableGithubObject): def _initAttributes(self): self._comments = github.GithubObject.NotSet + self._comments_url = github.GithubObject.NotSet + self._commits_url = github.GithubObject.NotSet self._created_at = github.GithubObject.NotSet self._description = github.GithubObject.NotSet self._files = github.GithubObject.NotSet self._fork_of = github.GithubObject.NotSet self._forks = github.GithubObject.NotSet + self._forks_url = github.GithubObject.NotSet self._git_pull_url = github.GithubObject.NotSet self._git_push_url = github.GithubObject.NotSet self._history = github.GithubObject.NotSet @@ -295,6 +322,12 @@ class Gist(github.GithubObject.CompletableGithubObject): if "comments" in attributes: # pragma no branch assert attributes["comments"] is None or isinstance(attributes["comments"], (int, long)), attributes["comments"] self._comments = attributes["comments"] + if "comments_url" in attributes: # pragma no branch + assert attributes["comments_url"] is None or isinstance(attributes["comments_url"], (str, unicode)), attributes["comments_url"] + self._comments_url = attributes["comments_url"] + if "commits_url" in attributes: # pragma no branch + assert attributes["commits_url"] is None or isinstance(attributes["commits_url"], (str, unicode)), attributes["commits_url"] + self._commits_url = attributes["commits_url"] if "created_at" in attributes: # pragma no branch assert attributes["created_at"] is None or isinstance(attributes["created_at"], (str, unicode)), attributes["created_at"] self._created_at = self._parseDatetime(attributes["created_at"]) @@ -313,9 +346,12 @@ class Gist(github.GithubObject.CompletableGithubObject): if "forks" in attributes: # pragma no branch assert attributes["forks"] is None or all(isinstance(element, dict) for element in attributes["forks"]), attributes["forks"] self._forks = None if attributes["forks"] is None else [ - Gist(self._requester, element, completed=False) + Gist(self._requester, self._headers, element, completed=False) for element in attributes["forks"] ] + if "forks_url" in attributes: # pragma no branch + assert attributes["forks_url"] is None or isinstance(attributes["forks_url"], (str, unicode)), attributes["forks_url"] + self._forks_url = attributes["forks_url"] if "git_pull_url" in attributes: # pragma no branch assert attributes["git_pull_url"] is None or isinstance(attributes["git_pull_url"], (str, unicode)), attributes["git_pull_url"] self._git_pull_url = attributes["git_pull_url"] diff --git a/github/GistFile.py b/github/GistFile.py index 96c8ee27..1070d7f3 100644 --- a/github/GistFile.py +++ b/github/GistFile.py @@ -67,12 +67,20 @@ class GistFile(github.GithubObject.NonCompletableGithubObject): """ return self._NoneIfNotSet(self._size) + @property + def type(self): + """ + :type: string + """ + return self._NoneIfNotSet(self._type) + def _initAttributes(self): self._content = github.GithubObject.NotSet self._filename = github.GithubObject.NotSet self._language = github.GithubObject.NotSet self._raw_url = github.GithubObject.NotSet self._size = github.GithubObject.NotSet + self._type = github.GithubObject.NotSet def _useAttributes(self, attributes): if "content" in attributes: # pragma no branch @@ -90,3 +98,6 @@ class GistFile(github.GithubObject.NonCompletableGithubObject): if "size" in attributes: # pragma no branch assert attributes["size"] is None or isinstance(attributes["size"], (int, long)), attributes["size"] self._size = attributes["size"] + if "type" in attributes: # pragma no branch + assert attributes["type"] is None or isinstance(attributes["type"], (str, unicode)), attributes["type"] + self._type = attributes["type"] diff --git a/github/GistHistoryState.py b/github/GistHistoryState.py index bc24d5c0..cd5d2dc9 100644 --- a/github/GistHistoryState.py +++ b/github/GistHistoryState.py @@ -28,6 +28,7 @@ import github.GithubObject import github.NamedUser import github.CommitStats +import github.Gist class GistHistoryState(github.GithubObject.CompletableGithubObject): @@ -43,6 +44,30 @@ class GistHistoryState(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._change_status) return self._NoneIfNotSet(self._change_status) + @property + def comments(self): + """ + :type: integer + """ + self._completeIfNotSet(self._comments) + return self._NoneIfNotSet(self._comments) + + @property + def comments_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._comments_url) + return self._NoneIfNotSet(self._comments_url) + + @property + def commits_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._commits_url) + return self._NoneIfNotSet(self._commits_url) + @property def committed_at(self): """ @@ -51,6 +76,102 @@ class GistHistoryState(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._committed_at) return self._NoneIfNotSet(self._committed_at) + @property + def created_at(self): + """ + :type: datetime.datetime + """ + self._completeIfNotSet(self._created_at) + return self._NoneIfNotSet(self._created_at) + + @property + def description(self): + """ + :type: string + """ + self._completeIfNotSet(self._description) + return self._NoneIfNotSet(self._description) + + @property + def files(self): + """ + :type: dict of string to :class:`github.GistFile.GistFile` + """ + self._completeIfNotSet(self._files) + return self._NoneIfNotSet(self._files) + + @property + def forks(self): + """ + :type: list of :class:`github.Gist.Gist` + """ + self._completeIfNotSet(self._forks) + return self._NoneIfNotSet(self._forks) + + @property + def forks_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._forks_url) + return self._NoneIfNotSet(self._forks_url) + + @property + def git_pull_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._git_pull_url) + return self._NoneIfNotSet(self._git_pull_url) + + @property + def git_push_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._git_push_url) + return self._NoneIfNotSet(self._git_push_url) + + @property + def history(self): + """ + :type: list of :class:`GistHistoryState` + """ + self._completeIfNotSet(self._history) + return self._NoneIfNotSet(self._history) + + @property + def html_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._html_url) + return self._NoneIfNotSet(self._html_url) + + @property + def id(self): + """ + :type: string + """ + self._completeIfNotSet(self._id) + return self._NoneIfNotSet(self._id) + + @property + def public(self): + """ + :type: bool + """ + self._completeIfNotSet(self._public) + return self._NoneIfNotSet(self._public) + + @property + def updated_at(self): + """ + :type: datetime.datetime + """ + self._completeIfNotSet(self._updated_at) + return self._NoneIfNotSet(self._updated_at) + @property def url(self): """ @@ -77,7 +198,22 @@ class GistHistoryState(github.GithubObject.CompletableGithubObject): def _initAttributes(self): self._change_status = github.GithubObject.NotSet + self._comments = github.GithubObject.NotSet + self._comments_url = github.GithubObject.NotSet + self._commits_url = github.GithubObject.NotSet self._committed_at = github.GithubObject.NotSet + self._created_at = github.GithubObject.NotSet + self._description = github.GithubObject.NotSet + self._files = github.GithubObject.NotSet + self._forks = github.GithubObject.NotSet + self._forks_url = github.GithubObject.NotSet + self._git_pull_url = github.GithubObject.NotSet + self._git_push_url = github.GithubObject.NotSet + self._history = github.GithubObject.NotSet + self._html_url = github.GithubObject.NotSet + self._id = github.GithubObject.NotSet + self._public = github.GithubObject.NotSet + self._updated_at = github.GithubObject.NotSet self._url = github.GithubObject.NotSet self._user = github.GithubObject.NotSet self._version = github.GithubObject.NotSet @@ -86,9 +222,63 @@ class GistHistoryState(github.GithubObject.CompletableGithubObject): if "change_status" in attributes: # pragma no branch assert attributes["change_status"] is None or isinstance(attributes["change_status"], dict), attributes["change_status"] self._change_status = None if attributes["change_status"] is None else github.CommitStats.CommitStats(self._requester, self._headers, attributes["change_status"], completed=False) + if "comments" in attributes: # pragma no branch + assert attributes["comments"] is None or isinstance(attributes["comments"], (int, long)), attributes["comments"] + self._comments = attributes["comments"] + if "comments_url" in attributes: # pragma no branch + assert attributes["comments_url"] is None or isinstance(attributes["comments_url"], (str, unicode)), attributes["comments_url"] + self._comments_url = attributes["comments_url"] + if "commits_url" in attributes: # pragma no branch + assert attributes["commits_url"] is None or isinstance(attributes["commits_url"], (str, unicode)), attributes["commits_url"] + self._commits_url = attributes["commits_url"] if "committed_at" in attributes: # pragma no branch assert attributes["committed_at"] is None or isinstance(attributes["committed_at"], (str, unicode)), attributes["committed_at"] self._committed_at = self._parseDatetime(attributes["committed_at"]) + if "created_at" in attributes: # pragma no branch + assert attributes["created_at"] is None or isinstance(attributes["created_at"], (str, unicode)), attributes["created_at"] + self._created_at = self._parseDatetime(attributes["created_at"]) + if "description" in attributes: # pragma no branch + assert attributes["description"] is None or isinstance(attributes["description"], (str, unicode)), attributes["description"] + self._description = attributes["description"] + if "files" in attributes: # pragma no branch + assert attributes["files"] is None or all(isinstance(element, dict) for element in attributes["files"].itervalues()), attributes["files"] + self._files = None if attributes["files"] is None else dict( + (key, github.GistFile.GistFile(self._requester, self._headers, element, completed=False)) + for key, element in attributes["files"].iteritems() + ) + if "forks" in attributes: # pragma no branch + assert attributes["forks"] is None or all(isinstance(element, dict) for element in attributes["forks"]), attributes["forks"] + self._forks = None if attributes["forks"] is None else [ + github.Gist.Gist(self._requester, self._headers, element, completed=False) + for element in attributes["forks"] + ] + if "forks_url" in attributes: # pragma no branch + assert attributes["forks_url"] is None or isinstance(attributes["forks_url"], (str, unicode)), attributes["forks_url"] + self._forks_url = attributes["forks_url"] + if "git_pull_url" in attributes: # pragma no branch + assert attributes["git_pull_url"] is None or isinstance(attributes["git_pull_url"], (str, unicode)), attributes["git_pull_url"] + self._git_pull_url = attributes["git_pull_url"] + if "git_push_url" in attributes: # pragma no branch + assert attributes["git_push_url"] is None or isinstance(attributes["git_push_url"], (str, unicode)), attributes["git_push_url"] + self._git_push_url = attributes["git_push_url"] + if "history" in attributes: # pragma no branch + assert attributes["history"] is None or all(isinstance(element, dict) for element in attributes["history"]), attributes["history"] + self._history = None if attributes["history"] is None else [ + GistHistoryState(self._requester, self._headers, element, completed=False) + for element in attributes["history"] + ] + if "html_url" in attributes: # pragma no branch + assert attributes["html_url"] is None or isinstance(attributes["html_url"], (str, unicode)), attributes["html_url"] + self._html_url = attributes["html_url"] + if "id" in attributes: # pragma no branch + assert attributes["id"] is None or isinstance(attributes["id"], (str, unicode)), attributes["id"] + self._id = attributes["id"] + if "public" in attributes: # pragma no branch + assert attributes["public"] is None or isinstance(attributes["public"], bool), attributes["public"] + self._public = attributes["public"] + if "updated_at" in attributes: # pragma no branch + assert attributes["updated_at"] is None or isinstance(attributes["updated_at"], (str, unicode)), attributes["updated_at"] + self._updated_at = self._parseDatetime(attributes["updated_at"]) if "url" in attributes: # pragma no branch assert attributes["url"] is None or isinstance(attributes["url"], (str, unicode)), attributes["url"] self._url = attributes["url"] diff --git a/github/GitCommit.py b/github/GitCommit.py index ffdc6d5a..1d8c3eb4 100644 --- a/github/GitCommit.py +++ b/github/GitCommit.py @@ -51,6 +51,14 @@ class GitCommit(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._committer) return self._NoneIfNotSet(self._committer) + @property + def html_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._html_url) + return self._NoneIfNotSet(self._html_url) + @property def message(self): """ @@ -98,6 +106,7 @@ class GitCommit(github.GithubObject.CompletableGithubObject): def _initAttributes(self): self._author = github.GithubObject.NotSet self._committer = github.GithubObject.NotSet + self._html_url = github.GithubObject.NotSet self._message = github.GithubObject.NotSet self._parents = github.GithubObject.NotSet self._sha = github.GithubObject.NotSet @@ -111,6 +120,9 @@ class GitCommit(github.GithubObject.CompletableGithubObject): if "committer" in attributes: # pragma no branch assert attributes["committer"] is None or isinstance(attributes["committer"], dict), attributes["committer"] self._committer = None if attributes["committer"] is None else github.GitAuthor.GitAuthor(self._requester, self._headers, attributes["committer"], completed=False) + if "html_url" in attributes: # pragma no branch + assert attributes["html_url"] is None or isinstance(attributes["html_url"], (str, unicode)), attributes["html_url"] + self._html_url = attributes["html_url"] if "message" in attributes: # pragma no branch assert attributes["message"] is None or isinstance(attributes["message"], (str, unicode)), attributes["message"] self._message = attributes["message"] diff --git a/github/Hook.py b/github/Hook.py index 447a0e9a..4778c41f 100644 --- a/github/Hook.py +++ b/github/Hook.py @@ -90,6 +90,14 @@ class Hook(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._name) return self._NoneIfNotSet(self._name) + @property + def test_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._test_url) + return self._NoneIfNotSet(self._test_url) + @property def updated_at(self): """ @@ -170,6 +178,7 @@ class Hook(github.GithubObject.CompletableGithubObject): self._id = github.GithubObject.NotSet self._last_response = github.GithubObject.NotSet self._name = github.GithubObject.NotSet + self._test_url = github.GithubObject.NotSet self._updated_at = github.GithubObject.NotSet self._url = github.GithubObject.NotSet @@ -195,6 +204,9 @@ class Hook(github.GithubObject.CompletableGithubObject): if "name" in attributes: # pragma no branch assert attributes["name"] is None or isinstance(attributes["name"], (str, unicode)), attributes["name"] self._name = attributes["name"] + if "test_url" in attributes: # pragma no branch + assert attributes["test_url"] is None or isinstance(attributes["test_url"], (str, unicode)), attributes["test_url"] + self._test_url = attributes["test_url"] if "updated_at" in attributes: # pragma no branch assert attributes["updated_at"] is None or isinstance(attributes["updated_at"], (str, unicode)), attributes["updated_at"] self._updated_at = self._parseDatetime(attributes["updated_at"]) diff --git a/github/Issue.py b/github/Issue.py index b849e8d4..b0be8e35 100644 --- a/github/Issue.py +++ b/github/Issue.py @@ -84,6 +84,14 @@ class Issue(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._comments) return self._NoneIfNotSet(self._comments) + @property + def comments_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._comments_url) + return self._NoneIfNotSet(self._comments_url) + @property def created_at(self): """ @@ -92,6 +100,14 @@ class Issue(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._created_at) return self._NoneIfNotSet(self._created_at) + @property + def events_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._events_url) + return self._NoneIfNotSet(self._events_url) + @property def html_url(self): """ @@ -116,6 +132,14 @@ class Issue(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._labels) return self._NoneIfNotSet(self._labels) + @property + def labels_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._labels_url) + return self._NoneIfNotSet(self._labels_url) + @property def milestone(self): """ @@ -355,10 +379,13 @@ class Issue(github.GithubObject.CompletableGithubObject): self._closed_at = github.GithubObject.NotSet self._closed_by = github.GithubObject.NotSet self._comments = github.GithubObject.NotSet + self._comments_url = github.GithubObject.NotSet self._created_at = github.GithubObject.NotSet + self._events_url = github.GithubObject.NotSet self._html_url = github.GithubObject.NotSet self._id = github.GithubObject.NotSet self._labels = github.GithubObject.NotSet + self._labels_url = github.GithubObject.NotSet self._milestone = github.GithubObject.NotSet self._number = github.GithubObject.NotSet self._pull_request = github.GithubObject.NotSet @@ -385,9 +412,15 @@ class Issue(github.GithubObject.CompletableGithubObject): if "comments" in attributes: # pragma no branch assert attributes["comments"] is None or isinstance(attributes["comments"], (int, long)), attributes["comments"] self._comments = attributes["comments"] + if "comments_url" in attributes: # pragma no branch + assert attributes["comments_url"] is None or isinstance(attributes["comments_url"], (str, unicode)), attributes["comments_url"] + self._comments_url = attributes["comments_url"] if "created_at" in attributes: # pragma no branch assert attributes["created_at"] is None or isinstance(attributes["created_at"], (str, unicode)), attributes["created_at"] self._created_at = self._parseDatetime(attributes["created_at"]) + if "events_url" in attributes: # pragma no branch + assert attributes["events_url"] is None or isinstance(attributes["events_url"], (str, unicode)), attributes["events_url"] + self._events_url = attributes["events_url"] if "html_url" in attributes: # pragma no branch assert attributes["html_url"] is None or isinstance(attributes["html_url"], (str, unicode)), attributes["html_url"] self._html_url = attributes["html_url"] @@ -400,6 +433,9 @@ class Issue(github.GithubObject.CompletableGithubObject): github.Label.Label(self._requester, self._headers, element, completed=False) for element in attributes["labels"] ] + if "labels_url" in attributes: # pragma no branch + assert attributes["labels_url"] is None or isinstance(attributes["labels_url"], (str, unicode)), attributes["labels_url"] + self._labels_url = attributes["labels_url"] if "milestone" in attributes: # pragma no branch assert attributes["milestone"] is None or isinstance(attributes["milestone"], dict), attributes["milestone"] self._milestone = None if attributes["milestone"] is None else github.Milestone.Milestone(self._requester, self._headers, attributes["milestone"], completed=False) diff --git a/github/IssueComment.py b/github/IssueComment.py index 149a6f6f..84482c70 100644 --- a/github/IssueComment.py +++ b/github/IssueComment.py @@ -59,6 +59,14 @@ class IssueComment(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._id) return self._NoneIfNotSet(self._id) + @property + def issue_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._issue_url) + return self._NoneIfNotSet(self._issue_url) + @property def updated_at(self): """ @@ -122,6 +130,7 @@ class IssueComment(github.GithubObject.CompletableGithubObject): self._body = github.GithubObject.NotSet self._created_at = github.GithubObject.NotSet self._id = github.GithubObject.NotSet + self._issue_url = github.GithubObject.NotSet self._updated_at = github.GithubObject.NotSet self._url = github.GithubObject.NotSet self._html_url = github.GithubObject.NotSet @@ -137,6 +146,9 @@ class IssueComment(github.GithubObject.CompletableGithubObject): if "id" in attributes: # pragma no branch assert attributes["id"] is None or isinstance(attributes["id"], (int, long)), attributes["id"] self._id = attributes["id"] + if "issue_url" in attributes: # pragma no branch + assert attributes["issue_url"] is None or isinstance(attributes["issue_url"], (str, unicode)), attributes["issue_url"] + self._issue_url = attributes["issue_url"] if "updated_at" in attributes: # pragma no branch assert attributes["updated_at"] is None or isinstance(attributes["updated_at"], (str, unicode)), attributes["updated_at"] self._updated_at = self._parseDatetime(attributes["updated_at"]) diff --git a/github/MainClass.py b/github/MainClass.py index c628a04f..c40b2dc1 100644 --- a/github/MainClass.py +++ b/github/MainClass.py @@ -39,7 +39,6 @@ import Legacy import github.GithubObject import HookDescription import GitignoreTemplate -import Notification import Status import StatusMessage import RateLimit diff --git a/github/Milestone.py b/github/Milestone.py index c07ec389..2b414f73 100644 --- a/github/Milestone.py +++ b/github/Milestone.py @@ -87,6 +87,14 @@ class Milestone(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._id) return self._NoneIfNotSet(self._id) + @property + def labels_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._labels_url) + return self._NoneIfNotSet(self._labels_url) + @property def number(self): """ @@ -119,6 +127,14 @@ class Milestone(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._title) return self._NoneIfNotSet(self._title) + @property + def updated_at(self): + """ + :type: datetime.datetime + """ + self._completeIfNotSet(self._updated_at) + return self._NoneIfNotSet(self._updated_at) + @property def url(self): """ @@ -189,10 +205,12 @@ class Milestone(github.GithubObject.CompletableGithubObject): self._description = github.GithubObject.NotSet self._due_on = github.GithubObject.NotSet self._id = github.GithubObject.NotSet + self._labels_url = github.GithubObject.NotSet self._number = github.GithubObject.NotSet self._open_issues = github.GithubObject.NotSet self._state = github.GithubObject.NotSet self._title = github.GithubObject.NotSet + self._updated_at = github.GithubObject.NotSet self._url = github.GithubObject.NotSet def _useAttributes(self, attributes): @@ -214,6 +232,9 @@ class Milestone(github.GithubObject.CompletableGithubObject): if "id" in attributes: # pragma no branch assert attributes["id"] is None or isinstance(attributes["id"], (int, long)), attributes["id"] self._id = attributes["id"] + if "labels_url" in attributes: # pragma no branch + assert attributes["labels_url"] is None or isinstance(attributes["labels_url"], (str, unicode)), attributes["labels_url"] + self._labels_url = attributes["labels_url"] if "number" in attributes: # pragma no branch assert attributes["number"] is None or isinstance(attributes["number"], (int, long)), attributes["number"] self._number = attributes["number"] @@ -226,6 +247,9 @@ class Milestone(github.GithubObject.CompletableGithubObject): if "title" in attributes: # pragma no branch assert attributes["title"] is None or isinstance(attributes["title"], (str, unicode)), attributes["title"] self._title = attributes["title"] + if "updated_at" in attributes: # pragma no branch + assert attributes["updated_at"] is None or isinstance(attributes["updated_at"], (str, unicode)), attributes["updated_at"] + self._updated_at = self._parseDatetime(attributes["updated_at"]) if "url" in attributes: # pragma no branch assert attributes["url"] is None or isinstance(attributes["url"], (str, unicode)), attributes["url"] self._url = attributes["url"] diff --git a/github/NamedUser.py b/github/NamedUser.py index ec9bfbed..aa7c5547 100644 --- a/github/NamedUser.py +++ b/github/NamedUser.py @@ -113,6 +113,14 @@ class NamedUser(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._email) return self._NoneIfNotSet(self._email) + @property + def events_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._events_url) + return self._NoneIfNotSet(self._events_url) + @property def followers(self): """ @@ -121,6 +129,14 @@ class NamedUser(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._followers) return self._NoneIfNotSet(self._followers) + @property + def followers_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._followers_url) + return self._NoneIfNotSet(self._followers_url) + @property def following(self): """ @@ -129,6 +145,22 @@ class NamedUser(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._following) return self._NoneIfNotSet(self._following) + @property + def following_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._following_url) + return self._NoneIfNotSet(self._following_url) + + @property + def gists_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._gists_url) + return self._NoneIfNotSet(self._gists_url) + @property def gravatar_id(self): """ @@ -185,6 +217,14 @@ class NamedUser(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._name) return self._NoneIfNotSet(self._name) + @property + def organizations_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._organizations_url) + return self._NoneIfNotSet(self._organizations_url) + @property def owned_private_repos(self): """ @@ -225,6 +265,38 @@ class NamedUser(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._public_repos) return self._NoneIfNotSet(self._public_repos) + @property + def received_events_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._received_events_url) + return self._NoneIfNotSet(self._received_events_url) + + @property + def repos_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._repos_url) + return self._NoneIfNotSet(self._repos_url) + + @property + def starred_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._starred_url) + return self._NoneIfNotSet(self._starred_url) + + @property + def subscriptions_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._subscriptions_url) + return self._NoneIfNotSet(self._subscriptions_url) + @property def total_private_repos(self): """ @@ -241,6 +313,14 @@ class NamedUser(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._type) return self._NoneIfNotSet(self._type) + @property + def updated_at(self): + """ + :type: datetime.datetime + """ + self._completeIfNotSet(self._updated_at) + return self._NoneIfNotSet(self._updated_at) + @property def url(self): """ @@ -474,8 +554,12 @@ class NamedUser(github.GithubObject.CompletableGithubObject): self._created_at = github.GithubObject.NotSet self._disk_usage = github.GithubObject.NotSet self._email = github.GithubObject.NotSet + self._events_url = github.GithubObject.NotSet self._followers = github.GithubObject.NotSet + self._followers_url = github.GithubObject.NotSet self._following = github.GithubObject.NotSet + self._following_url = github.GithubObject.NotSet + self._gists_url = github.GithubObject.NotSet self._gravatar_id = github.GithubObject.NotSet self._hireable = github.GithubObject.NotSet self._html_url = github.GithubObject.NotSet @@ -483,13 +567,19 @@ class NamedUser(github.GithubObject.CompletableGithubObject): self._location = github.GithubObject.NotSet self._login = github.GithubObject.NotSet self._name = github.GithubObject.NotSet + self._organizations_url = github.GithubObject.NotSet self._owned_private_repos = github.GithubObject.NotSet self._plan = github.GithubObject.NotSet self._private_gists = github.GithubObject.NotSet self._public_gists = github.GithubObject.NotSet self._public_repos = github.GithubObject.NotSet + self._received_events_url = github.GithubObject.NotSet + self._repos_url = github.GithubObject.NotSet + self._starred_url = github.GithubObject.NotSet + self._subscriptions_url = github.GithubObject.NotSet self._total_private_repos = github.GithubObject.NotSet self._type = github.GithubObject.NotSet + self._updated_at = github.GithubObject.NotSet self._url = github.GithubObject.NotSet def _useAttributes(self, attributes): @@ -520,12 +610,24 @@ class NamedUser(github.GithubObject.CompletableGithubObject): if "email" in attributes: # pragma no branch assert attributes["email"] is None or isinstance(attributes["email"], (str, unicode)), attributes["email"] self._email = attributes["email"] + if "events_url" in attributes: # pragma no branch + assert attributes["events_url"] is None or isinstance(attributes["events_url"], (str, unicode)), attributes["events_url"] + self._events_url = attributes["events_url"] if "followers" in attributes: # pragma no branch assert attributes["followers"] is None or isinstance(attributes["followers"], (int, long)), attributes["followers"] self._followers = attributes["followers"] + if "followers_url" in attributes: # pragma no branch + assert attributes["followers_url"] is None or isinstance(attributes["followers_url"], (str, unicode)), attributes["followers_url"] + self._followers_url = attributes["followers_url"] if "following" in attributes: # pragma no branch assert attributes["following"] is None or isinstance(attributes["following"], (int, long)), attributes["following"] self._following = attributes["following"] + if "following_url" in attributes: # pragma no branch + assert attributes["following_url"] is None or isinstance(attributes["following_url"], (str, unicode)), attributes["following_url"] + self._following_url = attributes["following_url"] + if "gists_url" in attributes: # pragma no branch + assert attributes["gists_url"] is None or isinstance(attributes["gists_url"], (str, unicode)), attributes["gists_url"] + self._gists_url = attributes["gists_url"] if "gravatar_id" in attributes: # pragma no branch assert attributes["gravatar_id"] is None or isinstance(attributes["gravatar_id"], (str, unicode)), attributes["gravatar_id"] self._gravatar_id = attributes["gravatar_id"] @@ -547,6 +649,9 @@ class NamedUser(github.GithubObject.CompletableGithubObject): if "name" in attributes: # pragma no branch assert attributes["name"] is None or isinstance(attributes["name"], (str, unicode)), attributes["name"] self._name = attributes["name"] + if "organizations_url" in attributes: # pragma no branch + assert attributes["organizations_url"] is None or isinstance(attributes["organizations_url"], (str, unicode)), attributes["organizations_url"] + self._organizations_url = attributes["organizations_url"] if "owned_private_repos" in attributes: # pragma no branch assert attributes["owned_private_repos"] is None or isinstance(attributes["owned_private_repos"], (int, long)), attributes["owned_private_repos"] self._owned_private_repos = attributes["owned_private_repos"] @@ -562,12 +667,27 @@ class NamedUser(github.GithubObject.CompletableGithubObject): if "public_repos" in attributes: # pragma no branch assert attributes["public_repos"] is None or isinstance(attributes["public_repos"], (int, long)), attributes["public_repos"] self._public_repos = attributes["public_repos"] + if "received_events_url" in attributes: # pragma no branch + assert attributes["received_events_url"] is None or isinstance(attributes["received_events_url"], (str, unicode)), attributes["received_events_url"] + self._received_events_url = attributes["received_events_url"] + if "repos_url" in attributes: # pragma no branch + assert attributes["repos_url"] is None or isinstance(attributes["repos_url"], (str, unicode)), attributes["repos_url"] + self._repos_url = attributes["repos_url"] + if "starred_url" in attributes: # pragma no branch + assert attributes["starred_url"] is None or isinstance(attributes["starred_url"], (str, unicode)), attributes["starred_url"] + self._starred_url = attributes["starred_url"] + if "subscriptions_url" in attributes: # pragma no branch + assert attributes["subscriptions_url"] is None or isinstance(attributes["subscriptions_url"], (str, unicode)), attributes["subscriptions_url"] + self._subscriptions_url = attributes["subscriptions_url"] if "total_private_repos" in attributes: # pragma no branch assert attributes["total_private_repos"] is None or isinstance(attributes["total_private_repos"], (int, long)), attributes["total_private_repos"] self._total_private_repos = attributes["total_private_repos"] if "type" in attributes: # pragma no branch assert attributes["type"] is None or isinstance(attributes["type"], (str, unicode)), attributes["type"] self._type = attributes["type"] + if "updated_at" in attributes: # pragma no branch + assert attributes["updated_at"] is None or isinstance(attributes["updated_at"], (str, unicode)), attributes["updated_at"] + self._updated_at = self._parseDatetime(attributes["updated_at"]) if "url" in attributes: # pragma no branch assert attributes["url"] is None or isinstance(attributes["url"], (str, unicode)), attributes["url"] self._url = attributes["url"] diff --git a/github/Notification.py b/github/Notification.py index bb1c96b6..3055ae86 100644 --- a/github/Notification.py +++ b/github/Notification.py @@ -43,6 +43,14 @@ class Notification(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._id) return self._NoneIfNotSet(self._id) + @property + def last_read_at(self): + """ + :type: datetime.datetime + """ + self._completeIfNotSet(self._last_read_at) + return self._NoneIfNotSet(self._last_read_at) + @property def repository(self): """ @@ -67,6 +75,14 @@ class Notification(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._reason) return self._NoneIfNotSet(self._reason) + @property + def subscription_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._subscription_url) + return self._NoneIfNotSet(self._subscription_url) + @property def unread(self): """ @@ -93,8 +109,10 @@ class Notification(github.GithubObject.CompletableGithubObject): def _initAttributes(self): self._id = github.GithubObject.NotSet + self._last_read_at = github.GithubObject.NotSet self._repository = github.GithubObject.NotSet self._reason = github.GithubObject.NotSet + self._subscription_url = github.GithubObject.NotSet self._unread = github.GithubObject.NotSet self._updated_at = github.GithubObject.NotSet self._url = github.GithubObject.NotSet @@ -103,6 +121,9 @@ class Notification(github.GithubObject.CompletableGithubObject): if "id" in attributes: # pragma no branch assert attributes["id"] is None or isinstance(attributes["id"], (str, unicode)), attributes["id"] self._id = attributes["id"] + if "last_read_at" in attributes: # pragma no branch + assert attributes["last_read_at"] is None or isinstance(attributes["last_read_at"], (str, unicode)), attributes["last_read_at"] + self._last_read_at = self._parseDatetime(attributes["last_read_at"]) if "repository" in attributes: # pragma no branch assert attributes["repository"] is None or isinstance(attributes["repository"], dict), attributes["repository"] self._repository = None if attributes["repository"] is None else github.Repository.Repository(self._requester, self._headers, attributes["repository"], completed=False) @@ -112,6 +133,9 @@ class Notification(github.GithubObject.CompletableGithubObject): if "reason" in attributes: # pragma no branch assert attributes["reason"] is None or isinstance(attributes["reason"], (str, unicode)), attributes["reason"] self._reason = attributes["reason"] + if "subscription_url" in attributes: # pragma no branch + assert attributes["subscription_url"] is None or isinstance(attributes["subscription_url"], (str, unicode)), attributes["subscription_url"] + self._subscription_url = attributes["subscription_url"] if "unread" in attributes: # pragma no branch assert attributes["unread"] is None or isinstance(attributes["unread"], bool), attributes["unread"] self._unread = attributes["unread"] diff --git a/github/Organization.py b/github/Organization.py index 68245f3e..3628bbf0 100644 --- a/github/Organization.py +++ b/github/Organization.py @@ -107,6 +107,14 @@ class Organization(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._email) return self._NoneIfNotSet(self._email) + @property + def events_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._events_url) + return self._NoneIfNotSet(self._events_url) + @property def followers(self): """ @@ -163,6 +171,14 @@ class Organization(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._login) return self._NoneIfNotSet(self._login) + @property + def members_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._members_url) + return self._NoneIfNotSet(self._members_url) + @property def name(self): """ @@ -203,6 +219,14 @@ class Organization(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._public_gists) return self._NoneIfNotSet(self._public_gists) + @property + def public_members_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._public_members_url) + return self._NoneIfNotSet(self._public_members_url) + @property def public_repos(self): """ @@ -211,6 +235,14 @@ class Organization(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._public_repos) return self._NoneIfNotSet(self._public_repos) + @property + def repos_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._repos_url) + return self._NoneIfNotSet(self._repos_url) + @property def total_private_repos(self): """ @@ -227,6 +259,14 @@ class Organization(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._type) return self._NoneIfNotSet(self._type) + @property + def updated_at(self): + """ + :type: datetime.datetime + """ + self._completeIfNotSet(self._updated_at) + return self._NoneIfNotSet(self._updated_at) + @property def url(self): """ @@ -567,6 +607,7 @@ class Organization(github.GithubObject.CompletableGithubObject): self._created_at = github.GithubObject.NotSet self._disk_usage = github.GithubObject.NotSet self._email = github.GithubObject.NotSet + self._events_url = github.GithubObject.NotSet self._followers = github.GithubObject.NotSet self._following = github.GithubObject.NotSet self._gravatar_id = github.GithubObject.NotSet @@ -574,14 +615,18 @@ class Organization(github.GithubObject.CompletableGithubObject): self._id = github.GithubObject.NotSet self._location = github.GithubObject.NotSet self._login = github.GithubObject.NotSet + self._members_url = github.GithubObject.NotSet self._name = github.GithubObject.NotSet self._owned_private_repos = github.GithubObject.NotSet self._plan = github.GithubObject.NotSet self._private_gists = github.GithubObject.NotSet self._public_gists = github.GithubObject.NotSet + self._public_members_url = github.GithubObject.NotSet self._public_repos = github.GithubObject.NotSet + self._repos_url = github.GithubObject.NotSet self._total_private_repos = github.GithubObject.NotSet self._type = github.GithubObject.NotSet + self._updated_at = github.GithubObject.NotSet self._url = github.GithubObject.NotSet def _useAttributes(self, attributes): @@ -609,6 +654,9 @@ class Organization(github.GithubObject.CompletableGithubObject): if "email" in attributes: # pragma no branch assert attributes["email"] is None or isinstance(attributes["email"], (str, unicode)), attributes["email"] self._email = attributes["email"] + if "events_url" in attributes: # pragma no branch + assert attributes["events_url"] is None or isinstance(attributes["events_url"], (str, unicode)), attributes["events_url"] + self._events_url = attributes["events_url"] if "followers" in attributes: # pragma no branch assert attributes["followers"] is None or isinstance(attributes["followers"], (int, long)), attributes["followers"] self._followers = attributes["followers"] @@ -630,6 +678,9 @@ class Organization(github.GithubObject.CompletableGithubObject): if "login" in attributes: # pragma no branch assert attributes["login"] is None or isinstance(attributes["login"], (str, unicode)), attributes["login"] self._login = attributes["login"] + if "members_url" in attributes: # pragma no branch + assert attributes["members_url"] is None or isinstance(attributes["members_url"], (str, unicode)), attributes["members_url"] + self._members_url = attributes["members_url"] if "name" in attributes: # pragma no branch assert attributes["name"] is None or isinstance(attributes["name"], (str, unicode)), attributes["name"] self._name = attributes["name"] @@ -645,15 +696,24 @@ class Organization(github.GithubObject.CompletableGithubObject): if "public_gists" in attributes: # pragma no branch assert attributes["public_gists"] is None or isinstance(attributes["public_gists"], (int, long)), attributes["public_gists"] self._public_gists = attributes["public_gists"] + if "public_members_url" in attributes: # pragma no branch + assert attributes["public_members_url"] is None or isinstance(attributes["public_members_url"], (str, unicode)), attributes["public_members_url"] + self._public_members_url = attributes["public_members_url"] if "public_repos" in attributes: # pragma no branch assert attributes["public_repos"] is None or isinstance(attributes["public_repos"], (int, long)), attributes["public_repos"] self._public_repos = attributes["public_repos"] + if "repos_url" in attributes: # pragma no branch + assert attributes["repos_url"] is None or isinstance(attributes["repos_url"], (str, unicode)), attributes["repos_url"] + self._repos_url = attributes["repos_url"] if "total_private_repos" in attributes: # pragma no branch assert attributes["total_private_repos"] is None or isinstance(attributes["total_private_repos"], (int, long)), attributes["total_private_repos"] self._total_private_repos = attributes["total_private_repos"] if "type" in attributes: # pragma no branch assert attributes["type"] is None or isinstance(attributes["type"], (str, unicode)), attributes["type"] self._type = attributes["type"] + if "updated_at" in attributes: # pragma no branch + assert attributes["updated_at"] is None or isinstance(attributes["updated_at"], (str, unicode)), attributes["updated_at"] + self._updated_at = self._parseDatetime(attributes["updated_at"]) if "url" in attributes: # pragma no branch assert attributes["url"] is None or isinstance(attributes["url"], (str, unicode)), attributes["url"] self._url = attributes["url"] diff --git a/github/PullRequest.py b/github/PullRequest.py index 85867c60..a1e4f13f 100644 --- a/github/PullRequest.py +++ b/github/PullRequest.py @@ -99,6 +99,14 @@ class PullRequest(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._comments) return self._NoneIfNotSet(self._comments) + @property + def comments_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._comments_url) + return self._NoneIfNotSet(self._comments_url) + @property def commits(self): """ @@ -107,6 +115,14 @@ class PullRequest(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._commits) return self._NoneIfNotSet(self._commits) + @property + def commits_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._commits_url) + return self._NoneIfNotSet(self._commits_url) + @property def created_at(self): """ @@ -163,6 +179,14 @@ class PullRequest(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._issue_url) return self._NoneIfNotSet(self._issue_url) + @property + def merge_commit_sha(self): + """ + :type: string + """ + self._completeIfNotSet(self._merge_commit_sha) + return self._NoneIfNotSet(self._merge_commit_sha) + @property def mergeable(self): """ @@ -171,6 +195,14 @@ class PullRequest(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._mergeable) return self._NoneIfNotSet(self._mergeable) + @property + def mergeable_state(self): + """ + :type: string + """ + self._completeIfNotSet(self._mergeable_state) + return self._NoneIfNotSet(self._mergeable_state) + @property def merged(self): """ @@ -195,6 +227,14 @@ class PullRequest(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._merged_by) return self._NoneIfNotSet(self._merged_by) + @property + def milestone(self): + """ + :type: :class:`github.Milestone.Milestone` + """ + self._completeIfNotSet(self._milestone) + return self._NoneIfNotSet(self._milestone) + @property def number(self): """ @@ -211,6 +251,14 @@ class PullRequest(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._patch_url) return self._NoneIfNotSet(self._patch_url) + @property + def review_comment_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._review_comment_url) + return self._NoneIfNotSet(self._review_comment_url) + @property def review_comments(self): """ @@ -219,6 +267,14 @@ class PullRequest(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._review_comments) return self._NoneIfNotSet(self._review_comments) + @property + def review_comments_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._review_comments_url) + return self._NoneIfNotSet(self._review_comments_url) + @property def state(self): """ @@ -463,7 +519,9 @@ class PullRequest(github.GithubObject.CompletableGithubObject): self._changed_files = github.GithubObject.NotSet self._closed_at = github.GithubObject.NotSet self._comments = github.GithubObject.NotSet + self._comments_url = github.GithubObject.NotSet self._commits = github.GithubObject.NotSet + self._commits_url = github.GithubObject.NotSet self._created_at = github.GithubObject.NotSet self._deletions = github.GithubObject.NotSet self._diff_url = github.GithubObject.NotSet @@ -471,13 +529,18 @@ class PullRequest(github.GithubObject.CompletableGithubObject): self._html_url = github.GithubObject.NotSet self._id = github.GithubObject.NotSet self._issue_url = github.GithubObject.NotSet + self._merge_commit_sha = github.GithubObject.NotSet self._mergeable = github.GithubObject.NotSet + self._mergeable_state = github.GithubObject.NotSet self._merged = github.GithubObject.NotSet self._merged_at = github.GithubObject.NotSet self._merged_by = github.GithubObject.NotSet + self._milestone = github.GithubObject.NotSet self._number = github.GithubObject.NotSet self._patch_url = github.GithubObject.NotSet + self._review_comment_url = github.GithubObject.NotSet self._review_comments = github.GithubObject.NotSet + self._review_comments_url = github.GithubObject.NotSet self._state = github.GithubObject.NotSet self._title = github.GithubObject.NotSet self._updated_at = github.GithubObject.NotSet @@ -506,9 +569,15 @@ class PullRequest(github.GithubObject.CompletableGithubObject): if "comments" in attributes: # pragma no branch assert attributes["comments"] is None or isinstance(attributes["comments"], (int, long)), attributes["comments"] self._comments = attributes["comments"] + if "comments_url" in attributes: # pragma no branch + assert attributes["comments_url"] is None or isinstance(attributes["comments_url"], (str, unicode)), attributes["comments_url"] + self._comments_url = attributes["comments_url"] if "commits" in attributes: # pragma no branch assert attributes["commits"] is None or isinstance(attributes["commits"], (int, long)), attributes["commits"] self._commits = attributes["commits"] + if "commits_url" in attributes: # pragma no branch + assert attributes["commits_url"] is None or isinstance(attributes["commits_url"], (str, unicode)), attributes["commits_url"] + self._commits_url = attributes["commits_url"] if "created_at" in attributes: # pragma no branch assert attributes["created_at"] is None or isinstance(attributes["created_at"], (str, unicode)), attributes["created_at"] self._created_at = self._parseDatetime(attributes["created_at"]) @@ -530,9 +599,15 @@ class PullRequest(github.GithubObject.CompletableGithubObject): if "issue_url" in attributes: # pragma no branch assert attributes["issue_url"] is None or isinstance(attributes["issue_url"], (str, unicode)), attributes["issue_url"] self._issue_url = attributes["issue_url"] + if "merge_commit_sha" in attributes: # pragma no branch + assert attributes["merge_commit_sha"] is None or isinstance(attributes["merge_commit_sha"], (str, unicode)), attributes["merge_commit_sha"] + self._merge_commit_sha = attributes["merge_commit_sha"] if "mergeable" in attributes: # pragma no branch assert attributes["mergeable"] is None or isinstance(attributes["mergeable"], bool), attributes["mergeable"] self._mergeable = attributes["mergeable"] + if "mergeable_state" in attributes: # pragma no branch + assert attributes["mergeable_state"] is None or isinstance(attributes["mergeable_state"], (str, unicode)), attributes["mergeable_state"] + self._mergeable_state = attributes["mergeable_state"] if "merged" in attributes: # pragma no branch assert attributes["merged"] is None or isinstance(attributes["merged"], bool), attributes["merged"] self._merged = attributes["merged"] @@ -542,15 +617,24 @@ class PullRequest(github.GithubObject.CompletableGithubObject): if "merged_by" in attributes: # pragma no branch assert attributes["merged_by"] is None or isinstance(attributes["merged_by"], dict), attributes["merged_by"] self._merged_by = None if attributes["merged_by"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes["merged_by"], completed=False) + if "milestone" in attributes: # pragma no branch + assert attributes["milestone"] is None or isinstance(attributes["milestone"], dict), attributes["milestone"] + self._milestone = None if attributes["milestone"] is None else github.Milestone.Milestone(self._requester, self._headers, attributes["milestone"], completed=False) if "number" in attributes: # pragma no branch assert attributes["number"] is None or isinstance(attributes["number"], (int, long)), attributes["number"] self._number = attributes["number"] if "patch_url" in attributes: # pragma no branch assert attributes["patch_url"] is None or isinstance(attributes["patch_url"], (str, unicode)), attributes["patch_url"] self._patch_url = attributes["patch_url"] + if "review_comment_url" in attributes: # pragma no branch + assert attributes["review_comment_url"] is None or isinstance(attributes["review_comment_url"], (str, unicode)), attributes["review_comment_url"] + self._review_comment_url = attributes["review_comment_url"] if "review_comments" in attributes: # pragma no branch assert attributes["review_comments"] is None or isinstance(attributes["review_comments"], (int, long)), attributes["review_comments"] self._review_comments = attributes["review_comments"] + if "review_comments_url" in attributes: # pragma no branch + assert attributes["review_comments_url"] is None or isinstance(attributes["review_comments_url"], (str, unicode)), attributes["review_comments_url"] + self._review_comments_url = attributes["review_comments_url"] if "state" in attributes: # pragma no branch assert attributes["state"] is None or isinstance(attributes["state"], (str, unicode)), attributes["state"] self._state = attributes["state"] diff --git a/github/PullRequestComment.py b/github/PullRequestComment.py index 1e96426e..5ebd95dd 100644 --- a/github/PullRequestComment.py +++ b/github/PullRequestComment.py @@ -60,6 +60,14 @@ class PullRequestComment(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._created_at) return self._NoneIfNotSet(self._created_at) + @property + def diff_hunk(self): + """ + :type: string + """ + self._completeIfNotSet(self._diff_hunk) + return self._NoneIfNotSet(self._diff_hunk) + @property def id(self): """ @@ -100,6 +108,14 @@ class PullRequestComment(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._position) return self._NoneIfNotSet(self._position) + @property + def pull_request_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._pull_request_url) + return self._NoneIfNotSet(self._pull_request_url) + @property def updated_at(self): """ @@ -163,11 +179,13 @@ class PullRequestComment(github.GithubObject.CompletableGithubObject): self._body = github.GithubObject.NotSet self._commit_id = github.GithubObject.NotSet self._created_at = github.GithubObject.NotSet + self._diff_hunk = github.GithubObject.NotSet self._id = github.GithubObject.NotSet self._original_commit_id = github.GithubObject.NotSet self._original_position = github.GithubObject.NotSet self._path = github.GithubObject.NotSet self._position = github.GithubObject.NotSet + self._pull_request_url = github.GithubObject.NotSet self._updated_at = github.GithubObject.NotSet self._url = github.GithubObject.NotSet self._html_url = github.GithubObject.NotSet @@ -183,6 +201,9 @@ class PullRequestComment(github.GithubObject.CompletableGithubObject): if "created_at" in attributes: # pragma no branch assert attributes["created_at"] is None or isinstance(attributes["created_at"], (str, unicode)), attributes["created_at"] self._created_at = self._parseDatetime(attributes["created_at"]) + if "diff_hunk" in attributes: # pragma no branch + assert attributes["diff_hunk"] is None or isinstance(attributes["diff_hunk"], (str, unicode)), attributes["diff_hunk"] + self._diff_hunk = attributes["diff_hunk"] if "id" in attributes: # pragma no branch assert attributes["id"] is None or isinstance(attributes["id"], (int, long)), attributes["id"] self._id = attributes["id"] @@ -198,6 +219,9 @@ class PullRequestComment(github.GithubObject.CompletableGithubObject): if "position" in attributes: # pragma no branch assert attributes["position"] is None or isinstance(attributes["position"], (int, long)), attributes["position"] self._position = attributes["position"] + if "pull_request_url" in attributes: # pragma no branch + assert attributes["pull_request_url"] is None or isinstance(attributes["pull_request_url"], (str, unicode)), attributes["pull_request_url"] + self._pull_request_url = attributes["pull_request_url"] if "updated_at" in attributes: # pragma no branch assert attributes["updated_at"] is None or isinstance(attributes["updated_at"], (str, unicode)), attributes["updated_at"] self._updated_at = self._parseDatetime(attributes["updated_at"]) diff --git a/github/Repository.py b/github/Repository.py index 70d5e884..37d303bb 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -68,6 +68,38 @@ 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._NoneIfNotSet(self._archive_url) + + @property + def assignees_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._assignees_url) + return self._NoneIfNotSet(self._assignees_url) + + @property + def blobs_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._blobs_url) + return self._NoneIfNotSet(self._blobs_url) + + @property + def branches_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._branches_url) + return self._NoneIfNotSet(self._branches_url) + @property def clone_url(self): """ @@ -76,6 +108,54 @@ class Repository(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._clone_url) return self._NoneIfNotSet(self._clone_url) + @property + def collaborators_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._collaborators_url) + return self._NoneIfNotSet(self._collaborators_url) + + @property + def comments_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._comments_url) + return self._NoneIfNotSet(self._comments_url) + + @property + def commits_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._commits_url) + return self._NoneIfNotSet(self._commits_url) + + @property + def compare_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._compare_url) + return self._NoneIfNotSet(self._compare_url) + + @property + def contents_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._contents_url) + return self._NoneIfNotSet(self._contents_url) + + @property + def contributors_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._contributors_url) + return self._NoneIfNotSet(self._contributors_url) + @property def created_at(self): """ @@ -84,6 +164,14 @@ class Repository(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._created_at) return self._NoneIfNotSet(self._created_at) + @property + def default_branch(self): + """ + :type: string + """ + self._completeIfNotSet(self._default_branch) + return self._NoneIfNotSet(self._default_branch) + @property def description(self): """ @@ -92,6 +180,22 @@ class Repository(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._description) return self._NoneIfNotSet(self._description) + @property + def downloads_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._downloads_url) + return self._NoneIfNotSet(self._downloads_url) + + @property + def events_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._events_url) + return self._NoneIfNotSet(self._events_url) + @property def fork(self): """ @@ -108,6 +212,22 @@ class Repository(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._forks) return self._NoneIfNotSet(self._forks) + @property + def forks_count(self): + """ + :type: integer + """ + self._completeIfNotSet(self._forks_count) + return self._NoneIfNotSet(self._forks_count) + + @property + def forks_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._forks_url) + return self._NoneIfNotSet(self._forks_url) + @property def full_name(self): """ @@ -116,6 +236,30 @@ class Repository(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._full_name) return self._NoneIfNotSet(self._full_name) + @property + def git_commits_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._git_commits_url) + return self._NoneIfNotSet(self._git_commits_url) + + @property + def git_refs_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._git_refs_url) + return self._NoneIfNotSet(self._git_refs_url) + + @property + def git_tags_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._git_tags_url) + return self._NoneIfNotSet(self._git_tags_url) + @property def git_url(self): """ @@ -156,6 +300,14 @@ class Repository(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._homepage) return self._NoneIfNotSet(self._homepage) + @property + def hooks_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._hooks_url) + return self._NoneIfNotSet(self._hooks_url) + @property def html_url(self): """ @@ -172,6 +324,46 @@ class Repository(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._id) return self._NoneIfNotSet(self._id) + @property + def issue_comment_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._issue_comment_url) + return self._NoneIfNotSet(self._issue_comment_url) + + @property + def issue_events_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._issue_events_url) + return self._NoneIfNotSet(self._issue_events_url) + + @property + def issues_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._issues_url) + return self._NoneIfNotSet(self._issues_url) + + @property + def keys_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._keys_url) + return self._NoneIfNotSet(self._keys_url) + + @property + def labels_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._labels_url) + return self._NoneIfNotSet(self._labels_url) + @property def language(self): """ @@ -180,6 +372,14 @@ class Repository(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._language) return self._NoneIfNotSet(self._language) + @property + def languages_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._languages_url) + return self._NoneIfNotSet(self._languages_url) + @property def master_branch(self): """ @@ -188,6 +388,30 @@ class Repository(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._master_branch) return self._NoneIfNotSet(self._master_branch) + @property + def merges_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._merges_url) + return self._NoneIfNotSet(self._merges_url) + + @property + def milestones_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._milestones_url) + return self._NoneIfNotSet(self._milestones_url) + + @property + def mirror_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._mirror_url) + return self._NoneIfNotSet(self._mirror_url) + @property def name(self): """ @@ -196,6 +420,22 @@ class Repository(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._name) return self._NoneIfNotSet(self._name) + @property + def network_count(self): + """ + :type: integer + """ + self._completeIfNotSet(self._network_count) + return self._NoneIfNotSet(self._network_count) + + @property + def notifications_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._notifications_url) + return self._NoneIfNotSet(self._notifications_url) + @property def open_issues(self): """ @@ -204,6 +444,14 @@ class Repository(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._open_issues) return self._NoneIfNotSet(self._open_issues) + @property + def open_issues_count(self): + """ + :type: integer + """ + self._completeIfNotSet(self._open_issues_count) + return self._NoneIfNotSet(self._open_issues_count) + @property def organization(self): """ @@ -244,6 +492,14 @@ class Repository(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._private) return self._NoneIfNotSet(self._private) + @property + def pulls_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._pulls_url) + return self._NoneIfNotSet(self._pulls_url) + @property def pushed_at(self): """ @@ -276,6 +532,38 @@ class Repository(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._ssh_url) return self._NoneIfNotSet(self._ssh_url) + @property + def stargazers_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._stargazers_url) + return self._NoneIfNotSet(self._stargazers_url) + + @property + def statuses_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._statuses_url) + return self._NoneIfNotSet(self._statuses_url) + + @property + def subscribers_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._subscribers_url) + return self._NoneIfNotSet(self._subscribers_url) + + @property + def subscription_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._subscription_url) + return self._NoneIfNotSet(self._subscription_url) + @property def svn_url(self): """ @@ -284,6 +572,30 @@ class Repository(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._svn_url) return self._NoneIfNotSet(self._svn_url) + @property + def tags_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._tags_url) + return self._NoneIfNotSet(self._tags_url) + + @property + def teams_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._teams_url) + return self._NoneIfNotSet(self._teams_url) + + @property + def trees_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._trees_url) + return self._NoneIfNotSet(self._trees_url) + @property def updated_at(self): """ @@ -308,6 +620,14 @@ class Repository(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._watchers) return self._NoneIfNotSet(self._watchers) + @property + def watchers_count(self): + """ + :type: integer + """ + self._completeIfNotSet(self._watchers_count) + return self._NoneIfNotSet(self._watchers_count) + def add_to_collaborators(self, collaborator): """ :calls: `PUT /repos/:owner/:repo/collaborators/:user `_ @@ -1567,56 +1887,150 @@ class Repository(github.GithubObject.CompletableGithubObject): 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_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 + assert attributes["archive_url"] is None or isinstance(attributes["archive_url"], (str, unicode)), attributes["archive_url"] + self._archive_url = attributes["archive_url"] + if "assignees_url" in attributes: # pragma no branch + assert attributes["assignees_url"] is None or isinstance(attributes["assignees_url"], (str, unicode)), attributes["assignees_url"] + self._assignees_url = attributes["assignees_url"] + if "blobs_url" in attributes: # pragma no branch + assert attributes["blobs_url"] is None or isinstance(attributes["blobs_url"], (str, unicode)), attributes["blobs_url"] + self._blobs_url = attributes["blobs_url"] + if "branches_url" in attributes: # pragma no branch + assert attributes["branches_url"] is None or isinstance(attributes["branches_url"], (str, unicode)), attributes["branches_url"] + self._branches_url = attributes["branches_url"] if "clone_url" in attributes: # pragma no branch assert attributes["clone_url"] is None or isinstance(attributes["clone_url"], (str, unicode)), attributes["clone_url"] self._clone_url = attributes["clone_url"] + if "collaborators_url" in attributes: # pragma no branch + assert attributes["collaborators_url"] is None or isinstance(attributes["collaborators_url"], (str, unicode)), attributes["collaborators_url"] + self._collaborators_url = attributes["collaborators_url"] + if "comments_url" in attributes: # pragma no branch + assert attributes["comments_url"] is None or isinstance(attributes["comments_url"], (str, unicode)), attributes["comments_url"] + self._comments_url = attributes["comments_url"] + if "commits_url" in attributes: # pragma no branch + assert attributes["commits_url"] is None or isinstance(attributes["commits_url"], (str, unicode)), attributes["commits_url"] + self._commits_url = attributes["commits_url"] + if "compare_url" in attributes: # pragma no branch + assert attributes["compare_url"] is None or isinstance(attributes["compare_url"], (str, unicode)), attributes["compare_url"] + self._compare_url = attributes["compare_url"] + if "contents_url" in attributes: # pragma no branch + assert attributes["contents_url"] is None or isinstance(attributes["contents_url"], (str, unicode)), attributes["contents_url"] + self._contents_url = attributes["contents_url"] + if "contributors_url" in attributes: # pragma no branch + assert attributes["contributors_url"] is None or isinstance(attributes["contributors_url"], (str, unicode)), attributes["contributors_url"] + self._contributors_url = attributes["contributors_url"] if "created_at" in attributes: # pragma no branch assert attributes["created_at"] is None or isinstance(attributes["created_at"], (str, unicode)), attributes["created_at"] self._created_at = self._parseDatetime(attributes["created_at"]) + if "default_branch" in attributes: # pragma no branch + assert attributes["default_branch"] is None or isinstance(attributes["default_branch"], (str, unicode)), attributes["default_branch"] + self._default_branch = attributes["default_branch"] if "description" in attributes: # pragma no branch assert attributes["description"] is None or isinstance(attributes["description"], (str, unicode)), attributes["description"] self._description = attributes["description"] + if "downloads_url" in attributes: # pragma no branch + assert attributes["downloads_url"] is None or isinstance(attributes["downloads_url"], (str, unicode)), attributes["downloads_url"] + self._downloads_url = attributes["downloads_url"] + if "events_url" in attributes: # pragma no branch + assert attributes["events_url"] is None or isinstance(attributes["events_url"], (str, unicode)), attributes["events_url"] + self._events_url = attributes["events_url"] if "fork" in attributes: # pragma no branch assert attributes["fork"] is None or isinstance(attributes["fork"], bool), attributes["fork"] self._fork = attributes["fork"] if "forks" in attributes: # pragma no branch assert attributes["forks"] is None or isinstance(attributes["forks"], (int, long)), attributes["forks"] self._forks = attributes["forks"] + if "forks_count" in attributes: # pragma no branch + assert attributes["forks_count"] is None or isinstance(attributes["forks_count"], (int, long)), attributes["forks_count"] + self._forks_count = attributes["forks_count"] + if "forks_url" in attributes: # pragma no branch + assert attributes["forks_url"] is None or isinstance(attributes["forks_url"], (str, unicode)), attributes["forks_url"] + self._forks_url = attributes["forks_url"] if "full_name" in attributes: # pragma no branch assert attributes["full_name"] is None or isinstance(attributes["full_name"], (str, unicode)), attributes["full_name"] self._full_name = attributes["full_name"] + if "git_commits_url" in attributes: # pragma no branch + assert attributes["git_commits_url"] is None or isinstance(attributes["git_commits_url"], (str, unicode)), attributes["git_commits_url"] + self._git_commits_url = attributes["git_commits_url"] + if "git_refs_url" in attributes: # pragma no branch + assert attributes["git_refs_url"] is None or isinstance(attributes["git_refs_url"], (str, unicode)), attributes["git_refs_url"] + self._git_refs_url = attributes["git_refs_url"] + if "git_tags_url" in attributes: # pragma no branch + assert attributes["git_tags_url"] is None or isinstance(attributes["git_tags_url"], (str, unicode)), attributes["git_tags_url"] + self._git_tags_url = attributes["git_tags_url"] if "git_url" in attributes: # pragma no branch assert attributes["git_url"] is None or isinstance(attributes["git_url"], (str, unicode)), attributes["git_url"] self._git_url = attributes["git_url"] @@ -1632,24 +2046,63 @@ class Repository(github.GithubObject.CompletableGithubObject): if "homepage" in attributes: # pragma no branch assert attributes["homepage"] is None or isinstance(attributes["homepage"], (str, unicode)), attributes["homepage"] self._homepage = attributes["homepage"] + if "hooks_url" in attributes: # pragma no branch + assert attributes["hooks_url"] is None or isinstance(attributes["hooks_url"], (str, unicode)), attributes["hooks_url"] + self._hooks_url = attributes["hooks_url"] if "html_url" in attributes: # pragma no branch assert attributes["html_url"] is None or isinstance(attributes["html_url"], (str, unicode)), attributes["html_url"] self._html_url = attributes["html_url"] if "id" in attributes: # pragma no branch assert attributes["id"] is None or isinstance(attributes["id"], (int, long)), attributes["id"] self._id = attributes["id"] + if "issue_comment_url" in attributes: # pragma no branch + assert attributes["issue_comment_url"] is None or isinstance(attributes["issue_comment_url"], (str, unicode)), attributes["issue_comment_url"] + self._issue_comment_url = attributes["issue_comment_url"] + if "issue_events_url" in attributes: # pragma no branch + assert attributes["issue_events_url"] is None or isinstance(attributes["issue_events_url"], (str, unicode)), attributes["issue_events_url"] + self._issue_events_url = attributes["issue_events_url"] + if "issues_url" in attributes: # pragma no branch + assert attributes["issues_url"] is None or isinstance(attributes["issues_url"], (str, unicode)), attributes["issues_url"] + self._issues_url = attributes["issues_url"] + if "keys_url" in attributes: # pragma no branch + assert attributes["keys_url"] is None or isinstance(attributes["keys_url"], (str, unicode)), attributes["keys_url"] + self._keys_url = attributes["keys_url"] + if "labels_url" in attributes: # pragma no branch + assert attributes["labels_url"] is None or isinstance(attributes["labels_url"], (str, unicode)), attributes["labels_url"] + self._labels_url = attributes["labels_url"] if "language" in attributes: # pragma no branch assert attributes["language"] is None or isinstance(attributes["language"], (str, unicode)), attributes["language"] self._language = attributes["language"] + if "languages_url" in attributes: # pragma no branch + assert attributes["languages_url"] is None or isinstance(attributes["languages_url"], (str, unicode)), attributes["languages_url"] + self._languages_url = attributes["languages_url"] if "master_branch" in attributes: # pragma no branch assert attributes["master_branch"] is None or isinstance(attributes["master_branch"], (str, unicode)), attributes["master_branch"] self._master_branch = attributes["master_branch"] + if "merges_url" in attributes: # pragma no branch + assert attributes["merges_url"] is None or isinstance(attributes["merges_url"], (str, unicode)), attributes["merges_url"] + self._merges_url = attributes["merges_url"] + if "milestones_url" in attributes: # pragma no branch + assert attributes["milestones_url"] is None or isinstance(attributes["milestones_url"], (str, unicode)), attributes["milestones_url"] + self._milestones_url = attributes["milestones_url"] + if "mirror_url" in attributes: # pragma no branch + assert attributes["mirror_url"] is None or isinstance(attributes["mirror_url"], (str, unicode)), attributes["mirror_url"] + self._mirror_url = attributes["mirror_url"] if "name" in attributes: # pragma no branch assert attributes["name"] is None or isinstance(attributes["name"], (str, unicode)), attributes["name"] self._name = attributes["name"] + if "network_count" in attributes: # pragma no branch + assert attributes["network_count"] is None or isinstance(attributes["network_count"], (int, long)), attributes["network_count"] + self._network_count = attributes["network_count"] + if "notifications_url" in attributes: # pragma no branch + assert attributes["notifications_url"] is None or isinstance(attributes["notifications_url"], (str, unicode)), attributes["notifications_url"] + self._notifications_url = attributes["notifications_url"] if "open_issues" in attributes: # pragma no branch assert attributes["open_issues"] is None or isinstance(attributes["open_issues"], (int, long)), attributes["open_issues"] self._open_issues = attributes["open_issues"] + if "open_issues_count" in attributes: # pragma no branch + assert attributes["open_issues_count"] is None or isinstance(attributes["open_issues_count"], (int, long)), attributes["open_issues_count"] + self._open_issues_count = attributes["open_issues_count"] if "organization" in attributes: # pragma no branch assert attributes["organization"] is None or isinstance(attributes["organization"], dict), attributes["organization"] self._organization = None if attributes["organization"] is None else github.Organization.Organization(self._requester, self._headers, attributes["organization"], completed=False) @@ -1665,6 +2118,9 @@ class Repository(github.GithubObject.CompletableGithubObject): if "private" in attributes: # pragma no branch assert attributes["private"] is None or isinstance(attributes["private"], bool), attributes["private"] self._private = attributes["private"] + if "pulls_url" in attributes: # pragma no branch + assert attributes["pulls_url"] is None or isinstance(attributes["pulls_url"], (str, unicode)), attributes["pulls_url"] + self._pulls_url = attributes["pulls_url"] if "pushed_at" in attributes: # pragma no branch assert attributes["pushed_at"] is None or isinstance(attributes["pushed_at"], (str, unicode)), attributes["pushed_at"] self._pushed_at = self._parseDatetime(attributes["pushed_at"]) @@ -1677,9 +2133,30 @@ class Repository(github.GithubObject.CompletableGithubObject): if "ssh_url" in attributes: # pragma no branch assert attributes["ssh_url"] is None or isinstance(attributes["ssh_url"], (str, unicode)), attributes["ssh_url"] self._ssh_url = attributes["ssh_url"] + if "stargazers_url" in attributes: # pragma no branch + assert attributes["stargazers_url"] is None or isinstance(attributes["stargazers_url"], (str, unicode)), attributes["stargazers_url"] + self._stargazers_url = attributes["stargazers_url"] + if "statuses_url" in attributes: # pragma no branch + assert attributes["statuses_url"] is None or isinstance(attributes["statuses_url"], (str, unicode)), attributes["statuses_url"] + self._statuses_url = attributes["statuses_url"] + if "subscribers_url" in attributes: # pragma no branch + assert attributes["subscribers_url"] is None or isinstance(attributes["subscribers_url"], (str, unicode)), attributes["subscribers_url"] + self._subscribers_url = attributes["subscribers_url"] + if "subscription_url" in attributes: # pragma no branch + assert attributes["subscription_url"] is None or isinstance(attributes["subscription_url"], (str, unicode)), attributes["subscription_url"] + self._subscription_url = attributes["subscription_url"] if "svn_url" in attributes: # pragma no branch assert attributes["svn_url"] is None or isinstance(attributes["svn_url"], (str, unicode)), attributes["svn_url"] self._svn_url = attributes["svn_url"] + if "tags_url" in attributes: # pragma no branch + assert attributes["tags_url"] is None or isinstance(attributes["tags_url"], (str, unicode)), attributes["tags_url"] + self._tags_url = attributes["tags_url"] + if "teams_url" in attributes: # pragma no branch + assert attributes["teams_url"] is None or isinstance(attributes["teams_url"], (str, unicode)), attributes["teams_url"] + self._teams_url = attributes["teams_url"] + if "trees_url" in attributes: # pragma no branch + assert attributes["trees_url"] is None or isinstance(attributes["trees_url"], (str, unicode)), attributes["trees_url"] + self._trees_url = attributes["trees_url"] if "updated_at" in attributes: # pragma no branch assert attributes["updated_at"] is None or isinstance(attributes["updated_at"], (str, unicode)), attributes["updated_at"] self._updated_at = self._parseDatetime(attributes["updated_at"]) @@ -1689,3 +2166,6 @@ class Repository(github.GithubObject.CompletableGithubObject): if "watchers" in attributes: # pragma no branch assert attributes["watchers"] is None or isinstance(attributes["watchers"], (int, long)), attributes["watchers"] self._watchers = attributes["watchers"] + if "watchers_count" in attributes: # pragma no branch + assert attributes["watchers_count"] is None or isinstance(attributes["watchers_count"], (int, long)), attributes["watchers_count"] + self._watchers_count = attributes["watchers_count"] diff --git a/github/Team.py b/github/Team.py index 9b687d80..c3c2abbf 100644 --- a/github/Team.py +++ b/github/Team.py @@ -53,6 +53,14 @@ class Team(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._members_count) return self._NoneIfNotSet(self._members_count) + @property + def members_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._members_url) + return self._NoneIfNotSet(self._members_url) + @property def name(self): """ @@ -77,6 +85,22 @@ class Team(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._repos_count) return self._NoneIfNotSet(self._repos_count) + @property + def repositories_url(self): + """ + :type: string + """ + self._completeIfNotSet(self._repositories_url) + return self._NoneIfNotSet(self._repositories_url) + + @property + def slug(self): + """ + :type: string + """ + self._completeIfNotSet(self._slug) + return self._NoneIfNotSet(self._slug) + @property def url(self): """ @@ -221,9 +245,12 @@ class Team(github.GithubObject.CompletableGithubObject): def _initAttributes(self): self._id = github.GithubObject.NotSet self._members_count = github.GithubObject.NotSet + self._members_url = github.GithubObject.NotSet self._name = github.GithubObject.NotSet self._permission = github.GithubObject.NotSet self._repos_count = github.GithubObject.NotSet + self._repositories_url = github.GithubObject.NotSet + self._slug = github.GithubObject.NotSet self._url = github.GithubObject.NotSet def _useAttributes(self, attributes): @@ -233,6 +260,9 @@ class Team(github.GithubObject.CompletableGithubObject): if "members_count" in attributes: # pragma no branch assert attributes["members_count"] is None or isinstance(attributes["members_count"], (int, long)), attributes["members_count"] self._members_count = attributes["members_count"] + if "members_url" in attributes: # pragma no branch + assert attributes["members_url"] is None or isinstance(attributes["members_url"], (str, unicode)), attributes["members_url"] + self._members_url = attributes["members_url"] if "name" in attributes: # pragma no branch assert attributes["name"] is None or isinstance(attributes["name"], (str, unicode)), attributes["name"] self._name = attributes["name"] @@ -242,6 +272,12 @@ class Team(github.GithubObject.CompletableGithubObject): if "repos_count" in attributes: # pragma no branch assert attributes["repos_count"] is None or isinstance(attributes["repos_count"], (int, long)), attributes["repos_count"] self._repos_count = attributes["repos_count"] + if "repositories_url" in attributes: # pragma no branch + assert attributes["repositories_url"] is None or isinstance(attributes["repositories_url"], (str, unicode)), attributes["repositories_url"] + self._repositories_url = attributes["repositories_url"] + if "slug" in attributes: # pragma no branch + assert attributes["slug"] is None or isinstance(attributes["slug"], (str, unicode)), attributes["slug"] + self._slug = attributes["slug"] if "url" in attributes: # pragma no branch assert attributes["url"] is None or isinstance(attributes["url"], (str, unicode)), attributes["url"] self._url = attributes["url"] diff --git a/github/tests/AllTests.py b/github/tests/AllTests.py index 9277747f..f2f5c54b 100644 --- a/github/tests/AllTests.py +++ b/github/tests/AllTests.py @@ -69,6 +69,7 @@ from Logging_ import * from RawData import * from ConditionalRequestUpdate import * from Persistence import * +from ExposeAllAttributes import * from Issue33 import * from Issue50 import * diff --git a/github/tests/ExposeAllAttributes.py b/github/tests/ExposeAllAttributes.py new file mode 100644 index 00000000..42cbc0af --- /dev/null +++ b/github/tests/ExposeAllAttributes.py @@ -0,0 +1,160 @@ +# -*- coding: utf-8 -*- + +############################ Copyrights and license ############################ +# # +# Copyright 2013 Vincent Jacques # +# # +# 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 . # +# # +################################################################################ + +import Framework + + +class ExposeAllAttributes(Framework.TestCase): + def testAllClasses(self): + authenticatedUser = self.g.get_user() + namedUser = self.g.get_user("nvie") + repository = authenticatedUser.get_repo("PyGithub") + organization = self.g.get_organization("BeaverSoftware") + plan = authenticatedUser.plan + branch = repository.get_branch("master") + commit = repository.get_commit("1292bf0e22c796e91cc3d6e24b544aece8c21f2a") + commitStats = commit.stats + commitStatus = commit.get_statuses()[0] + milestone = repository.get_milestone(17) + gist = self.g.get_gist("149016") + gistComment = gist.get_comment(4565) + gistFile = gist.files[".gitignore"] + gistHistoryState = gist.history[0] + gitCommit = repository.get_git_commit("be37b8a7f3a68631c32672dcd84d9eba27438ee6") + gitAuthor = gitCommit.author + gitTree = repository.get_git_tree("6f7c2d8c66d78863f7b91792deaead619799a1ce") + gitTreeElement = gitTree.tree[0] + gitBlob = repository.get_git_blob("681fb61f1761743a02f5c790f1c762cbfe8cfad1") + gitRef = repository.get_git_ref("tags/v1.17.0") + gitObject = gitRef.object + issue = repository.get_issue(188) + issueComment = issue.get_comment(22686536) + issueEvent = issue.get_events()[0] + issuePullRequest = issue.pull_request + gitignoreTemplate = self.g.get_gitignore_template("Python") + team = organization.get_team(141487) + label = repository.get_label("Bug") + pullRequest = repository.get_pull(31) + pullRequestComment = pullRequest.get_review_comment(1580134) + pullRequestPart = pullRequest.base + file = pullRequest.get_files()[0] + commitComment = repository.get_comment(3630301) + status = self.g.get_api_status() + statusMessage = self.g.get_last_api_status_message() + rateLimit = self.g.get_rate_limit() + rate = rateLimit.rate + hook = repository.get_hooks()[0] + hookResponse = hook.last_response + hookDescription = self.g.get_hooks()[0] + comparison = repository.compare("master", "develop") + contentFile = repository.get_file_contents("README.rst") + permissions = repository.permissions + event = repository.get_events()[0] + notification = authenticatedUser.get_notification("8406712") + notificationSubject = notification.subject + + missingAttributes = self.gatherMissingAttributes([ + authenticatedUser, + # authorization, # Security issue if put as-is in ReplayData + # authorizationApplication, # Security issue if put as-is in ReplayData + branch, + commit, + commitComment, + commitStats, + commitStatus, + comparison, + contentFile, + # download, # Deprecated: https://github.com/blog/1302-goodbye-uploads + event, + file, + gist, + gistComment, + gistFile, + gistHistoryState, + gitAuthor, + gitBlob, + gitCommit, + gitignoreTemplate, + gitObject, + gitRef, + # gitTag, + gitTree, + gitTreeElement, + hook, + hookDescription, + hookResponse, + issue, + issueComment, + issueEvent, + issuePullRequest, + label, + milestone, + namedUser, + notification, + notificationSubject, + organization, + permissions, + plan, + pullRequest, + pullRequestComment, + # pullRequestMergeStatus, # Only obtained when merging a pull request through the API + pullRequestPart, + rate, + rateLimit, + repository, + # repositoryKey, # Security issue if put as-is in ReplayData + status, + statusMessage, + # tag, + team, + # userKey, # Security issue if put as-is in ReplayData + ]) + + for className, attributesMissingInClass in sorted(missingAttributes.iteritems()): + for attrName, value in sorted(attributesMissingInClass.iteritems()): + print className, attrName, "->", repr(value) + + self.assertEqual(sum(len(attrs) for attrs in missingAttributes.values()), 0) + + def findMissingAttributes(self, obj): + if hasattr(obj, "update"): + obj.update() + className = obj.__class__.__name__ + missingAttributes = {} + for attribute in obj.raw_data: + if attribute != "_links": + if not hasattr(obj, attribute): + missingAttributes[attribute] = obj.raw_data[attribute] + return (className, missingAttributes) + + def gatherMissingAttributes(self, objs): + allMissingAttributes = dict() + + for obj in objs: + className, attributesMissingInClass = self.findMissingAttributes(obj) + if len(attributesMissingInClass) > 0: + if className not in allMissingAttributes: + allMissingAttributes[className] = dict() + allMissingAttributes[className].update(attributesMissingInClass) + + return allMissingAttributes diff --git a/github/tests/ReplayData/ExposeAllAttributes.testAllClasses.txt b/github/tests/ReplayData/ExposeAllAttributes.testAllClasses.txt new file mode 100644 index 00000000..0dd9860c --- /dev/null +++ b/github/tests/ReplayData/ExposeAllAttributes.testAllClasses.txt @@ -0,0 +1,660 @@ +https +GET +api.github.com +None +/users/nvie +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4896'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '8af842fb-ea9b-4237-bb36-ba65ee012cca'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '1218'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 13:38:58 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"ded215d39a497c6d2de00dd5e5a5deb6"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:00 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"login":"nvie","id":83844,"avatar_url":"https://1.gravatar.com/avatar/466ef7561a0b100dc5a1021959962d28?d=https%3A%2F%2Fidenticons.github.com%2Fe6d0513ce49cc06cb956251623cb8fd9.png","gravatar_id":"466ef7561a0b100dc5a1021959962d28","url":"https://api.github.com/users/nvie","html_url":"https://github.com/nvie","followers_url":"https://api.github.com/users/nvie/followers","following_url":"https://api.github.com/users/nvie/following{/other_user}","gists_url":"https://api.github.com/users/nvie/gists{/gist_id}","starred_url":"https://api.github.com/users/nvie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nvie/subscriptions","organizations_url":"https://api.github.com/users/nvie/orgs","repos_url":"https://api.github.com/users/nvie/repos","events_url":"https://api.github.com/users/nvie/events{/privacy}","received_events_url":"https://api.github.com/users/nvie/received_events","type":"User","name":"Vincent Driessen","company":"3rd Cloud","blog":"http://nvie.com","location":"Netherlands","email":"vincent@3rdcloud.com","hireable":true,"bio":null,"public_repos":87,"followers":542,"following":45,"created_at":"2009-05-12T21:19:38Z","updated_at":"2013-09-06T13:38:58Z","public_gists":38} + +https +GET +api.github.com +None +/user +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4895'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', 'bd7ef47e-9e8f-47b2-8367-f5d1185f675d'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '1471'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:51:22 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"654d1a29abe3a61b096e8bffbc61c162"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:01 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"login":"jacquev6","id":327146,"avatar_url":"https://1.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User","name":"Vincent Jacques","company":"","blog":"http://vincent-jacques.net","location":"Paris, France","email":"vincent@vincent-jacques.net","hireable":false,"bio":"","public_repos":17,"followers":28,"following":40,"created_at":"2010-07-09T06:10:06Z","updated_at":"2013-09-06T12:51:22Z","public_gists":5,"total_private_repos":4,"owned_private_repos":4,"disk_usage":19212,"collaborators":1,"plan":{"name":"micro","space":614400,"collaborators":1,"private_repos":5},"private_gists":6,"site_admin":false} + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4894'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '8834e1c1-f4f5-4da8-a92e-4b985517e4fd'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '4644'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:41:05 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"feb5059cac897bdd13fd1205785f865c"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:02 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"id":3544490,"name":"PyGithub","full_name":"jacquev6/PyGithub","owner":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"private":false,"html_url":"https://github.com/jacquev6/PyGithub","description":"Python library implementing the full Github API v3","fork":false,"url":"https://api.github.com/repos/jacquev6/PyGithub","forks_url":"https://api.github.com/repos/jacquev6/PyGithub/forks","keys_url":"https://api.github.com/repos/jacquev6/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jacquev6/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jacquev6/PyGithub/teams","hooks_url":"https://api.github.com/repos/jacquev6/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/jacquev6/PyGithub/events","assignees_url":"https://api.github.com/repos/jacquev6/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/jacquev6/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/jacquev6/PyGithub/tags","blobs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jacquev6/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jacquev6/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/jacquev6/PyGithub/languages","stargazers_url":"https://api.github.com/repos/jacquev6/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/jacquev6/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/jacquev6/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/jacquev6/PyGithub/subscription","commits_url":"https://api.github.com/repos/jacquev6/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/{number}","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/jacquev6/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jacquev6/PyGithub/merges","archive_url":"https://api.github.com/repos/jacquev6/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jacquev6/PyGithub/downloads","issues_url":"https://api.github.com/repos/jacquev6/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/jacquev6/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/jacquev6/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/labels{/name}","created_at":"2012-02-25T12:53:47Z","updated_at":"2013-09-06T12:41:05Z","pushed_at":"2013-09-06T12:41:05Z","git_url":"git://github.com/jacquev6/PyGithub.git","ssh_url":"git@github.com:jacquev6/PyGithub.git","clone_url":"https://github.com/jacquev6/PyGithub.git","svn_url":"https://github.com/jacquev6/PyGithub","homepage":"http://jacquev6.github.com/PyGithub","size":820,"watchers_count":256,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"forks_count":76,"mirror_url":null,"open_issues_count":15,"forks":76,"open_issues":15,"watchers":256,"master_branch":"master","default_branch":"master","permissions":{"admin":true,"push":true,"pull":true},"network_count":76} + +https +GET +api.github.com +None +/orgs/BeaverSoftware +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4893'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', 'aadd8ce1-31df-4c38-b3d9-33ba75cfaf08'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '1030'), ('server', 'GitHub.com'), ('last-modified', 'Wed, 23 Jan 2013 12:15:22 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"99d8ce990ccf1acbb3508bd20d9883e4"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:03 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"login":"BeaverSoftware","id":1424031,"url":"https://api.github.com/orgs/BeaverSoftware","repos_url":"https://api.github.com/orgs/BeaverSoftware/repos","events_url":"https://api.github.com/orgs/BeaverSoftware/events","members_url":"https://api.github.com/orgs/BeaverSoftware/members{/member}","public_members_url":"https://api.github.com/orgs/BeaverSoftware/public_members{/member}","avatar_url":"https://0.gravatar.com/avatar/d563e337cac2fdc644e2aaaad1e23266?d=https%3A%2F%2Fidenticons.github.com%2Fde8dec416975d0a85845b1b88385b9d5.png","name":null,"company":null,"blog":null,"location":"Paris, France","email":null,"public_repos":1,"public_gists":0,"followers":0,"following":0,"html_url":"https://github.com/BeaverSoftware","created_at":"2012-02-09T19:20:12Z","updated_at":"2013-01-23T12:15:22Z","type":"Organization","total_private_repos":0,"owned_private_repos":0,"private_gists":0,"disk_usage":84,"collaborators":0,"billing_email":"BeaverSoftware@vincent-jacques.net","plan":{"name":"free","space":307200,"private_repos":0}} + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/branches/master +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4892'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '43800e7e-e879-402b-8701-255c06ec7c33'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('content-length', '3317'), ('server', 'GitHub.com'), ('x-ratelimit-limit', '5000'), ('etag', '"4363de8c7d91e18a17cec5a495ab091a"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:04 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"name":"master","commit":{"sha":"ed781f8b1b96e1d2a342d36ca53114ea28862fa8","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-21T16:39:22Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-21T16:39:22Z"},"message":"Fix date of 1.18.0","tree":{"sha":"e90c43164378222f04883c0f6547102df818d1ef","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/e90c43164378222f04883c0f6547102df818d1ef"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/ed781f8b1b96e1d2a342d36ca53114ea28862fa8","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ed781f8b1b96e1d2a342d36ca53114ea28862fa8","html_url":"https://github.com/jacquev6/PyGithub/commit/ed781f8b1b96e1d2a342d36ca53114ea28862fa8","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ed781f8b1b96e1d2a342d36ca53114ea28862fa8/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://1.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://1.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"2c4e3cbc24581c214f44682bfc3e7f438bae127a","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/2c4e3cbc24581c214f44682bfc3e7f438bae127a","html_url":"https://github.com/jacquev6/PyGithub/commit/2c4e3cbc24581c214f44682bfc3e7f438bae127a"}]},"_links":{"self":"https://api.github.com/repos/jacquev6/PyGithub/branches/master","html":"https://github.com/jacquev6/PyGithub/tree/master"}} + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/commits/1292bf0e22c796e91cc3d6e24b544aece8c21f2a +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4891'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '223c6b24-a4ca-4539-8d78-38adeb061554'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '5275'), ('server', 'GitHub.com'), ('last-modified', 'Wed, 09 May 2012 16:22:33 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"91582e2dc24ad5461e61062c01b32969"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:05 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"sha":"1292bf0e22c796e91cc3d6e24b544aece8c21f2a","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2012-05-09T16:22:33Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2012-05-09T16:22:33Z"},"message":"Remove completion functions from GitAuthor","tree":{"sha":"4c6bd50994f0f9823f898b1c6c964ad7d4fa11ab","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/4c6bd50994f0f9823f898b1c6c964ad7d4fa11ab"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/1292bf0e22c796e91cc3d6e24b544aece8c21f2a","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1292bf0e22c796e91cc3d6e24b544aece8c21f2a","html_url":"https://github.com/jacquev6/PyGithub/commit/1292bf0e22c796e91cc3d6e24b544aece8c21f2a","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1292bf0e22c796e91cc3d6e24b544aece8c21f2a/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"b46ed0dfde5ad02d3b91eb54a41c5ed960710eae","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/b46ed0dfde5ad02d3b91eb54a41c5ed960710eae","html_url":"https://github.com/jacquev6/PyGithub/commit/b46ed0dfde5ad02d3b91eb54a41c5ed960710eae"}],"stats":{"total":20,"additions":0,"deletions":20},"files":[{"sha":"ca6a3c616fc1367b6d01d04a7cf6ee27cf216f26","filename":"github/GithubObjects/GitAuthor.py","status":"modified","additions":0,"deletions":20,"changes":20,"blob_url":"https://github.com/jacquev6/PyGithub/blob/1292bf0e22c796e91cc3d6e24b544aece8c21f2a/github/GithubObjects/GitAuthor.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/1292bf0e22c796e91cc3d6e24b544aece8c21f2a/github/GithubObjects/GitAuthor.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/GithubObjects/GitAuthor.py?ref=1292bf0e22c796e91cc3d6e24b544aece8c21f2a","patch":"@@ -14,22 +14,17 @@ def __init__( self, requester, attributes, lazy ):\n self.__completed = False\n self.__initAttributes()\n self.__useAttributes( attributes )\n- if not lazy:\n- self.__complete()\n \n @property\n def date( self ):\n- self.__completeIfNeeded( self.__date )\n return self.__date\n \n @property\n def email( self ):\n- self.__completeIfNeeded( self.__email )\n return self.__email\n \n @property\n def name( self ):\n- self.__completeIfNeeded( self.__name )\n return self.__name\n \n def __initAttributes( self ):\n@@ -37,21 +32,6 @@ def __initAttributes( self ):\n self.__email = None\n self.__name = None\n \n- def __completeIfNeeded( self, testedAttribute ):\n- if not self.__completed and testedAttribute is None:\n- self.__complete()\n-\n- # @todo Do not generate __complete if type has no url attribute\n- def __complete( self ):\n- status, headers, data = self.__requester.request(\n- \"GET\",\n- self.__url,\n- None,\n- None\n- )\n- self.__useAttributes( data )\n- self.__completed = True\n-\n def __useAttributes( self, attributes ):\n #@todo No need to check if attribute is in attributes when attribute is mandatory\n if \"date\" in attributes and attributes[ \"date\" ] is not None:"}]} + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/statuses/1292bf0e22c796e91cc3d6e24b544aece8c21f2a +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4890'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', 'bfc3ae14-6a54-4607-9d33-e51833d38736'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('content-length', '2539'), ('server', 'GitHub.com'), ('x-ratelimit-limit', '5000'), ('etag', '"97c44c9e1c063b88767ef99e812a077b"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:06 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +[{"url":"https://api.github.com/repos/jacquev6/PyGithub/statuses/1292bf0e22c796e91cc3d6e24b544aece8c21f2a","id":277040,"state":"success","description":"Status successfuly created by PyGithub","target_url":"https://github.com/jacquev6/PyGithub/issues/67","creator":{"login":"jacquev6","id":327146,"avatar_url":"https://1.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"created_at":"2012-09-08T11:30:56Z","updated_at":"2012-09-08T11:30:56Z"},{"url":"https://api.github.com/repos/jacquev6/PyGithub/statuses/1292bf0e22c796e91cc3d6e24b544aece8c21f2a","id":277031,"state":"pending","description":null,"target_url":null,"creator":{"login":"jacquev6","id":327146,"avatar_url":"https://1.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"created_at":"2012-09-08T11:27:12Z","updated_at":"2012-09-08T11:27:12Z"}] + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/milestones/17 +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4889'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '77d21e66-086b-4a25-a708-948a4c057bf8'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '1338'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:51:22 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"654d1a29abe3a61b096e8bffbc61c162"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:08 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/17","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/17/labels","id":215837,"number":17,"title":"Version 1.9.1","description":"","creator":{"login":"jacquev6","id":327146,"avatar_url":"https://1.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"open_issues":0,"closed_issues":2,"state":"closed","created_at":"2012-11-20T07:36:46Z","updated_at":"2012-11-20T18:42:30Z","due_on":null} + +https +GET +api.github.com +None +/gists/149016 +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4888'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '9a8fb974-29df-453c-a56c-0da8b8ce072c'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '32105'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 13:04:59 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"1aaa6053c05e25abbc1703b90bd409b9"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:09 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"url":"https://api.github.com/gists/149016","forks_url":"https://api.github.com/gists/149016/forks","commits_url":"https://api.github.com/gists/149016/commits","id":"149016","git_pull_url":"https://gist.github.com/149016.git","git_push_url":"https://gist.github.com/149016.git","html_url":"https://gist.github.com/149016","files":{".gitignore":{"filename":".gitignore","type":"text/plain","language":null,"raw_url":"https://gist.github.com/raw/149016/e056704ebab0fbcd7bf937169b4057d378d09cf8/.gitignore","size":145,"content":"*.aux\n*.glo\n*.idx\n*.log\n*.toc\n*.ist\n*.acn\n*.acr\n*.alg\n*.bbl\n*.blg\n*.dvi\n*.glg\n*.gls\n*.ilg\n*.ind\n*.lof\n*.lot\n*.maf\n*.mtc\n*.mtc1\n*.out\n*.synctex.gz"}},"public":true,"created_at":"2009-07-17T11:37:42Z","updated_at":"2013-09-06T13:04:59Z","description":"Git: .gitignore file for LaTeX projects","comments":18,"user":{"login":"kogakure","id":5535,"avatar_url":"https://0.gravatar.com/avatar/b53f98d49e275e8387897de02c92288d?d=https%3A%2F%2Fidenticons.github.com%2F7ec69dd44416c46745f6edd947b470cd.png","gravatar_id":"b53f98d49e275e8387897de02c92288d","url":"https://api.github.com/users/kogakure","html_url":"https://github.com/kogakure","followers_url":"https://api.github.com/users/kogakure/followers","following_url":"https://api.github.com/users/kogakure/following{/other_user}","gists_url":"https://api.github.com/users/kogakure/gists{/gist_id}","starred_url":"https://api.github.com/users/kogakure/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kogakure/subscriptions","organizations_url":"https://api.github.com/users/kogakure/orgs","repos_url":"https://api.github.com/users/kogakure/repos","events_url":"https://api.github.com/users/kogakure/events{/privacy}","received_events_url":"https://api.github.com/users/kogakure/received_events","type":"User"},"comments_url":"https://api.github.com/gists/149016/comments","forks":[{"url":"https://api.github.com/gists/452042","user":{"login":"cflewis","id":43708,"avatar_url":"https://2.gravatar.com/avatar/5f986018993d9f078927fe29ee912cf2?d=https%3A%2F%2Fidenticons.github.com%2F287915711d06ce6d90e2c18e1d89d3a6.png","gravatar_id":"5f986018993d9f078927fe29ee912cf2","url":"https://api.github.com/users/cflewis","html_url":"https://github.com/cflewis","followers_url":"https://api.github.com/users/cflewis/followers","following_url":"https://api.github.com/users/cflewis/following{/other_user}","gists_url":"https://api.github.com/users/cflewis/gists{/gist_id}","starred_url":"https://api.github.com/users/cflewis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cflewis/subscriptions","organizations_url":"https://api.github.com/users/cflewis/orgs","repos_url":"https://api.github.com/users/cflewis/repos","events_url":"https://api.github.com/users/cflewis/events{/privacy}","received_events_url":"https://api.github.com/users/cflewis/received_events","type":"User"},"id":"452042","created_at":"2010-06-24T21:51:00Z","updated_at":"2010-06-24T21:51:25Z"},{"url":"https://api.github.com/gists/871983","user":{"login":"rbochet","id":56806,"avatar_url":"https://2.gravatar.com/avatar/54925726f7c3a2b76028718eddb8522a?d=https%3A%2F%2Fidenticons.github.com%2F8818556ce6ba4bc9302dca9ec1979591.png","gravatar_id":"54925726f7c3a2b76028718eddb8522a","url":"https://api.github.com/users/rbochet","html_url":"https://github.com/rbochet","followers_url":"https://api.github.com/users/rbochet/followers","following_url":"https://api.github.com/users/rbochet/following{/other_user}","gists_url":"https://api.github.com/users/rbochet/gists{/gist_id}","starred_url":"https://api.github.com/users/rbochet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rbochet/subscriptions","organizations_url":"https://api.github.com/users/rbochet/orgs","repos_url":"https://api.github.com/users/rbochet/repos","events_url":"https://api.github.com/users/rbochet/events{/privacy}","received_events_url":"https://api.github.com/users/rbochet/received_events","type":"User"},"id":"871983","created_at":"2011-03-16T03:48:24Z","updated_at":"2013-08-16T00:46:15Z"},{"url":"https://api.github.com/gists/980414","user":{"login":"j10","id":250070,"avatar_url":"https://0.gravatar.com/avatar/7eb0a4d397a695f7fd15069a4f24ad44?d=https%3A%2F%2Fidenticons.github.com%2F6019c728e12af5d048c3d2decb9800cd.png","gravatar_id":"7eb0a4d397a695f7fd15069a4f24ad44","url":"https://api.github.com/users/j10","html_url":"https://github.com/j10","followers_url":"https://api.github.com/users/j10/followers","following_url":"https://api.github.com/users/j10/following{/other_user}","gists_url":"https://api.github.com/users/j10/gists{/gist_id}","starred_url":"https://api.github.com/users/j10/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/j10/subscriptions","organizations_url":"https://api.github.com/users/j10/orgs","repos_url":"https://api.github.com/users/j10/repos","events_url":"https://api.github.com/users/j10/events{/privacy}","received_events_url":"https://api.github.com/users/j10/received_events","type":"User"},"id":"980414","created_at":"2011-05-19T08:43:14Z","updated_at":"2011-05-19T08:43:20Z"},{"url":"https://api.github.com/gists/1404741","user":{"login":"Vaguery","id":81171,"avatar_url":"https://0.gravatar.com/avatar/db04d40ecceb0a4c0683a60462d11794?d=https%3A%2F%2Fidenticons.github.com%2Fc3ea21d464d21b7bf62431791ec01b78.png","gravatar_id":"db04d40ecceb0a4c0683a60462d11794","url":"https://api.github.com/users/Vaguery","html_url":"https://github.com/Vaguery","followers_url":"https://api.github.com/users/Vaguery/followers","following_url":"https://api.github.com/users/Vaguery/following{/other_user}","gists_url":"https://api.github.com/users/Vaguery/gists{/gist_id}","starred_url":"https://api.github.com/users/Vaguery/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Vaguery/subscriptions","organizations_url":"https://api.github.com/users/Vaguery/orgs","repos_url":"https://api.github.com/users/Vaguery/repos","events_url":"https://api.github.com/users/Vaguery/events{/privacy}","received_events_url":"https://api.github.com/users/Vaguery/received_events","type":"User"},"id":"1404741","created_at":"2011-11-29T13:05:35Z","updated_at":"2011-11-29T13:05:35Z"},{"url":"https://api.github.com/gists/1422904","user":{"login":"phieber","id":1208351,"avatar_url":"https://1.gravatar.com/avatar/e2f846ae903d79fa8750763d0809cab5?d=https%3A%2F%2Fidenticons.github.com%2F09c10f8d5454910d48c67ff6081e8601.png","gravatar_id":"e2f846ae903d79fa8750763d0809cab5","url":"https://api.github.com/users/phieber","html_url":"https://github.com/phieber","followers_url":"https://api.github.com/users/phieber/followers","following_url":"https://api.github.com/users/phieber/following{/other_user}","gists_url":"https://api.github.com/users/phieber/gists{/gist_id}","starred_url":"https://api.github.com/users/phieber/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/phieber/subscriptions","organizations_url":"https://api.github.com/users/phieber/orgs","repos_url":"https://api.github.com/users/phieber/repos","events_url":"https://api.github.com/users/phieber/events{/privacy}","received_events_url":"https://api.github.com/users/phieber/received_events","type":"User"},"id":"1422904","created_at":"2011-12-02T11:25:46Z","updated_at":"2011-12-02T11:25:46Z"},{"url":"https://api.github.com/gists/1585783","user":{"login":"pbroschwitz","id":92129,"avatar_url":"https://1.gravatar.com/avatar/68e33f71f778ec322d68ca15ef2a7315?d=https%3A%2F%2Fidenticons.github.com%2F8417990ede5b8e7dc3295d4dd63e4062.png","gravatar_id":"68e33f71f778ec322d68ca15ef2a7315","url":"https://api.github.com/users/pbroschwitz","html_url":"https://github.com/pbroschwitz","followers_url":"https://api.github.com/users/pbroschwitz/followers","following_url":"https://api.github.com/users/pbroschwitz/following{/other_user}","gists_url":"https://api.github.com/users/pbroschwitz/gists{/gist_id}","starred_url":"https://api.github.com/users/pbroschwitz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pbroschwitz/subscriptions","organizations_url":"https://api.github.com/users/pbroschwitz/orgs","repos_url":"https://api.github.com/users/pbroschwitz/repos","events_url":"https://api.github.com/users/pbroschwitz/events{/privacy}","received_events_url":"https://api.github.com/users/pbroschwitz/received_events","type":"User"},"id":"1585783","created_at":"2012-01-09T23:59:07Z","updated_at":"2012-02-20T11:18:52Z"},{"url":"https://api.github.com/gists/2549120","user":{"login":"gaving","id":43741,"avatar_url":"https://2.gravatar.com/avatar/839485ec6b0111d4ccc69646789d6728?d=https%3A%2F%2Fidenticons.github.com%2F781870bb5979fcc948dcc48da5fb798a.png","gravatar_id":"839485ec6b0111d4ccc69646789d6728","url":"https://api.github.com/users/gaving","html_url":"https://github.com/gaving","followers_url":"https://api.github.com/users/gaving/followers","following_url":"https://api.github.com/users/gaving/following{/other_user}","gists_url":"https://api.github.com/users/gaving/gists{/gist_id}","starred_url":"https://api.github.com/users/gaving/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gaving/subscriptions","organizations_url":"https://api.github.com/users/gaving/orgs","repos_url":"https://api.github.com/users/gaving/repos","events_url":"https://api.github.com/users/gaving/events{/privacy}","received_events_url":"https://api.github.com/users/gaving/received_events","type":"User"},"id":"2549120","created_at":"2012-04-29T09:57:32Z","updated_at":"2012-04-29T09:57:32Z"},{"url":"https://api.github.com/gists/2549928","user":{"login":"pbelmans","id":700126,"avatar_url":"https://2.gravatar.com/avatar/bf4c56431003682b725b72668e7de35f?d=https%3A%2F%2Fidenticons.github.com%2Fb6e0db3b4d374eb7e8d52b9f271f4822.png","gravatar_id":"bf4c56431003682b725b72668e7de35f","url":"https://api.github.com/users/pbelmans","html_url":"https://github.com/pbelmans","followers_url":"https://api.github.com/users/pbelmans/followers","following_url":"https://api.github.com/users/pbelmans/following{/other_user}","gists_url":"https://api.github.com/users/pbelmans/gists{/gist_id}","starred_url":"https://api.github.com/users/pbelmans/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pbelmans/subscriptions","organizations_url":"https://api.github.com/users/pbelmans/orgs","repos_url":"https://api.github.com/users/pbelmans/repos","events_url":"https://api.github.com/users/pbelmans/events{/privacy}","received_events_url":"https://api.github.com/users/pbelmans/received_events","type":"User"},"id":"2549928","created_at":"2012-04-29T12:07:11Z","updated_at":"2012-05-14T11:08:39Z"},{"url":"https://api.github.com/gists/3061207","user":{"login":"robEllenberg","id":1210940,"avatar_url":"https://1.gravatar.com/avatar/cee0a0313cb89262ccaf408cf42eeae8?d=https%3A%2F%2Fidenticons.github.com%2Fb927fc8b72fac9a5b05e8afd1545e069.png","gravatar_id":"cee0a0313cb89262ccaf408cf42eeae8","url":"https://api.github.com/users/robEllenberg","html_url":"https://github.com/robEllenberg","followers_url":"https://api.github.com/users/robEllenberg/followers","following_url":"https://api.github.com/users/robEllenberg/following{/other_user}","gists_url":"https://api.github.com/users/robEllenberg/gists{/gist_id}","starred_url":"https://api.github.com/users/robEllenberg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/robEllenberg/subscriptions","organizations_url":"https://api.github.com/users/robEllenberg/orgs","repos_url":"https://api.github.com/users/robEllenberg/repos","events_url":"https://api.github.com/users/robEllenberg/events{/privacy}","received_events_url":"https://api.github.com/users/robEllenberg/received_events","type":"User"},"id":"3061207","created_at":"2012-07-06T16:34:35Z","updated_at":"2012-07-06T16:34:35Z"},{"url":"https://api.github.com/gists/3073850","user":{"login":"naught101","id":167164,"avatar_url":"https://2.gravatar.com/avatar/20cb8dcc17ad4334c0f8cb1ddc28bcd0?d=https%3A%2F%2Fidenticons.github.com%2F16a0a5f3381b862da55875130a94ad3f.png","gravatar_id":"20cb8dcc17ad4334c0f8cb1ddc28bcd0","url":"https://api.github.com/users/naught101","html_url":"https://github.com/naught101","followers_url":"https://api.github.com/users/naught101/followers","following_url":"https://api.github.com/users/naught101/following{/other_user}","gists_url":"https://api.github.com/users/naught101/gists{/gist_id}","starred_url":"https://api.github.com/users/naught101/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/naught101/subscriptions","organizations_url":"https://api.github.com/users/naught101/orgs","repos_url":"https://api.github.com/users/naught101/repos","events_url":"https://api.github.com/users/naught101/events{/privacy}","received_events_url":"https://api.github.com/users/naught101/received_events","type":"User"},"id":"3073850","created_at":"2012-07-09T02:17:21Z","updated_at":"2012-07-09T02:17:21Z"},{"url":"https://api.github.com/gists/3683565","user":{"login":"TKAB","id":66597,"avatar_url":"https://1.gravatar.com/avatar/7a66c8124726c66cf9901d7e09f4f3cb?d=https%3A%2F%2Fidenticons.github.com%2F4bec99ec5bd39630575692948d9e8169.png","gravatar_id":"7a66c8124726c66cf9901d7e09f4f3cb","url":"https://api.github.com/users/TKAB","html_url":"https://github.com/TKAB","followers_url":"https://api.github.com/users/TKAB/followers","following_url":"https://api.github.com/users/TKAB/following{/other_user}","gists_url":"https://api.github.com/users/TKAB/gists{/gist_id}","starred_url":"https://api.github.com/users/TKAB/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TKAB/subscriptions","organizations_url":"https://api.github.com/users/TKAB/orgs","repos_url":"https://api.github.com/users/TKAB/repos","events_url":"https://api.github.com/users/TKAB/events{/privacy}","received_events_url":"https://api.github.com/users/TKAB/received_events","type":"User"},"id":"3683565","created_at":"2012-09-09T09:58:43Z","updated_at":"2012-09-09T09:58:43Z"},{"url":"https://api.github.com/gists/3802139","user":{"login":"linchen04","id":1383767,"avatar_url":"https://1.gravatar.com/avatar/4380e7c4928005fc0eaf9772e1fe64b7?d=https%3A%2F%2Fidenticons.github.com%2F39a2a9b3f884c9a2e97ce61cb56e02fd.png","gravatar_id":"4380e7c4928005fc0eaf9772e1fe64b7","url":"https://api.github.com/users/linchen04","html_url":"https://github.com/linchen04","followers_url":"https://api.github.com/users/linchen04/followers","following_url":"https://api.github.com/users/linchen04/following{/other_user}","gists_url":"https://api.github.com/users/linchen04/gists{/gist_id}","starred_url":"https://api.github.com/users/linchen04/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/linchen04/subscriptions","organizations_url":"https://api.github.com/users/linchen04/orgs","repos_url":"https://api.github.com/users/linchen04/repos","events_url":"https://api.github.com/users/linchen04/events{/privacy}","received_events_url":"https://api.github.com/users/linchen04/received_events","type":"User"},"id":"3802139","created_at":"2012-09-28T21:20:16Z","updated_at":"2012-09-28T21:20:16Z"},{"url":"https://api.github.com/gists/3958094","user":{"login":"macalicious","id":717205,"avatar_url":"https://2.gravatar.com/avatar/59eb80f68e015e725e9eeb90f24987b2?d=https%3A%2F%2Fidenticons.github.com%2F1d2591e0232d5734561c3c71252a2efa.png","gravatar_id":"59eb80f68e015e725e9eeb90f24987b2","url":"https://api.github.com/users/macalicious","html_url":"https://github.com/macalicious","followers_url":"https://api.github.com/users/macalicious/followers","following_url":"https://api.github.com/users/macalicious/following{/other_user}","gists_url":"https://api.github.com/users/macalicious/gists{/gist_id}","starred_url":"https://api.github.com/users/macalicious/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/macalicious/subscriptions","organizations_url":"https://api.github.com/users/macalicious/orgs","repos_url":"https://api.github.com/users/macalicious/repos","events_url":"https://api.github.com/users/macalicious/events{/privacy}","received_events_url":"https://api.github.com/users/macalicious/received_events","type":"User"},"id":"3958094","created_at":"2012-10-26T10:37:44Z","updated_at":"2012-10-26T10:37:44Z"},{"url":"https://api.github.com/gists/4362953","user":{"login":"dermesser","id":1042327,"avatar_url":"https://0.gravatar.com/avatar/1f99406671a26d17de4f0a52a41ad0c7?d=https%3A%2F%2Fidenticons.github.com%2F1b2f62f9f8f36eeb3c2a1ed42d1a2249.png","gravatar_id":"1f99406671a26d17de4f0a52a41ad0c7","url":"https://api.github.com/users/dermesser","html_url":"https://github.com/dermesser","followers_url":"https://api.github.com/users/dermesser/followers","following_url":"https://api.github.com/users/dermesser/following{/other_user}","gists_url":"https://api.github.com/users/dermesser/gists{/gist_id}","starred_url":"https://api.github.com/users/dermesser/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dermesser/subscriptions","organizations_url":"https://api.github.com/users/dermesser/orgs","repos_url":"https://api.github.com/users/dermesser/repos","events_url":"https://api.github.com/users/dermesser/events{/privacy}","received_events_url":"https://api.github.com/users/dermesser/received_events","type":"User"},"id":"4362953","created_at":"2012-12-23T11:04:08Z","updated_at":"2013-08-07T18:49:16Z"},{"url":"https://api.github.com/gists/4401093","user":{"login":"szalansky","id":323025,"avatar_url":"https://1.gravatar.com/avatar/b96196ac5b306a6f0d302dd9f82a24ee?d=https%3A%2F%2Fidenticons.github.com%2F6470274ac82665a71a91d36c419016ce.png","gravatar_id":"b96196ac5b306a6f0d302dd9f82a24ee","url":"https://api.github.com/users/szalansky","html_url":"https://github.com/szalansky","followers_url":"https://api.github.com/users/szalansky/followers","following_url":"https://api.github.com/users/szalansky/following{/other_user}","gists_url":"https://api.github.com/users/szalansky/gists{/gist_id}","starred_url":"https://api.github.com/users/szalansky/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/szalansky/subscriptions","organizations_url":"https://api.github.com/users/szalansky/orgs","repos_url":"https://api.github.com/users/szalansky/repos","events_url":"https://api.github.com/users/szalansky/events{/privacy}","received_events_url":"https://api.github.com/users/szalansky/received_events","type":"User"},"id":"4401093","created_at":"2012-12-28T19:28:03Z","updated_at":"2012-12-28T19:28:03Z"},{"url":"https://api.github.com/gists/4568476","user":{"login":"flomey","id":3226735,"avatar_url":"https://1.gravatar.com/avatar/3143afe043a2fdcd6a22a537e4cc3c8e?d=https%3A%2F%2Fidenticons.github.com%2F9271b5a509f2dabd1c5850acf684759c.png","gravatar_id":"3143afe043a2fdcd6a22a537e4cc3c8e","url":"https://api.github.com/users/flomey","html_url":"https://github.com/flomey","followers_url":"https://api.github.com/users/flomey/followers","following_url":"https://api.github.com/users/flomey/following{/other_user}","gists_url":"https://api.github.com/users/flomey/gists{/gist_id}","starred_url":"https://api.github.com/users/flomey/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/flomey/subscriptions","organizations_url":"https://api.github.com/users/flomey/orgs","repos_url":"https://api.github.com/users/flomey/repos","events_url":"https://api.github.com/users/flomey/events{/privacy}","received_events_url":"https://api.github.com/users/flomey/received_events","type":"User"},"id":"4568476","created_at":"2013-01-18T20:59:25Z","updated_at":"2013-01-18T20:59:25Z"},{"url":"https://api.github.com/gists/4732801","user":{"login":"mhebing","id":905115,"avatar_url":"https://2.gravatar.com/avatar/14e2a01d187cb0a167942e24e9234f95?d=https%3A%2F%2Fidenticons.github.com%2Fb874dedd9bb70a549db142d519aa6648.png","gravatar_id":"14e2a01d187cb0a167942e24e9234f95","url":"https://api.github.com/users/mhebing","html_url":"https://github.com/mhebing","followers_url":"https://api.github.com/users/mhebing/followers","following_url":"https://api.github.com/users/mhebing/following{/other_user}","gists_url":"https://api.github.com/users/mhebing/gists{/gist_id}","starred_url":"https://api.github.com/users/mhebing/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mhebing/subscriptions","organizations_url":"https://api.github.com/users/mhebing/orgs","repos_url":"https://api.github.com/users/mhebing/repos","events_url":"https://api.github.com/users/mhebing/events{/privacy}","received_events_url":"https://api.github.com/users/mhebing/received_events","type":"User"},"id":"4732801","created_at":"2013-02-07T17:57:21Z","updated_at":"2013-02-07T17:59:53Z"},{"url":"https://api.github.com/gists/5074215","user":{"login":"fumingshih","id":171536,"avatar_url":"https://0.gravatar.com/avatar/cdaeda52c7e0e7db119ec242652a7eac?d=https%3A%2F%2Fidenticons.github.com%2Ff3daf33ead84c02b32d673addce28321.png","gravatar_id":"cdaeda52c7e0e7db119ec242652a7eac","url":"https://api.github.com/users/fumingshih","html_url":"https://github.com/fumingshih","followers_url":"https://api.github.com/users/fumingshih/followers","following_url":"https://api.github.com/users/fumingshih/following{/other_user}","gists_url":"https://api.github.com/users/fumingshih/gists{/gist_id}","starred_url":"https://api.github.com/users/fumingshih/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fumingshih/subscriptions","organizations_url":"https://api.github.com/users/fumingshih/orgs","repos_url":"https://api.github.com/users/fumingshih/repos","events_url":"https://api.github.com/users/fumingshih/events{/privacy}","received_events_url":"https://api.github.com/users/fumingshih/received_events","type":"User"},"id":"5074215","created_at":"2013-03-03T02:30:54Z","updated_at":"2013-03-03T02:30:54Z"},{"url":"https://api.github.com/gists/5126805","user":{"login":"xiddw","id":742519,"avatar_url":"https://2.gravatar.com/avatar/e3aea2d1cdb375467416bff41c614582?d=https%3A%2F%2Fidenticons.github.com%2Ffd082f32f1f9679671081ba58bb37459.png","gravatar_id":"e3aea2d1cdb375467416bff41c614582","url":"https://api.github.com/users/xiddw","html_url":"https://github.com/xiddw","followers_url":"https://api.github.com/users/xiddw/followers","following_url":"https://api.github.com/users/xiddw/following{/other_user}","gists_url":"https://api.github.com/users/xiddw/gists{/gist_id}","starred_url":"https://api.github.com/users/xiddw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xiddw/subscriptions","organizations_url":"https://api.github.com/users/xiddw/orgs","repos_url":"https://api.github.com/users/xiddw/repos","events_url":"https://api.github.com/users/xiddw/events{/privacy}","received_events_url":"https://api.github.com/users/xiddw/received_events","type":"User"},"id":"5126805","created_at":"2013-03-10T02:21:30Z","updated_at":"2013-03-10T02:21:30Z"},{"url":"https://api.github.com/gists/5353918","user":{"login":"stared","id":1001610,"avatar_url":"https://2.gravatar.com/avatar/1b324e4900e79878eb518c1263b41795?d=https%3A%2F%2Fidenticons.github.com%2F031dfe1b6a9e475fa708179fb35beb3b.png","gravatar_id":"1b324e4900e79878eb518c1263b41795","url":"https://api.github.com/users/stared","html_url":"https://github.com/stared","followers_url":"https://api.github.com/users/stared/followers","following_url":"https://api.github.com/users/stared/following{/other_user}","gists_url":"https://api.github.com/users/stared/gists{/gist_id}","starred_url":"https://api.github.com/users/stared/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stared/subscriptions","organizations_url":"https://api.github.com/users/stared/orgs","repos_url":"https://api.github.com/users/stared/repos","events_url":"https://api.github.com/users/stared/events{/privacy}","received_events_url":"https://api.github.com/users/stared/received_events","type":"User"},"id":"5353918","created_at":"2013-04-10T11:42:03Z","updated_at":"2013-04-10T11:43:47Z"},{"url":"https://api.github.com/gists/5600181","user":{"login":"huashuai","id":256761,"avatar_url":"https://1.gravatar.com/avatar/279030da669c3950fc54dea37ee3109e?d=https%3A%2F%2Fidenticons.github.com%2Fc66590f0228b4de1b7d16d1b8f10161c.png","gravatar_id":"279030da669c3950fc54dea37ee3109e","url":"https://api.github.com/users/huashuai","html_url":"https://github.com/huashuai","followers_url":"https://api.github.com/users/huashuai/followers","following_url":"https://api.github.com/users/huashuai/following{/other_user}","gists_url":"https://api.github.com/users/huashuai/gists{/gist_id}","starred_url":"https://api.github.com/users/huashuai/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/huashuai/subscriptions","organizations_url":"https://api.github.com/users/huashuai/orgs","repos_url":"https://api.github.com/users/huashuai/repos","events_url":"https://api.github.com/users/huashuai/events{/privacy}","received_events_url":"https://api.github.com/users/huashuai/received_events","type":"User"},"id":"5600181","created_at":"2013-05-17T16:15:32Z","updated_at":"2013-05-17T16:15:32Z"},{"url":"https://api.github.com/gists/5639946","user":{"login":"simardcasanova","id":739940,"avatar_url":"https://0.gravatar.com/avatar/63c42221c8ed3dfc335a0d1b19397e36?d=https%3A%2F%2Fidenticons.github.com%2F819fcce6467f36e0beb6ffc69afa9f21.png","gravatar_id":"63c42221c8ed3dfc335a0d1b19397e36","url":"https://api.github.com/users/simardcasanova","html_url":"https://github.com/simardcasanova","followers_url":"https://api.github.com/users/simardcasanova/followers","following_url":"https://api.github.com/users/simardcasanova/following{/other_user}","gists_url":"https://api.github.com/users/simardcasanova/gists{/gist_id}","starred_url":"https://api.github.com/users/simardcasanova/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/simardcasanova/subscriptions","organizations_url":"https://api.github.com/users/simardcasanova/orgs","repos_url":"https://api.github.com/users/simardcasanova/repos","events_url":"https://api.github.com/users/simardcasanova/events{/privacy}","received_events_url":"https://api.github.com/users/simardcasanova/received_events","type":"User"},"id":"5639946","created_at":"2013-05-23T22:24:19Z","updated_at":"2013-05-23T22:24:57Z"},{"url":"https://api.github.com/gists/5965077","user":{"login":"habi","id":1651235,"avatar_url":"https://1.gravatar.com/avatar/4a0a820ba6c1996bc37d64ce14606ad4?d=https%3A%2F%2Fidenticons.github.com%2Fbaa3c8588d9ab73deea280466d5db7e1.png","gravatar_id":"4a0a820ba6c1996bc37d64ce14606ad4","url":"https://api.github.com/users/habi","html_url":"https://github.com/habi","followers_url":"https://api.github.com/users/habi/followers","following_url":"https://api.github.com/users/habi/following{/other_user}","gists_url":"https://api.github.com/users/habi/gists{/gist_id}","starred_url":"https://api.github.com/users/habi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/habi/subscriptions","organizations_url":"https://api.github.com/users/habi/orgs","repos_url":"https://api.github.com/users/habi/repos","events_url":"https://api.github.com/users/habi/events{/privacy}","received_events_url":"https://api.github.com/users/habi/received_events","type":"User"},"id":"5965077","created_at":"2013-07-10T09:57:15Z","updated_at":"2013-07-10T09:57:40Z"},{"url":"https://api.github.com/gists/6394053","user":{"login":"glaubius","id":5349064,"avatar_url":"https://0.gravatar.com/avatar/ff2451755814a23845b19551371bb026?d=https%3A%2F%2Fidenticons.github.com%2Faa59a5980a33a834ee55c9f386e7c996.png","gravatar_id":"ff2451755814a23845b19551371bb026","url":"https://api.github.com/users/glaubius","html_url":"https://github.com/glaubius","followers_url":"https://api.github.com/users/glaubius/followers","following_url":"https://api.github.com/users/glaubius/following{/other_user}","gists_url":"https://api.github.com/users/glaubius/gists{/gist_id}","starred_url":"https://api.github.com/users/glaubius/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/glaubius/subscriptions","organizations_url":"https://api.github.com/users/glaubius/orgs","repos_url":"https://api.github.com/users/glaubius/repos","events_url":"https://api.github.com/users/glaubius/events{/privacy}","received_events_url":"https://api.github.com/users/glaubius/received_events","type":"User"},"id":"6394053","created_at":"2013-08-30T20:39:05Z","updated_at":"2013-08-30T20:39:05Z"},{"url":"https://api.github.com/gists/6463518","user":{"login":"janten","id":1794407,"avatar_url":"https://2.gravatar.com/avatar/44f5d723bf2ef2dac40327bfa9815989?d=https%3A%2F%2Fidenticons.github.com%2Fe177a89b246259b7b5a84411923e6881.png","gravatar_id":"44f5d723bf2ef2dac40327bfa9815989","url":"https://api.github.com/users/janten","html_url":"https://github.com/janten","followers_url":"https://api.github.com/users/janten/followers","following_url":"https://api.github.com/users/janten/following{/other_user}","gists_url":"https://api.github.com/users/janten/gists{/gist_id}","starred_url":"https://api.github.com/users/janten/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/janten/subscriptions","organizations_url":"https://api.github.com/users/janten/orgs","repos_url":"https://api.github.com/users/janten/repos","events_url":"https://api.github.com/users/janten/events{/privacy}","received_events_url":"https://api.github.com/users/janten/received_events","type":"User"},"id":"6463518","created_at":"2013-09-06T13:04:58Z","updated_at":"2013-09-06T13:04:58Z"}],"history":[{"user":{"login":"kogakure","id":5535,"avatar_url":"https://0.gravatar.com/avatar/b53f98d49e275e8387897de02c92288d?d=https%3A%2F%2Fidenticons.github.com%2F7ec69dd44416c46745f6edd947b470cd.png","gravatar_id":"b53f98d49e275e8387897de02c92288d","url":"https://api.github.com/users/kogakure","html_url":"https://github.com/kogakure","followers_url":"https://api.github.com/users/kogakure/followers","following_url":"https://api.github.com/users/kogakure/following{/other_user}","gists_url":"https://api.github.com/users/kogakure/gists{/gist_id}","starred_url":"https://api.github.com/users/kogakure/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kogakure/subscriptions","organizations_url":"https://api.github.com/users/kogakure/orgs","repos_url":"https://api.github.com/users/kogakure/repos","events_url":"https://api.github.com/users/kogakure/events{/privacy}","received_events_url":"https://api.github.com/users/kogakure/received_events","type":"User"},"version":"3e0e8350f040f21811ceea13975086158ccae986","committed_at":"2010-06-25T06:52:37Z","change_status":{"total":3,"additions":2,"deletions":1},"url":"https://api.github.com/gists/149016/3e0e8350f040f21811ceea13975086158ccae986"},{"user":{"login":"kogakure","id":5535,"avatar_url":"https://0.gravatar.com/avatar/b53f98d49e275e8387897de02c92288d?d=https%3A%2F%2Fidenticons.github.com%2F7ec69dd44416c46745f6edd947b470cd.png","gravatar_id":"b53f98d49e275e8387897de02c92288d","url":"https://api.github.com/users/kogakure","html_url":"https://github.com/kogakure","followers_url":"https://api.github.com/users/kogakure/followers","following_url":"https://api.github.com/users/kogakure/following{/other_user}","gists_url":"https://api.github.com/users/kogakure/gists{/gist_id}","starred_url":"https://api.github.com/users/kogakure/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kogakure/subscriptions","organizations_url":"https://api.github.com/users/kogakure/orgs","repos_url":"https://api.github.com/users/kogakure/repos","events_url":"https://api.github.com/users/kogakure/events{/privacy}","received_events_url":"https://api.github.com/users/kogakure/received_events","type":"User"},"version":"a3ce60041fe20410fc55d141e77a25d26e1a562a","committed_at":"2009-07-17T11:37:43Z","change_status":{"total":22,"additions":22,"deletions":0},"url":"https://api.github.com/gists/149016/a3ce60041fe20410fc55d141e77a25d26e1a562a"}]} + +https +GET +api.github.com +None +/gists/149016/comments/4565 +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4887'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', 'd7e4322b-0ea1-4673-8e35-b8c763037ecd'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '1189'), ('server', 'GitHub.com'), ('last-modified', 'Thu, 29 Aug 2013 01:07:03 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"923dd32a449cce56dae93d3438b9451a"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:10 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"url":"https://api.github.com/gists/149016/comments/4565","id":4565,"user":{"login":"cflewis","id":43708,"avatar_url":"https://2.gravatar.com/avatar/5f986018993d9f078927fe29ee912cf2?d=https%3A%2F%2Fidenticons.github.com%2F287915711d06ce6d90e2c18e1d89d3a6.png","gravatar_id":"5f986018993d9f078927fe29ee912cf2","url":"https://api.github.com/users/cflewis","html_url":"https://github.com/cflewis","followers_url":"https://api.github.com/users/cflewis/followers","following_url":"https://api.github.com/users/cflewis/following{/other_user}","gists_url":"https://api.github.com/users/cflewis/gists{/gist_id}","starred_url":"https://api.github.com/users/cflewis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cflewis/subscriptions","organizations_url":"https://api.github.com/users/cflewis/orgs","repos_url":"https://api.github.com/users/cflewis/repos","events_url":"https://api.github.com/users/cflewis/events{/privacy}","received_events_url":"https://api.github.com/users/cflewis/received_events","type":"User"},"created_at":"2010-06-24T21:50:00Z","updated_at":"2010-08-04T09:19:53Z","body":"Excellent! Thanks for this!\n\nI might consider adding '*.synctex.gz'. "} + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/git/commits/be37b8a7f3a68631c32672dcd84d9eba27438ee6 +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4886'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', 'deb2e31a-4791-4322-bb88-d697b2b31e72'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '952'), ('server', 'GitHub.com'), ('last-modified', 'Thu, 22 Nov 2012 19:06:01 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"b9013239d62338e81f6ec48bae78699e"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:11 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"sha":"be37b8a7f3a68631c32672dcd84d9eba27438ee6","url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/be37b8a7f3a68631c32672dcd84d9eba27438ee6","html_url":"https://github.com/jacquev6/PyGithub/commits/be37b8a7f3a68631c32672dcd84d9eba27438ee6","author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2012-11-22T19:06:01Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2012-11-22T19:06:01Z"},"tree":{"sha":"6f7c2d8c66d78863f7b91792deaead619799a1ce","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/6f7c2d8c66d78863f7b91792deaead619799a1ce"},"message":"Measure coverage simply in publish.sh","parents":[{"sha":"3026eb708fa0a6c669d3829e685663b8a161488b","url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/3026eb708fa0a6c669d3829e685663b8a161488b","html_url":"https://github.com/jacquev6/PyGithub/commits/3026eb708fa0a6c669d3829e685663b8a161488b"}]} + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/git/trees/6f7c2d8c66d78863f7b91792deaead619799a1ce +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4885'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '43062d85-44e9-4b72-ba51-a94ccd029fd7'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '2784'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:41:05 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"feb5059cac897bdd13fd1205785f865c"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:12 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"sha":"6f7c2d8c66d78863f7b91792deaead619799a1ce","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/6f7c2d8c66d78863f7b91792deaead619799a1ce","tree":[{"mode":"100644","type":"blob","sha":"55cb5a84a96705c9b23dd6c9b5095aee9284b30a","path":".gitignore","size":83,"url":"https://api.github.com/repos/jacquev6/PyGithub/git/blobs/55cb5a84a96705c9b23dd6c9b5095aee9284b30a"},{"mode":"100644","type":"blob","sha":"d1258c3e8ccd002e6ec45473a8fdedc70137c569","path":".travis.yml","size":345,"url":"https://api.github.com/repos/jacquev6/PyGithub/git/blobs/d1258c3e8ccd002e6ec45473a8fdedc70137c569"},{"mode":"100644","type":"blob","sha":"94a9ed024d3859793618152ea559a168bbcbb5e2","path":"COPYING","size":35147,"url":"https://api.github.com/repos/jacquev6/PyGithub/git/blobs/94a9ed024d3859793618152ea559a168bbcbb5e2"},{"mode":"100644","type":"blob","sha":"65c5ca88a67c30becee01c5a8816d964b03862f9","path":"COPYING.LESSER","size":7651,"url":"https://api.github.com/repos/jacquev6/PyGithub/git/blobs/65c5ca88a67c30becee01c5a8816d964b03862f9"},{"mode":"100644","type":"blob","sha":"efbb5203c0bb41b4921999a301a5a35e06e9a8f2","path":"Contributing.md","size":969,"url":"https://api.github.com/repos/jacquev6/PyGithub/git/blobs/efbb5203c0bb41b4921999a301a5a35e06e9a8f2"},{"mode":"100644","type":"blob","sha":"1344507c245dd59bc972682cb43163176226c597","path":"ReadMe.md","size":4666,"url":"https://api.github.com/repos/jacquev6/PyGithub/git/blobs/1344507c245dd59bc972682cb43163176226c597"},{"mode":"040000","type":"tree","sha":"d612362a2609ca747a4d6526ae2cbdcd7df19600","path":"doc","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/d612362a2609ca747a4d6526ae2cbdcd7df19600"},{"mode":"040000","type":"tree","sha":"b19632adf7f22ba0561b5c2511cd61b904ede4ca","path":"github","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/b19632adf7f22ba0561b5c2511cd61b904ede4ca"},{"mode":"100755","type":"blob","sha":"f3adf2bddb82857f356e8b6a5ea1da8ea35a6c68","path":"publish.sh","size":942,"url":"https://api.github.com/repos/jacquev6/PyGithub/git/blobs/f3adf2bddb82857f356e8b6a5ea1da8ea35a6c68"},{"mode":"100644","type":"blob","sha":"609f912230aec315ba1d3c745e472fbc6393eefa","path":"python25-requirements.txt","size":23,"url":"https://api.github.com/repos/jacquev6/PyGithub/git/blobs/609f912230aec315ba1d3c745e472fbc6393eefa"},{"mode":"100644","type":"blob","sha":"9a23970d3adfeed83eec1d89fbe27062de0b1bfa","path":"python26-requirements.txt","size":10,"url":"https://api.github.com/repos/jacquev6/PyGithub/git/blobs/9a23970d3adfeed83eec1d89fbe27062de0b1bfa"},{"mode":"100755","type":"blob","sha":"0d8eea784e5bce67efd2f25c6ece0cd573896065","path":"setup.py","size":2481,"url":"https://api.github.com/repos/jacquev6/PyGithub/git/blobs/0d8eea784e5bce67efd2f25c6ece0cd573896065"}]} + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/git/blobs/681fb61f1761743a02f5c790f1c762cbfe8cfad1 +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4884'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', 'cc0f0761-fe8d-4ccc-bc23-3348ed8945d5'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('content-length', '299'), ('server', 'GitHub.com'), ('x-ratelimit-limit', '5000'), ('etag', '"01162d231bc8dfd76e35f833ecebaa0e"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:14 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"sha":"681fb61f1761743a02f5c790f1c762cbfe8cfad1","size":71,"url":"https://api.github.com/repos/jacquev6/PyGithub/git/blobs/681fb61f1761743a02f5c790f1c762cbfe8cfad1","content":"Ki5weWMKR2l0aHViQ3JlZGVudGlhbHMucHkKL2Rpc3QvCi9idWlsZC8KL01B\nTklGRVNUCi9QeUdpdGh1Yi5lZ2ctaW5mby8=\n","encoding":"base64"} + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/git/refs/tags/v1.17.0 +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4883'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', 'eb4e50d0-67c7-41f4-977e-fd091a501b16'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '282'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:41:05 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"feb5059cac897bdd13fd1205785f865c"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:15 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"ref":"refs/tags/v1.17.0","url":"https://api.github.com/repos/jacquev6/PyGithub/git/refs/tags/v1.17.0","object":{"sha":"a08db4387b1294359e283f2a5c2c79584e23450f","type":"tag","url":"https://api.github.com/repos/jacquev6/PyGithub/git/tags/a08db4387b1294359e283f2a5c2c79584e23450f"}} + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/issues/188 +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4882'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '8ca72976-9b88-4917-8fd7-1aa29db18369'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '5443'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:51:22 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"654d1a29abe3a61b096e8bffbc61c162"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:21 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/188","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/188/labels{/name}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/188/comments","events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/188/events","html_url":"https://github.com/jacquev6/PyGithub/issues/188","id":17736533,"number":188,"title":"Getting the status of GitHub","user":{"login":"ruxandraburtica","id":797922,"avatar_url":"https://2.gravatar.com/avatar/5703c5907fc67b679be40fd307b07733?d=https%3A%2F%2Fidenticons.github.com%2F470a720db37e19afad67c34e30ffcd85.png","gravatar_id":"5703c5907fc67b679be40fd307b07733","url":"https://api.github.com/users/ruxandraburtica","html_url":"https://github.com/ruxandraburtica","followers_url":"https://api.github.com/users/ruxandraburtica/followers","following_url":"https://api.github.com/users/ruxandraburtica/following{/other_user}","gists_url":"https://api.github.com/users/ruxandraburtica/gists{/gist_id}","starred_url":"https://api.github.com/users/ruxandraburtica/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ruxandraburtica/subscriptions","organizations_url":"https://api.github.com/users/ruxandraburtica/orgs","repos_url":"https://api.github.com/users/ruxandraburtica/repos","events_url":"https://api.github.com/users/ruxandraburtica/events{/privacy}","received_events_url":"https://api.github.com/users/ruxandraburtica/received_events","type":"User"},"labels":[{"url":"https://api.github.com/repos/jacquev6/PyGithub/labels/Functionalities","name":"Functionalities","color":"e102d8"},{"url":"https://api.github.com/repos/jacquev6/PyGithub/labels/Requested+by+user","name":"Requested by user","color":"e10c02"}],"state":"closed","assignee":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"milestone":{"url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/31","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/31/labels","id":402388,"number":31,"title":"Version 1.19.0","description":"","creator":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"open_issues":0,"closed_issues":3,"state":"open","created_at":"2013-08-15T05:54:47Z","updated_at":"2013-09-06T09:42:02Z","due_on":null},"comments":2,"created_at":"2013-08-07T08:57:49Z","updated_at":"2013-09-06T09:11:57Z","closed_at":"2013-09-06T09:11:57Z","pull_request":{"html_url":null,"diff_url":null,"patch_url":null},"body":"Maybe I haven't found it, but it would be very useful to have methods for checking the status of the GitHub API (https://status.github.com/api)","closed_by":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"}} + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/issues/comments/22686536 +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4881'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '49eb6041-cb09-423d-b769-6a927988ef00'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '1396'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:51:22 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"654d1a29abe3a61b096e8bffbc61c162"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:22 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/22686536","html_url":"https://github.com/jacquev6/PyGithub/issues/188#issuecomment-22686536","issue_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/188","id":22686536,"user":{"login":"jacquev6","id":327146,"avatar_url":"https://2.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"created_at":"2013-08-15T05:53:37Z","updated_at":"2013-08-15T05:53:37Z","body":"This seems to be a good idea! I will try to do it in the version after the next one."} + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/issues/188/events +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4880'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '67185958-5c65-481a-b8fd-86d28ceea272'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '3480'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:51:22 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"654d1a29abe3a61b096e8bffbc61c162"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:23 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +[{"id":60946408,"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/events/60946408","actor":{"login":"jacquev6","id":327146,"avatar_url":"https://1.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"event":"assigned","commit_id":null,"created_at":"2013-08-15T05:55:32Z"},{"id":64178794,"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/events/64178794","actor":{"login":"jacquev6","id":327146,"avatar_url":"https://1.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"event":"referenced","commit_id":"c819580ce872f251e8ec23deee95d9fb15ca19c9","created_at":"2013-09-06T09:05:10Z"},{"id":64179485,"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/events/64179485","actor":{"login":"jacquev6","id":327146,"avatar_url":"https://1.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"event":"closed","commit_id":null,"created_at":"2013-09-06T09:11:57Z"}] + +https +GET +api.github.com +None +/gitignore/templates/Python +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4879'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '8276ab6d-803c-4421-9a34-ecc99ff8ddec'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('content-length', '367'), ('server', 'GitHub.com'), ('x-ratelimit-limit', '5000'), ('etag', '"7870725c2e426a0c93146449ebc6f176"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:26 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"name":"Python","source":"*.py[cod]\n\n# C extensions\n*.so\n\n# Packages\n*.egg\n*.egg-info\ndist\nbuild\neggs\nparts\nbin\nvar\nsdist\ndevelop-eggs\n.installed.cfg\nlib\nlib64\n\n# Installer logs\npip-log.txt\n\n# Unit test / coverage reports\n.coverage\n.tox\nnosetests.xml\n\n# Translations\n*.mo\n\n# Mr Developer\n.mr.developer.cfg\n.project\n.pydevproject\n"} + +https +GET +api.github.com +None +/teams/141487 +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4878'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '7cb4a0fc-0363-4bfb-b09e-68f426c6e359'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '276'), ('server', 'GitHub.com'), ('last-modified', 'Sat, 20 Oct 2007 11:24:19 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"a4af9b5fe3ebc7d9ec2ecd4a637a4863"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:27 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"name":"Owners","id":141487,"slug":"owners","permission":"admin","url":"https://api.github.com/teams/141487","members_url":"https://api.github.com/teams/141487/members{/member}","repositories_url":"https://api.github.com/teams/141487/repos","members_count":1,"repos_count":1} + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/labels/Bug +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4877'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', 'ebdad7b3-e224-4923-a10e-2db7e1e75530'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '97'), ('server', 'GitHub.com'), ('last-modified', 'Sat, 20 Oct 2007 11:24:19 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"a4af9b5fe3ebc7d9ec2ecd4a637a4863"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:28 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"url":"https://api.github.com/repos/jacquev6/PyGithub/labels/Bug","name":"Bug","color":"e10c02"} + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/pulls/31 +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4876'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '571ddd42-66bf-460c-a9a5-bb5f62ffe987'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '11337'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:51:22 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"654d1a29abe3a61b096e8bffbc61c162"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:29 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"url":"https://api.github.com/repos/jacquev6/PyGithub/pulls/31","id":1436215,"html_url":"https://github.com/jacquev6/PyGithub/pull/31","diff_url":"https://github.com/jacquev6/PyGithub/pull/31.diff","patch_url":"https://github.com/jacquev6/PyGithub/pull/31.patch","issue_url":"https://github.com/jacquev6/PyGithub/pull/31","number":31,"state":"closed","title":"Title edited by PyGithub","user":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"body":"Body edited by PyGithub","created_at":"2012-05-27T09:25:36Z","updated_at":"2012-11-03T08:19:40Z","closed_at":"2012-05-27T10:29:07Z","merged_at":"2012-05-27T10:29:07Z","merge_commit_sha":"28ae6dd10ebccd5eaf8db8dacb5b699ee7f4a663","assignee":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"milestone":null,"commits_url":"https://github.com/jacquev6/PyGithub/pull/31/commits","review_comments_url":"https://github.com/jacquev6/PyGithub/pull/31/comments","review_comment_url":"/repos/jacquev6/PyGithub/pulls/comments/{number}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/31/comments","head":{"label":"BeaverSoftware:master","ref":"master","sha":"8a4f306d4b223682dd19410d4a9150636ebe4206","user":{"login":"BeaverSoftware","id":1424031,"avatar_url":"https://2.gravatar.com/avatar/d563e337cac2fdc644e2aaaad1e23266?d=https%3A%2F%2Fidenticons.github.com%2Fde8dec416975d0a85845b1b88385b9d5.png","gravatar_id":"d563e337cac2fdc644e2aaaad1e23266","url":"https://api.github.com/users/BeaverSoftware","html_url":"https://github.com/BeaverSoftware","followers_url":"https://api.github.com/users/BeaverSoftware/followers","following_url":"https://api.github.com/users/BeaverSoftware/following{/other_user}","gists_url":"https://api.github.com/users/BeaverSoftware/gists{/gist_id}","starred_url":"https://api.github.com/users/BeaverSoftware/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BeaverSoftware/subscriptions","organizations_url":"https://api.github.com/users/BeaverSoftware/orgs","repos_url":"https://api.github.com/users/BeaverSoftware/repos","events_url":"https://api.github.com/users/BeaverSoftware/events{/privacy}","received_events_url":"https://api.github.com/users/BeaverSoftware/received_events","type":"Organization"},"repo":null},"base":{"label":"jacquev6:topic/RewriteWithGeneratedCode","ref":"topic/RewriteWithGeneratedCode","sha":"ed866fc43833802ab553e5ff8581c81bb00dd433","user":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"repo":{"id":3544490,"name":"PyGithub","full_name":"jacquev6/PyGithub","owner":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"private":false,"html_url":"https://github.com/jacquev6/PyGithub","description":"Python library implementing the full Github API v3","fork":false,"url":"https://api.github.com/repos/jacquev6/PyGithub","forks_url":"https://api.github.com/repos/jacquev6/PyGithub/forks","keys_url":"https://api.github.com/repos/jacquev6/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jacquev6/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jacquev6/PyGithub/teams","hooks_url":"https://api.github.com/repos/jacquev6/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/jacquev6/PyGithub/events","assignees_url":"https://api.github.com/repos/jacquev6/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/jacquev6/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/jacquev6/PyGithub/tags","blobs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jacquev6/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jacquev6/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/jacquev6/PyGithub/languages","stargazers_url":"https://api.github.com/repos/jacquev6/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/jacquev6/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/jacquev6/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/jacquev6/PyGithub/subscription","commits_url":"https://api.github.com/repos/jacquev6/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/{number}","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/jacquev6/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jacquev6/PyGithub/merges","archive_url":"https://api.github.com/repos/jacquev6/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jacquev6/PyGithub/downloads","issues_url":"https://api.github.com/repos/jacquev6/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/jacquev6/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/jacquev6/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/labels{/name}","created_at":"2012-02-25T12:53:47Z","updated_at":"2013-09-06T12:41:05Z","pushed_at":"2013-09-06T12:41:05Z","git_url":"git://github.com/jacquev6/PyGithub.git","ssh_url":"git@github.com:jacquev6/PyGithub.git","clone_url":"https://github.com/jacquev6/PyGithub.git","svn_url":"https://github.com/jacquev6/PyGithub","homepage":"http://jacquev6.github.com/PyGithub","size":820,"watchers_count":256,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"forks_count":76,"mirror_url":null,"open_issues_count":15,"forks":76,"open_issues":15,"watchers":256,"master_branch":"master","default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/jacquev6/PyGithub/pulls/31"},"html":{"href":"https://github.com/jacquev6/PyGithub/pull/31"},"issue":{"href":"https://api.github.com/repos/jacquev6/PyGithub/issues/31"},"comments":{"href":"https://api.github.com/repos/jacquev6/PyGithub/issues/31/comments"},"review_comments":{"href":"https://api.github.com/repos/jacquev6/PyGithub/pulls/31/comments"}},"merged":true,"mergeable":false,"mergeable_state":"dirty","merged_by":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"comments":1,"review_comments":1,"commits":3,"additions":511,"deletions":384,"changed_files":45} + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/pulls/comments/1580134 +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4875'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '677bae62-e9e4-4420-a6f7-5572ecd844c9'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '2269'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:51:22 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"654d1a29abe3a61b096e8bffbc61c162"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:31 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"url":"https://api.github.com/repos/jacquev6/PyGithub/pulls/comments/1580134","id":1580134,"body":"Review comment created for PyGithub","diff_hunk":"@@ -70,7 +70,7 @@ def __useAttributes( self, attributes ):\n \n # @todo No need to check if attribute is in attributes when attribute is mandatory\n {% for attribute in class.attributes|dictsort:\"name\" %}\n- if \"{{ attribute.name }}\" in attributes and attributes[ \"{{ attribute.name }}\" ] is not None:\n+ if \"{{ attribute.name }}\" in attributes and attributes[ \"{{ attribute.name }}\" ] is not None: # pragma no branch","path":"codegen/templates/GithubObject.py","position":5,"original_position":5,"commit_id":"8a4f306d4b223682dd19410d4a9150636ebe4206","original_commit_id":"8a4f306d4b223682dd19410d4a9150636ebe4206","user":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"created_at":"2012-09-11T20:06:32Z","updated_at":"2012-09-11T20:06:32Z","html_url":"https://github.com/jacquev6/PyGithub/pull/31#discussion_r1580134","pull_request_url":"https://api.github.com/repos/jacquev6/PyGithub/pulls/31","_links":{"self":{"href":"https://api.github.com/repos/jacquev6/PyGithub/pulls/comments/1580134"},"html":{"href":"https://github.com/jacquev6/PyGithub/pull/31#discussion_r1580134"},"pull_request":{"href":"https://api.github.com/repos/jacquev6/PyGithub/pulls/31"}}} + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/pulls/31/files +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4874'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '2e2d4c57-e963-4381-985e-9c6ca34a5692'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '175951'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:51:22 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"654d1a29abe3a61b096e8bffbc61c162"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:32 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +[{"sha":"fb4855905c4825612bdd2db42346833c203e77c8","filename":"codegen/templates/GithubObject.py","status":"modified","additions":1,"deletions":1,"changes":2,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/codegen/templates/GithubObject.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/codegen/templates/GithubObject.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/codegen/templates/GithubObject.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -70,7 +70,7 @@ def __useAttributes( self, attributes ):\n \n # @todo No need to check if attribute is in attributes when attribute is mandatory\n {% for attribute in class.attributes|dictsort:\"name\" %}\n- if \"{{ attribute.name }}\" in attributes and attributes[ \"{{ attribute.name }}\" ] is not None:\n+ if \"{{ attribute.name }}\" in attributes and attributes[ \"{{ attribute.name }}\" ] is not None: # pragma no branch\n \n {% if attribute.type.cardinality == \"scalar\" %}\n {% if attribute.type.simple %}"},{"sha":"502f657077e67378a09cd923d8b7629a81469d81","filename":"src/github/AuthenticatedUser.py","status":"modified","additions":25,"deletions":25,"changes":50,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/AuthenticatedUser.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/AuthenticatedUser.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/AuthenticatedUser.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -568,78 +568,78 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"avatar_url\", \"bio\", \"blog\", \"collaborators\", \"company\", \"created_at\", \"disk_usage\", \"email\", \"followers\", \"following\", \"gravatar_id\", \"hireable\", \"html_url\", \"id\", \"location\", \"login\", \"name\", \"owned_private_repos\", \"plan\", \"private_gists\", \"public_gists\", \"public_repos\", \"total_private_repos\", \"type\", \"url\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"avatar_url\" in attributes and attributes[ \"avatar_url\" ] is not None:\n+ if \"avatar_url\" in attributes and attributes[ \"avatar_url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"avatar_url\" ], ( str, unicode ) )\n self.__avatar_url = attributes[ \"avatar_url\" ]\n- if \"bio\" in attributes and attributes[ \"bio\" ] is not None:\n+ if \"bio\" in attributes and attributes[ \"bio\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"bio\" ], ( str, unicode ) )\n self.__bio = attributes[ \"bio\" ]\n- if \"blog\" in attributes and attributes[ \"blog\" ] is not None:\n+ if \"blog\" in attributes and attributes[ \"blog\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"blog\" ], ( str, unicode ) )\n self.__blog = attributes[ \"blog\" ]\n- if \"collaborators\" in attributes and attributes[ \"collaborators\" ] is not None:\n+ if \"collaborators\" in attributes and attributes[ \"collaborators\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"collaborators\" ], int )\n self.__collaborators = attributes[ \"collaborators\" ]\n- if \"company\" in attributes and attributes[ \"company\" ] is not None:\n+ if \"company\" in attributes and attributes[ \"company\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"company\" ], ( str, unicode ) )\n self.__company = attributes[ \"company\" ]\n- if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None:\n+ if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"created_at\" ], ( str, unicode ) )\n self.__created_at = attributes[ \"created_at\" ]\n- if \"disk_usage\" in attributes and attributes[ \"disk_usage\" ] is not None:\n+ if \"disk_usage\" in attributes and attributes[ \"disk_usage\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"disk_usage\" ], int )\n self.__disk_usage = attributes[ \"disk_usage\" ]\n- if \"email\" in attributes and attributes[ \"email\" ] is not None:\n+ if \"email\" in attributes and attributes[ \"email\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"email\" ], ( str, unicode ) )\n self.__email = attributes[ \"email\" ]\n- if \"followers\" in attributes and attributes[ \"followers\" ] is not None:\n+ if \"followers\" in attributes and attributes[ \"followers\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"followers\" ], int )\n self.__followers = attributes[ \"followers\" ]\n- if \"following\" in attributes and attributes[ \"following\" ] is not None:\n+ if \"following\" in attributes and attributes[ \"following\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"following\" ], int )\n self.__following = attributes[ \"following\" ]\n- if \"gravatar_id\" in attributes and attributes[ \"gravatar_id\" ] is not None:\n+ if \"gravatar_id\" in attributes and attributes[ \"gravatar_id\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"gravatar_id\" ], ( str, unicode ) )\n self.__gravatar_id = attributes[ \"gravatar_id\" ]\n- if \"hireable\" in attributes and attributes[ \"hireable\" ] is not None:\n+ if \"hireable\" in attributes and attributes[ \"hireable\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"hireable\" ], bool )\n self.__hireable = attributes[ \"hireable\" ]\n- if \"html_url\" in attributes and attributes[ \"html_url\" ] is not None:\n+ if \"html_url\" in attributes and attributes[ \"html_url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"html_url\" ], ( str, unicode ) )\n self.__html_url = attributes[ \"html_url\" ]\n- if \"id\" in attributes and attributes[ \"id\" ] is not None:\n+ if \"id\" in attributes and attributes[ \"id\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"id\" ], int )\n self.__id = attributes[ \"id\" ]\n- if \"location\" in attributes and attributes[ \"location\" ] is not None:\n+ if \"location\" in attributes and attributes[ \"location\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"location\" ], ( str, unicode ) )\n self.__location = attributes[ \"location\" ]\n- if \"login\" in attributes and attributes[ \"login\" ] is not None:\n+ if \"login\" in attributes and attributes[ \"login\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"login\" ], ( str, unicode ) )\n self.__login = attributes[ \"login\" ]\n- if \"name\" in attributes and attributes[ \"name\" ] is not None:\n+ if \"name\" in attributes and attributes[ \"name\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"name\" ], ( str, unicode ) )\n self.__name = attributes[ \"name\" ]\n- if \"owned_private_repos\" in attributes and attributes[ \"owned_private_repos\" ] is not None:\n+ if \"owned_private_repos\" in attributes and attributes[ \"owned_private_repos\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"owned_private_repos\" ], int )\n self.__owned_private_repos = attributes[ \"owned_private_repos\" ]\n- if \"plan\" in attributes and attributes[ \"plan\" ] is not None:\n+ if \"plan\" in attributes and attributes[ \"plan\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"plan\" ], dict )\n self.__plan = Plan.Plan( self.__requester, attributes[ \"plan\" ], completion = LazyCompletion )\n- if \"private_gists\" in attributes and attributes[ \"private_gists\" ] is not None:\n+ if \"private_gists\" in attributes and attributes[ \"private_gists\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"private_gists\" ], int )\n self.__private_gists = attributes[ \"private_gists\" ]\n- if \"public_gists\" in attributes and attributes[ \"public_gists\" ] is not None:\n+ if \"public_gists\" in attributes and attributes[ \"public_gists\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"public_gists\" ], int )\n self.__public_gists = attributes[ \"public_gists\" ]\n- if \"public_repos\" in attributes and attributes[ \"public_repos\" ] is not None:\n+ if \"public_repos\" in attributes and attributes[ \"public_repos\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"public_repos\" ], int )\n self.__public_repos = attributes[ \"public_repos\" ]\n- if \"total_private_repos\" in attributes and attributes[ \"total_private_repos\" ] is not None:\n+ if \"total_private_repos\" in attributes and attributes[ \"total_private_repos\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"total_private_repos\" ], int )\n self.__total_private_repos = attributes[ \"total_private_repos\" ]\n- if \"type\" in attributes and attributes[ \"type\" ] is not None:\n+ if \"type\" in attributes and attributes[ \"type\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"type\" ], ( str, unicode ) )\n self.__type = attributes[ \"type\" ]\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"url\" ], ( str, unicode ) )\n self.__url = attributes[ \"url\" ]"},{"sha":"2c2e7ad5c7d5f5f6bbb16bc4149cc2388b870d63","filename":"src/github/Authorization.py","status":"modified","additions":9,"deletions":9,"changes":18,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Authorization.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Authorization.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/Authorization.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -117,21 +117,21 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"app\", \"created_at\", \"id\", \"note\", \"note_url\", \"scopes\", \"token\", \"updated_at\", \"url\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"app\" in attributes and attributes[ \"app\" ] is not None:\n+ if \"app\" in attributes and attributes[ \"app\" ] is not None: # pragma no branch\n self.__app = attributes[ \"app\" ]\n- if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None:\n+ if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None: # pragma no branch\n self.__created_at = attributes[ \"created_at\" ]\n- if \"id\" in attributes and attributes[ \"id\" ] is not None:\n+ if \"id\" in attributes and attributes[ \"id\" ] is not None: # pragma no branch\n self.__id = attributes[ \"id\" ]\n- if \"note\" in attributes and attributes[ \"note\" ] is not None:\n+ if \"note\" in attributes and attributes[ \"note\" ] is not None: # pragma no branch\n self.__note = attributes[ \"note\" ]\n- if \"note_url\" in attributes and attributes[ \"note_url\" ] is not None:\n+ if \"note_url\" in attributes and attributes[ \"note_url\" ] is not None: # pragma no branch\n self.__note_url = attributes[ \"note_url\" ]\n- if \"scopes\" in attributes and attributes[ \"scopes\" ] is not None:\n+ if \"scopes\" in attributes and attributes[ \"scopes\" ] is not None: # pragma no branch\n self.__scopes = attributes[ \"scopes\" ]\n- if \"token\" in attributes and attributes[ \"token\" ] is not None:\n+ if \"token\" in attributes and attributes[ \"token\" ] is not None: # pragma no branch\n self.__token = attributes[ \"token\" ]\n- if \"updated_at\" in attributes and attributes[ \"updated_at\" ] is not None:\n+ if \"updated_at\" in attributes and attributes[ \"updated_at\" ] is not None: # pragma no branch\n self.__updated_at = attributes[ \"updated_at\" ]\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n self.__url = attributes[ \"url\" ]"},{"sha":"96ae96478e61087c378e8f5caaf8064ba3b5d9ff","filename":"src/github/Branch.py","status":"modified","additions":2,"deletions":2,"changes":4,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Branch.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Branch.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/Branch.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -28,9 +28,9 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"commit\", \"name\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"commit\" in attributes and attributes[ \"commit\" ] is not None:\n+ if \"commit\" in attributes and attributes[ \"commit\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"commit\" ], dict )\n self.__commit = Commit.Commit( self.__requester, attributes[ \"commit\" ], completion = LazyCompletion )\n- if \"name\" in attributes and attributes[ \"name\" ] is not None:\n+ if \"name\" in attributes and attributes[ \"name\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"name\" ], ( str, unicode ) )\n self.__name = attributes[ \"name\" ]"},{"sha":"bef139283f26710febfd03d3cce3a9193dbbde22","filename":"src/github/Commit.py","status":"modified","additions":8,"deletions":8,"changes":16,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Commit.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Commit.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/Commit.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -120,33 +120,33 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"author\", \"commit\", \"committer\", \"files\", \"parents\", \"sha\", \"stats\", \"url\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"author\" in attributes and attributes[ \"author\" ] is not None:\n+ if \"author\" in attributes and attributes[ \"author\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"author\" ], dict )\n self.__author = NamedUser.NamedUser( self.__requester, attributes[ \"author\" ], completion = LazyCompletion )\n- if \"commit\" in attributes and attributes[ \"commit\" ] is not None:\n+ if \"commit\" in attributes and attributes[ \"commit\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"commit\" ], dict )\n self.__commit = GitCommit.GitCommit( self.__requester, attributes[ \"commit\" ], completion = LazyCompletion )\n- if \"committer\" in attributes and attributes[ \"committer\" ] is not None:\n+ if \"committer\" in attributes and attributes[ \"committer\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"committer\" ], dict )\n self.__committer = NamedUser.NamedUser( self.__requester, attributes[ \"committer\" ], completion = LazyCompletion )\n- if \"files\" in attributes and attributes[ \"files\" ] is not None:\n+ if \"files\" in attributes and attributes[ \"files\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"files\" ], list ) and ( len( attributes[ \"files\" ] ) == 0 or isinstance( attributes[ \"files\" ][ 0 ], dict ) )\n self.__files = [\n CommitFile.CommitFile( self.__requester, element, completion = LazyCompletion )\n for element in attributes[ \"files\" ]\n ]\n- if \"parents\" in attributes and attributes[ \"parents\" ] is not None:\n+ if \"parents\" in attributes and attributes[ \"parents\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"parents\" ], list ) and ( len( attributes[ \"parents\" ] ) == 0 or isinstance( attributes[ \"parents\" ][ 0 ], dict ) )\n self.__parents = [\n Commit( self.__requester, element, completion = LazyCompletion )\n for element in attributes[ \"parents\" ]\n ]\n- if \"sha\" in attributes and attributes[ \"sha\" ] is not None:\n+ if \"sha\" in attributes and attributes[ \"sha\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"sha\" ], ( str, unicode ) )\n self.__sha = attributes[ \"sha\" ]\n- if \"stats\" in attributes and attributes[ \"stats\" ] is not None:\n+ if \"stats\" in attributes and attributes[ \"stats\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"stats\" ], dict )\n self.__stats = CommitStats.CommitStats( self.__requester, attributes[ \"stats\" ], completion = LazyCompletion )\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"url\" ], ( str, unicode ) )\n self.__url = attributes[ \"url\" ]"},{"sha":"6e95e0bac8d227daedbcff076a182a762f4e7229","filename":"src/github/CommitComment.py","status":"modified","additions":11,"deletions":11,"changes":22,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/CommitComment.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/CommitComment.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/CommitComment.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -121,36 +121,36 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"body\", \"commit_id\", \"created_at\", \"html_url\", \"id\", \"line\", \"path\", \"position\", \"updated_at\", \"url\", \"user\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"body\" in attributes and attributes[ \"body\" ] is not None:\n+ if \"body\" in attributes and attributes[ \"body\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"body\" ], ( str, unicode ) )\n self.__body = attributes[ \"body\" ]\n- if \"commit_id\" in attributes and attributes[ \"commit_id\" ] is not None:\n+ if \"commit_id\" in attributes and attributes[ \"commit_id\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"commit_id\" ], ( str, unicode ) )\n self.__commit_id = attributes[ \"commit_id\" ]\n- if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None:\n+ if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"created_at\" ], ( str, unicode ) )\n self.__created_at = attributes[ \"created_at\" ]\n- if \"html_url\" in attributes and attributes[ \"html_url\" ] is not None:\n+ if \"html_url\" in attributes and attributes[ \"html_url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"html_url\" ], ( str, unicode ) )\n self.__html_url = attributes[ \"html_url\" ]\n- if \"id\" in attributes and attributes[ \"id\" ] is not None:\n+ if \"id\" in attributes and attributes[ \"id\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"id\" ], int )\n self.__id = attributes[ \"id\" ]\n- if \"line\" in attributes and attributes[ \"line\" ] is not None:\n+ if \"line\" in attributes and attributes[ \"line\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"line\" ], int )\n self.__line = attributes[ \"line\" ]\n- if \"path\" in attributes and attributes[ \"path\" ] is not None:\n+ if \"path\" in attributes and attributes[ \"path\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"path\" ], ( str, unicode ) )\n self.__path = attributes[ \"path\" ]\n- if \"position\" in attributes and attributes[ \"position\" ] is not None:\n+ if \"position\" in attributes and attributes[ \"position\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"position\" ], int )\n self.__position = attributes[ \"position\" ]\n- if \"updated_at\" in attributes and attributes[ \"updated_at\" ] is not None:\n+ if \"updated_at\" in attributes and attributes[ \"updated_at\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"updated_at\" ], ( str, unicode ) )\n self.__updated_at = attributes[ \"updated_at\" ]\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"url\" ], ( str, unicode ) )\n self.__url = attributes[ \"url\" ]\n- if \"user\" in attributes and attributes[ \"user\" ] is not None:\n+ if \"user\" in attributes and attributes[ \"user\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"user\" ], dict )\n self.__user = NamedUser.NamedUser( self.__requester, attributes[ \"user\" ], completion = LazyCompletion )"},{"sha":"27185b984a57346b0ef4f591b08f9398b1d1cb83","filename":"src/github/CommitFile.py","status":"modified","additions":9,"deletions":9,"changes":18,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/CommitFile.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/CommitFile.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/CommitFile.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -62,21 +62,21 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"additions\", \"blob_url\", \"changes\", \"deletions\", \"filename\", \"patch\", \"raw_url\", \"sha\", \"status\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"additions\" in attributes and attributes[ \"additions\" ] is not None:\n+ if \"additions\" in attributes and attributes[ \"additions\" ] is not None: # pragma no branch\n self.__additions = attributes[ \"additions\" ]\n- if \"blob_url\" in attributes and attributes[ \"blob_url\" ] is not None:\n+ if \"blob_url\" in attributes and attributes[ \"blob_url\" ] is not None: # pragma no branch\n self.__blob_url = attributes[ \"blob_url\" ]\n- if \"changes\" in attributes and attributes[ \"changes\" ] is not None:\n+ if \"changes\" in attributes and attributes[ \"changes\" ] is not None: # pragma no branch\n self.__changes = attributes[ \"changes\" ]\n- if \"deletions\" in attributes and attributes[ \"deletions\" ] is not None:\n+ if \"deletions\" in attributes and attributes[ \"deletions\" ] is not None: # pragma no branch\n self.__deletions = attributes[ \"deletions\" ]\n- if \"filename\" in attributes and attributes[ \"filename\" ] is not None:\n+ if \"filename\" in attributes and attributes[ \"filename\" ] is not None: # pragma no branch\n self.__filename = attributes[ \"filename\" ]\n- if \"patch\" in attributes and attributes[ \"patch\" ] is not None:\n+ if \"patch\" in attributes and attributes[ \"patch\" ] is not None: # pragma no branch\n self.__patch = attributes[ \"patch\" ]\n- if \"raw_url\" in attributes and attributes[ \"raw_url\" ] is not None:\n+ if \"raw_url\" in attributes and attributes[ \"raw_url\" ] is not None: # pragma no branch\n self.__raw_url = attributes[ \"raw_url\" ]\n- if \"sha\" in attributes and attributes[ \"sha\" ] is not None:\n+ if \"sha\" in attributes and attributes[ \"sha\" ] is not None: # pragma no branch\n self.__sha = attributes[ \"sha\" ]\n- if \"status\" in attributes and attributes[ \"status\" ] is not None:\n+ if \"status\" in attributes and attributes[ \"status\" ] is not None: # pragma no branch\n self.__status = attributes[ \"status\" ]"},{"sha":"772d0eedaf7cf55d3e3e7c6ad040d17de3ec5f80","filename":"src/github/CommitStats.py","status":"modified","additions":3,"deletions":3,"changes":6,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/CommitStats.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/CommitStats.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/CommitStats.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -32,12 +32,12 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"additions\", \"deletions\", \"total\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"additions\" in attributes and attributes[ \"additions\" ] is not None:\n+ if \"additions\" in attributes and attributes[ \"additions\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"additions\" ], int )\n self.__additions = attributes[ \"additions\" ]\n- if \"deletions\" in attributes and attributes[ \"deletions\" ] is not None:\n+ if \"deletions\" in attributes and attributes[ \"deletions\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"deletions\" ], int )\n self.__deletions = attributes[ \"deletions\" ]\n- if \"total\" in attributes and attributes[ \"total\" ] is not None:\n+ if \"total\" in attributes and attributes[ \"total\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"total\" ], int )\n self.__total = attributes[ \"total\" ]"},{"sha":"28c49231bb6c27f102b9f5d42505764cdcb79089","filename":"src/github/Download.py","status":"modified","additions":20,"deletions":20,"changes":40,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Download.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Download.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/Download.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -162,43 +162,43 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"accesskeyid\", \"acl\", \"bucket\", \"content_type\", \"created_at\", \"description\", \"download_count\", \"expirationdate\", \"html_url\", \"id\", \"mime_type\", \"name\", \"path\", \"policy\", \"prefix\", \"redirect\", \"s3_url\", \"signature\", \"size\", \"url\", \"x-amz-meta-content-disposition\" ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"accesskeyid\" in attributes and attributes[ \"accesskeyid\" ] is not None:\n+ if \"accesskeyid\" in attributes and attributes[ \"accesskeyid\" ] is not None: # pragma no branch\n self.__accesskeyid = attributes[ \"accesskeyid\" ]\n- if \"acl\" in attributes and attributes[ \"acl\" ] is not None:\n+ if \"acl\" in attributes and attributes[ \"acl\" ] is not None: # pragma no branch\n self.__acl = attributes[ \"acl\" ]\n- if \"bucket\" in attributes and attributes[ \"bucket\" ] is not None:\n+ if \"bucket\" in attributes and attributes[ \"bucket\" ] is not None: # pragma no branch\n self.__bucket = attributes[ \"bucket\" ]\n- if \"content_type\" in attributes and attributes[ \"content_type\" ] is not None:\n+ if \"content_type\" in attributes and attributes[ \"content_type\" ] is not None: # pragma no branch\n self.__content_type = attributes[ \"content_type\" ]\n- if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None:\n+ if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None: # pragma no branch\n self.__created_at = attributes[ \"created_at\" ]\n- if \"description\" in attributes and attributes[ \"description\" ] is not None:\n+ if \"description\" in attributes and attributes[ \"description\" ] is not None: # pragma no branch\n self.__description = attributes[ \"description\" ]\n- if \"download_count\" in attributes and attributes[ \"download_count\" ] is not None:\n+ if \"download_count\" in attributes and attributes[ \"download_count\" ] is not None: # pragma no branch\n self.__download_count = attributes[ \"download_count\" ]\n- if \"expirationdate\" in attributes and attributes[ \"expirationdate\" ] is not None:\n+ if \"expirationdate\" in attributes and attributes[ \"expirationdate\" ] is not None: # pragma no branch\n self.__expirationdate = attributes[ \"expirationdate\" ]\n- if \"html_url\" in attributes and attributes[ \"html_url\" ] is not None:\n+ if \"html_url\" in attributes and attributes[ \"html_url\" ] is not None: # pragma no branch\n self.__html_url = attributes[ \"html_url\" ]\n- if \"id\" in attributes and attributes[ \"id\" ] is not None:\n+ if \"id\" in attributes and attributes[ \"id\" ] is not None: # pragma no branch\n self.__id = attributes[ \"id\" ]\n- if \"mime_type\" in attributes and attributes[ \"mime_type\" ] is not None:\n+ if \"mime_type\" in attributes and attributes[ \"mime_type\" ] is not None: # pragma no branch\n self.__mime_type = attributes[ \"mime_type\" ]\n- if \"name\" in attributes and attributes[ \"name\" ] is not None:\n+ if \"name\" in attributes and attributes[ \"name\" ] is not None: # pragma no branch\n self.__name = attributes[ \"name\" ]\n- if \"path\" in attributes and attributes[ \"path\" ] is not None:\n+ if \"path\" in attributes and attributes[ \"path\" ] is not None: # pragma no branch\n self.__path = attributes[ \"path\" ]\n- if \"policy\" in attributes and attributes[ \"policy\" ] is not None:\n+ if \"policy\" in attributes and attributes[ \"policy\" ] is not None: # pragma no branch\n self.__policy = attributes[ \"policy\" ]\n- if \"prefix\" in attributes and attributes[ \"prefix\" ] is not None:\n+ if \"prefix\" in attributes and attributes[ \"prefix\" ] is not None: # pragma no branch\n self.__prefix = attributes[ \"prefix\" ]\n- if \"redirect\" in attributes and attributes[ \"redirect\" ] is not None:\n+ if \"redirect\" in attributes and attributes[ \"redirect\" ] is not None: # pragma no branch\n self.__redirect = attributes[ \"redirect\" ]\n- if \"s3_url\" in attributes and attributes[ \"s3_url\" ] is not None:\n+ if \"s3_url\" in attributes and attributes[ \"s3_url\" ] is not None: # pragma no branch\n self.__s3_url = attributes[ \"s3_url\" ]\n- if \"signature\" in attributes and attributes[ \"signature\" ] is not None:\n+ if \"signature\" in attributes and attributes[ \"signature\" ] is not None: # pragma no branch\n self.__signature = attributes[ \"signature\" ]\n- if \"size\" in attributes and attributes[ \"size\" ] is not None:\n+ if \"size\" in attributes and attributes[ \"size\" ] is not None: # pragma no branch\n self.__size = attributes[ \"size\" ]\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n self.__url = attributes[ \"url\" ]"},{"sha":"f04618e50b93c36d1b454fd3c04eda2304c3f953","filename":"src/github/Event.py","status":"modified","additions":8,"deletions":8,"changes":16,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Event.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Event.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/Event.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -60,22 +60,22 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"actor\", \"created_at\", \"id\", \"org\", \"payload\", \"public\", \"repo\", \"type\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"actor\" in attributes and attributes[ \"actor\" ] is not None:\n+ if \"actor\" in attributes and attributes[ \"actor\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"actor\" ], dict )\n self.__actor = NamedUser.NamedUser( self.__requester, attributes[ \"actor\" ], completion = LazyCompletion )\n- if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None:\n+ if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None: # pragma no branch\n self.__created_at = attributes[ \"created_at\" ]\n- if \"id\" in attributes and attributes[ \"id\" ] is not None:\n+ if \"id\" in attributes and attributes[ \"id\" ] is not None: # pragma no branch\n self.__id = attributes[ \"id\" ]\n- if \"org\" in attributes and attributes[ \"org\" ] is not None:\n+ if \"org\" in attributes and attributes[ \"org\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"org\" ], dict )\n self.__org = Organization.Organization( self.__requester, attributes[ \"org\" ], completion = LazyCompletion )\n- if \"payload\" in attributes and attributes[ \"payload\" ] is not None:\n+ if \"payload\" in attributes and attributes[ \"payload\" ] is not None: # pragma no branch\n self.__payload = attributes[ \"payload\" ]\n- if \"public\" in attributes and attributes[ \"public\" ] is not None:\n+ if \"public\" in attributes and attributes[ \"public\" ] is not None: # pragma no branch\n self.__public = attributes[ \"public\" ]\n- if \"repo\" in attributes and attributes[ \"repo\" ] is not None:\n+ if \"repo\" in attributes and attributes[ \"repo\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"repo\" ], dict )\n self.__repo = Repository.Repository( self.__requester, attributes[ \"repo\" ], completion = LazyCompletion )\n- if \"type\" in attributes and attributes[ \"type\" ] is not None:\n+ if \"type\" in attributes and attributes[ \"type\" ] is not None: # pragma no branch\n self.__type = attributes[ \"type\" ]"},{"sha":"56bd080c75f4063321baab79027bddbf48a23063","filename":"src/github/Gist.py","status":"modified","additions":15,"deletions":15,"changes":30,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Gist.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Gist.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/Gist.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -220,53 +220,53 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"comments\", \"created_at\", \"description\", \"files\", \"fork_of\", \"forks\", \"git_pull_url\", \"git_push_url\", \"history\", \"html_url\", \"id\", \"public\", \"updated_at\", \"url\", \"user\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"comments\" in attributes and attributes[ \"comments\" ] is not None:\n+ if \"comments\" in attributes and attributes[ \"comments\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"comments\" ], int )\n self.__comments = attributes[ \"comments\" ]\n- if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None:\n+ if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"created_at\" ], ( str, unicode ) )\n self.__created_at = attributes[ \"created_at\" ]\n- if \"description\" in attributes and attributes[ \"description\" ] is not None:\n+ if \"description\" in attributes and attributes[ \"description\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"description\" ], ( str, unicode ) )\n self.__description = attributes[ \"description\" ]\n- if \"files\" in attributes and attributes[ \"files\" ] is not None:\n+ if \"files\" in attributes and attributes[ \"files\" ] is not None: # pragma no branch\n self.__files = attributes[ \"files\" ]\n- if \"fork_of\" in attributes and attributes[ \"fork_of\" ] is not None:\n+ if \"fork_of\" in attributes and attributes[ \"fork_of\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"fork_of\" ], dict )\n self.__fork_of = Gist( self.__requester, attributes[ \"fork_of\" ], completion = LazyCompletion )\n- if \"forks\" in attributes and attributes[ \"forks\" ] is not None:\n+ if \"forks\" in attributes and attributes[ \"forks\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"forks\" ], list ) and ( len( attributes[ \"forks\" ] ) == 0 or isinstance( attributes[ \"forks\" ][ 0 ], dict ) )\n self.__forks = [\n Gist( self.__requester, element, completion = LazyCompletion )\n for element in attributes[ \"forks\" ]\n ]\n- if \"git_pull_url\" in attributes and attributes[ \"git_pull_url\" ] is not None:\n+ if \"git_pull_url\" in attributes and attributes[ \"git_pull_url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"git_pull_url\" ], ( str, unicode ) )\n self.__git_pull_url = attributes[ \"git_pull_url\" ]\n- if \"git_push_url\" in attributes and attributes[ \"git_push_url\" ] is not None:\n+ if \"git_push_url\" in attributes and attributes[ \"git_push_url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"git_push_url\" ], ( str, unicode ) )\n self.__git_push_url = attributes[ \"git_push_url\" ]\n- if \"history\" in attributes and attributes[ \"history\" ] is not None:\n+ if \"history\" in attributes and attributes[ \"history\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"history\" ], list ) and ( len( attributes[ \"history\" ] ) == 0 or isinstance( attributes[ \"history\" ][ 0 ], dict ) )\n self.__history = [\n GistHistoryState.GistHistoryState( self.__requester, element, completion = LazyCompletion )\n for element in attributes[ \"history\" ]\n ]\n- if \"html_url\" in attributes and attributes[ \"html_url\" ] is not None:\n+ if \"html_url\" in attributes and attributes[ \"html_url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"html_url\" ], ( str, unicode ) )\n self.__html_url = attributes[ \"html_url\" ]\n- if \"id\" in attributes and attributes[ \"id\" ] is not None:\n+ if \"id\" in attributes and attributes[ \"id\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"id\" ], ( str, unicode ) )\n self.__id = attributes[ \"id\" ]\n- if \"public\" in attributes and attributes[ \"public\" ] is not None:\n+ if \"public\" in attributes and attributes[ \"public\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"public\" ], bool )\n self.__public = attributes[ \"public\" ]\n- if \"updated_at\" in attributes and attributes[ \"updated_at\" ] is not None:\n+ if \"updated_at\" in attributes and attributes[ \"updated_at\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"updated_at\" ], ( str, unicode ) )\n self.__updated_at = attributes[ \"updated_at\" ]\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"url\" ], ( str, unicode ) )\n self.__url = attributes[ \"url\" ]\n- if \"user\" in attributes and attributes[ \"user\" ] is not None:\n+ if \"user\" in attributes and attributes[ \"user\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"user\" ], dict )\n self.__user = NamedUser.NamedUser( self.__requester, attributes[ \"user\" ], completion = LazyCompletion )"},{"sha":"a595ca288f230fbe30416bc854cc8df51682fb65","filename":"src/github/GistComment.py","status":"modified","additions":6,"deletions":6,"changes":12,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/GistComment.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/GistComment.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/GistComment.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -68,16 +68,16 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"body\", \"created_at\", \"id\", \"updated_at\", \"url\", \"user\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"body\" in attributes and attributes[ \"body\" ] is not None:\n+ if \"body\" in attributes and attributes[ \"body\" ] is not None: # pragma no branch\n self.__body = attributes[ \"body\" ]\n- if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None:\n+ if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None: # pragma no branch\n self.__created_at = attributes[ \"created_at\" ]\n- if \"id\" in attributes and attributes[ \"id\" ] is not None:\n+ if \"id\" in attributes and attributes[ \"id\" ] is not None: # pragma no branch\n self.__id = attributes[ \"id\" ]\n- if \"updated_at\" in attributes and attributes[ \"updated_at\" ] is not None:\n+ if \"updated_at\" in attributes and attributes[ \"updated_at\" ] is not None: # pragma no branch\n self.__updated_at = attributes[ \"updated_at\" ]\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n self.__url = attributes[ \"url\" ]\n- if \"user\" in attributes and attributes[ \"user\" ] is not None:\n+ if \"user\" in attributes and attributes[ \"user\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"user\" ], dict )\n self.__user = NamedUser.NamedUser( self.__requester, attributes[ \"user\" ], completion = LazyCompletion )"},{"sha":"d325a2b14180a808327beb752c8365467ff4872f","filename":"src/github/GistHistoryState.py","status":"modified","additions":5,"deletions":5,"changes":10,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/GistHistoryState.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/GistHistoryState.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/GistHistoryState.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -44,18 +44,18 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"change_status\", \"committed_at\", \"url\", \"user\", \"version\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"change_status\" in attributes and attributes[ \"change_status\" ] is not None:\n+ if \"change_status\" in attributes and attributes[ \"change_status\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"change_status\" ], dict )\n self.__change_status = CommitStats.CommitStats( self.__requester, attributes[ \"change_status\" ], completion = LazyCompletion )\n- if \"committed_at\" in attributes and attributes[ \"committed_at\" ] is not None:\n+ if \"committed_at\" in attributes and attributes[ \"committed_at\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"committed_at\" ], ( str, unicode ) )\n self.__committed_at = attributes[ \"committed_at\" ]\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"url\" ], ( str, unicode ) )\n self.__url = attributes[ \"url\" ]\n- if \"user\" in attributes and attributes[ \"user\" ] is not None:\n+ if \"user\" in attributes and attributes[ \"user\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"user\" ], dict )\n self.__user = NamedUser.NamedUser( self.__requester, attributes[ \"user\" ], completion = LazyCompletion )\n- if \"version\" in attributes and attributes[ \"version\" ] is not None:\n+ if \"version\" in attributes and attributes[ \"version\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"version\" ], ( str, unicode ) )\n self.__version = attributes[ \"version\" ]"},{"sha":"2c710f56cfbe950099e74565680aee6ef2a20402","filename":"src/github/GitAuthor.py","status":"modified","additions":3,"deletions":3,"changes":6,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/GitAuthor.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/GitAuthor.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/GitAuthor.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -32,12 +32,12 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"date\", \"email\", \"name\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"date\" in attributes and attributes[ \"date\" ] is not None:\n+ if \"date\" in attributes and attributes[ \"date\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"date\" ], ( str, unicode ) )\n self.__date = attributes[ \"date\" ]\n- if \"email\" in attributes and attributes[ \"email\" ] is not None:\n+ if \"email\" in attributes and attributes[ \"email\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"email\" ], ( str, unicode ) )\n self.__email = attributes[ \"email\" ]\n- if \"name\" in attributes and attributes[ \"name\" ] is not None:\n+ if \"name\" in attributes and attributes[ \"name\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"name\" ], ( str, unicode ) )\n self.__name = attributes[ \"name\" ]"},{"sha":"4defbde8b71269490ca951e836b5b1e1c540cb64","filename":"src/github/GitBlob.py","status":"modified","additions":5,"deletions":5,"changes":10,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/GitBlob.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/GitBlob.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/GitBlob.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -42,18 +42,18 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"content\", \"encoding\", \"sha\", \"size\", \"url\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"content\" in attributes and attributes[ \"content\" ] is not None:\n+ if \"content\" in attributes and attributes[ \"content\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"content\" ], ( str, unicode ) )\n self.__content = attributes[ \"content\" ]\n- if \"encoding\" in attributes and attributes[ \"encoding\" ] is not None:\n+ if \"encoding\" in attributes and attributes[ \"encoding\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"encoding\" ], ( str, unicode ) )\n self.__encoding = attributes[ \"encoding\" ]\n- if \"sha\" in attributes and attributes[ \"sha\" ] is not None:\n+ if \"sha\" in attributes and attributes[ \"sha\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"sha\" ], ( str, unicode ) )\n self.__sha = attributes[ \"sha\" ]\n- if \"size\" in attributes and attributes[ \"size\" ] is not None:\n+ if \"size\" in attributes and attributes[ \"size\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"size\" ], int )\n self.__size = attributes[ \"size\" ]\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"url\" ], ( str, unicode ) )\n self.__url = attributes[ \"url\" ]"},{"sha":"13382cd7ac3c062fdb71e0873b223dbdd18f244e","filename":"src/github/GitCommit.py","status":"modified","additions":7,"deletions":7,"changes":14,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/GitCommit.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/GitCommit.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/GitCommit.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -55,27 +55,27 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"author\", \"committer\", \"message\", \"parents\", \"sha\", \"tree\", \"url\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"author\" in attributes and attributes[ \"author\" ] is not None:\n+ if \"author\" in attributes and attributes[ \"author\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"author\" ], dict )\n self.__author = GitAuthor.GitAuthor( self.__requester, attributes[ \"author\" ], completion = LazyCompletion )\n- if \"committer\" in attributes and attributes[ \"committer\" ] is not None:\n+ if \"committer\" in attributes and attributes[ \"committer\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"committer\" ], dict )\n self.__committer = GitAuthor.GitAuthor( self.__requester, attributes[ \"committer\" ], completion = LazyCompletion )\n- if \"message\" in attributes and attributes[ \"message\" ] is not None:\n+ if \"message\" in attributes and attributes[ \"message\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"message\" ], ( str, unicode ) )\n self.__message = attributes[ \"message\" ]\n- if \"parents\" in attributes and attributes[ \"parents\" ] is not None:\n+ if \"parents\" in attributes and attributes[ \"parents\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"parents\" ], list ) and ( len( attributes[ \"parents\" ] ) == 0 or isinstance( attributes[ \"parents\" ][ 0 ], dict ) )\n self.__parents = [\n GitCommit( self.__requester, element, completion = LazyCompletion )\n for element in attributes[ \"parents\" ]\n ]\n- if \"sha\" in attributes and attributes[ \"sha\" ] is not None:\n+ if \"sha\" in attributes and attributes[ \"sha\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"sha\" ], ( str, unicode ) )\n self.__sha = attributes[ \"sha\" ]\n- if \"tree\" in attributes and attributes[ \"tree\" ] is not None:\n+ if \"tree\" in attributes and attributes[ \"tree\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"tree\" ], dict )\n self.__tree = GitTree.GitTree( self.__requester, attributes[ \"tree\" ], completion = LazyCompletion )\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"url\" ], ( str, unicode ) )\n self.__url = attributes[ \"url\" ]"},{"sha":"05e3067c1014ce22ced1faca83a74fa9215fd97e","filename":"src/github/GitObject.py","status":"modified","additions":3,"deletions":3,"changes":6,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/GitObject.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/GitObject.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/GitObject.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -32,12 +32,12 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"sha\", \"type\", \"url\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"sha\" in attributes and attributes[ \"sha\" ] is not None:\n+ if \"sha\" in attributes and attributes[ \"sha\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"sha\" ], ( str, unicode ) )\n self.__sha = attributes[ \"sha\" ]\n- if \"type\" in attributes and attributes[ \"type\" ] is not None:\n+ if \"type\" in attributes and attributes[ \"type\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"type\" ], ( str, unicode ) )\n self.__type = attributes[ \"type\" ]\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"url\" ], ( str, unicode ) )\n self.__url = attributes[ \"url\" ]"},{"sha":"bfc8d91335cf0f81694a81ce534d79988f1bb0fe","filename":"src/github/GitRef.py","status":"modified","additions":3,"deletions":3,"changes":6,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/GitRef.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/GitRef.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/GitRef.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -55,12 +55,12 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"object\", \"ref\", \"url\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"object\" in attributes and attributes[ \"object\" ] is not None:\n+ if \"object\" in attributes and attributes[ \"object\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"object\" ], dict )\n self.__object = GitObject.GitObject( self.__requester, attributes[ \"object\" ], completion = LazyCompletion )\n- if \"ref\" in attributes and attributes[ \"ref\" ] is not None:\n+ if \"ref\" in attributes and attributes[ \"ref\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"ref\" ], ( str, unicode ) )\n self.__ref = attributes[ \"ref\" ]\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"url\" ], ( str, unicode ) )\n self.__url = attributes[ \"url\" ]"},{"sha":"532d3a056c2490883f826da7369067a24d001055","filename":"src/github/GitTag.py","status":"modified","additions":6,"deletions":6,"changes":12,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/GitTag.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/GitTag.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/GitTag.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -49,21 +49,21 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"message\", \"object\", \"sha\", \"tag\", \"tagger\", \"url\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"message\" in attributes and attributes[ \"message\" ] is not None:\n+ if \"message\" in attributes and attributes[ \"message\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"message\" ], ( str, unicode ) )\n self.__message = attributes[ \"message\" ]\n- if \"object\" in attributes and attributes[ \"object\" ] is not None:\n+ if \"object\" in attributes and attributes[ \"object\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"object\" ], dict )\n self.__object = GitObject.GitObject( self.__requester, attributes[ \"object\" ], completion = LazyCompletion )\n- if \"sha\" in attributes and attributes[ \"sha\" ] is not None:\n+ if \"sha\" in attributes and attributes[ \"sha\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"sha\" ], ( str, unicode ) )\n self.__sha = attributes[ \"sha\" ]\n- if \"tag\" in attributes and attributes[ \"tag\" ] is not None:\n+ if \"tag\" in attributes and attributes[ \"tag\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"tag\" ], ( str, unicode ) )\n self.__tag = attributes[ \"tag\" ]\n- if \"tagger\" in attributes and attributes[ \"tagger\" ] is not None:\n+ if \"tagger\" in attributes and attributes[ \"tagger\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"tagger\" ], dict )\n self.__tagger = GitAuthor.GitAuthor( self.__requester, attributes[ \"tagger\" ], completion = LazyCompletion )\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"url\" ], ( str, unicode ) )\n self.__url = attributes[ \"url\" ]"},{"sha":"321f54fc52bcb0ac7843ecf9de53c091e2ad942c","filename":"src/github/GitTree.py","status":"modified","additions":3,"deletions":3,"changes":6,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/GitTree.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/GitTree.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/GitTree.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -33,15 +33,15 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"sha\", \"tree\", \"url\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"sha\" in attributes and attributes[ \"sha\" ] is not None:\n+ if \"sha\" in attributes and attributes[ \"sha\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"sha\" ], ( str, unicode ) )\n self.__sha = attributes[ \"sha\" ]\n- if \"tree\" in attributes and attributes[ \"tree\" ] is not None:\n+ if \"tree\" in attributes and attributes[ \"tree\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"tree\" ], list ) and ( len( attributes[ \"tree\" ] ) == 0 or isinstance( attributes[ \"tree\" ][ 0 ], dict ) )\n self.__tree = [\n GitTreeElement.GitTreeElement( self.__requester, element, completion = LazyCompletion )\n for element in attributes[ \"tree\" ]\n ]\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"url\" ], ( str, unicode ) )\n self.__url = attributes[ \"url\" ]"},{"sha":"97ff07009a4af0d1bacc2c404dbbbff58700b359","filename":"src/github/GitTreeElement.py","status":"modified","additions":6,"deletions":6,"changes":12,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/GitTreeElement.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/GitTreeElement.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/GitTreeElement.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -47,21 +47,21 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"mode\", \"path\", \"sha\", \"size\", \"type\", \"url\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"mode\" in attributes and attributes[ \"mode\" ] is not None:\n+ if \"mode\" in attributes and attributes[ \"mode\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"mode\" ], ( str, unicode ) )\n self.__mode = attributes[ \"mode\" ]\n- if \"path\" in attributes and attributes[ \"path\" ] is not None:\n+ if \"path\" in attributes and attributes[ \"path\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"path\" ], ( str, unicode ) )\n self.__path = attributes[ \"path\" ]\n- if \"sha\" in attributes and attributes[ \"sha\" ] is not None:\n+ if \"sha\" in attributes and attributes[ \"sha\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"sha\" ], ( str, unicode ) )\n self.__sha = attributes[ \"sha\" ]\n- if \"size\" in attributes and attributes[ \"size\" ] is not None:\n+ if \"size\" in attributes and attributes[ \"size\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"size\" ], int )\n self.__size = attributes[ \"size\" ]\n- if \"type\" in attributes and attributes[ \"type\" ] is not None:\n+ if \"type\" in attributes and attributes[ \"type\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"type\" ], ( str, unicode ) )\n self.__type = attributes[ \"type\" ]\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"url\" ], ( str, unicode ) )\n self.__url = attributes[ \"url\" ]"},{"sha":"9ac71aa29d8287d57b4d2109754f9da1b0a13fb7","filename":"src/github/Hook.py","status":"modified","additions":9,"deletions":9,"changes":18,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Hook.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Hook.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/Hook.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -99,21 +99,21 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"active\", \"config\", \"created_at\", \"events\", \"id\", \"last_response\", \"name\", \"updated_at\", \"url\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"active\" in attributes and attributes[ \"active\" ] is not None:\n+ if \"active\" in attributes and attributes[ \"active\" ] is not None: # pragma no branch\n self.__active = attributes[ \"active\" ]\n- if \"config\" in attributes and attributes[ \"config\" ] is not None:\n+ if \"config\" in attributes and attributes[ \"config\" ] is not None: # pragma no branch\n self.__config = attributes[ \"config\" ]\n- if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None:\n+ if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None: # pragma no branch\n self.__created_at = attributes[ \"created_at\" ]\n- if \"events\" in attributes and attributes[ \"events\" ] is not None:\n+ if \"events\" in attributes and attributes[ \"events\" ] is not None: # pragma no branch\n self.__events = attributes[ \"events\" ]\n- if \"id\" in attributes and attributes[ \"id\" ] is not None:\n+ if \"id\" in attributes and attributes[ \"id\" ] is not None: # pragma no branch\n self.__id = attributes[ \"id\" ]\n- if \"last_response\" in attributes and attributes[ \"last_response\" ] is not None:\n+ if \"last_response\" in attributes and attributes[ \"last_response\" ] is not None: # pragma no branch\n self.__last_response = attributes[ \"last_response\" ]\n- if \"name\" in attributes and attributes[ \"name\" ] is not None:\n+ if \"name\" in attributes and attributes[ \"name\" ] is not None: # pragma no branch\n self.__name = attributes[ \"name\" ]\n- if \"updated_at\" in attributes and attributes[ \"updated_at\" ] is not None:\n+ if \"updated_at\" in attributes and attributes[ \"updated_at\" ] is not None: # pragma no branch\n self.__updated_at = attributes[ \"updated_at\" ]\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n self.__url = attributes[ \"url\" ]"},{"sha":"8c10440882b7a8a0ce52adacff48066cce006a31","filename":"src/github/Issue.py","status":"modified","additions":32,"deletions":21,"changes":53,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Issue.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Issue.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/Issue.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -110,7 +110,7 @@ def user( self ):\n return self.__user\n \n def add_to_labels( self, *labels ):\n- post_parameters = labels\n+ post_parameters = [ label.name for label in labels ]\n status, headers, data = self.__requester.request(\n \"POST\",\n str( self.url ) + \"/labels\",\n@@ -131,7 +131,12 @@ def create_comment( self, body ):\n return IssueComment.IssueComment( self.__requester, data, completion = NoCompletion )\n \n def delete_labels( self ):\n- pass\n+ status, headers, data = self.__requester.request(\n+ \"DELETE\",\n+ str( self.url ) + \"/labels\",\n+ None,\n+ None\n+ )\n \n def edit( self, title = DefaultValueForOptionalParameters, body = DefaultValueForOptionalParameters, assignee = DefaultValueForOptionalParameters, state = DefaultValueForOptionalParameters, milestone = DefaultValueForOptionalParameters, labels = DefaultValueForOptionalParameters ):\n post_parameters = {\n@@ -216,7 +221,13 @@ def remove_from_labels( self, label ):\n )\n \n def set_labels( self, *labels ):\n- pass\n+ post_parameters = [ label.name for label in labels ]\n+ status, headers, data = self.__requester.request(\n+ \"PUT\",\n+ str( self.url ) + \"/labels\",\n+ None,\n+ post_parameters\n+ )\n \n def __initAttributes( self ):\n self.__assignee = None\n@@ -257,59 +268,59 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"assignee\", \"body\", \"closed_at\", \"closed_by\", \"comments\", \"created_at\", \"html_url\", \"id\", \"labels\", \"milestone\", \"number\", \"pull_request\", \"repository\", \"state\", \"title\", \"updated_at\", \"url\", \"user\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"assignee\" in attributes and attributes[ \"assignee\" ] is not None:\n+ if \"assignee\" in attributes and attributes[ \"assignee\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"assignee\" ], dict )\n self.__assignee = NamedUser.NamedUser( self.__requester, attributes[ \"assignee\" ], completion = LazyCompletion )\n- if \"body\" in attributes and attributes[ \"body\" ] is not None:\n+ if \"body\" in attributes and attributes[ \"body\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"body\" ], ( str, unicode ) )\n self.__body = attributes[ \"body\" ]\n- if \"closed_at\" in attributes and attributes[ \"closed_at\" ] is not None:\n+ if \"closed_at\" in attributes and attributes[ \"closed_at\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"closed_at\" ], ( str, unicode ) )\n self.__closed_at = attributes[ \"closed_at\" ]\n- if \"closed_by\" in attributes and attributes[ \"closed_by\" ] is not None:\n+ if \"closed_by\" in attributes and attributes[ \"closed_by\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"closed_by\" ], dict )\n self.__closed_by = NamedUser.NamedUser( self.__requester, attributes[ \"closed_by\" ], completion = LazyCompletion )\n- if \"comments\" in attributes and attributes[ \"comments\" ] is not None:\n+ if \"comments\" in attributes and attributes[ \"comments\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"comments\" ], int )\n self.__comments = attributes[ \"comments\" ]\n- if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None:\n+ if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"created_at\" ], ( str, unicode ) )\n self.__created_at = attributes[ \"created_at\" ]\n- if \"html_url\" in attributes and attributes[ \"html_url\" ] is not None:\n+ if \"html_url\" in attributes and attributes[ \"html_url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"html_url\" ], ( str, unicode ) )\n self.__html_url = attributes[ \"html_url\" ]\n- if \"id\" in attributes and attributes[ \"id\" ] is not None:\n+ if \"id\" in attributes and attributes[ \"id\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"id\" ], int )\n self.__id = attributes[ \"id\" ]\n- if \"labels\" in attributes and attributes[ \"labels\" ] is not None:\n+ if \"labels\" in attributes and attributes[ \"labels\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"labels\" ], list ) and ( len( attributes[ \"labels\" ] ) == 0 or isinstance( attributes[ \"labels\" ][ 0 ], dict ) )\n self.__labels = [\n Label.Label( self.__requester, element, completion = LazyCompletion )\n for element in attributes[ \"labels\" ]\n ]\n- if \"milestone\" in attributes and attributes[ \"milestone\" ] is not None:\n+ if \"milestone\" in attributes and attributes[ \"milestone\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"milestone\" ], dict )\n self.__milestone = Milestone.Milestone( self.__requester, attributes[ \"milestone\" ], completion = LazyCompletion )\n- if \"number\" in attributes and attributes[ \"number\" ] is not None:\n+ if \"number\" in attributes and attributes[ \"number\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"number\" ], int )\n self.__number = attributes[ \"number\" ]\n- if \"pull_request\" in attributes and attributes[ \"pull_request\" ] is not None:\n+ if \"pull_request\" in attributes and attributes[ \"pull_request\" ] is not None: # pragma no branch\n self.__pull_request = attributes[ \"pull_request\" ]\n- if \"repository\" in attributes and attributes[ \"repository\" ] is not None:\n+ if \"repository\" in attributes and attributes[ \"repository\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"repository\" ], dict )\n self.__repository = Repository.Repository( self.__requester, attributes[ \"repository\" ], completion = LazyCompletion )\n- if \"state\" in attributes and attributes[ \"state\" ] is not None:\n+ if \"state\" in attributes and attributes[ \"state\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"state\" ], ( str, unicode ) )\n self.__state = attributes[ \"state\" ]\n- if \"title\" in attributes and attributes[ \"title\" ] is not None:\n+ if \"title\" in attributes and attributes[ \"title\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"title\" ], ( str, unicode ) )\n self.__title = attributes[ \"title\" ]\n- if \"updated_at\" in attributes and attributes[ \"updated_at\" ] is not None:\n+ if \"updated_at\" in attributes and attributes[ \"updated_at\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"updated_at\" ], ( str, unicode ) )\n self.__updated_at = attributes[ \"updated_at\" ]\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"url\" ], ( str, unicode ) )\n self.__url = attributes[ \"url\" ]\n- if \"user\" in attributes and attributes[ \"user\" ] is not None:\n+ if \"user\" in attributes and attributes[ \"user\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"user\" ], dict )\n self.__user = NamedUser.NamedUser( self.__requester, attributes[ \"user\" ], completion = LazyCompletion )"},{"sha":"5ed8d8d10b46e6427503e050fdfad6ba22837e25","filename":"src/github/IssueComment.py","status":"modified","additions":6,"deletions":6,"changes":12,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/IssueComment.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/IssueComment.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/IssueComment.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -68,16 +68,16 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"body\", \"created_at\", \"id\", \"updated_at\", \"url\", \"user\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"body\" in attributes and attributes[ \"body\" ] is not None:\n+ if \"body\" in attributes and attributes[ \"body\" ] is not None: # pragma no branch\n self.__body = attributes[ \"body\" ]\n- if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None:\n+ if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None: # pragma no branch\n self.__created_at = attributes[ \"created_at\" ]\n- if \"id\" in attributes and attributes[ \"id\" ] is not None:\n+ if \"id\" in attributes and attributes[ \"id\" ] is not None: # pragma no branch\n self.__id = attributes[ \"id\" ]\n- if \"updated_at\" in attributes and attributes[ \"updated_at\" ] is not None:\n+ if \"updated_at\" in attributes and attributes[ \"updated_at\" ] is not None: # pragma no branch\n self.__updated_at = attributes[ \"updated_at\" ]\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n self.__url = attributes[ \"url\" ]\n- if \"user\" in attributes and attributes[ \"user\" ] is not None:\n+ if \"user\" in attributes and attributes[ \"user\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"user\" ], dict )\n self.__user = NamedUser.NamedUser( self.__requester, attributes[ \"user\" ], completion = LazyCompletion )"},{"sha":"a276fe9eaea713a8599710636ead83d77023b99f","filename":"src/github/IssueEvent.py","status":"modified","additions":7,"deletions":7,"changes":14,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/IssueEvent.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/IssueEvent.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/IssueEvent.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -78,24 +78,24 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"actor\", \"commit_id\", \"created_at\", \"event\", \"id\", \"issue\", \"url\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"actor\" in attributes and attributes[ \"actor\" ] is not None:\n+ if \"actor\" in attributes and attributes[ \"actor\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"actor\" ], dict )\n self.__actor = NamedUser.NamedUser( self.__requester, attributes[ \"actor\" ], completion = LazyCompletion )\n- if \"commit_id\" in attributes and attributes[ \"commit_id\" ] is not None:\n+ if \"commit_id\" in attributes and attributes[ \"commit_id\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"commit_id\" ], ( str, unicode ) )\n self.__commit_id = attributes[ \"commit_id\" ]\n- if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None:\n+ if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"created_at\" ], ( str, unicode ) )\n self.__created_at = attributes[ \"created_at\" ]\n- if \"event\" in attributes and attributes[ \"event\" ] is not None:\n+ if \"event\" in attributes and attributes[ \"event\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"event\" ], ( str, unicode ) )\n self.__event = attributes[ \"event\" ]\n- if \"id\" in attributes and attributes[ \"id\" ] is not None:\n+ if \"id\" in attributes and attributes[ \"id\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"id\" ], int )\n self.__id = attributes[ \"id\" ]\n- if \"issue\" in attributes and attributes[ \"issue\" ] is not None:\n+ if \"issue\" in attributes and attributes[ \"issue\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"issue\" ], dict )\n self.__issue = Issue.Issue( self.__requester, attributes[ \"issue\" ], completion = LazyCompletion )\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"url\" ], ( str, unicode ) )\n self.__url = attributes[ \"url\" ]"},{"sha":"1f11c4d96625bb675a5c9ce84c813caf4745ff67","filename":"src/github/Label.py","status":"modified","additions":10,"deletions":3,"changes":13,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Label.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Label.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/Label.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -1,6 +1,8 @@\n # WARNING: this file is generated automaticaly.\n # Do not modify it manually, your work would be lost.\n \n+import urllib\n+\n import PaginatedList\n from GithubObject import *\n \n@@ -43,6 +45,11 @@ def edit( self, name, color ):\n )\n self.__useAttributes( data )\n \n+ # @todo Remove '_identity' from the normalized json description\n+ @property\n+ def _identity( self ):\n+ return urllib.quote( self.name )\n+\n def __initAttributes( self ):\n self.__color = None\n self.__name = None\n@@ -53,9 +60,9 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"color\", \"name\", \"url\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"color\" in attributes and attributes[ \"color\" ] is not None:\n+ if \"color\" in attributes and attributes[ \"color\" ] is not None: # pragma no branch\n self.__color = attributes[ \"color\" ]\n- if \"name\" in attributes and attributes[ \"name\" ] is not None:\n+ if \"name\" in attributes and attributes[ \"name\" ] is not None: # pragma no branch\n self.__name = attributes[ \"name\" ]\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n self.__url = attributes[ \"url\" ]"},{"sha":"ffbb51b8941c5bdd34bbc539825666e1155b0699","filename":"src/github/Milestone.py","status":"modified","additions":11,"deletions":11,"changes":22,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Milestone.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Milestone.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/Milestone.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -114,36 +114,36 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"closed_issues\", \"created_at\", \"creator\", \"description\", \"due_on\", \"id\", \"number\", \"open_issues\", \"state\", \"title\", \"url\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"closed_issues\" in attributes and attributes[ \"closed_issues\" ] is not None:\n+ if \"closed_issues\" in attributes and attributes[ \"closed_issues\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"closed_issues\" ], int )\n self.__closed_issues = attributes[ \"closed_issues\" ]\n- if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None:\n+ if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"created_at\" ], ( str, unicode ) )\n self.__created_at = attributes[ \"created_at\" ]\n- if \"creator\" in attributes and attributes[ \"creator\" ] is not None:\n+ if \"creator\" in attributes and attributes[ \"creator\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"creator\" ], dict )\n self.__creator = NamedUser.NamedUser( self.__requester, attributes[ \"creator\" ], completion = LazyCompletion )\n- if \"description\" in attributes and attributes[ \"description\" ] is not None:\n+ if \"description\" in attributes and attributes[ \"description\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"description\" ], ( str, unicode ) )\n self.__description = attributes[ \"description\" ]\n- if \"due_on\" in attributes and attributes[ \"due_on\" ] is not None:\n+ if \"due_on\" in attributes and attributes[ \"due_on\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"due_on\" ], ( str, unicode ) )\n self.__due_on = attributes[ \"due_on\" ]\n- if \"id\" in attributes and attributes[ \"id\" ] is not None:\n+ if \"id\" in attributes and attributes[ \"id\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"id\" ], int )\n self.__id = attributes[ \"id\" ]\n- if \"number\" in attributes and attributes[ \"number\" ] is not None:\n+ if \"number\" in attributes and attributes[ \"number\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"number\" ], int )\n self.__number = attributes[ \"number\" ]\n- if \"open_issues\" in attributes and attributes[ \"open_issues\" ] is not None:\n+ if \"open_issues\" in attributes and attributes[ \"open_issues\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"open_issues\" ], int )\n self.__open_issues = attributes[ \"open_issues\" ]\n- if \"state\" in attributes and attributes[ \"state\" ] is not None:\n+ if \"state\" in attributes and attributes[ \"state\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"state\" ], ( str, unicode ) )\n self.__state = attributes[ \"state\" ]\n- if \"title\" in attributes and attributes[ \"title\" ] is not None:\n+ if \"title\" in attributes and attributes[ \"title\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"title\" ], ( str, unicode ) )\n self.__title = attributes[ \"title\" ]\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"url\" ], ( str, unicode ) )\n self.__url = attributes[ \"url\" ]"},{"sha":"61400ed17d9985d2de72dbf8b489de903dbe494e","filename":"src/github/NamedUser.py","status":"modified","additions":26,"deletions":26,"changes":52,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/NamedUser.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/NamedUser.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/NamedUser.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -365,81 +365,81 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"avatar_url\", \"bio\", \"blog\", \"collaborators\", \"company\", \"contributions\", \"created_at\", \"disk_usage\", \"email\", \"followers\", \"following\", \"gravatar_id\", \"hireable\", \"html_url\", \"id\", \"location\", \"login\", \"name\", \"owned_private_repos\", \"plan\", \"private_gists\", \"public_gists\", \"public_repos\", \"total_private_repos\", \"type\", \"url\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"avatar_url\" in attributes and attributes[ \"avatar_url\" ] is not None:\n+ if \"avatar_url\" in attributes and attributes[ \"avatar_url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"avatar_url\" ], ( str, unicode ) )\n self.__avatar_url = attributes[ \"avatar_url\" ]\n- if \"bio\" in attributes and attributes[ \"bio\" ] is not None:\n+ if \"bio\" in attributes and attributes[ \"bio\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"bio\" ], ( str, unicode ) )\n self.__bio = attributes[ \"bio\" ]\n- if \"blog\" in attributes and attributes[ \"blog\" ] is not None:\n+ if \"blog\" in attributes and attributes[ \"blog\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"blog\" ], ( str, unicode ) )\n self.__blog = attributes[ \"blog\" ]\n- if \"collaborators\" in attributes and attributes[ \"collaborators\" ] is not None:\n+ if \"collaborators\" in attributes and attributes[ \"collaborators\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"collaborators\" ], int )\n self.__collaborators = attributes[ \"collaborators\" ]\n- if \"company\" in attributes and attributes[ \"company\" ] is not None:\n+ if \"company\" in attributes and attributes[ \"company\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"company\" ], ( str, unicode ) )\n self.__company = attributes[ \"company\" ]\n- if \"contributions\" in attributes and attributes[ \"contributions\" ] is not None:\n+ if \"contributions\" in attributes and attributes[ \"contributions\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"contributions\" ], int )\n self.__contributions = attributes[ \"contributions\" ]\n- if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None:\n+ if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"created_at\" ], ( str, unicode ) )\n self.__created_at = attributes[ \"created_at\" ]\n- if \"disk_usage\" in attributes and attributes[ \"disk_usage\" ] is not None:\n+ if \"disk_usage\" in attributes and attributes[ \"disk_usage\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"disk_usage\" ], int )\n self.__disk_usage = attributes[ \"disk_usage\" ]\n- if \"email\" in attributes and attributes[ \"email\" ] is not None:\n+ if \"email\" in attributes and attributes[ \"email\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"email\" ], ( str, unicode ) )\n self.__email = attributes[ \"email\" ]\n- if \"followers\" in attributes and attributes[ \"followers\" ] is not None:\n+ if \"followers\" in attributes and attributes[ \"followers\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"followers\" ], int )\n self.__followers = attributes[ \"followers\" ]\n- if \"following\" in attributes and attributes[ \"following\" ] is not None:\n+ if \"following\" in attributes and attributes[ \"following\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"following\" ], int )\n self.__following = attributes[ \"following\" ]\n- if \"gravatar_id\" in attributes and attributes[ \"gravatar_id\" ] is not None:\n+ if \"gravatar_id\" in attributes and attributes[ \"gravatar_id\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"gravatar_id\" ], ( str, unicode ) )\n self.__gravatar_id = attributes[ \"gravatar_id\" ]\n- if \"hireable\" in attributes and attributes[ \"hireable\" ] is not None:\n+ if \"hireable\" in attributes and attributes[ \"hireable\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"hireable\" ], bool )\n self.__hireable = attributes[ \"hireable\" ]\n- if \"html_url\" in attributes and attributes[ \"html_url\" ] is not None:\n+ if \"html_url\" in attributes and attributes[ \"html_url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"html_url\" ], ( str, unicode ) )\n self.__html_url = attributes[ \"html_url\" ]\n- if \"id\" in attributes and attributes[ \"id\" ] is not None:\n+ if \"id\" in attributes and attributes[ \"id\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"id\" ], int )\n self.__id = attributes[ \"id\" ]\n- if \"location\" in attributes and attributes[ \"location\" ] is not None:\n+ if \"location\" in attributes and attributes[ \"location\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"location\" ], ( str, unicode ) )\n self.__location = attributes[ \"location\" ]\n- if \"login\" in attributes and attributes[ \"login\" ] is not None:\n+ if \"login\" in attributes and attributes[ \"login\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"login\" ], ( str, unicode ) )\n self.__login = attributes[ \"login\" ]\n- if \"name\" in attributes and attributes[ \"name\" ] is not None:\n+ if \"name\" in attributes and attributes[ \"name\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"name\" ], ( str, unicode ) )\n self.__name = attributes[ \"name\" ]\n- if \"owned_private_repos\" in attributes and attributes[ \"owned_private_repos\" ] is not None:\n+ if \"owned_private_repos\" in attributes and attributes[ \"owned_private_repos\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"owned_private_repos\" ], int )\n self.__owned_private_repos = attributes[ \"owned_private_repos\" ]\n- if \"plan\" in attributes and attributes[ \"plan\" ] is not None:\n+ if \"plan\" in attributes and attributes[ \"plan\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"plan\" ], dict )\n self.__plan = Plan.Plan( self.__requester, attributes[ \"plan\" ], completion = LazyCompletion )\n- if \"private_gists\" in attributes and attributes[ \"private_gists\" ] is not None:\n+ if \"private_gists\" in attributes and attributes[ \"private_gists\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"private_gists\" ], int )\n self.__private_gists = attributes[ \"private_gists\" ]\n- if \"public_gists\" in attributes and attributes[ \"public_gists\" ] is not None:\n+ if \"public_gists\" in attributes and attributes[ \"public_gists\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"public_gists\" ], int )\n self.__public_gists = attributes[ \"public_gists\" ]\n- if \"public_repos\" in attributes and attributes[ \"public_repos\" ] is not None:\n+ if \"public_repos\" in attributes and attributes[ \"public_repos\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"public_repos\" ], int )\n self.__public_repos = attributes[ \"public_repos\" ]\n- if \"total_private_repos\" in attributes and attributes[ \"total_private_repos\" ] is not None:\n+ if \"total_private_repos\" in attributes and attributes[ \"total_private_repos\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"total_private_repos\" ], int )\n self.__total_private_repos = attributes[ \"total_private_repos\" ]\n- if \"type\" in attributes and attributes[ \"type\" ] is not None:\n+ if \"type\" in attributes and attributes[ \"type\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"type\" ], ( str, unicode ) )\n self.__type = attributes[ \"type\" ]\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"url\" ], ( str, unicode ) )\n self.__url = attributes[ \"url\" ]"},{"sha":"78ac913ccb12dc01a5064095456078444925ae9e","filename":"src/github/Organization.py","status":"modified","additions":24,"deletions":24,"changes":48,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Organization.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Organization.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/Organization.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -390,75 +390,75 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"avatar_url\", \"billing_email\", \"blog\", \"collaborators\", \"company\", \"created_at\", \"disk_usage\", \"email\", \"followers\", \"following\", \"gravatar_id\", \"html_url\", \"id\", \"location\", \"login\", \"name\", \"owned_private_repos\", \"plan\", \"private_gists\", \"public_gists\", \"public_repos\", \"total_private_repos\", \"type\", \"url\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"avatar_url\" in attributes and attributes[ \"avatar_url\" ] is not None:\n+ if \"avatar_url\" in attributes and attributes[ \"avatar_url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"avatar_url\" ], ( str, unicode ) )\n self.__avatar_url = attributes[ \"avatar_url\" ]\n- if \"billing_email\" in attributes and attributes[ \"billing_email\" ] is not None:\n+ if \"billing_email\" in attributes and attributes[ \"billing_email\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"billing_email\" ], ( str, unicode ) )\n self.__billing_email = attributes[ \"billing_email\" ]\n- if \"blog\" in attributes and attributes[ \"blog\" ] is not None:\n+ if \"blog\" in attributes and attributes[ \"blog\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"blog\" ], ( str, unicode ) )\n self.__blog = attributes[ \"blog\" ]\n- if \"collaborators\" in attributes and attributes[ \"collaborators\" ] is not None:\n+ if \"collaborators\" in attributes and attributes[ \"collaborators\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"collaborators\" ], int )\n self.__collaborators = attributes[ \"collaborators\" ]\n- if \"company\" in attributes and attributes[ \"company\" ] is not None:\n+ if \"company\" in attributes and attributes[ \"company\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"company\" ], ( str, unicode ) )\n self.__company = attributes[ \"company\" ]\n- if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None:\n+ if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"created_at\" ], ( str, unicode ) )\n self.__created_at = attributes[ \"created_at\" ]\n- if \"disk_usage\" in attributes and attributes[ \"disk_usage\" ] is not None:\n+ if \"disk_usage\" in attributes and attributes[ \"disk_usage\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"disk_usage\" ], int )\n self.__disk_usage = attributes[ \"disk_usage\" ]\n- if \"email\" in attributes and attributes[ \"email\" ] is not None:\n+ if \"email\" in attributes and attributes[ \"email\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"email\" ], ( str, unicode ) )\n self.__email = attributes[ \"email\" ]\n- if \"followers\" in attributes and attributes[ \"followers\" ] is not None:\n+ if \"followers\" in attributes and attributes[ \"followers\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"followers\" ], int )\n self.__followers = attributes[ \"followers\" ]\n- if \"following\" in attributes and attributes[ \"following\" ] is not None:\n+ if \"following\" in attributes and attributes[ \"following\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"following\" ], int )\n self.__following = attributes[ \"following\" ]\n- if \"gravatar_id\" in attributes and attributes[ \"gravatar_id\" ] is not None:\n+ if \"gravatar_id\" in attributes and attributes[ \"gravatar_id\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"gravatar_id\" ], ( str, unicode ) )\n self.__gravatar_id = attributes[ \"gravatar_id\" ]\n- if \"html_url\" in attributes and attributes[ \"html_url\" ] is not None:\n+ if \"html_url\" in attributes and attributes[ \"html_url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"html_url\" ], ( str, unicode ) )\n self.__html_url = attributes[ \"html_url\" ]\n- if \"id\" in attributes and attributes[ \"id\" ] is not None:\n+ if \"id\" in attributes and attributes[ \"id\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"id\" ], int )\n self.__id = attributes[ \"id\" ]\n- if \"location\" in attributes and attributes[ \"location\" ] is not None:\n+ if \"location\" in attributes and attributes[ \"location\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"location\" ], ( str, unicode ) )\n self.__location = attributes[ \"location\" ]\n- if \"login\" in attributes and attributes[ \"login\" ] is not None:\n+ if \"login\" in attributes and attributes[ \"login\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"login\" ], ( str, unicode ) )\n self.__login = attributes[ \"login\" ]\n- if \"name\" in attributes and attributes[ \"name\" ] is not None:\n+ if \"name\" in attributes and attributes[ \"name\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"name\" ], ( str, unicode ) )\n self.__name = attributes[ \"name\" ]\n- if \"owned_private_repos\" in attributes and attributes[ \"owned_private_repos\" ] is not None:\n+ if \"owned_private_repos\" in attributes and attributes[ \"owned_private_repos\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"owned_private_repos\" ], int )\n self.__owned_private_repos = attributes[ \"owned_private_repos\" ]\n- if \"plan\" in attributes and attributes[ \"plan\" ] is not None:\n+ if \"plan\" in attributes and attributes[ \"plan\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"plan\" ], dict )\n self.__plan = Plan.Plan( self.__requester, attributes[ \"plan\" ], completion = LazyCompletion )\n- if \"private_gists\" in attributes and attributes[ \"private_gists\" ] is not None:\n+ if \"private_gists\" in attributes and attributes[ \"private_gists\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"private_gists\" ], int )\n self.__private_gists = attributes[ \"private_gists\" ]\n- if \"public_gists\" in attributes and attributes[ \"public_gists\" ] is not None:\n+ if \"public_gists\" in attributes and attributes[ \"public_gists\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"public_gists\" ], int )\n self.__public_gists = attributes[ \"public_gists\" ]\n- if \"public_repos\" in attributes and attributes[ \"public_repos\" ] is not None:\n+ if \"public_repos\" in attributes and attributes[ \"public_repos\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"public_repos\" ], int )\n self.__public_repos = attributes[ \"public_repos\" ]\n- if \"total_private_repos\" in attributes and attributes[ \"total_private_repos\" ] is not None:\n+ if \"total_private_repos\" in attributes and attributes[ \"total_private_repos\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"total_private_repos\" ], int )\n self.__total_private_repos = attributes[ \"total_private_repos\" ]\n- if \"type\" in attributes and attributes[ \"type\" ] is not None:\n+ if \"type\" in attributes and attributes[ \"type\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"type\" ], ( str, unicode ) )\n self.__type = attributes[ \"type\" ]\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"url\" ], ( str, unicode ) )\n self.__url = attributes[ \"url\" ]"},{"sha":"043f6f5db4d094d723aafbec7fe54a77205e9f0f","filename":"src/github/Permissions.py","status":"modified","additions":3,"deletions":3,"changes":6,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Permissions.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Permissions.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/Permissions.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -32,12 +32,12 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"admin\", \"pull\", \"push\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"admin\" in attributes and attributes[ \"admin\" ] is not None:\n+ if \"admin\" in attributes and attributes[ \"admin\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"admin\" ], bool )\n self.__admin = attributes[ \"admin\" ]\n- if \"pull\" in attributes and attributes[ \"pull\" ] is not None:\n+ if \"pull\" in attributes and attributes[ \"pull\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"pull\" ], bool )\n self.__pull = attributes[ \"pull\" ]\n- if \"push\" in attributes and attributes[ \"push\" ] is not None:\n+ if \"push\" in attributes and attributes[ \"push\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"push\" ], bool )\n self.__push = attributes[ \"push\" ]"},{"sha":"14ac71bd4920084cd9c8dd2e452c707d82807a64","filename":"src/github/Plan.py","status":"modified","additions":4,"deletions":4,"changes":8,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Plan.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Plan.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/Plan.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -37,15 +37,15 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"collaborators\", \"name\", \"private_repos\", \"space\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"collaborators\" in attributes and attributes[ \"collaborators\" ] is not None:\n+ if \"collaborators\" in attributes and attributes[ \"collaborators\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"collaborators\" ], int )\n self.__collaborators = attributes[ \"collaborators\" ]\n- if \"name\" in attributes and attributes[ \"name\" ] is not None:\n+ if \"name\" in attributes and attributes[ \"name\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"name\" ], ( str, unicode ) )\n self.__name = attributes[ \"name\" ]\n- if \"private_repos\" in attributes and attributes[ \"private_repos\" ] is not None:\n+ if \"private_repos\" in attributes and attributes[ \"private_repos\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"private_repos\" ], int )\n self.__private_repos = attributes[ \"private_repos\" ]\n- if \"space\" in attributes and attributes[ \"space\" ] is not None:\n+ if \"space\" in attributes and attributes[ \"space\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"space\" ], int )\n self.__space = attributes[ \"space\" ]"},{"sha":"07e945e4b49ca0d8cb8e06c124431022765bc8f0","filename":"src/github/PullRequest.py","status":"modified","additions":26,"deletions":26,"changes":52,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/PullRequest.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/PullRequest.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/PullRequest.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -279,56 +279,56 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"additions\", \"base\", \"body\", \"changed_files\", \"closed_at\", \"comments\", \"commits\", \"created_at\", \"deletions\", \"diff_url\", \"head\", \"html_url\", \"id\", \"issue_url\", \"mergeable\", \"merged\", \"merged_at\", \"merged_by\", \"number\", \"patch_url\", \"review_comments\", \"state\", \"title\", \"updated_at\", \"url\", \"user\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"additions\" in attributes and attributes[ \"additions\" ] is not None:\n+ if \"additions\" in attributes and attributes[ \"additions\" ] is not None: # pragma no branch\n self.__additions = attributes[ \"additions\" ]\n- if \"base\" in attributes and attributes[ \"base\" ] is not None:\n+ if \"base\" in attributes and attributes[ \"base\" ] is not None: # pragma no branch\n self.__base = attributes[ \"base\" ]\n- if \"body\" in attributes and attributes[ \"body\" ] is not None:\n+ if \"body\" in attributes and attributes[ \"body\" ] is not None: # pragma no branch\n self.__body = attributes[ \"body\" ]\n- if \"changed_files\" in attributes and attributes[ \"changed_files\" ] is not None:\n+ if \"changed_files\" in attributes and attributes[ \"changed_files\" ] is not None: # pragma no branch\n self.__changed_files = attributes[ \"changed_files\" ]\n- if \"closed_at\" in attributes and attributes[ \"closed_at\" ] is not None:\n+ if \"closed_at\" in attributes and attributes[ \"closed_at\" ] is not None: # pragma no branch\n self.__closed_at = attributes[ \"closed_at\" ]\n- if \"comments\" in attributes and attributes[ \"comments\" ] is not None:\n+ if \"comments\" in attributes and attributes[ \"comments\" ] is not None: # pragma no branch\n self.__comments = attributes[ \"comments\" ]\n- if \"commits\" in attributes and attributes[ \"commits\" ] is not None:\n+ if \"commits\" in attributes and attributes[ \"commits\" ] is not None: # pragma no branch\n self.__commits = attributes[ \"commits\" ]\n- if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None:\n+ if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None: # pragma no branch\n self.__created_at = attributes[ \"created_at\" ]\n- if \"deletions\" in attributes and attributes[ \"deletions\" ] is not None:\n+ if \"deletions\" in attributes and attributes[ \"deletions\" ] is not None: # pragma no branch\n self.__deletions = attributes[ \"deletions\" ]\n- if \"diff_url\" in attributes and attributes[ \"diff_url\" ] is not None:\n+ if \"diff_url\" in attributes and attributes[ \"diff_url\" ] is not None: # pragma no branch\n self.__diff_url = attributes[ \"diff_url\" ]\n- if \"head\" in attributes and attributes[ \"head\" ] is not None:\n+ if \"head\" in attributes and attributes[ \"head\" ] is not None: # pragma no branch\n self.__head = attributes[ \"head\" ]\n- if \"html_url\" in attributes and attributes[ \"html_url\" ] is not None:\n+ if \"html_url\" in attributes and attributes[ \"html_url\" ] is not None: # pragma no branch\n self.__html_url = attributes[ \"html_url\" ]\n- if \"id\" in attributes and attributes[ \"id\" ] is not None:\n+ if \"id\" in attributes and attributes[ \"id\" ] is not None: # pragma no branch\n self.__id = attributes[ \"id\" ]\n- if \"issue_url\" in attributes and attributes[ \"issue_url\" ] is not None:\n+ if \"issue_url\" in attributes and attributes[ \"issue_url\" ] is not None: # pragma no branch\n self.__issue_url = attributes[ \"issue_url\" ]\n- if \"mergeable\" in attributes and attributes[ \"mergeable\" ] is not None:\n+ if \"mergeable\" in attributes and attributes[ \"mergeable\" ] is not None: # pragma no branch\n self.__mergeable = attributes[ \"mergeable\" ]\n- if \"merged\" in attributes and attributes[ \"merged\" ] is not None:\n+ if \"merged\" in attributes and attributes[ \"merged\" ] is not None: # pragma no branch\n self.__merged = attributes[ \"merged\" ]\n- if \"merged_at\" in attributes and attributes[ \"merged_at\" ] is not None:\n+ if \"merged_at\" in attributes and attributes[ \"merged_at\" ] is not None: # pragma no branch\n self.__merged_at = attributes[ \"merged_at\" ]\n- if \"merged_by\" in attributes and attributes[ \"merged_by\" ] is not None:\n+ if \"merged_by\" in attributes and attributes[ \"merged_by\" ] is not None: # pragma no branch\n self.__merged_by = attributes[ \"merged_by\" ]\n- if \"number\" in attributes and attributes[ \"number\" ] is not None:\n+ if \"number\" in attributes and attributes[ \"number\" ] is not None: # pragma no branch\n self.__number = attributes[ \"number\" ]\n- if \"patch_url\" in attributes and attributes[ \"patch_url\" ] is not None:\n+ if \"patch_url\" in attributes and attributes[ \"patch_url\" ] is not None: # pragma no branch\n self.__patch_url = attributes[ \"patch_url\" ]\n- if \"review_comments\" in attributes and attributes[ \"review_comments\" ] is not None:\n+ if \"review_comments\" in attributes and attributes[ \"review_comments\" ] is not None: # pragma no branch\n self.__review_comments = attributes[ \"review_comments\" ]\n- if \"state\" in attributes and attributes[ \"state\" ] is not None:\n+ if \"state\" in attributes and attributes[ \"state\" ] is not None: # pragma no branch\n self.__state = attributes[ \"state\" ]\n- if \"title\" in attributes and attributes[ \"title\" ] is not None:\n+ if \"title\" in attributes and attributes[ \"title\" ] is not None: # pragma no branch\n self.__title = attributes[ \"title\" ]\n- if \"updated_at\" in attributes and attributes[ \"updated_at\" ] is not None:\n+ if \"updated_at\" in attributes and attributes[ \"updated_at\" ] is not None: # pragma no branch\n self.__updated_at = attributes[ \"updated_at\" ]\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n self.__url = attributes[ \"url\" ]\n- if \"user\" in attributes and attributes[ \"user\" ] is not None:\n+ if \"user\" in attributes and attributes[ \"user\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"user\" ], dict )\n self.__user = NamedUser.NamedUser( self.__requester, attributes[ \"user\" ], completion = LazyCompletion )"},{"sha":"d0095192e606f65fec81882be15aca06ac47e5e3","filename":"src/github/PullRequestComment.py","status":"modified","additions":11,"deletions":11,"changes":22,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/PullRequestComment.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/PullRequestComment.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/PullRequestComment.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -121,26 +121,26 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"body\", \"commit_id\", \"created_at\", \"html_url\", \"id\", \"line\", \"path\", \"position\", \"updated_at\", \"url\", \"user\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"body\" in attributes and attributes[ \"body\" ] is not None:\n+ if \"body\" in attributes and attributes[ \"body\" ] is not None: # pragma no branch\n self.__body = attributes[ \"body\" ]\n- if \"commit_id\" in attributes and attributes[ \"commit_id\" ] is not None:\n+ if \"commit_id\" in attributes and attributes[ \"commit_id\" ] is not None: # pragma no branch\n self.__commit_id = attributes[ \"commit_id\" ]\n- if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None:\n+ if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None: # pragma no branch\n self.__created_at = attributes[ \"created_at\" ]\n- if \"html_url\" in attributes and attributes[ \"html_url\" ] is not None:\n+ if \"html_url\" in attributes and attributes[ \"html_url\" ] is not None: # pragma no branch\n self.__html_url = attributes[ \"html_url\" ]\n- if \"id\" in attributes and attributes[ \"id\" ] is not None:\n+ if \"id\" in attributes and attributes[ \"id\" ] is not None: # pragma no branch\n self.__id = attributes[ \"id\" ]\n- if \"line\" in attributes and attributes[ \"line\" ] is not None:\n+ if \"line\" in attributes and attributes[ \"line\" ] is not None: # pragma no branch\n self.__line = attributes[ \"line\" ]\n- if \"path\" in attributes and attributes[ \"path\" ] is not None:\n+ if \"path\" in attributes and attributes[ \"path\" ] is not None: # pragma no branch\n self.__path = attributes[ \"path\" ]\n- if \"position\" in attributes and attributes[ \"position\" ] is not None:\n+ if \"position\" in attributes and attributes[ \"position\" ] is not None: # pragma no branch\n self.__position = attributes[ \"position\" ]\n- if \"updated_at\" in attributes and attributes[ \"updated_at\" ] is not None:\n+ if \"updated_at\" in attributes and attributes[ \"updated_at\" ] is not None: # pragma no branch\n self.__updated_at = attributes[ \"updated_at\" ]\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n self.__url = attributes[ \"url\" ]\n- if \"user\" in attributes and attributes[ \"user\" ] is not None:\n+ if \"user\" in attributes and attributes[ \"user\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"user\" ], dict )\n self.__user = NamedUser.NamedUser( self.__requester, attributes[ \"user\" ], completion = LazyCompletion )"},{"sha":"043fb9a5328ad003b449573616e418f17e25bac2","filename":"src/github/PullRequestFile.py","status":"modified","additions":9,"deletions":9,"changes":18,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/PullRequestFile.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/PullRequestFile.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/PullRequestFile.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -62,21 +62,21 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"additions\", \"blob_url\", \"changes\", \"deletions\", \"filename\", \"patch\", \"raw_url\", \"sha\", \"status\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"additions\" in attributes and attributes[ \"additions\" ] is not None:\n+ if \"additions\" in attributes and attributes[ \"additions\" ] is not None: # pragma no branch\n self.__additions = attributes[ \"additions\" ]\n- if \"blob_url\" in attributes and attributes[ \"blob_url\" ] is not None:\n+ if \"blob_url\" in attributes and attributes[ \"blob_url\" ] is not None: # pragma no branch\n self.__blob_url = attributes[ \"blob_url\" ]\n- if \"changes\" in attributes and attributes[ \"changes\" ] is not None:\n+ if \"changes\" in attributes and attributes[ \"changes\" ] is not None: # pragma no branch\n self.__changes = attributes[ \"changes\" ]\n- if \"deletions\" in attributes and attributes[ \"deletions\" ] is not None:\n+ if \"deletions\" in attributes and attributes[ \"deletions\" ] is not None: # pragma no branch\n self.__deletions = attributes[ \"deletions\" ]\n- if \"filename\" in attributes and attributes[ \"filename\" ] is not None:\n+ if \"filename\" in attributes and attributes[ \"filename\" ] is not None: # pragma no branch\n self.__filename = attributes[ \"filename\" ]\n- if \"patch\" in attributes and attributes[ \"patch\" ] is not None:\n+ if \"patch\" in attributes and attributes[ \"patch\" ] is not None: # pragma no branch\n self.__patch = attributes[ \"patch\" ]\n- if \"raw_url\" in attributes and attributes[ \"raw_url\" ] is not None:\n+ if \"raw_url\" in attributes and attributes[ \"raw_url\" ] is not None: # pragma no branch\n self.__raw_url = attributes[ \"raw_url\" ]\n- if \"sha\" in attributes and attributes[ \"sha\" ] is not None:\n+ if \"sha\" in attributes and attributes[ \"sha\" ] is not None: # pragma no branch\n self.__sha = attributes[ \"sha\" ]\n- if \"status\" in attributes and attributes[ \"status\" ] is not None:\n+ if \"status\" in attributes and attributes[ \"status\" ] is not None: # pragma no branch\n self.__status = attributes[ \"status\" ]"},{"sha":"30b4bc70dc2a72c52c1cf02e63a26e1cfaf5676e","filename":"src/github/Repository.py","status":"modified","additions":31,"deletions":31,"changes":62,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Repository.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Repository.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/Repository.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -905,96 +905,96 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"clone_url\", \"created_at\", \"description\", \"fork\", \"forks\", \"full_name\", \"git_url\", \"has_downloads\", \"has_issues\", \"has_wiki\", \"homepage\", \"html_url\", \"id\", \"language\", \"master_branch\", \"mirror_url\", \"name\", \"open_issues\", \"organization\", \"owner\", \"parent\", \"permissions\", \"private\", \"pushed_at\", \"size\", \"source\", \"ssh_url\", \"svn_url\", \"updated_at\", \"url\", \"watchers\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"clone_url\" in attributes and attributes[ \"clone_url\" ] is not None:\n+ if \"clone_url\" in attributes and attributes[ \"clone_url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"clone_url\" ], ( str, unicode ) )\n self.__clone_url = attributes[ \"clone_url\" ]\n- if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None:\n+ if \"created_at\" in attributes and attributes[ \"created_at\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"created_at\" ], ( str, unicode ) )\n self.__created_at = attributes[ \"created_at\" ]\n- if \"description\" in attributes and attributes[ \"description\" ] is not None:\n+ if \"description\" in attributes and attributes[ \"description\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"description\" ], ( str, unicode ) )\n self.__description = attributes[ \"description\" ]\n- if \"fork\" in attributes and attributes[ \"fork\" ] is not None:\n+ if \"fork\" in attributes and attributes[ \"fork\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"fork\" ], bool )\n self.__fork = attributes[ \"fork\" ]\n- if \"forks\" in attributes and attributes[ \"forks\" ] is not None:\n+ if \"forks\" in attributes and attributes[ \"forks\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"forks\" ], int )\n self.__forks = attributes[ \"forks\" ]\n- if \"full_name\" in attributes and attributes[ \"full_name\" ] is not None:\n+ if \"full_name\" in attributes and attributes[ \"full_name\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"full_name\" ], ( str, unicode ) )\n self.__full_name = attributes[ \"full_name\" ]\n- if \"git_url\" in attributes and attributes[ \"git_url\" ] is not None:\n+ if \"git_url\" in attributes and attributes[ \"git_url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"git_url\" ], ( str, unicode ) )\n self.__git_url = attributes[ \"git_url\" ]\n- if \"has_downloads\" in attributes and attributes[ \"has_downloads\" ] is not None:\n+ if \"has_downloads\" in attributes and attributes[ \"has_downloads\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"has_downloads\" ], bool )\n self.__has_downloads = attributes[ \"has_downloads\" ]\n- if \"has_issues\" in attributes and attributes[ \"has_issues\" ] is not None:\n+ if \"has_issues\" in attributes and attributes[ \"has_issues\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"has_issues\" ], bool )\n self.__has_issues = attributes[ \"has_issues\" ]\n- if \"has_wiki\" in attributes and attributes[ \"has_wiki\" ] is not None:\n+ if \"has_wiki\" in attributes and attributes[ \"has_wiki\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"has_wiki\" ], bool )\n self.__has_wiki = attributes[ \"has_wiki\" ]\n- if \"homepage\" in attributes and attributes[ \"homepage\" ] is not None:\n+ if \"homepage\" in attributes and attributes[ \"homepage\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"homepage\" ], ( str, unicode ) )\n self.__homepage = attributes[ \"homepage\" ]\n- if \"html_url\" in attributes and attributes[ \"html_url\" ] is not None:\n+ if \"html_url\" in attributes and attributes[ \"html_url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"html_url\" ], ( str, unicode ) )\n self.__html_url = attributes[ \"html_url\" ]\n- if \"id\" in attributes and attributes[ \"id\" ] is not None:\n+ if \"id\" in attributes and attributes[ \"id\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"id\" ], int )\n self.__id = attributes[ \"id\" ]\n- if \"language\" in attributes and attributes[ \"language\" ] is not None:\n+ if \"language\" in attributes and attributes[ \"language\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"language\" ], ( str, unicode ) )\n self.__language = attributes[ \"language\" ]\n- if \"master_branch\" in attributes and attributes[ \"master_branch\" ] is not None:\n+ if \"master_branch\" in attributes and attributes[ \"master_branch\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"master_branch\" ], ( str, unicode ) )\n self.__master_branch = attributes[ \"master_branch\" ]\n- if \"mirror_url\" in attributes and attributes[ \"mirror_url\" ] is not None:\n+ if \"mirror_url\" in attributes and attributes[ \"mirror_url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"mirror_url\" ], ( str, unicode ) )\n self.__mirror_url = attributes[ \"mirror_url\" ]\n- if \"name\" in attributes and attributes[ \"name\" ] is not None:\n+ if \"name\" in attributes and attributes[ \"name\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"name\" ], ( str, unicode ) )\n self.__name = attributes[ \"name\" ]\n- if \"open_issues\" in attributes and attributes[ \"open_issues\" ] is not None:\n+ if \"open_issues\" in attributes and attributes[ \"open_issues\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"open_issues\" ], int )\n self.__open_issues = attributes[ \"open_issues\" ]\n- if \"organization\" in attributes and attributes[ \"organization\" ] is not None:\n+ if \"organization\" in attributes and attributes[ \"organization\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"organization\" ], dict )\n self.__organization = Organization.Organization( self.__requester, attributes[ \"organization\" ], completion = LazyCompletion )\n- if \"owner\" in attributes and attributes[ \"owner\" ] is not None:\n+ if \"owner\" in attributes and attributes[ \"owner\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"owner\" ], dict )\n self.__owner = NamedUser.NamedUser( self.__requester, attributes[ \"owner\" ], completion = LazyCompletion )\n- if \"parent\" in attributes and attributes[ \"parent\" ] is not None:\n+ if \"parent\" in attributes and attributes[ \"parent\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"parent\" ], dict )\n self.__parent = Repository( self.__requester, attributes[ \"parent\" ], completion = LazyCompletion )\n- if \"permissions\" in attributes and attributes[ \"permissions\" ] is not None:\n+ if \"permissions\" in attributes and attributes[ \"permissions\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"permissions\" ], dict )\n self.__permissions = Permissions.Permissions( self.__requester, attributes[ \"permissions\" ], completion = LazyCompletion )\n- if \"private\" in attributes and attributes[ \"private\" ] is not None:\n+ if \"private\" in attributes and attributes[ \"private\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"private\" ], bool )\n self.__private = attributes[ \"private\" ]\n- if \"pushed_at\" in attributes and attributes[ \"pushed_at\" ] is not None:\n+ if \"pushed_at\" in attributes and attributes[ \"pushed_at\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"pushed_at\" ], ( str, unicode ) )\n self.__pushed_at = attributes[ \"pushed_at\" ]\n- if \"size\" in attributes and attributes[ \"size\" ] is not None:\n+ if \"size\" in attributes and attributes[ \"size\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"size\" ], int )\n self.__size = attributes[ \"size\" ]\n- if \"source\" in attributes and attributes[ \"source\" ] is not None:\n+ if \"source\" in attributes and attributes[ \"source\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"source\" ], dict )\n self.__source = Repository( self.__requester, attributes[ \"source\" ], completion = LazyCompletion )\n- if \"ssh_url\" in attributes and attributes[ \"ssh_url\" ] is not None:\n+ if \"ssh_url\" in attributes and attributes[ \"ssh_url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"ssh_url\" ], ( str, unicode ) )\n self.__ssh_url = attributes[ \"ssh_url\" ]\n- if \"svn_url\" in attributes and attributes[ \"svn_url\" ] is not None:\n+ if \"svn_url\" in attributes and attributes[ \"svn_url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"svn_url\" ], ( str, unicode ) )\n self.__svn_url = attributes[ \"svn_url\" ]\n- if \"updated_at\" in attributes and attributes[ \"updated_at\" ] is not None:\n+ if \"updated_at\" in attributes and attributes[ \"updated_at\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"updated_at\" ], ( str, unicode ) )\n self.__updated_at = attributes[ \"updated_at\" ]\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"url\" ], ( str, unicode ) )\n self.__url = attributes[ \"url\" ]\n- if \"watchers\" in attributes and attributes[ \"watchers\" ] is not None:\n+ if \"watchers\" in attributes and attributes[ \"watchers\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"watchers\" ], int )\n self.__watchers = attributes[ \"watchers\" ]"},{"sha":"fc5cafc09e2b8120e47c2bbdf0e0fa0821ec5ecf","filename":"src/github/RepositoryKey.py","status":"modified","additions":5,"deletions":5,"changes":10,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/RepositoryKey.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/RepositoryKey.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/RepositoryKey.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -87,14 +87,14 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"id\", \"key\", \"title\", \"url\", \"verified\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"id\" in attributes and attributes[ \"id\" ] is not None:\n+ if \"id\" in attributes and attributes[ \"id\" ] is not None: # pragma no branch\n self.__id = attributes[ \"id\" ]\n- if \"key\" in attributes and attributes[ \"key\" ] is not None:\n+ if \"key\" in attributes and attributes[ \"key\" ] is not None: # pragma no branch\n self.__key = attributes[ \"key\" ]\n- if \"title\" in attributes and attributes[ \"title\" ] is not None:\n+ if \"title\" in attributes and attributes[ \"title\" ] is not None: # pragma no branch\n self.__title = attributes[ \"title\" ]\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n self.__url = attributes[ \"url\" ]\n- if \"verified\" in attributes and attributes[ \"verified\" ] is not None:\n+ if \"verified\" in attributes and attributes[ \"verified\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"verified\" ], bool )\n self.__verified = attributes[ \"verified\" ]"},{"sha":"7903406c469352d3f3fb897ed9ac9fc9ebc51c3b","filename":"src/github/Tag.py","status":"modified","additions":4,"deletions":4,"changes":8,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Tag.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Tag.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/Tag.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -38,15 +38,15 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"commit\", \"name\", \"tarball_url\", \"zipball_url\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"commit\" in attributes and attributes[ \"commit\" ] is not None:\n+ if \"commit\" in attributes and attributes[ \"commit\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"commit\" ], dict )\n self.__commit = Commit.Commit( self.__requester, attributes[ \"commit\" ], completion = LazyCompletion )\n- if \"name\" in attributes and attributes[ \"name\" ] is not None:\n+ if \"name\" in attributes and attributes[ \"name\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"name\" ], ( str, unicode ) )\n self.__name = attributes[ \"name\" ]\n- if \"tarball_url\" in attributes and attributes[ \"tarball_url\" ] is not None:\n+ if \"tarball_url\" in attributes and attributes[ \"tarball_url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"tarball_url\" ], ( str, unicode ) )\n self.__tarball_url = attributes[ \"tarball_url\" ]\n- if \"zipball_url\" in attributes and attributes[ \"zipball_url\" ] is not None:\n+ if \"zipball_url\" in attributes and attributes[ \"zipball_url\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"zipball_url\" ], ( str, unicode ) )\n self.__zipball_url = attributes[ \"zipball_url\" ]"},{"sha":"ca5b7e13476a30fee9234c6f965019f303e3f33e","filename":"src/github/Team.py","status":"modified","additions":6,"deletions":6,"changes":12,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Team.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/Team.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/Team.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -172,15 +172,15 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"id\", \"members_count\", \"name\", \"permission\", \"repos_count\", \"url\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"id\" in attributes and attributes[ \"id\" ] is not None:\n+ if \"id\" in attributes and attributes[ \"id\" ] is not None: # pragma no branch\n self.__id = attributes[ \"id\" ]\n- if \"members_count\" in attributes and attributes[ \"members_count\" ] is not None:\n+ if \"members_count\" in attributes and attributes[ \"members_count\" ] is not None: # pragma no branch\n self.__members_count = attributes[ \"members_count\" ]\n- if \"name\" in attributes and attributes[ \"name\" ] is not None:\n+ if \"name\" in attributes and attributes[ \"name\" ] is not None: # pragma no branch\n self.__name = attributes[ \"name\" ]\n- if \"permission\" in attributes and attributes[ \"permission\" ] is not None:\n+ if \"permission\" in attributes and attributes[ \"permission\" ] is not None: # pragma no branch\n self.__permission = attributes[ \"permission\" ]\n- if \"repos_count\" in attributes and attributes[ \"repos_count\" ] is not None:\n+ if \"repos_count\" in attributes and attributes[ \"repos_count\" ] is not None: # pragma no branch\n self.__repos_count = attributes[ \"repos_count\" ]\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n self.__url = attributes[ \"url\" ]"},{"sha":"b7b135d5cf476ece019ca1d018fdf3fc48a450ee","filename":"src/github/UserKey.py","status":"modified","additions":5,"deletions":5,"changes":10,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/UserKey.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/src/github/UserKey.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/src/github/UserKey.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -87,14 +87,14 @@ def __useAttributes( self, attributes ):\n for attribute in attributes:\n assert attribute in [ \"id\", \"key\", \"title\", \"url\", \"verified\", ], attribute\n # @todo No need to check if attribute is in attributes when attribute is mandatory\n- if \"id\" in attributes and attributes[ \"id\" ] is not None:\n+ if \"id\" in attributes and attributes[ \"id\" ] is not None: # pragma no branch\n self.__id = attributes[ \"id\" ]\n- if \"key\" in attributes and attributes[ \"key\" ] is not None:\n+ if \"key\" in attributes and attributes[ \"key\" ] is not None: # pragma no branch\n self.__key = attributes[ \"key\" ]\n- if \"title\" in attributes and attributes[ \"title\" ] is not None:\n+ if \"title\" in attributes and attributes[ \"title\" ] is not None: # pragma no branch\n self.__title = attributes[ \"title\" ]\n- if \"url\" in attributes and attributes[ \"url\" ] is not None:\n+ if \"url\" in attributes and attributes[ \"url\" ] is not None: # pragma no branch\n self.__url = attributes[ \"url\" ]\n- if \"verified\" in attributes and attributes[ \"verified\" ] is not None:\n+ if \"verified\" in attributes and attributes[ \"verified\" ] is not None: # pragma no branch\n assert isinstance( attributes[ \"verified\" ], bool )\n self.__verified = attributes[ \"verified\" ]"},{"sha":"c0a781c0bffba244aa2e9826770ccc127f1415af","filename":"test/Issue.py","status":"modified","additions":25,"deletions":1,"changes":26,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/test/Issue.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/test/Issue.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/test/Issue.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -3,7 +3,8 @@\n class Issue( Framework.TestCase ):\r\n def setUp( self ):\r\n Framework.TestCase.setUp( self )\r\n- self.issue = self.g.get_user().get_repo( \"PyGithub\" ).get_issue( 28 )\r\n+ self.repo = self.g.get_user().get_repo( \"PyGithub\" )\r\n+ self.issue = self.repo.get_issue( 28 )\r\n \r\n def testAttributes( self ):\r\n self.assertEqual( self.issue.assignee.login, \"jacquev6\" )\r\n@@ -47,3 +48,26 @@ def testGetComments( self ):\n \r\n def testGetEvents( self ):\r\n self.assertListKeyEqual( self.issue.get_events(), lambda e: e.id, [ 15819975, 15820048 ] )\r\n+\r\n+ def testGetLabels( self ):\r\n+ self.assertListKeyEqual( self.issue.get_labels(), lambda l: l.name, [ \"Bug\", \"Project management\", \"Question\" ] )\r\n+\r\n+ def testAddAndRemoveLabels( self ):\r\n+ bug = self.repo.get_label( \"Bug\" )\r\n+ question = self.repo.get_label( \"Question\" )\r\n+ self.assertListKeyEqual( self.issue.get_labels(), lambda l: l.name, [ \"Bug\", \"Project management\", \"Question\" ] )\r\n+ self.issue.remove_from_labels( bug )\r\n+ self.assertListKeyEqual( self.issue.get_labels(), lambda l: l.name, [ \"Project management\", \"Question\" ] )\r\n+ self.issue.remove_from_labels( question )\r\n+ self.assertListKeyEqual( self.issue.get_labels(), lambda l: l.name, [ \"Project management\" ] )\r\n+ self.issue.add_to_labels( bug, question )\r\n+ self.assertListKeyEqual( self.issue.get_labels(), lambda l: l.name, [ \"Bug\", \"Project management\", \"Question\" ] )\r\n+\r\n+ def testDeleteAndSetLabels( self ):\r\n+ bug = self.repo.get_label( \"Bug\" )\r\n+ question = self.repo.get_label( \"Question\" )\r\n+ self.assertListKeyEqual( self.issue.get_labels(), lambda l: l.name, [ \"Bug\", \"Project management\", \"Question\" ] )\r\n+ self.issue.delete_labels()\r\n+ self.assertListKeyEqual( self.issue.get_labels(), lambda l: l.name, [] )\r\n+ self.issue.set_labels( bug, question )\r\n+ self.assertListKeyEqual( self.issue.get_labels(), lambda l: l.name, [ \"Bug\", \"Question\" ] )\r"},{"sha":"77fa51481ceb340a91f3988b7d570d697065ebe8","filename":"test/IssueEvent.py","status":"modified","additions":7,"deletions":7,"changes":14,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/test/IssueEvent.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/test/IssueEvent.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/test/IssueEvent.py?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -3,13 +3,13 @@\n class IssueEvent( Framework.TestCase ):\r\n def setUp( self ):\r\n Framework.TestCase.setUp( self )\r\n- self.event = self.g.get_user().get_repo( \"PyGithub\" ).get_issues_event( 15819975 )\r\n+ self.event = self.g.get_user().get_repo( \"PyGithub\" ).get_issues_event( 16348656 )\r\n \r\n def testAttributes( self ):\r\n self.assertEqual( self.event.actor.login, \"jacquev6\" )\r\n- self.assertEqual( self.event.commit_id, None )\r\n- self.assertEqual( self.event.created_at, \"2012-05-19T10:38:23Z\" )\r\n- self.assertEqual( self.event.event, \"subscribed\" )\r\n- self.assertEqual( self.event.id, 15819975 )\r\n- self.assertEqual( self.event.issue.number, 28 )\r\n- self.assertEqual( self.event.url, \"https://api.github.com/repos/jacquev6/PyGithub/issues/events/15819975\" )\r\n+ self.assertEqual( self.event.commit_id, \"ed866fc43833802ab553e5ff8581c81bb00dd433\" )\r\n+ self.assertEqual( self.event.created_at, \"2012-05-27T07:29:25Z\" )\r\n+ self.assertEqual( self.event.event, \"referenced\" )\r\n+ self.assertEqual( self.event.id, 16348656 )\r\n+ self.assertEqual( self.event.issue.number, 30 )\r\n+ self.assertEqual( self.event.url, \"https://api.github.com/repos/jacquev6/PyGithub/issues/events/16348656\" )\r"},{"sha":"fb933714353269eb17e70880daacaf9166d4f742","filename":"test/ReplayData/Issue.testAddAndRemoveLabels.txt","status":"added","additions":45,"deletions":0,"changes":45,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/test/ReplayData/Issue.testAddAndRemoveLabels.txt","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/test/ReplayData/Issue.testAddAndRemoveLabels.txt","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/test/ReplayData/Issue.testAddAndRemoveLabels.txt?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -0,0 +1,45 @@\n+GET /repos/jacquev6/PyGithub/labels/Bug {'Authorization': 'Basic login_and_password_removed'} null\n+200\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4992'), ('content-length', '97'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '\"569c414d87e8ec43ec269a9e28bc2982\"'), ('date', 'Sun, 27 May 2012 09:04:01 GMT'), ('content-type', 'application/json; charset=utf-8')]\n+{\"color\":\"e10c02\",\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Bug\",\"name\":\"Bug\"}\n+\n+GET /repos/jacquev6/PyGithub/labels/Question {'Authorization': 'Basic login_and_password_removed'} null\n+200\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4991'), ('content-length', '107'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '\"b659c8dcc1212c71f826547c3cc7ae99\"'), ('date', 'Sun, 27 May 2012 09:04:02 GMT'), ('content-type', 'application/json; charset=utf-8')]\n+{\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Question\",\"name\":\"Question\",\"color\":\"02e10c\"}\n+\n+GET /repos/jacquev6/PyGithub/issues/28/labels {'Authorization': 'Basic login_and_password_removed'} null\n+200\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4990'), ('content-length', '335'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '\"c9f9beccb03030beaf7b80927da6fef6\"'), ('date', 'Sun, 27 May 2012 09:04:03 GMT'), ('content-type', 'application/json; charset=utf-8')]\n+[{\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Bug\",\"name\":\"Bug\",\"color\":\"e10c02\"},{\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Project+management\",\"name\":\"Project management\",\"color\":\"444444\"},{\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Question\",\"name\":\"Question\",\"color\":\"02e10c\"}]\n+\n+DELETE /repos/jacquev6/PyGithub/issues/28/labels/Bug {'Authorization': 'Basic login_and_password_removed'} null\n+200\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4989'), ('content-length', '237'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '\"46cc70bad88a09b559a5e67089005105\"'), ('date', 'Sun, 27 May 2012 09:04:03 GMT'), ('content-type', 'application/json; charset=utf-8')]\n+[{\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Project+management\",\"name\":\"Project management\",\"color\":\"444444\"},{\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Question\",\"name\":\"Question\",\"color\":\"02e10c\"}]\n+\n+GET /repos/jacquev6/PyGithub/issues/28/labels {'Authorization': 'Basic login_and_password_removed'} null\n+200\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4988'), ('content-length', '237'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '\"46cc70bad88a09b559a5e67089005105\"'), ('date', 'Sun, 27 May 2012 09:04:04 GMT'), ('content-type', 'application/json; charset=utf-8')]\n+[{\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Project+management\",\"name\":\"Project management\",\"color\":\"444444\"},{\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Question\",\"name\":\"Question\",\"color\":\"02e10c\"}]\n+\n+DELETE /repos/jacquev6/PyGithub/issues/28/labels/Question {'Authorization': 'Basic login_and_password_removed'} null\n+200\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4987'), ('content-length', '129'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '\"5352ae15c8a5a36c6cace63be9367332\"'), ('date', 'Sun, 27 May 2012 09:04:04 GMT'), ('content-type', 'application/json; charset=utf-8')]\n+[{\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Project+management\",\"name\":\"Project management\",\"color\":\"444444\"}]\n+\n+GET /repos/jacquev6/PyGithub/issues/28/labels {'Authorization': 'Basic login_and_password_removed'} null\n+200\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4986'), ('content-length', '129'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '\"5352ae15c8a5a36c6cace63be9367332\"'), ('date', 'Sun, 27 May 2012 09:04:05 GMT'), ('content-type', 'application/json; charset=utf-8')]\n+[{\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Project+management\",\"name\":\"Project management\",\"color\":\"444444\"}]\n+\n+POST /repos/jacquev6/PyGithub/issues/28/labels {'Authorization': 'Basic login_and_password_removed'} [\"Bug\", \"Question\"]\n+200\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4985'), ('content-length', '335'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '\"d135d74d2ea2159d044676a220d41d3a\"'), ('date', 'Sun, 27 May 2012 09:04:06 GMT'), ('content-type', 'application/json; charset=utf-8')]\n+[{\"color\":\"e10c02\",\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Bug\",\"name\":\"Bug\"},{\"color\":\"444444\",\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Project+management\",\"name\":\"Project management\"},{\"color\":\"02e10c\",\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Question\",\"name\":\"Question\"}]\n+\n+GET /repos/jacquev6/PyGithub/issues/28/labels {'Authorization': 'Basic login_and_password_removed'} null\n+200\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4984'), ('content-length', '335'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '\"c9f9beccb03030beaf7b80927da6fef6\"'), ('date', 'Sun, 27 May 2012 09:04:06 GMT'), ('content-type', 'application/json; charset=utf-8')]\n+[{\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Bug\",\"name\":\"Bug\",\"color\":\"e10c02\"},{\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Project+management\",\"name\":\"Project management\",\"color\":\"444444\"},{\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Question\",\"name\":\"Question\",\"color\":\"02e10c\"}]\n+"},{"sha":"bbd6ae4ea3dac63b301017dece6f56b34eab6f80","filename":"test/ReplayData/Issue.testDeleteAndSetLabels.txt","status":"added","additions":35,"deletions":0,"changes":35,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/test/ReplayData/Issue.testDeleteAndSetLabels.txt","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/test/ReplayData/Issue.testDeleteAndSetLabels.txt","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/test/ReplayData/Issue.testDeleteAndSetLabels.txt?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -0,0 +1,35 @@\n+GET /repos/jacquev6/PyGithub/labels/Bug {'Authorization': 'Basic login_and_password_removed'} null\n+200\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4974'), ('content-length', '97'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '\"fe2e942523eecb156d100829a6347516\"'), ('date', 'Sun, 27 May 2012 09:06:37 GMT'), ('content-type', 'application/json; charset=utf-8')]\n+{\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Bug\",\"name\":\"Bug\",\"color\":\"e10c02\"}\n+\n+GET /repos/jacquev6/PyGithub/labels/Question {'Authorization': 'Basic login_and_password_removed'} null\n+200\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4973'), ('content-length', '107'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '\"931e58d337b2290717303141eda89cd7\"'), ('date', 'Sun, 27 May 2012 09:06:38 GMT'), ('content-type', 'application/json; charset=utf-8')]\n+{\"color\":\"02e10c\",\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Question\",\"name\":\"Question\"}\n+\n+GET /repos/jacquev6/PyGithub/issues/28/labels {'Authorization': 'Basic login_and_password_removed'} null\n+200\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4972'), ('content-length', '335'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '\"d135d74d2ea2159d044676a220d41d3a\"'), ('date', 'Sun, 27 May 2012 09:06:39 GMT'), ('content-type', 'application/json; charset=utf-8')]\n+[{\"color\":\"e10c02\",\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Bug\",\"name\":\"Bug\"},{\"color\":\"444444\",\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Project+management\",\"name\":\"Project management\"},{\"color\":\"02e10c\",\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Question\",\"name\":\"Question\"}]\n+\n+DELETE /repos/jacquev6/PyGithub/issues/28/labels {'Authorization': 'Basic login_and_password_removed'} null\n+204\n+[('status', '204 No Content'), ('x-ratelimit-remaining', '4971'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '\"d41d8cd98f00b204e9800998ecf8427e\"'), ('date', 'Sun, 27 May 2012 09:06:39 GMT')]\n+\n+\n+GET /repos/jacquev6/PyGithub/issues/28/labels {'Authorization': 'Basic login_and_password_removed'} null\n+200\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4970'), ('content-length', '2'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '\"d751713988987e9331980363e24189ce\"'), ('date', 'Sun, 27 May 2012 09:06:40 GMT'), ('content-type', 'application/json; charset=utf-8')]\n+[]\n+\n+PUT /repos/jacquev6/PyGithub/issues/28/labels {'Authorization': 'Basic login_and_password_removed'} [\"Bug\", \"Question\"]\n+200\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4969'), ('content-length', '207'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '\"1a56634d9c1050a88592ff55ed8adc62\"'), ('date', 'Sun, 27 May 2012 09:06:40 GMT'), ('content-type', 'application/json; charset=utf-8')]\n+[{\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Bug\",\"name\":\"Bug\",\"color\":\"e10c02\"},{\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Question\",\"name\":\"Question\",\"color\":\"02e10c\"}]\n+\n+GET /repos/jacquev6/PyGithub/issues/28/labels {'Authorization': 'Basic login_and_password_removed'} null\n+200\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4968'), ('content-length', '207'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '\"1a56634d9c1050a88592ff55ed8adc62\"'), ('date', 'Sun, 27 May 2012 09:06:41 GMT'), ('content-type', 'application/json; charset=utf-8')]\n+[{\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Bug\",\"name\":\"Bug\",\"color\":\"e10c02\"},{\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Question\",\"name\":\"Question\",\"color\":\"02e10c\"}]\n+"},{"sha":"282dda36da4958e743c70a1cee5b89df0afce592","filename":"test/ReplayData/Issue.testGetLabels.txt","status":"added","additions":5,"deletions":0,"changes":5,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/test/ReplayData/Issue.testGetLabels.txt","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/test/ReplayData/Issue.testGetLabels.txt","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/test/ReplayData/Issue.testGetLabels.txt?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -0,0 +1,5 @@\n+GET /repos/jacquev6/PyGithub/issues/28/labels {'Authorization': 'Basic login_and_password_removed'} null\n+200\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4996'), ('content-length', '335'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '\"c9f9beccb03030beaf7b80927da6fef6\"'), ('date', 'Sun, 27 May 2012 08:56:31 GMT'), ('content-type', 'application/json; charset=utf-8')]\n+[{\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Bug\",\"name\":\"Bug\",\"color\":\"e10c02\"},{\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Project+management\",\"name\":\"Project management\",\"color\":\"444444\"},{\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Question\",\"name\":\"Question\",\"color\":\"02e10c\"}]\n+"},{"sha":"0de7e5358c98a51af4f18e7ff9559f4a826bfebc","filename":"test/ReplayData/IssueEvent.setUp.txt","status":"modified","additions":7,"deletions":7,"changes":14,"blob_url":"https://github.com/jacquev6/PyGithub/blob/8a4f306d4b223682dd19410d4a9150636ebe4206/test/ReplayData/IssueEvent.setUp.txt","raw_url":"https://github.com/jacquev6/PyGithub/raw/8a4f306d4b223682dd19410d4a9150636ebe4206/test/ReplayData/IssueEvent.setUp.txt","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/test/ReplayData/IssueEvent.setUp.txt?ref=8a4f306d4b223682dd19410d4a9150636ebe4206","patch":"@@ -1,15 +1,15 @@\n GET /user {'Authorization': 'Basic login_and_password_removed'} null\n 200\n-[('status', '200 OK'), ('x-ratelimit-remaining', '4907'), ('content-length', '801'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '\"99c9bfb75395b749e9913a4729126fb5\"'), ('date', 'Sun, 27 May 2012 07:19:30 GMT'), ('content-type', 'application/json; charset=utf-8')]\n-{\"private_gists\":5,\"type\":\"User\",\"company\":\"Criteo\",\"location\":\"Paris, France\",\"hireable\":false,\"gravatar_id\":\"b68de5ae38616c296fa345d2b9df2225\",\"bio\":\"\",\"following\":24,\"blog\":\"http://vincent-jacques.net\",\"avatar_url\":\"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"total_private_repos\":5,\"followers\":13,\"owned_private_repos\":5,\"disk_usage\":16976,\"collaborators\":0,\"html_url\":\"https://github.com/jacquev6\",\"url\":\"https://api.github.com/users/jacquev6\",\"name\":\"Vincent Jacques\",\"login\":\"jacquev6\",\"public_repos\":11,\"public_gists\":3,\"email\":\"vincent@vincent-jacques.net\",\"id\":327146,\"plan\":{\"private_repos\":5,\"collaborators\":1,\"name\":\"micro\",\"space\":614400},\"created_at\":\"2010-07-09T06:10:06Z\"}\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4996'), ('content-length', '801'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '\"8974bb1628a3e3a6d3eb3b08c1b5a46b\"'), ('date', 'Sun, 27 May 2012 07:32:54 GMT'), ('content-type', 'application/json; charset=utf-8')]\n+{\"type\":\"User\",\"bio\":\"\",\"disk_usage\":16976,\"total_private_repos\":5,\"url\":\"https://api.github.com/users/jacquev6\",\"avatar_url\":\"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"owned_private_repos\":5,\"collaborators\":0,\"plan\":{\"collaborators\":1,\"private_repos\":5,\"name\":\"micro\",\"space\":614400},\"company\":\"Criteo\",\"gravatar_id\":\"b68de5ae38616c296fa345d2b9df2225\",\"login\":\"jacquev6\",\"email\":\"vincent@vincent-jacques.net\",\"public_gists\":3,\"followers\":13,\"name\":\"Vincent Jacques\",\"created_at\":\"2010-07-09T06:10:06Z\",\"blog\":\"http://vincent-jacques.net\",\"location\":\"Paris, France\",\"hireable\":false,\"id\":327146,\"private_gists\":5,\"public_repos\":11,\"following\":24,\"html_url\":\"https://github.com/jacquev6\"}\n \n GET /repos/jacquev6/PyGithub {'Authorization': 'Basic login_and_password_removed'} null\n 200\n-[('status', '200 OK'), ('x-ratelimit-remaining', '4906'), ('content-length', '1129'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '\"4c20acf0b23f75bbf25106b1a04f65a5\"'), ('date', 'Sun, 27 May 2012 07:19:31 GMT'), ('content-type', 'application/json; charset=utf-8')]\n-{\"description\":\"Python library implementing the full Github API v3\",\"full_name\":\"jacquev6/PyGithub\",\"has_wiki\":false,\"has_issues\":true,\"updated_at\":\"2012-05-27T06:55:28Z\",\"forks\":3,\"mirror_url\":null,\"homepage\":\"http://vincent-jacques.net/PyGithub\",\"ssh_url\":\"git@github.com:jacquev6/PyGithub.git\",\"open_issues\":16,\"fork\":false,\"svn_url\":\"https://github.com/jacquev6/PyGithub\",\"pushed_at\":\"2012-05-27T06:00:28Z\",\"size\":308,\"html_url\":\"https://github.com/jacquev6/PyGithub\",\"private\":false,\"url\":\"https://api.github.com/repos/jacquev6/PyGithub\",\"clone_url\":\"https://github.com/jacquev6/PyGithub.git\",\"owner\":{\"gravatar_id\":\"b68de5ae38616c296fa345d2b9df2225\",\"avatar_url\":\"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"url\":\"https://api.github.com/users/jacquev6\",\"login\":\"jacquev6\",\"id\":327146},\"name\":\"PyGithub\",\"has_downloads\":true,\"language\":\"Python\",\"watchers\":15,\"git_url\":\"git://github.com/jacquev6/PyGithub.git\",\"id\":3544490,\"permissions\":{\"admin\":true,\"pull\":true,\"push\":true},\"created_at\":\"2012-02-25T12:53:47Z\"}\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4995'), ('content-length', '1129'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '\"f1e4eb3993a364b66b68ec9db42405bd\"'), ('date', 'Sun, 27 May 2012 07:32:55 GMT'), ('content-type', 'application/json; charset=utf-8')]\n+{\"clone_url\":\"https://github.com/jacquev6/PyGithub.git\",\"has_downloads\":true,\"watchers\":15,\"updated_at\":\"2012-05-27T07:29:24Z\",\"permissions\":{\"pull\":true,\"admin\":true,\"push\":true},\"homepage\":\"http://vincent-jacques.net/PyGithub\",\"url\":\"https://api.github.com/repos/jacquev6/PyGithub\",\"mirror_url\":null,\"has_wiki\":false,\"has_issues\":true,\"fork\":false,\"forks\":3,\"git_url\":\"git://github.com/jacquev6/PyGithub.git\",\"size\":308,\"private\":false,\"open_issues\":16,\"svn_url\":\"https://github.com/jacquev6/PyGithub\",\"owner\":{\"url\":\"https://api.github.com/users/jacquev6\",\"avatar_url\":\"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"gravatar_id\":\"b68de5ae38616c296fa345d2b9df2225\",\"login\":\"jacquev6\",\"id\":327146},\"name\":\"PyGithub\",\"language\":\"Python\",\"description\":\"Python library implementing the full Github API v3\",\"ssh_url\":\"git@github.com:jacquev6/PyGithub.git\",\"pushed_at\":\"2012-05-27T07:29:24Z\",\"created_at\":\"2012-02-25T12:53:47Z\",\"id\":3544490,\"html_url\":\"https://github.com/jacquev6/PyGithub\",\"full_name\":\"jacquev6/PyGithub\"}\n \n-GET /repos/jacquev6/PyGithub/issues/events/15819975 {'Authorization': 'Basic login_and_password_removed'} null\n+GET /repos/jacquev6/PyGithub/issues/events/16348656 {'Authorization': 'Basic login_and_password_removed'} null\n 200\n-[('status', '200 OK'), ('x-ratelimit-remaining', '4905'), ('content-length', '2430'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '\"a3d244842d23f92f69a23e21626fad11\"'), ('date', 'Sun, 27 May 2012 07:19:31 GMT'), ('content-type', 'application/json; charset=utf-8')]\n-{\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues/events/15819975\",\"issue\":{\"updated_at\":\"2012-05-26T14:59:33Z\",\"body\":\"Body edited by PyGithub\",\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues/28\",\"comments\":0,\"milestone\":{\"creator\":{\"url\":\"https://api.github.com/users/jacquev6\",\"avatar_url\":\"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"gravatar_id\":\"b68de5ae38616c296fa345d2b9df2225\",\"login\":\"jacquev6\",\"id\":327146},\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/milestones/1\",\"number\":1,\"title\":\"Version 0.4\",\"due_on\":\"2012-03-13T07:00:00Z\",\"closed_issues\":3,\"open_issues\":0,\"created_at\":\"2012-03-08T12:22:10Z\",\"state\":\"closed\",\"description\":\"\",\"id\":93546},\"number\":28,\"assignee\":{\"url\":\"https://api.github.com/users/jacquev6\",\"avatar_url\":\"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"gravatar_id\":\"b68de5ae38616c296fa345d2b9df2225\",\"login\":\"jacquev6\",\"id\":327146},\"closed_at\":\"2012-05-26T14:59:33Z\",\"title\":\"Issue created by PyGithub\",\"labels\":[{\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Bug\",\"name\":\"Bug\",\"color\":\"e10c02\"},{\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Project+management\",\"name\":\"Project management\",\"color\":\"444444\"},{\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Question\",\"name\":\"Question\",\"color\":\"02e10c\"}],\"created_at\":\"2012-05-19T10:38:23Z\",\"state\":\"closed\",\"user\":{\"url\":\"https://api.github.com/users/jacquev6\",\"avatar_url\":\"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"gravatar_id\":\"b68de5ae38616c296fa345d2b9df2225\",\"login\":\"jacquev6\",\"id\":327146},\"id\":4653757,\"pull_request\":{\"diff_url\":null,\"patch_url\":null,\"html_url\":null},\"html_url\":\"https://github.com/jacquev6/PyGithub/issues/28\"},\"commit_id\":null,\"created_at\":\"2012-05-19T10:38:23Z\",\"event\":\"subscribed\",\"id\":15819975,\"actor\":{\"url\":\"https://api.github.com/users/jacquev6\",\"avatar_url\":\"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"gravatar_id\":\"b68de5ae38616c296fa345d2b9df2225\",\"login\":\"jacquev6\",\"id\":327146}}\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4994'), ('content-length', '1384'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '\"fefecab09e7355d4ef9875677c2631da\"'), ('date', 'Sun, 27 May 2012 07:32:56 GMT'), ('content-type', 'application/json; charset=utf-8')]\n+{\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues/events/16348656\",\"issue\":{\"updated_at\":\"2012-05-27T07:27:51Z\",\"body\":\"Body created by PyGithub\",\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues/30\",\"comments\":0,\"milestone\":null,\"number\":30,\"assignee\":null,\"closed_at\":null,\"title\":\"Issue also created by PyGithub\",\"labels\":[{\"url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels/Question\",\"name\":\"Question\",\"color\":\"02e10c\"}],\"created_at\":\"2012-05-27T05:40:15Z\",\"state\":\"open\",\"user\":{\"url\":\"https://api.github.com/users/jacquev6\",\"gravatar_id\":\"b68de5ae38616c296fa345d2b9df2225\",\"login\":\"jacquev6\",\"id\":327146,\"avatar_url\":\"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\"},\"id\":4769659,\"pull_request\":{\"patch_url\":null,\"diff_url\":null,\"html_url\":null},\"html_url\":\"https://github.com/jacquev6/PyGithub/issues/30\"},\"commit_id\":\"ed866fc43833802ab553e5ff8581c81bb00dd433\",\"created_at\":\"2012-05-27T07:29:25Z\",\"event\":\"referenced\",\"id\":16348656,\"actor\":{\"url\":\"https://api.github.com/users/jacquev6\",\"gravatar_id\":\"b68de5ae38616c296fa345d2b9df2225\",\"login\":\"jacquev6\",\"id\":327146,\"avatar_url\":\"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\"}}\n "}] + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/comments/3630301 +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4873'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '8be19071-cb1a-414d-8310-a325dcbb0ff4'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '1391'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:51:22 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"654d1a29abe3a61b096e8bffbc61c162"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:34 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"url":"https://api.github.com/repos/jacquev6/PyGithub/comments/3630301","html_url":"https://github.com/jacquev6/PyGithub/commit/4aadfff21cdd2d2566b0e4bd7309c233b5f4ae23#commitcomment-3630301","id":3630301,"user":{"login":"jacquev6","id":327146,"avatar_url":"https://2.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"position":null,"line":null,"path":null,"commit_id":"4aadfff21cdd2d2566b0e4bd7309c233b5f4ae23","created_at":"2013-07-14T17:26:29Z","updated_at":"2013-07-14T17:26:29Z","body":"Comment created for PyGithub"} + +https +GET +status.github.com +443 +/api/status.json +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('content-length', '55'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('connection', 'keep-alive'), ('date', 'Fri, 06 Sep 2013 15:05:40 GMT'), ('content-type', 'application/json;charset=utf-8')] +{"status":"good","last_updated":"2013-09-06T15:05:34Z"} + +https +GET +status.github.com +443 +/api/last-message.json +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('content-length', '93'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('connection', 'keep-alive'), ('date', 'Fri, 06 Sep 2013 15:05:41 GMT'), ('content-type', 'application/json;charset=utf-8')] +{"status":"good","body":"Everything operating normally.","created_on":"2013-09-01T15:41:46Z"} + +https +GET +api.github.com +None +/rate_limit +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4873'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '7d8f5ceb-ff02-47d5-a6c5-bdc47a1b1306'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('content-length', '59'), ('server', 'GitHub.com'), ('x-ratelimit-limit', '5000'), ('cache-control', 'no-cache'), ('date', 'Fri, 06 Sep 2013 15:05:42 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"rate":{"limit":5000,"remaining":4873,"reset":1378482241}} + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/hooks +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4872'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '91eb21a9-7965-4af5-b6ff-95dc600d32e1'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '464'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:41:06 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"f7b3dbaaca94c0219f23e9021e78506f"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:43 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +[{"url":"https://api.github.com/repos/jacquev6/PyGithub/hooks/423574","test_url":"https://api.github.com/repos/jacquev6/PyGithub/hooks/423574/test","id":423574,"name":"travis","active":true,"events":["push","pull_request","issue_comment","public","member"],"config":{"domain":"","token":"pJdnhcDq3dQ9Cr1J1znQ","user":"jacquev6"},"last_response":{"code":200,"status":"active","message":"OK"},"updated_at":"2013-09-06T12:41:06Z","created_at":"2012-09-16T07:14:29Z"}] + +https +GET +api.github.com +None +/hooks +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4871'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '609aaebd-8356-4b3a-82cf-c796a9475c3b'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '28297'), ('server', 'GitHub.com'), ('last-modified', 'Wed, 04 Sep 2013 18:03:57 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"678dd8e392d70d3a284c3d47221ec6f0"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:45 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +[{"name":"activecollab","events":["push"],"supported_events":["push"],"schema":[["string","url"],["string","token"],["string","project_id"],["string","milestone_id"],["string","category_id"]]},{"name":"acunote","events":["push"],"supported_events":["push"],"schema":[["string","token"]]},{"name":"agilebench","events":["push"],"supported_events":["push"],"schema":[["string","token"],["string","project_id"]]},{"name":"agilezen","events":["push"],"supported_events":["push"],"schema":[["string","api_key"],["string","project_id"],["string","branches"]]},{"name":"amazonsns","events":["push"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[["string","aws_key"],["string","aws_secret"],["string","sns_topic"],["string","sqs_queue"],["password","aws_secret"]]},{"name":"apiary","events":["push"],"supported_events":["push"],"schema":[["string","branch"],["string","domain"]]},{"name":"apoio","events":["issues"],"supported_events":["issues"],"schema":[["string","subdomain"],["string","token"]]},{"name":"appharbor","events":["push"],"supported_events":["push"],"schema":[["string","application_slug"],["string","token"]]},{"name":"apropos","events":["commit_comment","issues","issue_comment","pull_request","push"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[["string","project_id"]]},{"name":"asana","events":["push"],"supported_events":["push"],"schema":[["string","auth_token"],["string","restrict_to_branch"],["boolean","restrict_to_last_commit"]]},{"name":"backlog","events":["push"],"supported_events":["push"],"schema":[["string","api_url"],["string","user_id"],["password","password"]]},{"name":"bamboo","events":["push"],"supported_events":["push"],"schema":[["string","base_url"],["string","build_key"],["string","username"],["password","password"]]},{"name":"basecamp","events":["push"],"supported_events":["push"],"schema":[["string","url"],["string","project"],["string","category"],["string","username"],["password","password"],["boolean","ssl"]]},{"name":"bcx","events":["push","pull_request","issues"],"supported_events":["issues","pull_request","push"],"schema":[["string","project_url"],["string","email_address"],["password","password"]]},{"name":"blimp","events":["issues","issue_comment"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[["string","project_url"],["string","username"],["string","goal_title"],["password","api_key"]]},{"name":"boxcar","events":["push"],"supported_events":["push"],"schema":[["string","subscribers"]]},{"name":"buddycloud","events":["push"],"supported_events":["push"],"schema":[["string","buddycloud_base_api"],["string","username"],["string","password"],["string","channel"],["password","password"],["boolean","show_commit_summary"],["boolean","show_commit_detail"]]},{"name":"bugherd","events":["issues","issue_comment","push"],"supported_events":["issue_comment","issues","push"],"schema":[["string","project_key"]]},{"name":"bugly","events":["push"],"supported_events":["push"],"schema":[["string","project_id"],["string","account_name"],["string","token"]]},{"name":"bugzilla","events":["push"],"supported_events":["push"],"schema":[["string","server_url"],["string","username"],["string","integration_branch"],["password","password"],["boolean","central_repository"]]},{"name":"campfire","events":["push","pull_request","issues"],"supported_events":["gollum","issues","public","pull_request","push"],"schema":[["string","subdomain"],["string","room"],["string","token"],["string","sound"],["boolean","master_only"],["boolean","play_sound"],["boolean","long_url"]]},{"name":"cia","events":["push"],"supported_events":["push"],"schema":[["string","address"],["string","project"],["string","branch"],["string","module"],["boolean","long_url"],["boolean","full_commits"]]},{"name":"circleci","events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[]},{"name":"codeclimate","events":["push"],"supported_events":["push"],"schema":[["string","token"]]},{"name":"codeportingcsharp2java","events":["push"],"supported_events":["push"],"schema":[["string","project_name"],["string","repo_key"],["string","target_repo_key"],["string","codeporting_username"],["password","codeporting_password"],["string","github_access_token"]]},{"name":"codeship","events":["push"],"supported_events":["push"],"schema":[["string","project_uuid"]]},{"name":"coffeedocinfo","events":["push"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[]},{"name":"conductor","events":["push"],"supported_events":["push"],"schema":[["string","api_key"]]},{"name":"coop","events":["push"],"supported_events":["push"],"schema":[["string","group_id"],["string","token"]]},{"name":"copperegg","events":["push"],"supported_events":["push"],"schema":[["string","url"],["string","tag"],["boolean","master_only"],["string","api_key"]]},{"name":"cube","events":["push"],"supported_events":["push"],"schema":[["string","domain"],["string","project"],["string","token"]]},{"name":"depending","events":["push"],"supported_events":["push"],"schema":[["string","token"]]},{"name":"deployhq","events":["push"],"supported_events":["push"],"schema":[["string","deploy_hook_url"],["boolean","email_pusher"]]},{"name":"devaria","events":["push","member","public","issues","gollum"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[["string","project_name"],["string","username"],["string","user_class_id"]]},{"name":"docker","events":["push"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[]},{"name":"ducksboard","events":["push","issues","fork","watch"],"supported_events":["fork","issues","push","watch"],"schema":[["string","webhook_key"]]},{"name":"email","events":["push"],"supported_events":["public","push"],"schema":[["string","address"],["password","secret"],["boolean","send_from_author"]]},{"name":"firebase","events":["push"],"supported_events":["push"],"schema":[["string","firebase"],["string","secret"]]},{"name":"fisheye","events":["push"],"supported_events":["push"],"schema":[["string","url_base"],["string","token"],["string","repository_name"]]},{"name":"flowdock","events":["commit_comment","gollum","issues","issue_comment","pull_request","push"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[["string","token"]]},{"name":"fogbugz","events":["push"],"supported_events":["push"],"schema":[["string","cvssubmit_url"],["string","fb_repoid"],["string","fb_version"]]},{"name":"freckle","events":["push"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[["string","subdomain"],["string","project"],["string","token"]]},{"name":"friendfeed","events":["push"],"supported_events":["push"],"schema":[["string","nickname"],["string","remotekey"]]},{"name":"gemini","events":["push"],"supported_events":["push"],"schema":[["string","server_url"],["string","api_key"]]},{"name":"gemnasium","events":["push"],"supported_events":["push"],"schema":[["string","user"],["string","token"]]},{"name":"geocommit","events":["push"],"supported_events":["push"],"schema":[]},{"name":"getlocalization","events":["push"],"supported_events":["push"],"schema":[["string","project_name"],["string","project_token"]]},{"name":"gitlive","events":["push"],"supported_events":["push"],"schema":[]},{"name":"grmble","events":["push"],"supported_events":["push"],"schema":[["string","room_api_url"],["string","token"]]},{"name":"grouptalent","events":["push"],"supported_events":["push"],"schema":[["string","token"]]},{"name":"grove","events":["commit_comment","gollum","issues","issue_comment","pull_request","push"],"supported_events":["push"],"schema":[["string","channel_token"]]},{"name":"habitualist","events":["push"],"supported_events":["push"],"schema":[]},{"name":"hakiri","events":["push"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[["string","token"],["string","project_id"]]},{"name":"hall","events":["commit_comment","gollum","issues","issue_comment","pull_request","push"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[["string","room_token"]]},{"name":"harvest","events":["push"],"supported_events":["push"],"schema":[["string","subdomain"],["string","username"],["password","password"],["boolean","ssl"]]},{"name":"hipchat","events":["commit_comment","download","fork","fork_apply","gollum","issues","issue_comment","member","public","pull_request","push","watch"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[["string","auth_token"],["string","room"],["string","restrict_to_branch"],["boolean","notify"],["boolean","quiet_fork"],["boolean","quiet_watch"],["boolean","quiet_comments"]]},{"name":"hostedgraphite","events":["push"],"supported_events":["push"],"schema":[["string","api_key"]]},{"name":"hubcap","events":["push"],"supported_events":["push"],"schema":[]},{"name":"hubci","events":["push"],"supported_events":["push"],"schema":[["string","token"]]},{"name":"humbug","events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","push","team_add","watch","pull_request_review_comment","status"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[["string","email"],["string","api_key"],["string","stream"],["string","branches"]]},{"name":"icescrum","events":["push"],"supported_events":["push"],"schema":[["string","base_url"],["string","project_key"],["string","username"],["password","password"]]},{"name":"irc","events":["push","pull_request"],"supported_events":["commit_comment","issue_comment","issues","pull_request","pull_request_review_comment","push"],"schema":[["string","server"],["string","port"],["string","room"],["string","nick"],["string","branch_regexes"],["string","nickserv_password"],["password","password"],["boolean","ssl"],["boolean","message_without_join"],["boolean","no_colors"],["boolean","long_url"],["boolean","notice"]]},{"name":"irker","events":["push"],"supported_events":["push"],"schema":[["string","address"],["string","project"],["string","branch"],["string","module"],["string","channels"],["boolean","long_url"],["boolean","color"],["boolean","full_commits"]]},{"name":"ironmq","events":["commit_comment","download","fork","fork_apply","gollum","issues","issue_comment","member","public","pull_request","push","watch"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[["string","token"],["string","project_id"],["string","queue_name"]]},{"name":"ironworker","events":["commit_comment","download","fork","fork_apply","gollum","issues","issue_comment","member","public","pull_request","push","watch"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[["string","token"],["string","project_id"],["string","queue_name"]]},{"name":"jabber","events":["push"],"supported_events":["push"],"schema":[["string","user"]]},{"name":"jaconda","events":["commit_comment","download","fork","fork_apply","gollum","issues","issue_comment","member","public","pull_request","push","watch"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[["string","subdomain"],["string","room_id"],["string","room_token"],["boolean","digest"]]},{"name":"jeapie","events":["push","pull_request","commit_comment"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[["string","token"]]},{"name":"jenkins","events":["push"],"supported_events":["push"],"schema":[["string","jenkins_hook_url"]]},{"name":"jenkinsgit","events":["push"],"supported_events":["push"],"schema":[["string","jenkins_url"]]},{"name":"jira","events":["push"],"supported_events":["push"],"schema":[["string","server_url"],["string","api_version"],["string","username"],["password","password"]]},{"name":"jqueryplugins","events":["push"],"supported_events":["push"],"schema":[]},{"name":"kanbanery","events":["push"],"supported_events":["push"],"schema":[["string","project_id"],["string","project_token"]]},{"name":"kickoff","events":["push"],"supported_events":["push"],"schema":[["string","project_id"],["string","project_token"]]},{"name":"leanto","events":["push"],"supported_events":["push"],"schema":[["string","token"]]},{"name":"lechat","events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[["string","webhook_url"]]},{"name":"lighthouse","events":["push"],"supported_events":["push"],"schema":[["string","subdomain"],["string","project_id"],["string","token"],["boolean","private"],["boolean","send_only_ticket_commits"]]},{"name":"lingohub","events":["push"],"supported_events":["push"],"schema":[["string","project_token"]]},{"name":"loggly","events":["push"],"supported_events":["push"],"schema":[["string","input_token"]]},{"name":"mantisbt","events":["push"],"supported_events":["push"],"schema":[["string","url"],["string","api_key"]]},{"name":"masterbranch","events":["push"],"supported_events":["push"],"schema":[]},{"name":"mqttpub","events":["push"],"supported_events":["push"],"schema":[["string","broker"],["string","port"],["string","topic"],["string","clientid"],["string","user"],["password","pass"],["boolean","retain"]]},{"name":"nma","events":["push"],"supported_events":["push"],"schema":[["string","apikey"]]},{"name":"nodejitsu","events":["push"],"supported_events":["push"],"schema":[["string","username"],["password","password"],["string","branch"],["string","endpoint"],["boolean","email_success_deploys"],["boolean","email_errors"]]},{"name":"notifo","events":["push"],"supported_events":["push"],"schema":[["string","subscribers"]]},{"name":"ontime","events":["push"],"supported_events":["push"],"schema":[["string","ontime_url"],["string","api_key"]]},{"name":"pachube","events":["push"],"supported_events":["push"],"schema":[["string","api_key"],["string","feed_id"],["string","track_branch"]]},{"name":"packagist","events":["push"],"supported_events":["push"],"schema":[["string","user"],["string","token"],["string","domain"]]},{"name":"phraseapp","events":["push"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[["string","auth_token"]]},{"name":"pivotaltracker","events":["push"],"supported_events":["push"],"schema":[["string","token"],["string","branch"],["string","endpoint"]]},{"name":"planbox","events":["push"],"supported_events":["push"],"schema":[["string","token"]]},{"name":"planio","events":["push"],"supported_events":["push"],"schema":[["string","address"],["string","project"],["string","api_key"]]},{"name":"prowl","events":["push"],"supported_events":["push"],"schema":[["string","apikey"]]},{"name":"puppetlinter","events":["push"],"supported_events":["push"],"schema":[]},{"name":"pushalot","events":["push"],"supported_events":["push"],"schema":[["string","authorization_token"]]},{"name":"pushover","events":["push"],"supported_events":["push"],"schema":[["string","user_key"],["string","device_name"]]},{"name":"pythonpackages","events":["push"],"supported_events":["push"],"schema":[]},{"name":"railsbp","events":["push"],"supported_events":["push"],"schema":[["string","railsbp_url"],["string","token"]]},{"name":"railsbrakeman","events":["push"],"supported_events":["push"],"schema":[["string","rails_brakeman_url"],["string","token"]]},{"name":"rally","events":["push"],"supported_events":["push"],"schema":[["string","server"],["string","username"],["string","workspace"],["string","repository"],["password","password"]]},{"name":"rapidpush","events":["push"],"supported_events":["push"],"schema":[["string","apikey"]]},{"name":"rationaljazzhub","events":["push"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[["string","username"],["password","password"],["string","override_server_url"]]},{"name":"rationalteamconcert","events":["push"],"supported_events":["push"],"schema":[["string","server_url"],["string","username"],["string","project_area_uuid"],["password","password"],["boolean","basic_authentication"],["boolean","no_verify_ssl"]]},{"name":"rdocinfo","events":["push"],"supported_events":["push"],"schema":[]},{"name":"readthedocs","events":["push"],"supported_events":["push"],"schema":[]},{"name":"redmine","events":["push"],"supported_events":["push"],"schema":[["string","address"],["string","project"],["string","api_key"],["boolean","fetch_commits"],["boolean","update_redmine_issues_about_commits"]]},{"name":"rubyforge","events":["push"],"supported_events":["push"],"schema":[["string","groupid"],["string","username"],["password","password"]]},{"name":"scrumdo","events":["push"],"supported_events":["push"],"schema":[["string","username"],["string","project_slug"],["password","password"]]},{"name":"shiningpanda","events":["push"],"supported_events":["push"],"schema":[["string","workspace"],["string","job"],["string","token"],["string","branches"],["string","parameters"]]},{"name":"sifter","events":["push"],"supported_events":["push"],"schema":[["string","subdomain"],["string","token"]]},{"name":"simperium","events":["push","issues","issue_comment","commit_comment","pull_request","pull_request_review_comment","watch","fork","fork_apply","member","public","team_add","status"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[["string","app_id"],["string","token"],["string","bucket"]]},{"name":"slatebox","events":["push"],"supported_events":["push"],"schema":[["string","app_id"],["string","token"]]},{"name":"snowyevening","events":["push"],"supported_events":["push"],"schema":[["string","project"],["string","api_key"]]},{"name":"socialcast","events":["push"],"supported_events":["push"],"schema":[["string","api_domain"],["string","group_id"],["string","username"],["password","password"]]},{"name":"softlayermessaging","events":["push"],"supported_events":["push"],"schema":[["string","account"],["string","user"],["string","name"],["password","key"],["boolean","topic"]]},{"name":"sourcemint","events":["push"],"supported_events":["push"],"schema":[]},{"name":"splendidbacon","events":["push"],"supported_events":["push"],"schema":[["string","project_id"],["string","token"]]},{"name":"sprintly","events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","push","team_add","watch","pull_request_review_comment","status"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[["string","email"],["string","api_key"],["string","product_id"]]},{"name":"sqsqueue","events":["push"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[["string","aws_access_key"],["string","sqs_queue_name"],["password","aws_secret_key"]]},{"name":"stackmob","events":["push"],"supported_events":["push"],"schema":[["string","token"]]},{"name":"statusnet","events":["push"],"supported_events":["push"],"schema":[["string","server"],["string","username"],["password","password"],["boolean","digest"]]},{"name":"talker","events":["push"],"supported_events":["issues","pull_request","push"],"schema":[["string","url"],["string","token"],["boolean","digest"]]},{"name":"targetprocess","events":["push"],"supported_events":["push"],"schema":[["string","base_url"],["string","username"],["password","password"]]},{"name":"tddium","events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[["string","token"],["string","override_url"]]},{"name":"teamcity","events":["push"],"supported_events":["push"],"schema":[["string","base_url"],["string","build_type_id"],["string","username"],["string","branches"],["password","password"]]},{"name":"tender","events":["issues"],"supported_events":["issues","pull_request"],"schema":[["string","domain"],["string","token"]]},{"name":"tenxer","events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[]},{"name":"testpilot","events":["push"],"supported_events":["push"],"schema":[["string","token"]]},{"name":"toggl","events":["push"],"supported_events":["push"],"schema":[["string","project"],["string","api_token"]]},{"name":"trac","events":["push"],"supported_events":["push"],"schema":[["string","url"],["string","token"]]},{"name":"trajectory","events":["push"],"supported_events":["pull_request","push"],"schema":[["string","api_key"]]},{"name":"travis","events":["push","pull_request","issue_comment","public","member"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[["string","user"],["password","token"],["string","domain"]]},{"name":"trello","events":["push","pull_request"],"supported_events":["pull_request","push"],"schema":[["string","push_list_id"],["string","pull_request_list_id"],["string","ignore_regex"],["boolean","master_only"],["password","consumer_token"]]},{"name":"twilio","events":["push"],"supported_events":["push"],"schema":[["string","account_sid"],["string","from_phone"],["string","to_phone"],["boolean","master_only"],["password","auth_token"]]},{"name":"twitter","events":["push"],"supported_events":["push"],"schema":[["string","token"],["string","secret"],["boolean","digest"],["boolean","short_format"]]},{"name":"unfuddle","events":["push"],"supported_events":["push"],"schema":[["string","subdomain"],["string","repo_id"],["string","username"],["password","password"],["boolean","httponly"]]},{"name":"web","events":["push"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[["string","url"],["string","secret"],["string","content_type"],["string","ssl_version"],["boolean","insecure_ssl"]]},{"name":"weblate","events":["push"],"supported_events":["push"],"schema":[["string","url"]]},{"name":"webtranslateit","events":["push"],"supported_events":["push"],"schema":[["string","api_key"]]},{"name":"yammer","events":["push","commit_comment","pull_request","pull_request_review_comment","public"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[["string","token"]]},{"name":"youtrack","events":["push"],"supported_events":["push"],"schema":[["string","base_url"],["string","committers"],["string","username"],["string","branch"],["password","password"]]},{"name":"zendesk","events":["commit_comment","issues","issue_comment","pull_request","push"],"supported_events":["commit_comment","create","delete","download","follow","fork","fork_apply","gist","gollum","issue_comment","issues","member","public","pull_request","pull_request_review_comment","push","status","team_add","watch"],"schema":[["string","subdomain"],["string","username"],["password","password"]]},{"name":"zohoprojects","events":["push"],"supported_events":["push"],"schema":[["string","project_id"],["string","token"]]}] + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/compare/master...develop +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4870'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', 'b385a4bc-89bd-418f-b2ee-948a4ed67670'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '711256'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 09:04:41 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"ff2ab76c56b865233dfb98f5804276b6"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:51 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"url":"https://api.github.com/repos/jacquev6/PyGithub/compare/master...develop","html_url":"https://github.com/jacquev6/PyGithub/compare/master...develop","permalink_url":"https://github.com/jacquev6/PyGithub/compare/jacquev6:ed781f8...jacquev6:a659749","diff_url":"https://github.com/jacquev6/PyGithub/compare/master...develop.diff","patch_url":"https://github.com/jacquev6/PyGithub/compare/master...develop.patch","base_commit":{"sha":"ed781f8b1b96e1d2a342d36ca53114ea28862fa8","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-21T16:39:22Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-21T16:39:22Z"},"message":"Fix date of 1.18.0","tree":{"sha":"e90c43164378222f04883c0f6547102df818d1ef","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/e90c43164378222f04883c0f6547102df818d1ef"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/ed781f8b1b96e1d2a342d36ca53114ea28862fa8","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ed781f8b1b96e1d2a342d36ca53114ea28862fa8","html_url":"https://github.com/jacquev6/PyGithub/commit/ed781f8b1b96e1d2a342d36ca53114ea28862fa8","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ed781f8b1b96e1d2a342d36ca53114ea28862fa8/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"2c4e3cbc24581c214f44682bfc3e7f438bae127a","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/2c4e3cbc24581c214f44682bfc3e7f438bae127a","html_url":"https://github.com/jacquev6/PyGithub/commit/2c4e3cbc24581c214f44682bfc3e7f438bae127a"}]},"merge_base_commit":{"sha":"ed781f8b1b96e1d2a342d36ca53114ea28862fa8","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-21T16:39:22Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-21T16:39:22Z"},"message":"Fix date of 1.18.0","tree":{"sha":"e90c43164378222f04883c0f6547102df818d1ef","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/e90c43164378222f04883c0f6547102df818d1ef"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/ed781f8b1b96e1d2a342d36ca53114ea28862fa8","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ed781f8b1b96e1d2a342d36ca53114ea28862fa8","html_url":"https://github.com/jacquev6/PyGithub/commit/ed781f8b1b96e1d2a342d36ca53114ea28862fa8","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ed781f8b1b96e1d2a342d36ca53114ea28862fa8/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"2c4e3cbc24581c214f44682bfc3e7f438bae127a","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/2c4e3cbc24581c214f44682bfc3e7f438bae127a","html_url":"https://github.com/jacquev6/PyGithub/commit/2c4e3cbc24581c214f44682bfc3e7f438bae127a"}]},"status":"ahead","ahead_by":99,"behind_by":0,"total_commits":99,"commits":[{"sha":"ea4bd8c9ad94a2e38bc272c9f9ff8cfdccea4c03","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T00:27:42Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T00:27:42Z"},"message":"Update .gitignore to ignore eproject settings and custom build batch files","tree":{"sha":"b4bf5289c36eb4f50999895cf7f1d0c8ddd26448","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/b4bf5289c36eb4f50999895cf7f1d0c8ddd26448"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/ea4bd8c9ad94a2e38bc272c9f9ff8cfdccea4c03","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ea4bd8c9ad94a2e38bc272c9f9ff8cfdccea4c03","html_url":"https://github.com/jacquev6/PyGithub/commit/ea4bd8c9ad94a2e38bc272c9f9ff8cfdccea4c03","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ea4bd8c9ad94a2e38bc272c9f9ff8cfdccea4c03/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"0a1e1fa488a7cf43016fe9ec30e5cc54dfcc7bfd","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/0a1e1fa488a7cf43016fe9ec30e5cc54dfcc7bfd","html_url":"https://github.com/jacquev6/PyGithub/commit/0a1e1fa488a7cf43016fe9ec30e5cc54dfcc7bfd"}]},{"sha":"cfbe7fb0b0e8f72f8725e48a4155ab0338d9773f","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T03:21:15Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T03:21:15Z"},"message":"Change GithubObject.__init__ without breaking build.","tree":{"sha":"30c8a26c9dd4a5c68c8b15666f126f9ef3929d8f","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/30c8a26c9dd4a5c68c8b15666f126f9ef3929d8f"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/cfbe7fb0b0e8f72f8725e48a4155ab0338d9773f","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/cfbe7fb0b0e8f72f8725e48a4155ab0338d9773f","html_url":"https://github.com/jacquev6/PyGithub/commit/cfbe7fb0b0e8f72f8725e48a4155ab0338d9773f","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/cfbe7fb0b0e8f72f8725e48a4155ab0338d9773f/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"ea4bd8c9ad94a2e38bc272c9f9ff8cfdccea4c03","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ea4bd8c9ad94a2e38bc272c9f9ff8cfdccea4c03","html_url":"https://github.com/jacquev6/PyGithub/commit/ea4bd8c9ad94a2e38bc272c9f9ff8cfdccea4c03"}]},{"sha":"0bc138b490b0b9d7ebc5e539547b88e062dd127d","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T04:32:41Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T04:32:41Z"},"message":"Change NonCompletableGithubObject without breaking build.","tree":{"sha":"05c4e4c51ed7f77adf8f96b1ef6262bd004822db","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/05c4e4c51ed7f77adf8f96b1ef6262bd004822db"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/0bc138b490b0b9d7ebc5e539547b88e062dd127d","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/0bc138b490b0b9d7ebc5e539547b88e062dd127d","html_url":"https://github.com/jacquev6/PyGithub/commit/0bc138b490b0b9d7ebc5e539547b88e062dd127d","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/0bc138b490b0b9d7ebc5e539547b88e062dd127d/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"cfbe7fb0b0e8f72f8725e48a4155ab0338d9773f","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/cfbe7fb0b0e8f72f8725e48a4155ab0338d9773f","html_url":"https://github.com/jacquev6/PyGithub/commit/cfbe7fb0b0e8f72f8725e48a4155ab0338d9773f"}]},{"sha":"b12c4b38c55ad9649541668950a01e6b3940a1bc","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T05:05:41Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T05:05:41Z"},"message":"Update Tag.py","tree":{"sha":"61648b068707a2dd5d7cc00832acc5eb76be102e","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/61648b068707a2dd5d7cc00832acc5eb76be102e"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/b12c4b38c55ad9649541668950a01e6b3940a1bc","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/b12c4b38c55ad9649541668950a01e6b3940a1bc","html_url":"https://github.com/jacquev6/PyGithub/commit/b12c4b38c55ad9649541668950a01e6b3940a1bc","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/b12c4b38c55ad9649541668950a01e6b3940a1bc/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"0bc138b490b0b9d7ebc5e539547b88e062dd127d","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/0bc138b490b0b9d7ebc5e539547b88e062dd127d","html_url":"https://github.com/jacquev6/PyGithub/commit/0bc138b490b0b9d7ebc5e539547b88e062dd127d"}]},{"sha":"9f6562cb625d30b08b053da44a059ace70ed366e","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T05:07:23Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T05:07:23Z"},"message":"Update CommitStatus.py","tree":{"sha":"9d219ca7890099f4b9865927af6d8444557d5dd9","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/9d219ca7890099f4b9865927af6d8444557d5dd9"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/9f6562cb625d30b08b053da44a059ace70ed366e","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/9f6562cb625d30b08b053da44a059ace70ed366e","html_url":"https://github.com/jacquev6/PyGithub/commit/9f6562cb625d30b08b053da44a059ace70ed366e","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/9f6562cb625d30b08b053da44a059ace70ed366e/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"b12c4b38c55ad9649541668950a01e6b3940a1bc","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/b12c4b38c55ad9649541668950a01e6b3940a1bc","html_url":"https://github.com/jacquev6/PyGithub/commit/b12c4b38c55ad9649541668950a01e6b3940a1bc"}]},{"sha":"e8e8d174fb65249dd6aa41d3ec7993223dc83af4","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T05:08:48Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T05:08:48Z"},"message":"Update Event.py","tree":{"sha":"965865c144a91581cd5560a6853ac7d244e8621d","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/965865c144a91581cd5560a6853ac7d244e8621d"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/e8e8d174fb65249dd6aa41d3ec7993223dc83af4","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/e8e8d174fb65249dd6aa41d3ec7993223dc83af4","html_url":"https://github.com/jacquev6/PyGithub/commit/e8e8d174fb65249dd6aa41d3ec7993223dc83af4","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/e8e8d174fb65249dd6aa41d3ec7993223dc83af4/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"9f6562cb625d30b08b053da44a059ace70ed366e","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/9f6562cb625d30b08b053da44a059ace70ed366e","html_url":"https://github.com/jacquev6/PyGithub/commit/9f6562cb625d30b08b053da44a059ace70ed366e"}]},{"sha":"6943f6da7f84b05b8eae4555dbc598df2fe5ec01","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T05:10:32Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T05:10:32Z"},"message":"Update Branch.py","tree":{"sha":"69f9bb6bfbaa5a78bf94976b71fb778f6e105c17","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/69f9bb6bfbaa5a78bf94976b71fb778f6e105c17"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/6943f6da7f84b05b8eae4555dbc598df2fe5ec01","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/6943f6da7f84b05b8eae4555dbc598df2fe5ec01","html_url":"https://github.com/jacquev6/PyGithub/commit/6943f6da7f84b05b8eae4555dbc598df2fe5ec01","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/6943f6da7f84b05b8eae4555dbc598df2fe5ec01/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"e8e8d174fb65249dd6aa41d3ec7993223dc83af4","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/e8e8d174fb65249dd6aa41d3ec7993223dc83af4","html_url":"https://github.com/jacquev6/PyGithub/commit/e8e8d174fb65249dd6aa41d3ec7993223dc83af4"}]},{"sha":"bb56857b4d5e9d85f26815a3da4c69f6bc718fbd","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T05:15:25Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T05:15:25Z"},"message":"Update File.py","tree":{"sha":"1435b24b2da7c0403801e09ea0e9bf9cc1660eac","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/1435b24b2da7c0403801e09ea0e9bf9cc1660eac"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/bb56857b4d5e9d85f26815a3da4c69f6bc718fbd","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/bb56857b4d5e9d85f26815a3da4c69f6bc718fbd","html_url":"https://github.com/jacquev6/PyGithub/commit/bb56857b4d5e9d85f26815a3da4c69f6bc718fbd","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/bb56857b4d5e9d85f26815a3da4c69f6bc718fbd/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"6943f6da7f84b05b8eae4555dbc598df2fe5ec01","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/6943f6da7f84b05b8eae4555dbc598df2fe5ec01","html_url":"https://github.com/jacquev6/PyGithub/commit/6943f6da7f84b05b8eae4555dbc598df2fe5ec01"}]},{"sha":"c2dd9452eabc70bf88fc4769e48df63c0de8ce8a","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T05:18:29Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T05:18:29Z"},"message":"Update Gist.py","tree":{"sha":"002b4962bc4386c46823d1f2f36c7fad4e8aa2b4","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/002b4962bc4386c46823d1f2f36c7fad4e8aa2b4"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/c2dd9452eabc70bf88fc4769e48df63c0de8ce8a","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/c2dd9452eabc70bf88fc4769e48df63c0de8ce8a","html_url":"https://github.com/jacquev6/PyGithub/commit/c2dd9452eabc70bf88fc4769e48df63c0de8ce8a","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/c2dd9452eabc70bf88fc4769e48df63c0de8ce8a/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"bb56857b4d5e9d85f26815a3da4c69f6bc718fbd","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/bb56857b4d5e9d85f26815a3da4c69f6bc718fbd","html_url":"https://github.com/jacquev6/PyGithub/commit/bb56857b4d5e9d85f26815a3da4c69f6bc718fbd"}]},{"sha":"4f1e05200d35e951fb52730c3d783c2942836695","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T05:21:49Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T05:21:49Z"},"message":"Update GitAuthor.py","tree":{"sha":"c5ad338858b03d34b38b1ca8a8ea8578d5a64da5","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/c5ad338858b03d34b38b1ca8a8ea8578d5a64da5"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/4f1e05200d35e951fb52730c3d783c2942836695","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/4f1e05200d35e951fb52730c3d783c2942836695","html_url":"https://github.com/jacquev6/PyGithub/commit/4f1e05200d35e951fb52730c3d783c2942836695","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/4f1e05200d35e951fb52730c3d783c2942836695/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"c2dd9452eabc70bf88fc4769e48df63c0de8ce8a","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/c2dd9452eabc70bf88fc4769e48df63c0de8ce8a","html_url":"https://github.com/jacquev6/PyGithub/commit/c2dd9452eabc70bf88fc4769e48df63c0de8ce8a"}]},{"sha":"0879cbb6ff5f349bc8f867dace06801cf8f04136","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T05:23:21Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T05:23:21Z"},"message":"Update GitignoreTemplate.py","tree":{"sha":"eac0b02fc4be8c34681d548624dec5d93b0875e4","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/eac0b02fc4be8c34681d548624dec5d93b0875e4"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/0879cbb6ff5f349bc8f867dace06801cf8f04136","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/0879cbb6ff5f349bc8f867dace06801cf8f04136","html_url":"https://github.com/jacquev6/PyGithub/commit/0879cbb6ff5f349bc8f867dace06801cf8f04136","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/0879cbb6ff5f349bc8f867dace06801cf8f04136/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"4f1e05200d35e951fb52730c3d783c2942836695","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/4f1e05200d35e951fb52730c3d783c2942836695","html_url":"https://github.com/jacquev6/PyGithub/commit/4f1e05200d35e951fb52730c3d783c2942836695"}]},{"sha":"274ab70f874098d1a0385e636748f0651b739e62","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T05:26:08Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T05:26:08Z"},"message":"Update GitObject.py","tree":{"sha":"596c0e549efc2279f7343db4d1abee3eb70955c7","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/596c0e549efc2279f7343db4d1abee3eb70955c7"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/274ab70f874098d1a0385e636748f0651b739e62","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/274ab70f874098d1a0385e636748f0651b739e62","html_url":"https://github.com/jacquev6/PyGithub/commit/274ab70f874098d1a0385e636748f0651b739e62","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/274ab70f874098d1a0385e636748f0651b739e62/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"0879cbb6ff5f349bc8f867dace06801cf8f04136","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/0879cbb6ff5f349bc8f867dace06801cf8f04136","html_url":"https://github.com/jacquev6/PyGithub/commit/0879cbb6ff5f349bc8f867dace06801cf8f04136"}]},{"sha":"02435f3a9f5f321f5ff3d5c1f4bcb9a10fc5e290","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T05:30:39Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T05:30:39Z"},"message":"Update GitTree.py","tree":{"sha":"245148f865501a2ad0614136baef4ea6c2341992","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/245148f865501a2ad0614136baef4ea6c2341992"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/02435f3a9f5f321f5ff3d5c1f4bcb9a10fc5e290","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/02435f3a9f5f321f5ff3d5c1f4bcb9a10fc5e290","html_url":"https://github.com/jacquev6/PyGithub/commit/02435f3a9f5f321f5ff3d5c1f4bcb9a10fc5e290","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/02435f3a9f5f321f5ff3d5c1f4bcb9a10fc5e290/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"274ab70f874098d1a0385e636748f0651b739e62","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/274ab70f874098d1a0385e636748f0651b739e62","html_url":"https://github.com/jacquev6/PyGithub/commit/274ab70f874098d1a0385e636748f0651b739e62"}]},{"sha":"ac1585ee13f13cfa20fd79a78c4643de815607fd","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T05:59:08Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T05:59:08Z"},"message":"Update HookDescription.py.","tree":{"sha":"6509b30ec9b0ff54edde6277bf408585b68e464b","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/6509b30ec9b0ff54edde6277bf408585b68e464b"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/ac1585ee13f13cfa20fd79a78c4643de815607fd","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ac1585ee13f13cfa20fd79a78c4643de815607fd","html_url":"https://github.com/jacquev6/PyGithub/commit/ac1585ee13f13cfa20fd79a78c4643de815607fd","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ac1585ee13f13cfa20fd79a78c4643de815607fd/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"02435f3a9f5f321f5ff3d5c1f4bcb9a10fc5e290","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/02435f3a9f5f321f5ff3d5c1f4bcb9a10fc5e290","html_url":"https://github.com/jacquev6/PyGithub/commit/02435f3a9f5f321f5ff3d5c1f4bcb9a10fc5e290"}]},{"sha":"d6170e36de261f8107cdc40e1e6e3c91bac0eb3d","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T06:03:57Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T06:03:57Z"},"message":"Update IssuePullRequest.py","tree":{"sha":"a5ea8a1ed6a03152d916d4c066ee2394ed4a4f97","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/a5ea8a1ed6a03152d916d4c066ee2394ed4a4f97"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/d6170e36de261f8107cdc40e1e6e3c91bac0eb3d","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/d6170e36de261f8107cdc40e1e6e3c91bac0eb3d","html_url":"https://github.com/jacquev6/PyGithub/commit/d6170e36de261f8107cdc40e1e6e3c91bac0eb3d","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/d6170e36de261f8107cdc40e1e6e3c91bac0eb3d/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"ac1585ee13f13cfa20fd79a78c4643de815607fd","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ac1585ee13f13cfa20fd79a78c4643de815607fd","html_url":"https://github.com/jacquev6/PyGithub/commit/ac1585ee13f13cfa20fd79a78c4643de815607fd"}]},{"sha":"12387505e2fbf25ceae63f169b13d57d86b80282","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T06:05:10Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T06:05:10Z"},"message":"Update Notification.py","tree":{"sha":"2a05533d50e9e0b9173fa9030bad2259f9a8d24b","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/2a05533d50e9e0b9173fa9030bad2259f9a8d24b"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/12387505e2fbf25ceae63f169b13d57d86b80282","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/12387505e2fbf25ceae63f169b13d57d86b80282","html_url":"https://github.com/jacquev6/PyGithub/commit/12387505e2fbf25ceae63f169b13d57d86b80282","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/12387505e2fbf25ceae63f169b13d57d86b80282/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"d6170e36de261f8107cdc40e1e6e3c91bac0eb3d","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/d6170e36de261f8107cdc40e1e6e3c91bac0eb3d","html_url":"https://github.com/jacquev6/PyGithub/commit/d6170e36de261f8107cdc40e1e6e3c91bac0eb3d"}]},{"sha":"6e11aa9cf041be25691971476bc474facb1bd1f1","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T06:07:10Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T06:07:10Z"},"message":"Update Permissions.py","tree":{"sha":"1653ca5e502dacc579e8489c1ff967970e95a68f","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/1653ca5e502dacc579e8489c1ff967970e95a68f"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/6e11aa9cf041be25691971476bc474facb1bd1f1","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/6e11aa9cf041be25691971476bc474facb1bd1f1","html_url":"https://github.com/jacquev6/PyGithub/commit/6e11aa9cf041be25691971476bc474facb1bd1f1","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/6e11aa9cf041be25691971476bc474facb1bd1f1/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"12387505e2fbf25ceae63f169b13d57d86b80282","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/12387505e2fbf25ceae63f169b13d57d86b80282","html_url":"https://github.com/jacquev6/PyGithub/commit/12387505e2fbf25ceae63f169b13d57d86b80282"}]},{"sha":"dcb6874745b2e0466017f94be745ba35b72a3748","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T06:09:11Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T06:09:11Z"},"message":"Fix CommitStats.py","tree":{"sha":"9191d147b43f13eee33b585441a4573028534a02","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/9191d147b43f13eee33b585441a4573028534a02"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/dcb6874745b2e0466017f94be745ba35b72a3748","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/dcb6874745b2e0466017f94be745ba35b72a3748","html_url":"https://github.com/jacquev6/PyGithub/commit/dcb6874745b2e0466017f94be745ba35b72a3748","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/dcb6874745b2e0466017f94be745ba35b72a3748/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"6e11aa9cf041be25691971476bc474facb1bd1f1","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/6e11aa9cf041be25691971476bc474facb1bd1f1","html_url":"https://github.com/jacquev6/PyGithub/commit/6e11aa9cf041be25691971476bc474facb1bd1f1"}]},{"sha":"deb0514b5e7364b307a611797681da8ddf6db5c1","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T06:10:37Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T06:10:37Z"},"message":"Update Hook.py","tree":{"sha":"2a46cd5f6c33398d1b347912bcdc596fa0b66d0d","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/2a46cd5f6c33398d1b347912bcdc596fa0b66d0d"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/deb0514b5e7364b307a611797681da8ddf6db5c1","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/deb0514b5e7364b307a611797681da8ddf6db5c1","html_url":"https://github.com/jacquev6/PyGithub/commit/deb0514b5e7364b307a611797681da8ddf6db5c1","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/deb0514b5e7364b307a611797681da8ddf6db5c1/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"dcb6874745b2e0466017f94be745ba35b72a3748","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/dcb6874745b2e0466017f94be745ba35b72a3748","html_url":"https://github.com/jacquev6/PyGithub/commit/dcb6874745b2e0466017f94be745ba35b72a3748"}]},{"sha":"c7aeaddfa8897ed9a23764bbb4beda29403ab413","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T06:13:14Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T06:13:14Z"},"message":"Fix PullRequestMergeStatus.py","tree":{"sha":"e4f7ae5aa275ca50cbc0e52dcb49ad224355f0af","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/e4f7ae5aa275ca50cbc0e52dcb49ad224355f0af"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/c7aeaddfa8897ed9a23764bbb4beda29403ab413","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/c7aeaddfa8897ed9a23764bbb4beda29403ab413","html_url":"https://github.com/jacquev6/PyGithub/commit/c7aeaddfa8897ed9a23764bbb4beda29403ab413","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/c7aeaddfa8897ed9a23764bbb4beda29403ab413/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"deb0514b5e7364b307a611797681da8ddf6db5c1","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/deb0514b5e7364b307a611797681da8ddf6db5c1","html_url":"https://github.com/jacquev6/PyGithub/commit/deb0514b5e7364b307a611797681da8ddf6db5c1"}]},{"sha":"b2c4519c06cf541ae327d80b0b1361e2698e23ae","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T06:15:09Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T06:15:09Z"},"message":"Update PulllRequestPart.py","tree":{"sha":"476f8bc503a98475a13bcf929c9af2034044be23","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/476f8bc503a98475a13bcf929c9af2034044be23"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/b2c4519c06cf541ae327d80b0b1361e2698e23ae","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/b2c4519c06cf541ae327d80b0b1361e2698e23ae","html_url":"https://github.com/jacquev6/PyGithub/commit/b2c4519c06cf541ae327d80b0b1361e2698e23ae","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/b2c4519c06cf541ae327d80b0b1361e2698e23ae/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"c7aeaddfa8897ed9a23764bbb4beda29403ab413","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/c7aeaddfa8897ed9a23764bbb4beda29403ab413","html_url":"https://github.com/jacquev6/PyGithub/commit/c7aeaddfa8897ed9a23764bbb4beda29403ab413"}]},{"sha":"4a1a1d406896ebd96315fcf9092ab68dfb7a7194","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T06:19:31Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T06:19:31Z"},"message":"Update Plan.py","tree":{"sha":"68e82c7745d78fca9ac29501be72a3613f95876a","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/68e82c7745d78fca9ac29501be72a3613f95876a"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/4a1a1d406896ebd96315fcf9092ab68dfb7a7194","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/4a1a1d406896ebd96315fcf9092ab68dfb7a7194","html_url":"https://github.com/jacquev6/PyGithub/commit/4a1a1d406896ebd96315fcf9092ab68dfb7a7194","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/4a1a1d406896ebd96315fcf9092ab68dfb7a7194/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"b2c4519c06cf541ae327d80b0b1361e2698e23ae","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/b2c4519c06cf541ae327d80b0b1361e2698e23ae","html_url":"https://github.com/jacquev6/PyGithub/commit/b2c4519c06cf541ae327d80b0b1361e2698e23ae"}]},{"sha":"a1b65636df9408d93b115a3533a091e3e9cc68c4","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T06:25:07Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T06:25:07Z"},"message":"Clean up. NonCompletableGithubObject refactoring resolved.","tree":{"sha":"eec00d808853aee3bf03f8e705fbf49bd32b1dab","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/eec00d808853aee3bf03f8e705fbf49bd32b1dab"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/a1b65636df9408d93b115a3533a091e3e9cc68c4","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/a1b65636df9408d93b115a3533a091e3e9cc68c4","html_url":"https://github.com/jacquev6/PyGithub/commit/a1b65636df9408d93b115a3533a091e3e9cc68c4","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/a1b65636df9408d93b115a3533a091e3e9cc68c4/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"4a1a1d406896ebd96315fcf9092ab68dfb7a7194","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/4a1a1d406896ebd96315fcf9092ab68dfb7a7194","html_url":"https://github.com/jacquev6/PyGithub/commit/4a1a1d406896ebd96315fcf9092ab68dfb7a7194"}]},{"sha":"ca6189c3c94fac963811342ce9f77104d0b5774b","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T06:49:20Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T06:49:20Z"},"message":"Change CompletableGithubObject.__init__ without breaking build.","tree":{"sha":"a8fd06251014ac406f89342e2ee118fe5e5e562c","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/a8fd06251014ac406f89342e2ee118fe5e5e562c"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/ca6189c3c94fac963811342ce9f77104d0b5774b","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ca6189c3c94fac963811342ce9f77104d0b5774b","html_url":"https://github.com/jacquev6/PyGithub/commit/ca6189c3c94fac963811342ce9f77104d0b5774b","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ca6189c3c94fac963811342ce9f77104d0b5774b/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"a1b65636df9408d93b115a3533a091e3e9cc68c4","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/a1b65636df9408d93b115a3533a091e3e9cc68c4","html_url":"https://github.com/jacquev6/PyGithub/commit/a1b65636df9408d93b115a3533a091e3e9cc68c4"}]},{"sha":"2f31828502c95fef62970db7d4ca49fa8b4b8e0d","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:04:34Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:04:34Z"},"message":"Update RepositoryKey.py","tree":{"sha":"f1903010376227506f579412a3356276a2ef3a6f","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/f1903010376227506f579412a3356276a2ef3a6f"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/2f31828502c95fef62970db7d4ca49fa8b4b8e0d","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/2f31828502c95fef62970db7d4ca49fa8b4b8e0d","html_url":"https://github.com/jacquev6/PyGithub/commit/2f31828502c95fef62970db7d4ca49fa8b4b8e0d","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/2f31828502c95fef62970db7d4ca49fa8b4b8e0d/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"ca6189c3c94fac963811342ce9f77104d0b5774b","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ca6189c3c94fac963811342ce9f77104d0b5774b","html_url":"https://github.com/jacquev6/PyGithub/commit/ca6189c3c94fac963811342ce9f77104d0b5774b"}]},{"sha":"28a49b94d87408592199ffa018e8c1b3bd9d2a77","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:06:21Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:06:21Z"},"message":"Update AuthenticatedUser.py","tree":{"sha":"be7f3930e35f7752cbf2541d3b9c2ea1b31a4cbb","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/be7f3930e35f7752cbf2541d3b9c2ea1b31a4cbb"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/28a49b94d87408592199ffa018e8c1b3bd9d2a77","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/28a49b94d87408592199ffa018e8c1b3bd9d2a77","html_url":"https://github.com/jacquev6/PyGithub/commit/28a49b94d87408592199ffa018e8c1b3bd9d2a77","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/28a49b94d87408592199ffa018e8c1b3bd9d2a77/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"2f31828502c95fef62970db7d4ca49fa8b4b8e0d","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/2f31828502c95fef62970db7d4ca49fa8b4b8e0d","html_url":"https://github.com/jacquev6/PyGithub/commit/2f31828502c95fef62970db7d4ca49fa8b4b8e0d"}]},{"sha":"0e19d8e04e847aac690fcd5563c35aa0c1808a80","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:09:34Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:09:34Z"},"message":"Update Authorization.py","tree":{"sha":"fd2c8b34609c810f111d6f911e7bf8af932a3057","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/fd2c8b34609c810f111d6f911e7bf8af932a3057"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/0e19d8e04e847aac690fcd5563c35aa0c1808a80","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/0e19d8e04e847aac690fcd5563c35aa0c1808a80","html_url":"https://github.com/jacquev6/PyGithub/commit/0e19d8e04e847aac690fcd5563c35aa0c1808a80","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/0e19d8e04e847aac690fcd5563c35aa0c1808a80/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"28a49b94d87408592199ffa018e8c1b3bd9d2a77","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/28a49b94d87408592199ffa018e8c1b3bd9d2a77","html_url":"https://github.com/jacquev6/PyGithub/commit/28a49b94d87408592199ffa018e8c1b3bd9d2a77"}]},{"sha":"83c6495ec557898cd17a70be184c307558b4535c","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:10:54Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:10:54Z"},"message":"Update AuthorizationApplication.py","tree":{"sha":"59197288fa8348a8fea3ff62a624c1f423bdc243","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/59197288fa8348a8fea3ff62a624c1f423bdc243"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/83c6495ec557898cd17a70be184c307558b4535c","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/83c6495ec557898cd17a70be184c307558b4535c","html_url":"https://github.com/jacquev6/PyGithub/commit/83c6495ec557898cd17a70be184c307558b4535c","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/83c6495ec557898cd17a70be184c307558b4535c/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"0e19d8e04e847aac690fcd5563c35aa0c1808a80","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/0e19d8e04e847aac690fcd5563c35aa0c1808a80","html_url":"https://github.com/jacquev6/PyGithub/commit/0e19d8e04e847aac690fcd5563c35aa0c1808a80"}]},{"sha":"ed32e78da1303962afaf8fa0d616a1828fdaa80b","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:26:05Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:26:05Z"},"message":"Update Commit.py and GitCommit.py","tree":{"sha":"137ed1870455860097e3fde5ecc1d32d3ae58461","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/137ed1870455860097e3fde5ecc1d32d3ae58461"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/ed32e78da1303962afaf8fa0d616a1828fdaa80b","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ed32e78da1303962afaf8fa0d616a1828fdaa80b","html_url":"https://github.com/jacquev6/PyGithub/commit/ed32e78da1303962afaf8fa0d616a1828fdaa80b","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ed32e78da1303962afaf8fa0d616a1828fdaa80b/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"83c6495ec557898cd17a70be184c307558b4535c","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/83c6495ec557898cd17a70be184c307558b4535c","html_url":"https://github.com/jacquev6/PyGithub/commit/83c6495ec557898cd17a70be184c307558b4535c"}]},{"sha":"3b2e19488fc6a5f51574d874e546173c1835d10b","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:28:00Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:28:00Z"},"message":"Update CommitComment.py","tree":{"sha":"99c70f3baa022e7e837f7903172325a78d41a2a4","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/99c70f3baa022e7e837f7903172325a78d41a2a4"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/3b2e19488fc6a5f51574d874e546173c1835d10b","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/3b2e19488fc6a5f51574d874e546173c1835d10b","html_url":"https://github.com/jacquev6/PyGithub/commit/3b2e19488fc6a5f51574d874e546173c1835d10b","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/3b2e19488fc6a5f51574d874e546173c1835d10b/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"ed32e78da1303962afaf8fa0d616a1828fdaa80b","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ed32e78da1303962afaf8fa0d616a1828fdaa80b","html_url":"https://github.com/jacquev6/PyGithub/commit/ed32e78da1303962afaf8fa0d616a1828fdaa80b"}]},{"sha":"ced048663ba392bfee2543cea5f5fbf875771c0e","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:29:13Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:29:13Z"},"message":"Update Comparision.py","tree":{"sha":"25c0fef0fa652ad8bce55c3efbd10028298eb24f","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/25c0fef0fa652ad8bce55c3efbd10028298eb24f"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/ced048663ba392bfee2543cea5f5fbf875771c0e","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ced048663ba392bfee2543cea5f5fbf875771c0e","html_url":"https://github.com/jacquev6/PyGithub/commit/ced048663ba392bfee2543cea5f5fbf875771c0e","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ced048663ba392bfee2543cea5f5fbf875771c0e/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"3b2e19488fc6a5f51574d874e546173c1835d10b","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/3b2e19488fc6a5f51574d874e546173c1835d10b","html_url":"https://github.com/jacquev6/PyGithub/commit/3b2e19488fc6a5f51574d874e546173c1835d10b"}]},{"sha":"0c13da45929dbc528a4f8f14f8ce54df15888660","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:31:45Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:31:45Z"},"message":"Update ContentFile.py","tree":{"sha":"a9d12c606be5d39883e814a16deca4c959374973","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/a9d12c606be5d39883e814a16deca4c959374973"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/0c13da45929dbc528a4f8f14f8ce54df15888660","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/0c13da45929dbc528a4f8f14f8ce54df15888660","html_url":"https://github.com/jacquev6/PyGithub/commit/0c13da45929dbc528a4f8f14f8ce54df15888660","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/0c13da45929dbc528a4f8f14f8ce54df15888660/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"ced048663ba392bfee2543cea5f5fbf875771c0e","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ced048663ba392bfee2543cea5f5fbf875771c0e","html_url":"https://github.com/jacquev6/PyGithub/commit/ced048663ba392bfee2543cea5f5fbf875771c0e"}]},{"sha":"c15cb6575b88b56b48fb21e66931ab2108c8b23c","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:33:25Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:33:25Z"},"message":"Update Download.py","tree":{"sha":"77bb2d83e0989950f5b688505b40ee3bfc3274aa","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/77bb2d83e0989950f5b688505b40ee3bfc3274aa"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/c15cb6575b88b56b48fb21e66931ab2108c8b23c","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/c15cb6575b88b56b48fb21e66931ab2108c8b23c","html_url":"https://github.com/jacquev6/PyGithub/commit/c15cb6575b88b56b48fb21e66931ab2108c8b23c","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/c15cb6575b88b56b48fb21e66931ab2108c8b23c/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"0c13da45929dbc528a4f8f14f8ce54df15888660","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/0c13da45929dbc528a4f8f14f8ce54df15888660","html_url":"https://github.com/jacquev6/PyGithub/commit/0c13da45929dbc528a4f8f14f8ce54df15888660"}]},{"sha":"dc8173a5328cede580cae7e2bbf053ee98185d4e","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:39:34Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:39:34Z"},"message":"Update Gist*.py","tree":{"sha":"3d7859d27a4f4ef40a728f1787dea342b9f0d904","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/3d7859d27a4f4ef40a728f1787dea342b9f0d904"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/dc8173a5328cede580cae7e2bbf053ee98185d4e","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/dc8173a5328cede580cae7e2bbf053ee98185d4e","html_url":"https://github.com/jacquev6/PyGithub/commit/dc8173a5328cede580cae7e2bbf053ee98185d4e","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/dc8173a5328cede580cae7e2bbf053ee98185d4e/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"c15cb6575b88b56b48fb21e66931ab2108c8b23c","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/c15cb6575b88b56b48fb21e66931ab2108c8b23c","html_url":"https://github.com/jacquev6/PyGithub/commit/c15cb6575b88b56b48fb21e66931ab2108c8b23c"}]},{"sha":"b43de50dc4f4a538e284645b4f83b597d008a8a2","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:48:08Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:48:08Z"},"message":"Update GitBlob.py","tree":{"sha":"fa891e8f586348ce6d20aa33c7a53215bb3f8eed","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/fa891e8f586348ce6d20aa33c7a53215bb3f8eed"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/b43de50dc4f4a538e284645b4f83b597d008a8a2","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/b43de50dc4f4a538e284645b4f83b597d008a8a2","html_url":"https://github.com/jacquev6/PyGithub/commit/b43de50dc4f4a538e284645b4f83b597d008a8a2","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/b43de50dc4f4a538e284645b4f83b597d008a8a2/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"dc8173a5328cede580cae7e2bbf053ee98185d4e","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/dc8173a5328cede580cae7e2bbf053ee98185d4e","html_url":"https://github.com/jacquev6/PyGithub/commit/dc8173a5328cede580cae7e2bbf053ee98185d4e"}]},{"sha":"1dbc2dd38f5c31a8a48082daad4981c79d92f0b7","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:51:12Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:51:12Z"},"message":"Update GitRef.py","tree":{"sha":"5bb940a1d3d1ca30ee86ae9e25fe56aee5132708","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/5bb940a1d3d1ca30ee86ae9e25fe56aee5132708"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/1dbc2dd38f5c31a8a48082daad4981c79d92f0b7","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1dbc2dd38f5c31a8a48082daad4981c79d92f0b7","html_url":"https://github.com/jacquev6/PyGithub/commit/1dbc2dd38f5c31a8a48082daad4981c79d92f0b7","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1dbc2dd38f5c31a8a48082daad4981c79d92f0b7/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"b43de50dc4f4a538e284645b4f83b597d008a8a2","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/b43de50dc4f4a538e284645b4f83b597d008a8a2","html_url":"https://github.com/jacquev6/PyGithub/commit/b43de50dc4f4a538e284645b4f83b597d008a8a2"}]},{"sha":"c89bebc729b48477b0d8949d9179bb2e9a7c3bf8","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:52:57Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:52:57Z"},"message":"Update GitTag.py","tree":{"sha":"86dc08675585c9a8631152f53fa61f7be7fd76ea","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/86dc08675585c9a8631152f53fa61f7be7fd76ea"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/c89bebc729b48477b0d8949d9179bb2e9a7c3bf8","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/c89bebc729b48477b0d8949d9179bb2e9a7c3bf8","html_url":"https://github.com/jacquev6/PyGithub/commit/c89bebc729b48477b0d8949d9179bb2e9a7c3bf8","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/c89bebc729b48477b0d8949d9179bb2e9a7c3bf8/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"1dbc2dd38f5c31a8a48082daad4981c79d92f0b7","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1dbc2dd38f5c31a8a48082daad4981c79d92f0b7","html_url":"https://github.com/jacquev6/PyGithub/commit/1dbc2dd38f5c31a8a48082daad4981c79d92f0b7"}]},{"sha":"038e35cb3d40f85b35b6fbe0807f9c761c474310","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:55:42Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:55:42Z"},"message":"Update GitTree","tree":{"sha":"48f4d2fd9511201c76ada8f1219cae44b427befd","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/48f4d2fd9511201c76ada8f1219cae44b427befd"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/038e35cb3d40f85b35b6fbe0807f9c761c474310","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/038e35cb3d40f85b35b6fbe0807f9c761c474310","html_url":"https://github.com/jacquev6/PyGithub/commit/038e35cb3d40f85b35b6fbe0807f9c761c474310","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/038e35cb3d40f85b35b6fbe0807f9c761c474310/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"c89bebc729b48477b0d8949d9179bb2e9a7c3bf8","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/c89bebc729b48477b0d8949d9179bb2e9a7c3bf8","html_url":"https://github.com/jacquev6/PyGithub/commit/c89bebc729b48477b0d8949d9179bb2e9a7c3bf8"}]},{"sha":"044a000d7647e9134c69378f760ff1a2bd141f4d","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:58:07Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T07:58:07Z"},"message":"Update Hook.py","tree":{"sha":"2372a21476b8ec8784687cc470382148733a92ed","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/2372a21476b8ec8784687cc470382148733a92ed"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/044a000d7647e9134c69378f760ff1a2bd141f4d","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/044a000d7647e9134c69378f760ff1a2bd141f4d","html_url":"https://github.com/jacquev6/PyGithub/commit/044a000d7647e9134c69378f760ff1a2bd141f4d","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/044a000d7647e9134c69378f760ff1a2bd141f4d/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"038e35cb3d40f85b35b6fbe0807f9c761c474310","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/038e35cb3d40f85b35b6fbe0807f9c761c474310","html_url":"https://github.com/jacquev6/PyGithub/commit/038e35cb3d40f85b35b6fbe0807f9c761c474310"}]},{"sha":"49a69c9425789cfb21c49888a144b123ae564cf3","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T08:08:54Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T08:08:54Z"},"message":"Update Issue.py","tree":{"sha":"a32e11d7c6e916c0600ec08dbc9298423e4efefb","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/a32e11d7c6e916c0600ec08dbc9298423e4efefb"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/49a69c9425789cfb21c49888a144b123ae564cf3","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/49a69c9425789cfb21c49888a144b123ae564cf3","html_url":"https://github.com/jacquev6/PyGithub/commit/49a69c9425789cfb21c49888a144b123ae564cf3","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/49a69c9425789cfb21c49888a144b123ae564cf3/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"044a000d7647e9134c69378f760ff1a2bd141f4d","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/044a000d7647e9134c69378f760ff1a2bd141f4d","html_url":"https://github.com/jacquev6/PyGithub/commit/044a000d7647e9134c69378f760ff1a2bd141f4d"}]},{"sha":"8f2ba4f522dbae090b8287663a9a1a88283803b4","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T08:13:22Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T08:13:22Z"},"message":"Update IssueComment.py","tree":{"sha":"d7287eda45c3e008132a1650f49dbf124b50bc56","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/d7287eda45c3e008132a1650f49dbf124b50bc56"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/8f2ba4f522dbae090b8287663a9a1a88283803b4","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/8f2ba4f522dbae090b8287663a9a1a88283803b4","html_url":"https://github.com/jacquev6/PyGithub/commit/8f2ba4f522dbae090b8287663a9a1a88283803b4","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/8f2ba4f522dbae090b8287663a9a1a88283803b4/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"49a69c9425789cfb21c49888a144b123ae564cf3","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/49a69c9425789cfb21c49888a144b123ae564cf3","html_url":"https://github.com/jacquev6/PyGithub/commit/49a69c9425789cfb21c49888a144b123ae564cf3"}]},{"sha":"7d40b9eae87fb1631f358e3c09a9d691a942f258","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T08:17:26Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T08:17:26Z"},"message":"Update IssueEvent.py","tree":{"sha":"4171bd3cc8c8ca69c351ea2bf6b5d19900d6c1c1","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/4171bd3cc8c8ca69c351ea2bf6b5d19900d6c1c1"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/7d40b9eae87fb1631f358e3c09a9d691a942f258","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/7d40b9eae87fb1631f358e3c09a9d691a942f258","html_url":"https://github.com/jacquev6/PyGithub/commit/7d40b9eae87fb1631f358e3c09a9d691a942f258","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/7d40b9eae87fb1631f358e3c09a9d691a942f258/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"8f2ba4f522dbae090b8287663a9a1a88283803b4","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/8f2ba4f522dbae090b8287663a9a1a88283803b4","html_url":"https://github.com/jacquev6/PyGithub/commit/8f2ba4f522dbae090b8287663a9a1a88283803b4"}]},{"sha":"175488270a65a97a42c7bc3fd0bf42676ea4a6e3","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T08:21:22Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T08:21:22Z"},"message":"Update Label.py","tree":{"sha":"b2fb450a7dfd492b40bca942f761615a1ac6a342","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/b2fb450a7dfd492b40bca942f761615a1ac6a342"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/175488270a65a97a42c7bc3fd0bf42676ea4a6e3","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/175488270a65a97a42c7bc3fd0bf42676ea4a6e3","html_url":"https://github.com/jacquev6/PyGithub/commit/175488270a65a97a42c7bc3fd0bf42676ea4a6e3","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/175488270a65a97a42c7bc3fd0bf42676ea4a6e3/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"7d40b9eae87fb1631f358e3c09a9d691a942f258","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/7d40b9eae87fb1631f358e3c09a9d691a942f258","html_url":"https://github.com/jacquev6/PyGithub/commit/7d40b9eae87fb1631f358e3c09a9d691a942f258"}]},{"sha":"e4baf577ed5445bbc156c123ccbd7da3c1a3b650","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T08:24:27Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T08:24:27Z"},"message":"Update Milestone.py","tree":{"sha":"6cd4d4a0cc49e8a0ecacc793fccdf99e66668cd2","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/6cd4d4a0cc49e8a0ecacc793fccdf99e66668cd2"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/e4baf577ed5445bbc156c123ccbd7da3c1a3b650","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/e4baf577ed5445bbc156c123ccbd7da3c1a3b650","html_url":"https://github.com/jacquev6/PyGithub/commit/e4baf577ed5445bbc156c123ccbd7da3c1a3b650","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/e4baf577ed5445bbc156c123ccbd7da3c1a3b650/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"175488270a65a97a42c7bc3fd0bf42676ea4a6e3","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/175488270a65a97a42c7bc3fd0bf42676ea4a6e3","html_url":"https://github.com/jacquev6/PyGithub/commit/175488270a65a97a42c7bc3fd0bf42676ea4a6e3"}]},{"sha":"ba6800ada4213828bdb4f5d54d14e0d4c3c25c4c","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T08:57:10Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T08:57:10Z"},"message":"Update NamedUser.py","tree":{"sha":"22c59fcb82b68071233ebe394ed249d85304b589","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/22c59fcb82b68071233ebe394ed249d85304b589"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/ba6800ada4213828bdb4f5d54d14e0d4c3c25c4c","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ba6800ada4213828bdb4f5d54d14e0d4c3c25c4c","html_url":"https://github.com/jacquev6/PyGithub/commit/ba6800ada4213828bdb4f5d54d14e0d4c3c25c4c","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ba6800ada4213828bdb4f5d54d14e0d4c3c25c4c/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"e4baf577ed5445bbc156c123ccbd7da3c1a3b650","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/e4baf577ed5445bbc156c123ccbd7da3c1a3b650","html_url":"https://github.com/jacquev6/PyGithub/commit/e4baf577ed5445bbc156c123ccbd7da3c1a3b650"}]},{"sha":"6cb6e8d232f84e7456c184a4cd055281bb0dba07","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T08:58:25Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T08:58:25Z"},"message":"Update Notification.py","tree":{"sha":"12744defe09c67111d1ce8454619db76441c74c2","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/12744defe09c67111d1ce8454619db76441c74c2"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/6cb6e8d232f84e7456c184a4cd055281bb0dba07","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/6cb6e8d232f84e7456c184a4cd055281bb0dba07","html_url":"https://github.com/jacquev6/PyGithub/commit/6cb6e8d232f84e7456c184a4cd055281bb0dba07","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/6cb6e8d232f84e7456c184a4cd055281bb0dba07/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"ba6800ada4213828bdb4f5d54d14e0d4c3c25c4c","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ba6800ada4213828bdb4f5d54d14e0d4c3c25c4c","html_url":"https://github.com/jacquev6/PyGithub/commit/ba6800ada4213828bdb4f5d54d14e0d4c3c25c4c"}]},{"sha":"ef912af6b79414351de245aa7a6919cad461ca50","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T09:01:13Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T09:01:13Z"},"message":"Update Organization.py","tree":{"sha":"25eb4e93c5716005647e58fc78b02258d819e3b8","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/25eb4e93c5716005647e58fc78b02258d819e3b8"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/ef912af6b79414351de245aa7a6919cad461ca50","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ef912af6b79414351de245aa7a6919cad461ca50","html_url":"https://github.com/jacquev6/PyGithub/commit/ef912af6b79414351de245aa7a6919cad461ca50","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ef912af6b79414351de245aa7a6919cad461ca50/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"6cb6e8d232f84e7456c184a4cd055281bb0dba07","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/6cb6e8d232f84e7456c184a4cd055281bb0dba07","html_url":"https://github.com/jacquev6/PyGithub/commit/6cb6e8d232f84e7456c184a4cd055281bb0dba07"}]},{"sha":"0e842637a6052129b1706419a66597f419b4b2ba","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T09:03:41Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T09:03:41Z"},"message":"Update PullRequest.py","tree":{"sha":"e3ecc0ea2dd602e1eab33f6c384007cd795baa3b","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/e3ecc0ea2dd602e1eab33f6c384007cd795baa3b"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/0e842637a6052129b1706419a66597f419b4b2ba","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/0e842637a6052129b1706419a66597f419b4b2ba","html_url":"https://github.com/jacquev6/PyGithub/commit/0e842637a6052129b1706419a66597f419b4b2ba","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/0e842637a6052129b1706419a66597f419b4b2ba/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"ef912af6b79414351de245aa7a6919cad461ca50","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ef912af6b79414351de245aa7a6919cad461ca50","html_url":"https://github.com/jacquev6/PyGithub/commit/ef912af6b79414351de245aa7a6919cad461ca50"}]},{"sha":"3c1d17cd649e79ff7c97d2c68daffbf6529ed969","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T09:13:03Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T09:13:03Z"},"message":"Update Repository.py","tree":{"sha":"95d2cbe17bc8a248b9a62f29bff961a4fbf9ecfe","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/95d2cbe17bc8a248b9a62f29bff961a4fbf9ecfe"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/3c1d17cd649e79ff7c97d2c68daffbf6529ed969","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/3c1d17cd649e79ff7c97d2c68daffbf6529ed969","html_url":"https://github.com/jacquev6/PyGithub/commit/3c1d17cd649e79ff7c97d2c68daffbf6529ed969","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/3c1d17cd649e79ff7c97d2c68daffbf6529ed969/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"0e842637a6052129b1706419a66597f419b4b2ba","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/0e842637a6052129b1706419a66597f419b4b2ba","html_url":"https://github.com/jacquev6/PyGithub/commit/0e842637a6052129b1706419a66597f419b4b2ba"}]},{"sha":"1070631c73f02e1ee6b03c55155086d33791499e","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T09:18:01Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T09:18:01Z"},"message":"Update Team.py","tree":{"sha":"0cb42345203225124267c4f866f3747b93e6277c","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/0cb42345203225124267c4f866f3747b93e6277c"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/1070631c73f02e1ee6b03c55155086d33791499e","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1070631c73f02e1ee6b03c55155086d33791499e","html_url":"https://github.com/jacquev6/PyGithub/commit/1070631c73f02e1ee6b03c55155086d33791499e","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1070631c73f02e1ee6b03c55155086d33791499e/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"3c1d17cd649e79ff7c97d2c68daffbf6529ed969","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/3c1d17cd649e79ff7c97d2c68daffbf6529ed969","html_url":"https://github.com/jacquev6/PyGithub/commit/3c1d17cd649e79ff7c97d2c68daffbf6529ed969"}]},{"sha":"c4e8972be12ba249a06cd4c40499e0b32011e7f5","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T09:19:11Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T09:19:11Z"},"message":"Update UserKey.py","tree":{"sha":"dc077fcaedfee625d520412e41485893c351c150","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/dc077fcaedfee625d520412e41485893c351c150"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/c4e8972be12ba249a06cd4c40499e0b32011e7f5","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/c4e8972be12ba249a06cd4c40499e0b32011e7f5","html_url":"https://github.com/jacquev6/PyGithub/commit/c4e8972be12ba249a06cd4c40499e0b32011e7f5","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/c4e8972be12ba249a06cd4c40499e0b32011e7f5/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"1070631c73f02e1ee6b03c55155086d33791499e","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1070631c73f02e1ee6b03c55155086d33791499e","html_url":"https://github.com/jacquev6/PyGithub/commit/1070631c73f02e1ee6b03c55155086d33791499e"}]},{"sha":"8a301701db354408b63273f78ece6887a1677e55","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T09:25:29Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T09:25:29Z"},"message":"Remove helper method in PaginatedList.py","tree":{"sha":"639f5560d925aa1b19e29f3eeb74c7e5f11174cc","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/639f5560d925aa1b19e29f3eeb74c7e5f11174cc"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/8a301701db354408b63273f78ece6887a1677e55","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/8a301701db354408b63273f78ece6887a1677e55","html_url":"https://github.com/jacquev6/PyGithub/commit/8a301701db354408b63273f78ece6887a1677e55","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/8a301701db354408b63273f78ece6887a1677e55/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"c4e8972be12ba249a06cd4c40499e0b32011e7f5","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/c4e8972be12ba249a06cd4c40499e0b32011e7f5","html_url":"https://github.com/jacquev6/PyGithub/commit/c4e8972be12ba249a06cd4c40499e0b32011e7f5"}]},{"sha":"3f6d1b6b705de6ea9632021987e55d41875f0102","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T09:27:37Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T09:27:37Z"},"message":"Remove helper method in Legacy.py","tree":{"sha":"cdc64db71461393d95d58e89a9a0387fe5d3b447","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/cdc64db71461393d95d58e89a9a0387fe5d3b447"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/3f6d1b6b705de6ea9632021987e55d41875f0102","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/3f6d1b6b705de6ea9632021987e55d41875f0102","html_url":"https://github.com/jacquev6/PyGithub/commit/3f6d1b6b705de6ea9632021987e55d41875f0102","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/3f6d1b6b705de6ea9632021987e55d41875f0102/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"8a301701db354408b63273f78ece6887a1677e55","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/8a301701db354408b63273f78ece6887a1677e55","html_url":"https://github.com/jacquev6/PyGithub/commit/8a301701db354408b63273f78ece6887a1677e55"}]},{"sha":"30d9d499a1b44552ab9a28ef7317aa2098daafd7","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T09:32:32Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T09:32:32Z"},"message":"Clean up","tree":{"sha":"971191c9d4fbd001727beeeb2ff9a482b80e2b39","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/971191c9d4fbd001727beeeb2ff9a482b80e2b39"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/30d9d499a1b44552ab9a28ef7317aa2098daafd7","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/30d9d499a1b44552ab9a28ef7317aa2098daafd7","html_url":"https://github.com/jacquev6/PyGithub/commit/30d9d499a1b44552ab9a28ef7317aa2098daafd7","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/30d9d499a1b44552ab9a28ef7317aa2098daafd7/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"3f6d1b6b705de6ea9632021987e55d41875f0102","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/3f6d1b6b705de6ea9632021987e55d41875f0102","html_url":"https://github.com/jacquev6/PyGithub/commit/3f6d1b6b705de6ea9632021987e55d41875f0102"}]},{"sha":"912bec79d2dd2479e5e32118c66ee9a647b46332","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T09:45:01Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T09:45:01Z"},"message":"Update copyright information","tree":{"sha":"9ce5267aa0ed70277a09594a84c881e9e04da2e5","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/9ce5267aa0ed70277a09594a84c881e9e04da2e5"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/912bec79d2dd2479e5e32118c66ee9a647b46332","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/912bec79d2dd2479e5e32118c66ee9a647b46332","html_url":"https://github.com/jacquev6/PyGithub/commit/912bec79d2dd2479e5e32118c66ee9a647b46332","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/912bec79d2dd2479e5e32118c66ee9a647b46332/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"30d9d499a1b44552ab9a28ef7317aa2098daafd7","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/30d9d499a1b44552ab9a28ef7317aa2098daafd7","html_url":"https://github.com/jacquev6/PyGithub/commit/30d9d499a1b44552ab9a28ef7317aa2098daafd7"}]},{"sha":"1d18ea75cce3ca6aeff03d0343e65b2f13b97f80","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T11:25:05Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T11:25:05Z"},"message":"Add debug / test mechanism","tree":{"sha":"6cc4f7080010a73043a4d743a488b207f7117f42","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/6cc4f7080010a73043a4d743a488b207f7117f42"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/1d18ea75cce3ca6aeff03d0343e65b2f13b97f80","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1d18ea75cce3ca6aeff03d0343e65b2f13b97f80","html_url":"https://github.com/jacquev6/PyGithub/commit/1d18ea75cce3ca6aeff03d0343e65b2f13b97f80","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1d18ea75cce3ca6aeff03d0343e65b2f13b97f80/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"912bec79d2dd2479e5e32118c66ee9a647b46332","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/912bec79d2dd2479e5e32118c66ee9a647b46332","html_url":"https://github.com/jacquev6/PyGithub/commit/912bec79d2dd2479e5e32118c66ee9a647b46332"}]},{"sha":"e06257d06017b72bb57b15b043e6f16d4b6eb568","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T12:58:29Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T12:58:29Z"},"message":"Enable debug in TestCase","tree":{"sha":"c99afd32d144d223b8dea8dc3d1bc612a5e7b440","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/c99afd32d144d223b8dea8dc3d1bc612a5e7b440"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/e06257d06017b72bb57b15b043e6f16d4b6eb568","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/e06257d06017b72bb57b15b043e6f16d4b6eb568","html_url":"https://github.com/jacquev6/PyGithub/commit/e06257d06017b72bb57b15b043e6f16d4b6eb568","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/e06257d06017b72bb57b15b043e6f16d4b6eb568/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"1d18ea75cce3ca6aeff03d0343e65b2f13b97f80","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1d18ea75cce3ca6aeff03d0343e65b2f13b97f80","html_url":"https://github.com/jacquev6/PyGithub/commit/1d18ea75cce3ca6aeff03d0343e65b2f13b97f80"}]},{"sha":"aa3025271cd918883b31a42fb7b4ce03027b805c","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T13:11:12Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T13:11:12Z"},"message":"Assert response headers","tree":{"sha":"9e5ec5a1f82ccfe07e2abeb586b7d39b98392df2","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/9e5ec5a1f82ccfe07e2abeb586b7d39b98392df2"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/aa3025271cd918883b31a42fb7b4ce03027b805c","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/aa3025271cd918883b31a42fb7b4ce03027b805c","html_url":"https://github.com/jacquev6/PyGithub/commit/aa3025271cd918883b31a42fb7b4ce03027b805c","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/aa3025271cd918883b31a42fb7b4ce03027b805c/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"e06257d06017b72bb57b15b043e6f16d4b6eb568","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/e06257d06017b72bb57b15b043e6f16d4b6eb568","html_url":"https://github.com/jacquev6/PyGithub/commit/e06257d06017b72bb57b15b043e6f16d4b6eb568"}]},{"sha":"b71329e560795a4df84cb419178ef660824f4c0d","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T14:25:20Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T14:25:20Z"},"message":"Implement data persistence","tree":{"sha":"e617e5b89efd45b9839d8e7f61619f00974367bb","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/e617e5b89efd45b9839d8e7f61619f00974367bb"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/b71329e560795a4df84cb419178ef660824f4c0d","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/b71329e560795a4df84cb419178ef660824f4c0d","html_url":"https://github.com/jacquev6/PyGithub/commit/b71329e560795a4df84cb419178ef660824f4c0d","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/b71329e560795a4df84cb419178ef660824f4c0d/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"aa3025271cd918883b31a42fb7b4ce03027b805c","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/aa3025271cd918883b31a42fb7b4ce03027b805c","html_url":"https://github.com/jacquev6/PyGithub/commit/aa3025271cd918883b31a42fb7b4ce03027b805c"}]},{"sha":"bd7abb58772ae1a61fd7eb44308a3a2f60432ad6","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T15:01:40Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T15:01:40Z"},"message":"Add update() method","tree":{"sha":"790ed722bb219aeb47c13f073a41ccb4e67a0ae0","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/790ed722bb219aeb47c13f073a41ccb4e67a0ae0"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/bd7abb58772ae1a61fd7eb44308a3a2f60432ad6","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/bd7abb58772ae1a61fd7eb44308a3a2f60432ad6","html_url":"https://github.com/jacquev6/PyGithub/commit/bd7abb58772ae1a61fd7eb44308a3a2f60432ad6","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/bd7abb58772ae1a61fd7eb44308a3a2f60432ad6/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"b71329e560795a4df84cb419178ef660824f4c0d","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/b71329e560795a4df84cb419178ef660824f4c0d","html_url":"https://github.com/jacquev6/PyGithub/commit/b71329e560795a4df84cb419178ef660824f4c0d"}]},{"sha":"1e9ec2df089973db73aaf99b4ef147efd4614e7c","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T15:04:07Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T15:04:07Z"},"message":"Add NotModifiedException class","tree":{"sha":"68bf8de0788f5e0a6675d07bceaeb114183315ba","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/68bf8de0788f5e0a6675d07bceaeb114183315ba"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/1e9ec2df089973db73aaf99b4ef147efd4614e7c","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1e9ec2df089973db73aaf99b4ef147efd4614e7c","html_url":"https://github.com/jacquev6/PyGithub/commit/1e9ec2df089973db73aaf99b4ef147efd4614e7c","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1e9ec2df089973db73aaf99b4ef147efd4614e7c/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"bd7abb58772ae1a61fd7eb44308a3a2f60432ad6","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/bd7abb58772ae1a61fd7eb44308a3a2f60432ad6","html_url":"https://github.com/jacquev6/PyGithub/commit/bd7abb58772ae1a61fd7eb44308a3a2f60432ad6"}]},{"sha":"6fd05baf6bea732dd846e08c40891c28060e7c64","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T15:09:30Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T15:09:30Z"},"message":"Handle response code 304","tree":{"sha":"8601556063c365eb7c636a3459eca81b5e717e21","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/8601556063c365eb7c636a3459eca81b5e717e21"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/6fd05baf6bea732dd846e08c40891c28060e7c64","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/6fd05baf6bea732dd846e08c40891c28060e7c64","html_url":"https://github.com/jacquev6/PyGithub/commit/6fd05baf6bea732dd846e08c40891c28060e7c64","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/6fd05baf6bea732dd846e08c40891c28060e7c64/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"1e9ec2df089973db73aaf99b4ef147efd4614e7c","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1e9ec2df089973db73aaf99b4ef147efd4614e7c","html_url":"https://github.com/jacquev6/PyGithub/commit/1e9ec2df089973db73aaf99b4ef147efd4614e7c"}]},{"sha":"5b09f6c82191601cad92076ad4761fe927c511ed","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T15:17:59Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T15:17:59Z"},"message":"Implement conditional request","tree":{"sha":"d6c3d2b807635ecd9a9129b1a99d0e2f6758d440","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/d6c3d2b807635ecd9a9129b1a99d0e2f6758d440"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/5b09f6c82191601cad92076ad4761fe927c511ed","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/5b09f6c82191601cad92076ad4761fe927c511ed","html_url":"https://github.com/jacquev6/PyGithub/commit/5b09f6c82191601cad92076ad4761fe927c511ed","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/5b09f6c82191601cad92076ad4761fe927c511ed/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"6fd05baf6bea732dd846e08c40891c28060e7c64","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/6fd05baf6bea732dd846e08c40891c28060e7c64","html_url":"https://github.com/jacquev6/PyGithub/commit/6fd05baf6bea732dd846e08c40891c28060e7c64"}]},{"sha":"1955f7b39d4aeef19356a8269e6430537fcc3006","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-21T16:40:21Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-21T20:24:32Z"},"message":"Use POST /gists/:id/forks instead of POST /gists/:id/fork","tree":{"sha":"96255698cf321052b8d1990af1b282e7e7d9b094","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/96255698cf321052b8d1990af1b282e7e7d9b094"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/1955f7b39d4aeef19356a8269e6430537fcc3006","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1955f7b39d4aeef19356a8269e6430537fcc3006","html_url":"https://github.com/jacquev6/PyGithub/commit/1955f7b39d4aeef19356a8269e6430537fcc3006","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1955f7b39d4aeef19356a8269e6430537fcc3006/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"ed781f8b1b96e1d2a342d36ca53114ea28862fa8","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ed781f8b1b96e1d2a342d36ca53114ea28862fa8","html_url":"https://github.com/jacquev6/PyGithub/commit/ed781f8b1b96e1d2a342d36ca53114ea28862fa8"}]},{"sha":"0f369ba218414beb8d782904b1f09d4711c82cb7","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-21T16:51:09Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-21T20:25:44Z"},"message":"Use POST /repos/:owner/:repo/hooks/:id/tests instead of POST /repos/:owner/:repo/hooks/:id/test","tree":{"sha":"9df3a12c5a595613c179195787593cd18f50df60","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/9df3a12c5a595613c179195787593cd18f50df60"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/0f369ba218414beb8d782904b1f09d4711c82cb7","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/0f369ba218414beb8d782904b1f09d4711c82cb7","html_url":"https://github.com/jacquev6/PyGithub/commit/0f369ba218414beb8d782904b1f09d4711c82cb7","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/0f369ba218414beb8d782904b1f09d4711c82cb7/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"1955f7b39d4aeef19356a8269e6430537fcc3006","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1955f7b39d4aeef19356a8269e6430537fcc3006","html_url":"https://github.com/jacquev6/PyGithub/commit/1955f7b39d4aeef19356a8269e6430537fcc3006"}]},{"sha":"e384a52971a8452b9c8eb32ed862e88cd828ee8e","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-21T19:43:08Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-21T20:26:58Z"},"message":"NamedUser.has_in_following","tree":{"sha":"becbc15254d47f078ee3e70bee997cea6ad201d0","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/becbc15254d47f078ee3e70bee997cea6ad201d0"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/e384a52971a8452b9c8eb32ed862e88cd828ee8e","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/e384a52971a8452b9c8eb32ed862e88cd828ee8e","html_url":"https://github.com/jacquev6/PyGithub/commit/e384a52971a8452b9c8eb32ed862e88cd828ee8e","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/e384a52971a8452b9c8eb32ed862e88cd828ee8e/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"0f369ba218414beb8d782904b1f09d4711c82cb7","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/0f369ba218414beb8d782904b1f09d4711c82cb7","html_url":"https://github.com/jacquev6/PyGithub/commit/0f369ba218414beb8d782904b1f09d4711c82cb7"}]},{"sha":"1c993d3a5f54cd5c30c6e3407dfc216bdcf7c7cb","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-21T19:54:00Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-21T20:28:15Z"},"message":"Github.get_repos (to get all public repositories)","tree":{"sha":"3164e655a882efc8233e688223b17703f7ee0e81","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/3164e655a882efc8233e688223b17703f7ee0e81"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/1c993d3a5f54cd5c30c6e3407dfc216bdcf7c7cb","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1c993d3a5f54cd5c30c6e3407dfc216bdcf7c7cb","html_url":"https://github.com/jacquev6/PyGithub/commit/1c993d3a5f54cd5c30c6e3407dfc216bdcf7c7cb","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1c993d3a5f54cd5c30c6e3407dfc216bdcf7c7cb/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"e384a52971a8452b9c8eb32ed862e88cd828ee8e","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/e384a52971a8452b9c8eb32ed862e88cd828ee8e","html_url":"https://github.com/jacquev6/PyGithub/commit/e384a52971a8452b9c8eb32ed862e88cd828ee8e"}]},{"sha":"70a7e9c83dec2bf6b549dc5c77d30b53afb32457","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T23:45:27Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-21T23:45:27Z"},"message":"Fix update","tree":{"sha":"f99d30ab74ea95fedefb33a8b1b2c77903fbd698","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/f99d30ab74ea95fedefb33a8b1b2c77903fbd698"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/70a7e9c83dec2bf6b549dc5c77d30b53afb32457","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/70a7e9c83dec2bf6b549dc5c77d30b53afb32457","html_url":"https://github.com/jacquev6/PyGithub/commit/70a7e9c83dec2bf6b549dc5c77d30b53afb32457","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/70a7e9c83dec2bf6b549dc5c77d30b53afb32457/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"5b09f6c82191601cad92076ad4761fe927c511ed","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/5b09f6c82191601cad92076ad4761fe927c511ed","html_url":"https://github.com/jacquev6/PyGithub/commit/5b09f6c82191601cad92076ad4761fe927c511ed"}]},{"sha":"d457afd23ccb47d9f30f09a6ca2a8e32f17dccc7","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-22T00:45:10Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-22T00:45:10Z"},"message":"Add test record helper","tree":{"sha":"e6e15fccb5b256bba3db1d4fc89088b733de227b","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/e6e15fccb5b256bba3db1d4fc89088b733de227b"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/d457afd23ccb47d9f30f09a6ca2a8e32f17dccc7","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/d457afd23ccb47d9f30f09a6ca2a8e32f17dccc7","html_url":"https://github.com/jacquev6/PyGithub/commit/d457afd23ccb47d9f30f09a6ca2a8e32f17dccc7","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/d457afd23ccb47d9f30f09a6ca2a8e32f17dccc7/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"70a7e9c83dec2bf6b549dc5c77d30b53afb32457","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/70a7e9c83dec2bf6b549dc5c77d30b53afb32457","html_url":"https://github.com/jacquev6/PyGithub/commit/70a7e9c83dec2bf6b549dc5c77d30b53afb32457"}]},{"sha":"c7593e84c4a92a044b717b7311c2b6ad8d9a5917","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-22T02:20:10Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-22T02:20:10Z"},"message":"Add test case for conditional request","tree":{"sha":"bbf62558b39720fc7acab1c6b26e4b9260cdc897","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/bbf62558b39720fc7acab1c6b26e4b9260cdc897"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/c7593e84c4a92a044b717b7311c2b6ad8d9a5917","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/c7593e84c4a92a044b717b7311c2b6ad8d9a5917","html_url":"https://github.com/jacquev6/PyGithub/commit/c7593e84c4a92a044b717b7311c2b6ad8d9a5917","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/c7593e84c4a92a044b717b7311c2b6ad8d9a5917/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"d457afd23ccb47d9f30f09a6ca2a8e32f17dccc7","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/d457afd23ccb47d9f30f09a6ca2a8e32f17dccc7","html_url":"https://github.com/jacquev6/PyGithub/commit/d457afd23ccb47d9f30f09a6ca2a8e32f17dccc7"}]},{"sha":"5c475c7683b2a57ee053d35586248f24febb6ebe","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-22T08:12:38Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-22T08:12:38Z"},"message":"First review of #192 (pep8, headers... nothing important)\n\n./manage.sh check\n./manage.sh fix_headers","tree":{"sha":"c874a52834343436bb9e1062a9edb11739d0de2b","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/c874a52834343436bb9e1062a9edb11739d0de2b"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/5c475c7683b2a57ee053d35586248f24febb6ebe","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/5c475c7683b2a57ee053d35586248f24febb6ebe","html_url":"https://github.com/jacquev6/PyGithub/commit/5c475c7683b2a57ee053d35586248f24febb6ebe","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/5c475c7683b2a57ee053d35586248f24febb6ebe/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"aa3025271cd918883b31a42fb7b4ce03027b805c","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/aa3025271cd918883b31a42fb7b4ce03027b805c","html_url":"https://github.com/jacquev6/PyGithub/commit/aa3025271cd918883b31a42fb7b4ce03027b805c"}]},{"sha":"f2de1fbfcccd1bbb3da722489d361d1937e09860","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-22T08:22:07Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-22T08:22:07Z"},"message":"Don't fix headers in /build","tree":{"sha":"6151d6667cf979d47a44e9a4852f9e5894eea19a","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/6151d6667cf979d47a44e9a4852f9e5894eea19a"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/f2de1fbfcccd1bbb3da722489d361d1937e09860","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/f2de1fbfcccd1bbb3da722489d361d1937e09860","html_url":"https://github.com/jacquev6/PyGithub/commit/f2de1fbfcccd1bbb3da722489d361d1937e09860","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/f2de1fbfcccd1bbb3da722489d361d1937e09860/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"1c993d3a5f54cd5c30c6e3407dfc216bdcf7c7cb","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1c993d3a5f54cd5c30c6e3407dfc216bdcf7c7cb","html_url":"https://github.com/jacquev6/PyGithub/commit/1c993d3a5f54cd5c30c6e3407dfc216bdcf7c7cb"}]},{"sha":"8a2624e3a1591a36ecf5afdc6fcc84443d8145dd","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-22T08:30:14Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-22T08:30:14Z"},"message":"Merge branch 'topic/RememberHeaders' into develop (#192)\n\nConflicts:\n\tgithub/Issue.py\n\tgithub/MainClass.py\n\tgithub/PaginatedList.py\n\tgithub/Repository.py\n\tgithub/Requester.py","tree":{"sha":"61011f6ebafc003fa6561ed990691d0c21611ea2","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/61011f6ebafc003fa6561ed990691d0c21611ea2"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/8a2624e3a1591a36ecf5afdc6fcc84443d8145dd","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/8a2624e3a1591a36ecf5afdc6fcc84443d8145dd","html_url":"https://github.com/jacquev6/PyGithub/commit/8a2624e3a1591a36ecf5afdc6fcc84443d8145dd","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/8a2624e3a1591a36ecf5afdc6fcc84443d8145dd/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"f2de1fbfcccd1bbb3da722489d361d1937e09860","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/f2de1fbfcccd1bbb3da722489d361d1937e09860","html_url":"https://github.com/jacquev6/PyGithub/commit/f2de1fbfcccd1bbb3da722489d361d1937e09860"},{"sha":"5c475c7683b2a57ee053d35586248f24febb6ebe","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/5c475c7683b2a57ee053d35586248f24febb6ebe","html_url":"https://github.com/jacquev6/PyGithub/commit/5c475c7683b2a57ee053d35586248f24febb6ebe"}]},{"sha":"ba5b0d5ea93d362ecd8b5a91701a9c62c385d008","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-22T08:44:38Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-22T08:44:38Z"},"message":"Fix merge of #192\n\nOne branch modified signature of constructors,\nanother branch added a call to a constructor.","tree":{"sha":"ea54567a0eff56ab2c1701783a2d46a9cd9b1b3d","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/ea54567a0eff56ab2c1701783a2d46a9cd9b1b3d"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/ba5b0d5ea93d362ecd8b5a91701a9c62c385d008","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ba5b0d5ea93d362ecd8b5a91701a9c62c385d008","html_url":"https://github.com/jacquev6/PyGithub/commit/ba5b0d5ea93d362ecd8b5a91701a9c62c385d008","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ba5b0d5ea93d362ecd8b5a91701a9c62c385d008/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"8a2624e3a1591a36ecf5afdc6fcc84443d8145dd","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/8a2624e3a1591a36ecf5afdc6fcc84443d8145dd","html_url":"https://github.com/jacquev6/PyGithub/commit/8a2624e3a1591a36ecf5afdc6fcc84443d8145dd"}]},{"sha":"cc1bcd5f2da1982a0836a488cf321d363bfcf5b5","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-22T09:01:51Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-22T09:01:51Z"},"message":"Merge branch 'develop' into topic/ConditionalRequest\n\nConflicts:\n\t.gitignore\n\tgithub/Requester.py","tree":{"sha":"0d8bb0e1e0d530a2061d0d898a96b0f0ad6a5f25","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/0d8bb0e1e0d530a2061d0d898a96b0f0ad6a5f25"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/cc1bcd5f2da1982a0836a488cf321d363bfcf5b5","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/cc1bcd5f2da1982a0836a488cf321d363bfcf5b5","html_url":"https://github.com/jacquev6/PyGithub/commit/cc1bcd5f2da1982a0836a488cf321d363bfcf5b5","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/cc1bcd5f2da1982a0836a488cf321d363bfcf5b5/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"c7593e84c4a92a044b717b7311c2b6ad8d9a5917","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/c7593e84c4a92a044b717b7311c2b6ad8d9a5917","html_url":"https://github.com/jacquev6/PyGithub/commit/c7593e84c4a92a044b717b7311c2b6ad8d9a5917"},{"sha":"ba5b0d5ea93d362ecd8b5a91701a9c62c385d008","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ba5b0d5ea93d362ecd8b5a91701a9c62c385d008","html_url":"https://github.com/jacquev6/PyGithub/commit/ba5b0d5ea93d362ecd8b5a91701a9c62c385d008"}]},{"sha":"1787765a61958617d47e764a0bea2acd70c84f72","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-22T09:41:15Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-22T09:41:15Z"},"message":"Review of #189: use dict.get\n\nhttp://docs.python.org/2/library/stdtypes.html#dict.get","tree":{"sha":"7cb1da804d8cec4692c26b5a0d35827c151ddde4","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/7cb1da804d8cec4692c26b5a0d35827c151ddde4"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/1787765a61958617d47e764a0bea2acd70c84f72","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1787765a61958617d47e764a0bea2acd70c84f72","html_url":"https://github.com/jacquev6/PyGithub/commit/1787765a61958617d47e764a0bea2acd70c84f72","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1787765a61958617d47e764a0bea2acd70c84f72/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"cc1bcd5f2da1982a0836a488cf321d363bfcf5b5","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/cc1bcd5f2da1982a0836a488cf321d363bfcf5b5","html_url":"https://github.com/jacquev6/PyGithub/commit/cc1bcd5f2da1982a0836a488cf321d363bfcf5b5"}]},{"sha":"0f74e4389b3c0fa57a83083ecfbbf5c331022674","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-22T10:12:38Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-22T10:12:38Z"},"message":"Review of #189: pep8, copyrights, style, remarks\n\nFor remarks, run: git grep \"#189\"\nThey are only my first thoughts while reviewing this pull request,\nand should be reviewed themselves.","tree":{"sha":"6704a63e77b81165cb7f8ff4c32bd8455fcdfbdb","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/6704a63e77b81165cb7f8ff4c32bd8455fcdfbdb"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/0f74e4389b3c0fa57a83083ecfbbf5c331022674","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/0f74e4389b3c0fa57a83083ecfbbf5c331022674","html_url":"https://github.com/jacquev6/PyGithub/commit/0f74e4389b3c0fa57a83083ecfbbf5c331022674","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/0f74e4389b3c0fa57a83083ecfbbf5c331022674/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"1787765a61958617d47e764a0bea2acd70c84f72","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1787765a61958617d47e764a0bea2acd70c84f72","html_url":"https://github.com/jacquev6/PyGithub/commit/1787765a61958617d47e764a0bea2acd70c84f72"}]},{"sha":"fb7325884ee0b8ae73f47bf13c6f36cacbc3131c","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-23T07:32:47Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-23T07:32:47Z"},"message":"Fix remarks on #189 to #193","tree":{"sha":"acda548d54ec2929d3f556bb09d72082c6cce74c","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/acda548d54ec2929d3f556bb09d72082c6cce74c"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/fb7325884ee0b8ae73f47bf13c6f36cacbc3131c","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/fb7325884ee0b8ae73f47bf13c6f36cacbc3131c","html_url":"https://github.com/jacquev6/PyGithub/commit/fb7325884ee0b8ae73f47bf13c6f36cacbc3131c","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/fb7325884ee0b8ae73f47bf13c6f36cacbc3131c/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"0f74e4389b3c0fa57a83083ecfbbf5c331022674","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/0f74e4389b3c0fa57a83083ecfbbf5c331022674","html_url":"https://github.com/jacquev6/PyGithub/commit/0f74e4389b3c0fa57a83083ecfbbf5c331022674"}]},{"sha":"0413c87c12e688fb4fc38d978a2f275ef791cd48","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-23T07:39:19Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-23T07:39:19Z"},"message":"Remove _record_.py (#193)\n\nAccording to https://github.com/jacquev6/PyGithub/commit/0f74e4389b3c0fa57a83083ecfbbf5c331022674#commitcomment-3919786","tree":{"sha":"97108cad4736d71906a05fc573936659fb81f386","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/97108cad4736d71906a05fc573936659fb81f386"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/0413c87c12e688fb4fc38d978a2f275ef791cd48","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/0413c87c12e688fb4fc38d978a2f275ef791cd48","html_url":"https://github.com/jacquev6/PyGithub/commit/0413c87c12e688fb4fc38d978a2f275ef791cd48","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/0413c87c12e688fb4fc38d978a2f275ef791cd48/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"fb7325884ee0b8ae73f47bf13c6f36cacbc3131c","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/fb7325884ee0b8ae73f47bf13c6f36cacbc3131c","html_url":"https://github.com/jacquev6/PyGithub/commit/fb7325884ee0b8ae73f47bf13c6f36cacbc3131c"}]},{"sha":"bc3b819ac554a2132427c9ffe629ef371511213e","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-23T07:50:51Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-23T07:50:51Z"},"message":"Separate tests for conditional requests (#193)","tree":{"sha":"cebebf12f44ca09fa382c2673f9577bce01d09f8","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/cebebf12f44ca09fa382c2673f9577bce01d09f8"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/bc3b819ac554a2132427c9ffe629ef371511213e","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/bc3b819ac554a2132427c9ffe629ef371511213e","html_url":"https://github.com/jacquev6/PyGithub/commit/bc3b819ac554a2132427c9ffe629ef371511213e","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/bc3b819ac554a2132427c9ffe629ef371511213e/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"0413c87c12e688fb4fc38d978a2f275ef791cd48","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/0413c87c12e688fb4fc38d978a2f275ef791cd48","html_url":"https://github.com/jacquev6/PyGithub/commit/0413c87c12e688fb4fc38d978a2f275ef791cd48"}]},{"sha":"bae0a37d180a4b224c6aa808d03722908109c57d","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-23T09:10:35Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-23T09:10:35Z"},"message":"#193: Don't use a try-except for a usual execution flow in GithubObject.update\n\n(and factorize assignment of headers in _storeAndUseAttributes,\nas done for rawData)","tree":{"sha":"d56e13d46c851d333baf0d69053dc6527f1e04d7","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/d56e13d46c851d333baf0d69053dc6527f1e04d7"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/bae0a37d180a4b224c6aa808d03722908109c57d","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/bae0a37d180a4b224c6aa808d03722908109c57d","html_url":"https://github.com/jacquev6/PyGithub/commit/bae0a37d180a4b224c6aa808d03722908109c57d","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/bae0a37d180a4b224c6aa808d03722908109c57d/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"bc3b819ac554a2132427c9ffe629ef371511213e","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/bc3b819ac554a2132427c9ffe629ef371511213e","html_url":"https://github.com/jacquev6/PyGithub/commit/bc3b819ac554a2132427c9ffe629ef371511213e"}]},{"sha":"03d7fb012e9d032165c43f93a4c67bc29af9366f","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-23T09:15:17Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-23T09:15:17Z"},"message":"#193: Add remarks","tree":{"sha":"887977aa41abc6624fdea3d1ffd185decc57ab90","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/887977aa41abc6624fdea3d1ffd185decc57ab90"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/03d7fb012e9d032165c43f93a4c67bc29af9366f","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/03d7fb012e9d032165c43f93a4c67bc29af9366f","html_url":"https://github.com/jacquev6/PyGithub/commit/03d7fb012e9d032165c43f93a4c67bc29af9366f","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/03d7fb012e9d032165c43f93a4c67bc29af9366f/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"bae0a37d180a4b224c6aa808d03722908109c57d","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/bae0a37d180a4b224c6aa808d03722908109c57d","html_url":"https://github.com/jacquev6/PyGithub/commit/bae0a37d180a4b224c6aa808d03722908109c57d"}]},{"sha":"64cf539c83174f95b3410c7decd2549424385ce1","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-23T09:31:01Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-23T09:31:01Z"},"message":"#193: Add a param to Requester.requestXxx for request headers","tree":{"sha":"d8ce377a13245803f223ae5bf50c09db0544a1be","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/d8ce377a13245803f223ae5bf50c09db0544a1be"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/64cf539c83174f95b3410c7decd2549424385ce1","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/64cf539c83174f95b3410c7decd2549424385ce1","html_url":"https://github.com/jacquev6/PyGithub/commit/64cf539c83174f95b3410c7decd2549424385ce1","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/64cf539c83174f95b3410c7decd2549424385ce1/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"03d7fb012e9d032165c43f93a4c67bc29af9366f","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/03d7fb012e9d032165c43f93a4c67bc29af9366f","html_url":"https://github.com/jacquev6/PyGithub/commit/03d7fb012e9d032165c43f93a4c67bc29af9366f"}]},{"sha":"e084b5138106d4ad371a69ca9519862f09c855ae","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-23T12:51:34Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-23T12:51:34Z"},"message":"#193: Fix test coverage","tree":{"sha":"e0dc9f5f816e7e6503d60b39b69d5652bd2b77ce","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/e0dc9f5f816e7e6503d60b39b69d5652bd2b77ce"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/e084b5138106d4ad371a69ca9519862f09c855ae","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/e084b5138106d4ad371a69ca9519862f09c855ae","html_url":"https://github.com/jacquev6/PyGithub/commit/e084b5138106d4ad371a69ca9519862f09c855ae","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/e084b5138106d4ad371a69ca9519862f09c855ae/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"64cf539c83174f95b3410c7decd2549424385ce1","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/64cf539c83174f95b3410c7decd2549424385ce1","html_url":"https://github.com/jacquev6/PyGithub/commit/64cf539c83174f95b3410c7decd2549424385ce1"}]},{"sha":"020a3c9917f42d98c1761527825061d2db8352fd","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-23T16:45:16Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-23T16:45:16Z"},"message":"Move method update to CompletableGithubObject","tree":{"sha":"4c3e987d82799789d0c2586e509cea8c71e0029b","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/4c3e987d82799789d0c2586e509cea8c71e0029b"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/020a3c9917f42d98c1761527825061d2db8352fd","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/020a3c9917f42d98c1761527825061d2db8352fd","html_url":"https://github.com/jacquev6/PyGithub/commit/020a3c9917f42d98c1761527825061d2db8352fd","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/020a3c9917f42d98c1761527825061d2db8352fd/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"e084b5138106d4ad371a69ca9519862f09c855ae","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/e084b5138106d4ad371a69ca9519862f09c855ae","html_url":"https://github.com/jacquev6/PyGithub/commit/e084b5138106d4ad371a69ca9519862f09c855ae"}]},{"sha":"fb6980ce36766e4dd1ab03b48ac4b5adf876dc84","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-23T17:05:53Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-08-23T17:05:53Z"},"message":"Move the DEBUG_ON_RESPONSE call to Requester.__requestEncode","tree":{"sha":"a7fbeaacbdba31ceb21a46bedfce268411d8dfb8","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/a7fbeaacbdba31ceb21a46bedfce268411d8dfb8"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/fb6980ce36766e4dd1ab03b48ac4b5adf876dc84","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/fb6980ce36766e4dd1ab03b48ac4b5adf876dc84","html_url":"https://github.com/jacquev6/PyGithub/commit/fb6980ce36766e4dd1ab03b48ac4b5adf876dc84","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/fb6980ce36766e4dd1ab03b48ac4b5adf876dc84/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"020a3c9917f42d98c1761527825061d2db8352fd","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/020a3c9917f42d98c1761527825061d2db8352fd","html_url":"https://github.com/jacquev6/PyGithub/commit/020a3c9917f42d98c1761527825061d2db8352fd"}]},{"sha":"38b137fb37c0fdc74f8802a4184518e105db9121","commit":{"author":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-23T23:21:41Z"},"committer":{"name":"AKFish","email":"akfish@gmail.com","date":"2013-08-23T23:21:41Z"},"message":"Fix line ending","tree":{"sha":"a4260390d7e3d478aed05009657f4632d25dad84","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/a4260390d7e3d478aed05009657f4632d25dad84"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/38b137fb37c0fdc74f8802a4184518e105db9121","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/38b137fb37c0fdc74f8802a4184518e105db9121","html_url":"https://github.com/jacquev6/PyGithub/commit/38b137fb37c0fdc74f8802a4184518e105db9121","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/38b137fb37c0fdc74f8802a4184518e105db9121/comments","author":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"committer":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"parents":[{"sha":"fb6980ce36766e4dd1ab03b48ac4b5adf876dc84","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/fb6980ce36766e4dd1ab03b48ac4b5adf876dc84","html_url":"https://github.com/jacquev6/PyGithub/commit/fb6980ce36766e4dd1ab03b48ac4b5adf876dc84"}]},{"sha":"3fe9edf08707d2c289d4e6a05f7521751cf9f8e4","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-09-04T21:28:44Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-09-04T21:28:44Z"},"message":"Implement object persistence\n\nThis follows my proposal for #193.\nLargely inspired by AKFish's work.","tree":{"sha":"b6b62d90fe1b65d103b74fe11a8f01f3ddd1851a","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/b6b62d90fe1b65d103b74fe11a8f01f3ddd1851a"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/3fe9edf08707d2c289d4e6a05f7521751cf9f8e4","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/3fe9edf08707d2c289d4e6a05f7521751cf9f8e4","html_url":"https://github.com/jacquev6/PyGithub/commit/3fe9edf08707d2c289d4e6a05f7521751cf9f8e4","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/3fe9edf08707d2c289d4e6a05f7521751cf9f8e4/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"38b137fb37c0fdc74f8802a4184518e105db9121","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/38b137fb37c0fdc74f8802a4184518e105db9121","html_url":"https://github.com/jacquev6/PyGithub/commit/38b137fb37c0fdc74f8802a4184518e105db9121"}]},{"sha":"c412d49c9fd28406156dff664a1f848da1e95d0b","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-09-05T15:50:57Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-09-05T15:50:57Z"},"message":"Adapt to Python 2.5","tree":{"sha":"6c7ed56808fdd9a1a17b38f397fafd0e0cf1ae2e","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/6c7ed56808fdd9a1a17b38f397fafd0e0cf1ae2e"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/c412d49c9fd28406156dff664a1f848da1e95d0b","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/c412d49c9fd28406156dff664a1f848da1e95d0b","html_url":"https://github.com/jacquev6/PyGithub/commit/c412d49c9fd28406156dff664a1f848da1e95d0b","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/c412d49c9fd28406156dff664a1f848da1e95d0b/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"3fe9edf08707d2c289d4e6a05f7521751cf9f8e4","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/3fe9edf08707d2c289d4e6a05f7521751cf9f8e4","html_url":"https://github.com/jacquev6/PyGithub/commit/3fe9edf08707d2c289d4e6a05f7521751cf9f8e4"}]},{"sha":"6cb149dce41cf1f110ae1f1d6a5c6bdd66790b69","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-09-05T15:53:31Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-09-05T15:53:31Z"},"message":"Adapt to Python 2.5 (again:))","tree":{"sha":"7007556096f9edd3ecd48dfe302748ba9d238273","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/7007556096f9edd3ecd48dfe302748ba9d238273"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/6cb149dce41cf1f110ae1f1d6a5c6bdd66790b69","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/6cb149dce41cf1f110ae1f1d6a5c6bdd66790b69","html_url":"https://github.com/jacquev6/PyGithub/commit/6cb149dce41cf1f110ae1f1d6a5c6bdd66790b69","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/6cb149dce41cf1f110ae1f1d6a5c6bdd66790b69/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"c412d49c9fd28406156dff664a1f848da1e95d0b","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/c412d49c9fd28406156dff664a1f848da1e95d0b","html_url":"https://github.com/jacquev6/PyGithub/commit/c412d49c9fd28406156dff664a1f848da1e95d0b"}]},{"sha":"d18d1b0354a5c7de920b30ef1e5950a5479dd866","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-09-05T16:01:03Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-09-05T16:01:03Z"},"message":"Update readme","tree":{"sha":"140c1b06794ac9a8130cf3612c604c83f973358f","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/140c1b06794ac9a8130cf3612c604c83f973358f"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/d18d1b0354a5c7de920b30ef1e5950a5479dd866","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/d18d1b0354a5c7de920b30ef1e5950a5479dd866","html_url":"https://github.com/jacquev6/PyGithub/commit/d18d1b0354a5c7de920b30ef1e5950a5479dd866","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/d18d1b0354a5c7de920b30ef1e5950a5479dd866/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"6cb149dce41cf1f110ae1f1d6a5c6bdd66790b69","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/6cb149dce41cf1f110ae1f1d6a5c6bdd66790b69","html_url":"https://github.com/jacquev6/PyGithub/commit/6cb149dce41cf1f110ae1f1d6a5c6bdd66790b69"}]},{"sha":"2e3ab5cc9295c4e3c3c6a0d1c179a49df0db96e5","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-09-05T16:04:49Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-09-05T16:04:49Z"},"message":"Say thank you to stargazers","tree":{"sha":"6c1c7aadddfcbc9a65fae7d164a9432ab3ce452a","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/6c1c7aadddfcbc9a65fae7d164a9432ab3ce452a"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/2e3ab5cc9295c4e3c3c6a0d1c179a49df0db96e5","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/2e3ab5cc9295c4e3c3c6a0d1c179a49df0db96e5","html_url":"https://github.com/jacquev6/PyGithub/commit/2e3ab5cc9295c4e3c3c6a0d1c179a49df0db96e5","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/2e3ab5cc9295c4e3c3c6a0d1c179a49df0db96e5/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"ba5b0d5ea93d362ecd8b5a91701a9c62c385d008","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ba5b0d5ea93d362ecd8b5a91701a9c62c385d008","html_url":"https://github.com/jacquev6/PyGithub/commit/ba5b0d5ea93d362ecd8b5a91701a9c62c385d008"}]},{"sha":"ab626114db1c798e9269daed295d1e79c36879bb","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-09-05T16:21:07Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-09-05T16:21:07Z"},"message":"Merge branch 'topic/ConditionalRequest' into develop\n\nConflicts:\n\tREADME.rst","tree":{"sha":"c15e38407a8fc7f086a7bf48e02aa5ca7be44e62","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/c15e38407a8fc7f086a7bf48e02aa5ca7be44e62"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/ab626114db1c798e9269daed295d1e79c36879bb","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ab626114db1c798e9269daed295d1e79c36879bb","html_url":"https://github.com/jacquev6/PyGithub/commit/ab626114db1c798e9269daed295d1e79c36879bb","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ab626114db1c798e9269daed295d1e79c36879bb/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"2e3ab5cc9295c4e3c3c6a0d1c179a49df0db96e5","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/2e3ab5cc9295c4e3c3c6a0d1c179a49df0db96e5","html_url":"https://github.com/jacquev6/PyGithub/commit/2e3ab5cc9295c4e3c3c6a0d1c179a49df0db96e5"},{"sha":"d18d1b0354a5c7de920b30ef1e5950a5479dd866","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/d18d1b0354a5c7de920b30ef1e5950a5479dd866","html_url":"https://github.com/jacquev6/PyGithub/commit/d18d1b0354a5c7de920b30ef1e5950a5479dd866"}]},{"sha":"1d0ba7ef6461ccdd25af74bfed61d3ceb5bc926d","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-09-05T16:23:47Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-09-05T16:23:47Z"},"message":"Don't assume there is a 'message' field in case of error","tree":{"sha":"1eaf1c66ede16d89d6067a0c23f23f93abf83c5e","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/1eaf1c66ede16d89d6067a0c23f23f93abf83c5e"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/1d0ba7ef6461ccdd25af74bfed61d3ceb5bc926d","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1d0ba7ef6461ccdd25af74bfed61d3ceb5bc926d","html_url":"https://github.com/jacquev6/PyGithub/commit/1d0ba7ef6461ccdd25af74bfed61d3ceb5bc926d","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1d0ba7ef6461ccdd25af74bfed61d3ceb5bc926d/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"ab626114db1c798e9269daed295d1e79c36879bb","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/ab626114db1c798e9269daed295d1e79c36879bb","html_url":"https://github.com/jacquev6/PyGithub/commit/ab626114db1c798e9269daed295d1e79c36879bb"}]},{"sha":"dc610dfaac50dd5bbbd572986cda35f6729aee5b","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-09-06T08:51:50Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-09-06T08:51:50Z"},"message":"Small fixes and todos","tree":{"sha":"d54e7b47327b5bb25ba38338bfcc4a0c0a61992e","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/d54e7b47327b5bb25ba38338bfcc4a0c0a61992e"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/dc610dfaac50dd5bbbd572986cda35f6729aee5b","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/dc610dfaac50dd5bbbd572986cda35f6729aee5b","html_url":"https://github.com/jacquev6/PyGithub/commit/dc610dfaac50dd5bbbd572986cda35f6729aee5b","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/dc610dfaac50dd5bbbd572986cda35f6729aee5b/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"1d0ba7ef6461ccdd25af74bfed61d3ceb5bc926d","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1d0ba7ef6461ccdd25af74bfed61d3ceb5bc926d","html_url":"https://github.com/jacquev6/PyGithub/commit/1d0ba7ef6461ccdd25af74bfed61d3ceb5bc926d"}]},{"sha":"2081675afbfed404f6a580bce0ec363bebbfd98b","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-09-06T09:00:59Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-09-06T09:00:59Z"},"message":"Fix doc generation","tree":{"sha":"7aafacfc490987a44d3c73a72669e07d900f4ea9","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/7aafacfc490987a44d3c73a72669e07d900f4ea9"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/2081675afbfed404f6a580bce0ec363bebbfd98b","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/2081675afbfed404f6a580bce0ec363bebbfd98b","html_url":"https://github.com/jacquev6/PyGithub/commit/2081675afbfed404f6a580bce0ec363bebbfd98b","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/2081675afbfed404f6a580bce0ec363bebbfd98b/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"dc610dfaac50dd5bbbd572986cda35f6729aee5b","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/dc610dfaac50dd5bbbd572986cda35f6729aee5b","html_url":"https://github.com/jacquev6/PyGithub/commit/dc610dfaac50dd5bbbd572986cda35f6729aee5b"}]},{"sha":"f2feb81dae1b28af80c559db7328f2d6fe017911","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-09-05T16:56:56Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-09-06T09:01:32Z"},"message":"Add default parameters to greatly reduce code redoundancy","tree":{"sha":"075abd28eec29754d4ac96d94fa00e0ee41e9e09","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/075abd28eec29754d4ac96d94fa00e0ee41e9e09"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/f2feb81dae1b28af80c559db7328f2d6fe017911","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/f2feb81dae1b28af80c559db7328f2d6fe017911","html_url":"https://github.com/jacquev6/PyGithub/commit/f2feb81dae1b28af80c559db7328f2d6fe017911","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/f2feb81dae1b28af80c559db7328f2d6fe017911/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"2081675afbfed404f6a580bce0ec363bebbfd98b","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/2081675afbfed404f6a580bce0ec363bebbfd98b","html_url":"https://github.com/jacquev6/PyGithub/commit/2081675afbfed404f6a580bce0ec363bebbfd98b"}]},{"sha":"c819580ce872f251e8ec23deee95d9fb15ca19c9","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-09-06T08:51:13Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-09-06T09:01:33Z"},"message":"Get status of Github API (#188)","tree":{"sha":"e726ab47b3248869efd35a5f989b15eece62cbe9","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/e726ab47b3248869efd35a5f989b15eece62cbe9"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/c819580ce872f251e8ec23deee95d9fb15ca19c9","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/c819580ce872f251e8ec23deee95d9fb15ca19c9","html_url":"https://github.com/jacquev6/PyGithub/commit/c819580ce872f251e8ec23deee95d9fb15ca19c9","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/c819580ce872f251e8ec23deee95d9fb15ca19c9/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"f2feb81dae1b28af80c559db7328f2d6fe017911","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/f2feb81dae1b28af80c559db7328f2d6fe017911","html_url":"https://github.com/jacquev6/PyGithub/commit/f2feb81dae1b28af80c559db7328f2d6fe017911"}]},{"sha":"a6597499c2f82e063074a3036d875417d5efa296","commit":{"author":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-09-06T09:04:41Z"},"committer":{"name":"Vincent Jacques","email":"vincent@vincent-jacques.net","date":"2013-09-06T09:04:41Z"},"message":"Merge branch 'topic/ApiStatus' into develop","tree":{"sha":"e726ab47b3248869efd35a5f989b15eece62cbe9","url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees/e726ab47b3248869efd35a5f989b15eece62cbe9"},"url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits/a6597499c2f82e063074a3036d875417d5efa296","comment_count":0},"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/a6597499c2f82e063074a3036d875417d5efa296","html_url":"https://github.com/jacquev6/PyGithub/commit/a6597499c2f82e063074a3036d875417d5efa296","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/commits/a6597499c2f82e063074a3036d875417d5efa296/comments","author":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"committer":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"parents":[{"sha":"2081675afbfed404f6a580bce0ec363bebbfd98b","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/2081675afbfed404f6a580bce0ec363bebbfd98b","html_url":"https://github.com/jacquev6/PyGithub/commit/2081675afbfed404f6a580bce0ec363bebbfd98b"},{"sha":"c819580ce872f251e8ec23deee95d9fb15ca19c9","url":"https://api.github.com/repos/jacquev6/PyGithub/commits/c819580ce872f251e8ec23deee95d9fb15ca19c9","html_url":"https://github.com/jacquev6/PyGithub/commit/c819580ce872f251e8ec23deee95d9fb15ca19c9"}]}],"files":[{"sha":"fa4ed127848a478d04d033a1e4dd1330c285e120","filename":".gitignore","status":"modified","additions":5,"deletions":0,"changes":5,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/.gitignore","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/.gitignore","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/.gitignore?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -1,6 +1,7 @@\n ############################ Copyrights and license ############################\n # #\n # Copyright 2012 Vincent Jacques #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #\n@@ -28,3 +29,7 @@ GithubCredentials.py\n /PyGithub.egg-info/\n /.coverage\n /developer.github.com/\n+\n+*.cfg\n+*.bat\n+*.py~"},{"sha":"32e67f35289f9572bab58ac717f51e36a303cd9e","filename":"README.rst","status":"modified","additions":14,"deletions":22,"changes":36,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/README.rst","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/README.rst","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/README.rst?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -7,18 +7,25 @@ Should you have any question, any remark, or if you find a bug, or if there is s\n \n PyGithub is stable. I will maintain it up to date with the API, and fix bugs if any, but I don't plan new heavy developments.\n \n+\n What's new?\n ===========\n \n+Thank you, dear stargazers!\n+---------------------------\n+\n+Starting today (September 05th, 2013), we now need more than 8 bits to store the number of `stargazers `_! Thank you so much!\n \n-`Version 1.18.0 `_ (August 21st, 2013) (Bénodet edition)\n--------------------------------------------------------------------------------------------------------------------------------\n+`Version 1.19.0 `_ (September ??th, 2013) (AKFish's edition)\n+-----------------------------------------------------------------------------------------------------------------------------------\n \n-* `Issues `_' ``repository`` attribute will never be ``None``. Thank you `stuglaser `_ for the pull request\n-* No more false assumption on `rate_limiting `_, and creation of ``rate_limiting_resettime``. Thank you `edjackson `_ for the pull request\n-* `New `_ parameters ``since`` and ``until`` to ``Repository.get_commits``. Thank you `apetresc `_ for the pull request\n-* `Catch `_ Json parsing exception for some internal server errors, and throw a better exception. Thank you `MarkRoddy `_ for the pull request\n-* `Allow `_ reversed iteration of ``PaginatedList``s. Thank you `davidbrai `_ for the pull request\n+* Implement `conditional requests `_ by the method ``GithubObject.update``. Thank you very much `akfish `_ for the pull request and your collaboration!\n+* Implement persistence of PyGithub objects: ``Github.save`` and ``Github.load``. Don't forget to ``update`` your objects after loading them, it won't decrease your rate limiting quota if nothing has changed. Again, thank you `akfish `_\n+* Implement ``Github.get_repos`` to get all public repositories\n+* Implement ``NamedUser.has_in_following``\n+* Technical change: HTTP headers are now stored in retrieved objects. This is a base for new functionalities. Thank you `akfish `_ for the pull request\n+* Use the new URL to fork gists (minor change)\n+* Use the new URL to test hooks (minor change)\n \n What's missing?\n ===============\n@@ -30,10 +37,6 @@ Github API v3 URLs not (yet) covered by PyGithub\n \n * ``/applications/:client_id/tokens/:access_token`` (GET)\n * ``/feeds`` (GET)\n-* ``/gists/:id/forks`` (POST)\n-\n- * instead, ``Gist.create_fork`` calls the old URL ``/gists/:id/fork``\n-\n * ``/meta`` (GET)\n * ``/notifications`` (PUT)\n * ``/notifications/emails`` (GET)\n@@ -54,10 +57,6 @@ Github API v3 URLs not (yet) covered by PyGithub\n \n * ``/repos/:owner/:repo/contents/:path`` (DELETE)\n * ``/repos/:owner/:repo/contents/:path`` (PUT)\n-* ``/repos/:owner/:repo/hooks/:id/tests`` (POST)\n-\n- * instead, ``Hook.test`` calls the old URL ``/repos/:owner/:repo/hooks/:id/test``\n-\n * ``/repos/:owner/:repo/notifications`` (GET)\n * ``/repos/:owner/:repo/notifications`` (PUT)\n * ``/repos/:owner/:repo/stats/code_frequency`` (GET)\n@@ -68,17 +67,10 @@ Github API v3 URLs not (yet) covered by PyGithub\n * ``/repos/:owner/:repo/subscription`` (DELETE)\n * ``/repos/:owner/:repo/subscription`` (GET)\n * ``/repos/:owner/:repo/subscription`` (PUT)\n-* ``/repositories`` (GET)\n-\n- * should be called in method ``Github.get_repos``\n-\n * ``/search/code`` (GET)\n * ``/search/issues`` (GET)\n * ``/search/repositories`` (GET)\n * ``/search/users`` (GET)\n-* ``/users/:user/following/:target_user`` (GET)\n-\n- * should be called in method ``NamedUser.has_in_following``\n \n Documentation\n ============="},{"sha":"9f856df33d80af7c4699cabf13444e7c69a121da","filename":"doc/conf.py","status":"modified","additions":2,"deletions":1,"changes":3,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/doc/conf.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/doc/conf.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/doc/conf.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -281,6 +281,7 @@\n \t\t\"../github/MainClass.py\",\n \t\t\"../github/PaginatedList.py\",\n \t\t\"../github/Requester.py\",\n+\t\t\"../github/Consts.py\",\n \t\t\"../github/__init__.py\"]\n ]\n \n@@ -318,7 +319,7 @@\n \t\t\t\tif not isProperty:\n \t\t\t\t\tassert method is None, method + \" has no :calls: section\"\n \t\t\t\t\tmethod = line.split(\"(\")[0][8:]\n-\t\t\t\t\tif method in [\"_initAttributes\", \"_useAttributes\", \"__init__\", \"__create_pull_1\", \"__create_pull_2\", \"__create_pull\", \"_hub\", \"__get_FIX_REPO_GET_GIT_REF\", \"__set_FIX_REPO_GET_GIT_REF\", \"__get_per_page\", \"__set_per_page\"]:\n+\t\t\t\t\tif method in [\"_initAttributes\", \"_useAttributes\", \"__init__\", \"__create_pull_1\", \"__create_pull_2\", \"__create_pull\", \"_hub\", \"__get_FIX_REPO_GET_GIT_REF\", \"__set_FIX_REPO_GET_GIT_REF\", \"__get_per_page\", \"__set_per_page\", \"create_from_raw_data\", \"dump\", \"load\"]:\n \t\t\t\t\t\tmethod = None\n \t\t\t\tisProperty = False\n \t\t\tif line.startswith(\" :calls: `\"):"},{"sha":"67a289c3acb10bb39a3228b80e912fb097a0db25","filename":"github/AuthenticatedUser.py","status":"modified","additions":36,"deletions":78,"changes":114,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/AuthenticatedUser.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/AuthenticatedUser.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/AuthenticatedUser.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -5,6 +5,7 @@\n # Copyright 2012 Steve English #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #\n@@ -256,8 +257,7 @@ def add_to_emails(self, *emails):\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n \"/user/emails\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n \n def add_to_following(self, following):\n@@ -269,9 +269,7 @@ def add_to_following(self, following):\n assert isinstance(following, github.NamedUser.NamedUser), following\n headers, data = self._requester.requestJsonAndCheck(\n \"PUT\",\n- \"/user/following/\" + following._identity,\n- None,\n- None\n+ \"/user/following/\" + following._identity\n )\n \n def add_to_starred(self, starred):\n@@ -283,9 +281,7 @@ def add_to_starred(self, starred):\n assert isinstance(starred, github.Repository.Repository), starred\n headers, data = self._requester.requestJsonAndCheck(\n \"PUT\",\n- \"/user/starred/\" + starred._identity,\n- None,\n- None\n+ \"/user/starred/\" + starred._identity\n )\n \n def add_to_subscriptions(self, subscription):\n@@ -297,9 +293,7 @@ def add_to_subscriptions(self, subscription):\n assert isinstance(subscription, github.Repository.Repository), subscription\n headers, data = self._requester.requestJsonAndCheck(\n \"PUT\",\n- \"/user/subscriptions/\" + subscription._identity,\n- None,\n- None\n+ \"/user/subscriptions/\" + subscription._identity\n )\n \n def add_to_watched(self, watched):\n@@ -311,9 +305,7 @@ def add_to_watched(self, watched):\n assert isinstance(watched, github.Repository.Repository), watched\n headers, data = self._requester.requestJsonAndCheck(\n \"PUT\",\n- \"/user/watched/\" + watched._identity,\n- None,\n- None\n+ \"/user/watched/\" + watched._identity\n )\n \n def create_authorization(self, scopes=github.GithubObject.NotSet, note=github.GithubObject.NotSet, note_url=github.GithubObject.NotSet, client_id=github.GithubObject.NotSet, client_secret=github.GithubObject.NotSet):\n@@ -345,10 +337,9 @@ def create_authorization(self, scopes=github.GithubObject.NotSet, note=github.Gi\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n \"/authorizations\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n- return github.Authorization.Authorization(self._requester, data, completed=True)\n+ return github.Authorization.Authorization(self._requester, headers, data, completed=True)\n \n def create_fork(self, repo):\n \"\"\"\n@@ -359,11 +350,9 @@ def create_fork(self, repo):\n assert isinstance(repo, github.Repository.Repository), repo\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n- \"/repos/\" + repo.owner.login + \"/\" + repo.name + \"/forks\",\n- None,\n- None\n+ \"/repos/\" + repo.owner.login + \"/\" + repo.name + \"/forks\"\n )\n- return github.Repository.Repository(self._requester, data, completed=True)\n+ return github.Repository.Repository(self._requester, headers, data, completed=True)\n \n def create_gist(self, public, files, description=github.GithubObject.NotSet):\n \"\"\"\n@@ -385,10 +374,9 @@ def create_gist(self, public, files, description=github.GithubObject.NotSet):\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n \"/gists\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n- return github.Gist.Gist(self._requester, data, completed=True)\n+ return github.Gist.Gist(self._requester, headers, data, completed=True)\n \n def create_key(self, title, key):\n \"\"\"\n@@ -406,10 +394,9 @@ def create_key(self, title, key):\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n \"/user/keys\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n- return github.UserKey.UserKey(self._requester, data, completed=True)\n+ return github.UserKey.UserKey(self._requester, headers, data, completed=True)\n \n def create_repo(self, name, description=github.GithubObject.NotSet, homepage=github.GithubObject.NotSet, private=github.GithubObject.NotSet, has_issues=github.GithubObject.NotSet, has_wiki=github.GithubObject.NotSet, has_downloads=github.GithubObject.NotSet, auto_init=github.GithubObject.NotSet, gitignore_template=github.GithubObject.NotSet):\n \"\"\"\n@@ -456,10 +443,9 @@ def create_repo(self, name, description=github.GithubObject.NotSet, homepage=git\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n \"/user/repos\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n- return github.Repository.Repository(self._requester, data, completed=True)\n+ return github.Repository.Repository(self._requester, headers, data, completed=True)\n \n def edit(self, name=github.GithubObject.NotSet, email=github.GithubObject.NotSet, blog=github.GithubObject.NotSet, company=github.GithubObject.NotSet, location=github.GithubObject.NotSet, hireable=github.GithubObject.NotSet, bio=github.GithubObject.NotSet):\n \"\"\"\n@@ -498,8 +484,7 @@ def edit(self, name=github.GithubObject.NotSet, email=github.GithubObject.NotSet\n headers, data = self._requester.requestJsonAndCheck(\n \"PATCH\",\n \"/user\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n self._useAttributes(data)\n \n@@ -512,11 +497,9 @@ def get_authorization(self, id):\n assert isinstance(id, (int, long)), id\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- \"/authorizations/\" + str(id),\n- None,\n- None\n+ \"/authorizations/\" + str(id)\n )\n- return github.Authorization.Authorization(self._requester, data, completed=True)\n+ return github.Authorization.Authorization(self._requester, headers, data, completed=True)\n \n def get_authorizations(self):\n \"\"\"\n@@ -537,9 +520,7 @@ def get_emails(self):\n \"\"\"\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- \"/user/emails\",\n- None,\n- None\n+ \"/user/emails\"\n )\n return data\n \n@@ -676,11 +657,9 @@ def get_key(self, id):\n assert isinstance(id, (int, long)), id\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- \"/user/keys/\" + str(id),\n- None,\n- None\n+ \"/user/keys/\" + str(id)\n )\n- return github.UserKey.UserKey(self._requester, data, completed=True)\n+ return github.UserKey.UserKey(self._requester, headers, data, completed=True)\n \n def get_keys(self):\n \"\"\"\n@@ -703,11 +682,9 @@ def get_notification(self, id):\n assert isinstance(id, (str, unicode)), id\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- \"/notifications/threads/\" + id,\n- None,\n- None\n+ \"/notifications/threads/\" + id\n )\n- return github.Notification.Notification(self._requester, data, completed=True)\n+ return github.Notification.Notification(self._requester, headers, data, completed=True)\n \n def get_notifications(self, all=github.GithubObject.NotSet, participating=github.GithubObject.NotSet):\n \"\"\"\n@@ -767,11 +744,9 @@ def get_repo(self, name):\n assert isinstance(name, (str, unicode)), name\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- \"/repos/\" + self.login + \"/\" + name,\n- None,\n- None\n+ \"/repos/\" + self.login + \"/\" + name\n )\n- return github.Repository.Repository(self._requester, data, completed=True)\n+ return github.Repository.Repository(self._requester, headers, data, completed=True)\n \n def get_repos(self, type=github.GithubObject.NotSet, sort=github.GithubObject.NotSet, direction=github.GithubObject.NotSet):\n \"\"\"\n@@ -855,9 +830,7 @@ def has_in_following(self, following):\n assert isinstance(following, github.NamedUser.NamedUser), following\n status, headers, data = self._requester.requestJson(\n \"GET\",\n- \"/user/following/\" + following._identity,\n- None,\n- None\n+ \"/user/following/\" + following._identity\n )\n return status == 204\n \n@@ -870,9 +843,7 @@ def has_in_starred(self, starred):\n assert isinstance(starred, github.Repository.Repository), starred\n status, headers, data = self._requester.requestJson(\n \"GET\",\n- \"/user/starred/\" + starred._identity,\n- None,\n- None\n+ \"/user/starred/\" + starred._identity\n )\n return status == 204\n \n@@ -885,9 +856,7 @@ def has_in_subscriptions(self, subscription):\n assert isinstance(subscription, github.Repository.Repository), subscription\n status, headers, data = self._requester.requestJson(\n \"GET\",\n- \"/user/subscriptions/\" + subscription._identity,\n- None,\n- None\n+ \"/user/subscriptions/\" + subscription._identity\n )\n return status == 204\n \n@@ -900,9 +869,7 @@ def has_in_watched(self, watched):\n assert isinstance(watched, github.Repository.Repository), watched\n status, headers, data = self._requester.requestJson(\n \"GET\",\n- \"/user/watched/\" + watched._identity,\n- None,\n- None\n+ \"/user/watched/\" + watched._identity\n )\n return status == 204\n \n@@ -917,8 +884,7 @@ def remove_from_emails(self, *emails):\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n \"/user/emails\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n \n def remove_from_following(self, following):\n@@ -930,9 +896,7 @@ def remove_from_following(self, following):\n assert isinstance(following, github.NamedUser.NamedUser), following\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n- \"/user/following/\" + following._identity,\n- None,\n- None\n+ \"/user/following/\" + following._identity\n )\n \n def remove_from_starred(self, starred):\n@@ -944,9 +908,7 @@ def remove_from_starred(self, starred):\n assert isinstance(starred, github.Repository.Repository), starred\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n- \"/user/starred/\" + starred._identity,\n- None,\n- None\n+ \"/user/starred/\" + starred._identity\n )\n \n def remove_from_subscriptions(self, subscription):\n@@ -958,9 +920,7 @@ def remove_from_subscriptions(self, subscription):\n assert isinstance(subscription, github.Repository.Repository), subscription\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n- \"/user/subscriptions/\" + subscription._identity,\n- None,\n- None\n+ \"/user/subscriptions/\" + subscription._identity\n )\n \n def remove_from_watched(self, watched):\n@@ -972,9 +932,7 @@ def remove_from_watched(self, watched):\n assert isinstance(watched, github.Repository.Repository), watched\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n- \"/user/watched/\" + watched._identity,\n- None,\n- None\n+ \"/user/watched/\" + watched._identity\n )\n \n def _initAttributes(self):\n@@ -1061,7 +1019,7 @@ def _useAttributes(self, attributes):\n self._owned_private_repos = attributes[\"owned_private_repos\"]\n if \"plan\" in attributes: # pragma no branch\n assert attributes[\"plan\"] is None or isinstance(attributes[\"plan\"], dict), attributes[\"plan\"]\n- self._plan = None if attributes[\"plan\"] is None else github.Plan.Plan(self._requester, attributes[\"plan\"], completed=False)\n+ self._plan = None if attributes[\"plan\"] is None else github.Plan.Plan(self._requester, self._headers, attributes[\"plan\"], completed=False)\n if \"private_gists\" in attributes: # pragma no branch\n assert attributes[\"private_gists\"] is None or isinstance(attributes[\"private_gists\"], (int, long)), attributes[\"private_gists\"]\n self._private_gists = attributes[\"private_gists\"]"},{"sha":"a004fedf687cdbcd52f4ffd494b9e4536bbb037b","filename":"github/Authorization.py","status":"modified","additions":4,"deletions":6,"changes":10,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/Authorization.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/Authorization.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/Authorization.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #\n@@ -112,9 +113,7 @@ def delete(self):\n \"\"\"\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n- self.url,\n- None,\n- None\n+ self.url\n )\n \n def edit(self, scopes=github.GithubObject.NotSet, add_scopes=github.GithubObject.NotSet, remove_scopes=github.GithubObject.NotSet, note=github.GithubObject.NotSet, note_url=github.GithubObject.NotSet):\n@@ -146,8 +145,7 @@ def edit(self, scopes=github.GithubObject.NotSet, add_scopes=github.GithubObject\n headers, data = self._requester.requestJsonAndCheck(\n \"PATCH\",\n self.url,\n- None,\n- post_parameters\n+ input=post_parameters\n )\n self._useAttributes(data)\n \n@@ -165,7 +163,7 @@ def _initAttributes(self):\n def _useAttributes(self, attributes):\n if \"app\" in attributes: # pragma no branch\n assert attributes[\"app\"] is None or isinstance(attributes[\"app\"], dict), attributes[\"app\"]\n- self._app = None if attributes[\"app\"] is None else github.AuthorizationApplication.AuthorizationApplication(self._requester, attributes[\"app\"], completed=False)\n+ self._app = None if attributes[\"app\"] is None else github.AuthorizationApplication.AuthorizationApplication(self._requester, self._headers, attributes[\"app\"], completed=False)\n if \"created_at\" in attributes: # pragma no branch\n assert attributes[\"created_at\"] is None or isinstance(attributes[\"created_at\"], (str, unicode)), attributes[\"created_at\"]\n self._created_at = self._parseDatetime(attributes[\"created_at\"])"},{"sha":"8f38bc1418f4b14e16da2ea24cd8a0fd525b872a","filename":"github/AuthorizationApplication.py","status":"modified","additions":1,"deletions":0,"changes":1,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/AuthorizationApplication.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/AuthorizationApplication.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/AuthorizationApplication.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #"},{"sha":"9e76182677f02c87b49e51a0139112421d53bf59","filename":"github/Branch.py","status":"modified","additions":2,"deletions":1,"changes":3,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/Branch.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/Branch.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/Branch.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # Copyright 2013 martinqt #\n # #\n@@ -55,7 +56,7 @@ def _initAttributes(self):\n def _useAttributes(self, attributes):\n if \"commit\" in attributes: # pragma no branch\n assert attributes[\"commit\"] is None or isinstance(attributes[\"commit\"], dict), attributes[\"commit\"]\n- self._commit = None if attributes[\"commit\"] is None else github.Commit.Commit(self._requester, attributes[\"commit\"], completed=False)\n+ self._commit = None if attributes[\"commit\"] is None else github.Commit.Commit(self._requester, self._headers, attributes[\"commit\"], completed=False)\n if \"name\" in attributes: # pragma no branch\n assert attributes[\"name\"] is None or isinstance(attributes[\"name\"], (str, unicode)), attributes[\"name\"]\n self._name = attributes[\"name\"]"},{"sha":"828da3fe18f120b030701d48a9a78be17ef143e8","filename":"github/Commit.py","status":"modified","additions":11,"deletions":12,"changes":23,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/Commit.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/Commit.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/Commit.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # Copyright 2013 martinqt #\n # #\n@@ -129,10 +130,9 @@ def create_comment(self, body, line=github.GithubObject.NotSet, path=github.Gith\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n self.url + \"/comments\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n- return github.CommitComment.CommitComment(self._requester, data, completed=True)\n+ return github.CommitComment.CommitComment(self._requester, headers, data, completed=True)\n \n def create_status(self, state, target_url=github.GithubObject.NotSet, description=github.GithubObject.NotSet):\n \"\"\"\n@@ -155,10 +155,9 @@ def create_status(self, state, target_url=github.GithubObject.NotSet, descriptio\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n self._parentUrl(self._parentUrl(self.url)) + \"/statuses/\" + self.sha,\n- None,\n- post_parameters\n+ input=post_parameters\n )\n- return github.CommitStatus.CommitStatus(self._requester, data, completed=True)\n+ return github.CommitStatus.CommitStatus(self._requester, headers, data, completed=True)\n \n def get_comments(self):\n \"\"\"\n@@ -201,23 +200,23 @@ def _initAttributes(self):\n def _useAttributes(self, attributes):\n if \"author\" in attributes: # pragma no branch\n assert attributes[\"author\"] is None or isinstance(attributes[\"author\"], dict), attributes[\"author\"]\n- self._author = None if attributes[\"author\"] is None else github.NamedUser.NamedUser(self._requester, attributes[\"author\"], completed=False)\n+ self._author = None if attributes[\"author\"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes[\"author\"], completed=False)\n if \"commit\" in attributes: # pragma no branch\n assert attributes[\"commit\"] is None or isinstance(attributes[\"commit\"], dict), attributes[\"commit\"]\n- self._commit = None if attributes[\"commit\"] is None else github.GitCommit.GitCommit(self._requester, attributes[\"commit\"], completed=False)\n+ self._commit = None if attributes[\"commit\"] is None else github.GitCommit.GitCommit(self._requester, self._headers, attributes[\"commit\"], completed=False)\n if \"committer\" in attributes: # pragma no branch\n assert attributes[\"committer\"] is None or isinstance(attributes[\"committer\"], dict), attributes[\"committer\"]\n- self._committer = None if attributes[\"committer\"] is None else github.NamedUser.NamedUser(self._requester, attributes[\"committer\"], completed=False)\n+ self._committer = None if attributes[\"committer\"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes[\"committer\"], completed=False)\n if \"files\" in attributes: # pragma no branch\n assert attributes[\"files\"] is None or all(isinstance(element, dict) for element in attributes[\"files\"]), attributes[\"files\"]\n self._files = None if attributes[\"files\"] is None else [\n- github.File.File(self._requester, element, completed=False)\n+ github.File.File(self._requester, self._headers, element, completed=False)\n for element in attributes[\"files\"]\n ]\n if \"parents\" in attributes: # pragma no branch\n assert attributes[\"parents\"] is None or all(isinstance(element, dict) for element in attributes[\"parents\"]), attributes[\"parents\"]\n self._parents = None if attributes[\"parents\"] is None else [\n- Commit(self._requester, element, completed=False)\n+ Commit(self._requester, self._headers, element, completed=False)\n for element in attributes[\"parents\"]\n ]\n if \"sha\" in attributes: # pragma no branch\n@@ -225,7 +224,7 @@ def _useAttributes(self, attributes):\n self._sha = attributes[\"sha\"]\n if \"stats\" in attributes: # pragma no branch\n assert attributes[\"stats\"] is None or isinstance(attributes[\"stats\"], dict), attributes[\"stats\"]\n- self._stats = None if attributes[\"stats\"] is None else github.CommitStats.CommitStats(self._requester, attributes[\"stats\"], completed=False)\n+ self._stats = None if attributes[\"stats\"] is None else github.CommitStats.CommitStats(self._requester, self._headers, attributes[\"stats\"], completed=False)\n if \"url\" in attributes: # pragma no branch\n assert attributes[\"url\"] is None or isinstance(attributes[\"url\"], (str, unicode)), attributes[\"url\"]\n self._url = attributes[\"url\"]"},{"sha":"c2c897d13f4092571b2a71f83694e34ff26c560d","filename":"github/CommitComment.py","status":"modified","additions":4,"deletions":6,"changes":10,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/CommitComment.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/CommitComment.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/CommitComment.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #\n@@ -128,9 +129,7 @@ def delete(self):\n \"\"\"\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n- self.url,\n- None,\n- None\n+ self.url\n )\n \n def edit(self, body):\n@@ -146,8 +145,7 @@ def edit(self, body):\n headers, data = self._requester.requestJsonAndCheck(\n \"PATCH\",\n self.url,\n- None,\n- post_parameters\n+ input=post_parameters\n )\n self._useAttributes(data)\n \n@@ -197,4 +195,4 @@ def _useAttributes(self, attributes):\n self._url = attributes[\"url\"]\n if \"user\" in attributes: # pragma no branch\n assert attributes[\"user\"] is None or isinstance(attributes[\"user\"], dict), attributes[\"user\"]\n- self._user = None if attributes[\"user\"] is None else github.NamedUser.NamedUser(self._requester, attributes[\"user\"], completed=False)\n+ self._user = None if attributes[\"user\"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes[\"user\"], completed=False)"},{"sha":"49f407783d025f012358c435ec1153d293856bef","filename":"github/CommitStats.py","status":"modified","additions":1,"deletions":0,"changes":1,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/CommitStats.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/CommitStats.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/CommitStats.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #"},{"sha":"d08e0274279824208d98b1dd4033f18b970f594a","filename":"github/CommitStatus.py","status":"modified","additions":2,"deletions":1,"changes":3,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/CommitStatus.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/CommitStatus.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/CommitStatus.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #\n@@ -97,7 +98,7 @@ def _useAttributes(self, attributes):\n self._created_at = self._parseDatetime(attributes[\"created_at\"])\n if \"creator\" in attributes: # pragma no branch\n assert attributes[\"creator\"] is None or isinstance(attributes[\"creator\"], dict), attributes[\"creator\"]\n- self._creator = None if attributes[\"creator\"] is None else github.NamedUser.NamedUser(self._requester, attributes[\"creator\"], completed=False)\n+ self._creator = None if attributes[\"creator\"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes[\"creator\"], completed=False)\n if \"description\" in attributes: # pragma no branch\n assert attributes[\"description\"] is None or isinstance(attributes[\"description\"], (str, unicode)), attributes[\"description\"]\n self._description = attributes[\"description\"]"},{"sha":"f5f66bc1f4bcb57c9286fb674e4bfdbaaf47538f","filename":"github/Comparison.py","status":"modified","additions":4,"deletions":3,"changes":7,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/Comparison.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/Comparison.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/Comparison.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #\n@@ -150,14 +151,14 @@ def _useAttributes(self, attributes):\n self._ahead_by = attributes[\"ahead_by\"]\n if \"base_commit\" in attributes: # pragma no branch\n assert attributes[\"base_commit\"] is None or isinstance(attributes[\"base_commit\"], dict), attributes[\"base_commit\"]\n- self._base_commit = None if attributes[\"base_commit\"] is None else github.Commit.Commit(self._requester, attributes[\"base_commit\"], completed=False)\n+ self._base_commit = None if attributes[\"base_commit\"] is None else github.Commit.Commit(self._requester, self._headers, attributes[\"base_commit\"], completed=False)\n if \"behind_by\" in attributes: # pragma no branch\n assert attributes[\"behind_by\"] is None or isinstance(attributes[\"behind_by\"], (int, long)), attributes[\"behind_by\"]\n self._behind_by = attributes[\"behind_by\"]\n if \"commits\" in attributes: # pragma no branch\n assert attributes[\"commits\"] is None or all(isinstance(element, dict) for element in attributes[\"commits\"]), attributes[\"commits\"]\n self._commits = None if attributes[\"commits\"] is None else [\n- github.Commit.Commit(self._requester, element, completed=False)\n+ github.Commit.Commit(self._requester, self._headers, element, completed=False)\n for element in attributes[\"commits\"]\n ]\n if \"diff_url\" in attributes: # pragma no branch\n@@ -166,7 +167,7 @@ def _useAttributes(self, attributes):\n if \"files\" in attributes: # pragma no branch\n assert attributes[\"files\"] is None or all(isinstance(element, dict) for element in attributes[\"files\"]), attributes[\"files\"]\n self._files = None if attributes[\"files\"] is None else [\n- github.File.File(self._requester, element, completed=False)\n+ github.File.File(self._requester, self._headers, element, completed=False)\n for element in attributes[\"files\"]\n ]\n if \"html_url\" in attributes: # pragma no branch"},{"sha":"b3b4791408f3b48375ba7360ef7aa129c592bd24","filename":"github/Consts.py","status":"added","additions":43,"deletions":0,"changes":43,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/Consts.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/Consts.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/Consts.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -0,0 +1,43 @@\n+# -*- coding: utf-8 -*-\n+\n+############################ Copyrights and license ############################\n+# #\n+# Copyright 2013 AKFish #\n+# #\n+# This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #\n+# #\n+# PyGithub is free software: you can redistribute it and/or modify it under #\n+# the terms of the GNU Lesser General Public License as published by the Free #\n+# Software Foundation, either version 3 of the License, or (at your option) #\n+# any later version. #\n+# #\n+# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY #\n+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS #\n+# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more #\n+# details. #\n+# #\n+# You should have received a copy of the GNU Lesser General Public License #\n+# along with PyGithub. If not, see . #\n+# #\n+################################################################################\n+\n+# #193: Line endings should be linux style\n+\n+# TODO: As of Thu Aug 21 22:40:13 (BJT) Chinese Standard Time 2013\n+# lots of consts in this project are explict\n+# should realy round them up and reference them by consts\n+# EDIT: well, maybe :-)\n+\n+################################################################################\n+# Request Header #\n+# (Case sensitive) #\n+################################################################################\n+REQ_IF_NONE_MATCH = \"If-None-Match\"\n+REQ_IF_MODIFIED_SINCE = \"If-Modified-Since\"\n+\n+################################################################################\n+# Response Header #\n+# (Lower Case) #\n+################################################################################\n+RES_ETAG = \"etag\"\n+RES_LAST_MODIFED = \"last-modified\""},{"sha":"03818842545b0c6824e8ab4f1e5b1c87462cba6a","filename":"github/ContentFile.py","status":"modified","additions":1,"deletions":0,"changes":1,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/ContentFile.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/ContentFile.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/ContentFile.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #"},{"sha":"2cd057cac916898be1451aac7b4f94830a880937","filename":"github/Download.py","status":"modified","additions":2,"deletions":3,"changes":5,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/Download.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/Download.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/Download.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #\n@@ -198,9 +199,7 @@ def delete(self):\n \"\"\"\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n- self.url,\n- None,\n- None\n+ self.url\n )\n \n def _initAttributes(self):"},{"sha":"203510252bb0e76c540d3bc20630e75ef99ecb31","filename":"github/Event.py","status":"modified","additions":4,"deletions":3,"changes":7,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/Event.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/Event.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/Event.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # Copyright 2013 martinqt #\n # #\n@@ -105,7 +106,7 @@ def _initAttributes(self):\n def _useAttributes(self, attributes):\n if \"actor\" in attributes: # pragma no branch\n assert attributes[\"actor\"] is None or isinstance(attributes[\"actor\"], dict), attributes[\"actor\"]\n- self._actor = None if attributes[\"actor\"] is None else github.NamedUser.NamedUser(self._requester, attributes[\"actor\"], completed=False)\n+ self._actor = None if attributes[\"actor\"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes[\"actor\"], completed=False)\n if \"created_at\" in attributes: # pragma no branch\n assert attributes[\"created_at\"] is None or isinstance(attributes[\"created_at\"], (str, unicode)), attributes[\"created_at\"]\n self._created_at = self._parseDatetime(attributes[\"created_at\"])\n@@ -114,7 +115,7 @@ def _useAttributes(self, attributes):\n self._id = attributes[\"id\"]\n if \"org\" in attributes: # pragma no branch\n assert attributes[\"org\"] is None or isinstance(attributes[\"org\"], dict), attributes[\"org\"]\n- self._org = None if attributes[\"org\"] is None else github.Organization.Organization(self._requester, attributes[\"org\"], completed=False)\n+ self._org = None if attributes[\"org\"] is None else github.Organization.Organization(self._requester, self._headers, attributes[\"org\"], completed=False)\n if \"payload\" in attributes: # pragma no branch\n assert attributes[\"payload\"] is None or isinstance(attributes[\"payload\"], dict), attributes[\"payload\"]\n self._payload = attributes[\"payload\"]\n@@ -123,7 +124,7 @@ def _useAttributes(self, attributes):\n self._public = attributes[\"public\"]\n if \"repo\" in attributes: # pragma no branch\n assert attributes[\"repo\"] is None or isinstance(attributes[\"repo\"], dict), attributes[\"repo\"]\n- self._repo = None if attributes[\"repo\"] is None else github.Repository.Repository(self._requester, attributes[\"repo\"], completed=False)\n+ self._repo = None if attributes[\"repo\"] is None else github.Repository.Repository(self._requester, self._headers, attributes[\"repo\"], completed=False)\n if \"type\" in attributes: # pragma no branch\n assert attributes[\"type\"] is None or isinstance(attributes[\"type\"], (str, unicode)), attributes[\"type\"]\n self._type = attributes[\"type\"]"},{"sha":"6adaae8a974440b489b2913d515a32488f8c252f","filename":"github/File.py","status":"modified","additions":1,"deletions":0,"changes":1,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/File.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/File.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/File.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #"},{"sha":"65de668ed8da2c379cc88c0515024aa3d4c7164e","filename":"github/Gist.py","status":"modified","additions":17,"deletions":30,"changes":47,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/Gist.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/Gist.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/Gist.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -5,6 +5,7 @@\n # Copyright 2012 Steve English #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #\n@@ -171,23 +172,20 @@ def create_comment(self, body):\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n self.url + \"/comments\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n- return github.GistComment.GistComment(self._requester, data, completed=True)\n+ return github.GistComment.GistComment(self._requester, headers, data, completed=True)\n \n def create_fork(self):\n \"\"\"\n- :calls: `POST /gists/:id/fork `_\n+ :calls: `POST /gists/:id/forks `_\n :rtype: :class:`github.Gist.Gist`\n \"\"\"\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n- self.url + \"/fork\",\n- None,\n- None\n+ self.url + \"/forks\"\n )\n- return Gist(self._requester, data, completed=True)\n+ return Gist(self._requester, headers, data, completed=True)\n \n def delete(self):\n \"\"\"\n@@ -196,9 +194,7 @@ def delete(self):\n \"\"\"\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n- self.url,\n- None,\n- None\n+ self.url\n )\n \n def edit(self, description=github.GithubObject.NotSet, files=github.GithubObject.NotSet):\n@@ -218,8 +214,7 @@ def edit(self, description=github.GithubObject.NotSet, files=github.GithubObject\n headers, data = self._requester.requestJsonAndCheck(\n \"PATCH\",\n self.url,\n- None,\n- post_parameters\n+ input=post_parameters\n )\n self._useAttributes(data)\n \n@@ -232,11 +227,9 @@ def get_comment(self, id):\n assert isinstance(id, (int, long)), id\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- self.url + \"/comments/\" + str(id),\n- None,\n- None\n+ self.url + \"/comments/\" + str(id)\n )\n- return github.GistComment.GistComment(self._requester, data, completed=True)\n+ return github.GistComment.GistComment(self._requester, headers, data, completed=True)\n \n def get_comments(self):\n \"\"\"\n@@ -257,9 +250,7 @@ def is_starred(self):\n \"\"\"\n status, headers, data = self._requester.requestJson(\n \"GET\",\n- self.url + \"/star\",\n- None,\n- None\n+ self.url + \"/star\"\n )\n return status == 204\n \n@@ -270,9 +261,7 @@ def reset_starred(self):\n \"\"\"\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n- self.url + \"/star\",\n- None,\n- None\n+ self.url + \"/star\"\n )\n \n def set_starred(self):\n@@ -282,9 +271,7 @@ def set_starred(self):\n \"\"\"\n headers, data = self._requester.requestJsonAndCheck(\n \"PUT\",\n- self.url + \"/star\",\n- None,\n- None\n+ self.url + \"/star\"\n )\n \n def _initAttributes(self):\n@@ -317,12 +304,12 @@ def _useAttributes(self, attributes):\n if \"files\" in attributes: # pragma no branch\n assert attributes[\"files\"] is None or all(isinstance(element, dict) for element in attributes[\"files\"].itervalues()), attributes[\"files\"]\n self._files = None if attributes[\"files\"] is None else dict(\n- (key, github.GistFile.GistFile(self._requester, element, completed=False))\n+ (key, github.GistFile.GistFile(self._requester, self._headers, element, completed=False))\n for key, element in attributes[\"files\"].iteritems()\n )\n if \"fork_of\" in attributes: # pragma no branch\n assert attributes[\"fork_of\"] is None or isinstance(attributes[\"fork_of\"], dict), attributes[\"fork_of\"]\n- self._fork_of = None if attributes[\"fork_of\"] is None else Gist(self._requester, attributes[\"fork_of\"], completed=False)\n+ self._fork_of = None if attributes[\"fork_of\"] is None else Gist(self._requester, self._headers, attributes[\"fork_of\"], completed=False)\n if \"forks\" in attributes: # pragma no branch\n assert attributes[\"forks\"] is None or all(isinstance(element, dict) for element in attributes[\"forks\"]), attributes[\"forks\"]\n self._forks = None if attributes[\"forks\"] is None else [\n@@ -338,7 +325,7 @@ def _useAttributes(self, attributes):\n if \"history\" in attributes: # pragma no branch\n assert attributes[\"history\"] is None or all(isinstance(element, dict) for element in attributes[\"history\"]), attributes[\"history\"]\n self._history = None if attributes[\"history\"] is None else [\n- github.GistHistoryState.GistHistoryState(self._requester, element, completed=False)\n+ github.GistHistoryState.GistHistoryState(self._requester, self._headers, element, completed=False)\n for element in attributes[\"history\"]\n ]\n if \"html_url\" in attributes: # pragma no branch\n@@ -358,4 +345,4 @@ def _useAttributes(self, attributes):\n self._url = attributes[\"url\"]\n if \"user\" in attributes: # pragma no branch\n assert attributes[\"user\"] is None or isinstance(attributes[\"user\"], dict), attributes[\"user\"]\n- self._user = None if attributes[\"user\"] is None else github.NamedUser.NamedUser(self._requester, attributes[\"user\"], completed=False)\n+ self._user = None if attributes[\"user\"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes[\"user\"], completed=False)"},{"sha":"5ee0664c5827eccb2cce3e514d907f70daa7e09c","filename":"github/GistComment.py","status":"modified","additions":4,"deletions":6,"changes":10,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/GistComment.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/GistComment.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/GistComment.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #\n@@ -88,9 +89,7 @@ def delete(self):\n \"\"\"\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n- self.url,\n- None,\n- None\n+ self.url\n )\n \n def edit(self, body):\n@@ -106,8 +105,7 @@ def edit(self, body):\n headers, data = self._requester.requestJsonAndCheck(\n \"PATCH\",\n self.url,\n- None,\n- post_parameters\n+ input=post_parameters\n )\n self._useAttributes(data)\n \n@@ -137,4 +135,4 @@ def _useAttributes(self, attributes):\n self._url = attributes[\"url\"]\n if \"user\" in attributes: # pragma no branch\n assert attributes[\"user\"] is None or isinstance(attributes[\"user\"], dict), attributes[\"user\"]\n- self._user = None if attributes[\"user\"] is None else github.NamedUser.NamedUser(self._requester, attributes[\"user\"], completed=False)\n+ self._user = None if attributes[\"user\"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes[\"user\"], completed=False)"},{"sha":"96c8ee2741d3fe8fbb40d12541f9e4a94839fdf3","filename":"github/GistFile.py","status":"modified","additions":1,"deletions":0,"changes":1,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/GistFile.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/GistFile.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/GistFile.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #"},{"sha":"bc24d5c0700d0bf95d76e8cc1b20cdbbdfeb80a7","filename":"github/GistHistoryState.py","status":"modified","additions":3,"deletions":2,"changes":5,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/GistHistoryState.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/GistHistoryState.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/GistHistoryState.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #\n@@ -84,7 +85,7 @@ def _initAttributes(self):\n def _useAttributes(self, attributes):\n if \"change_status\" in attributes: # pragma no branch\n assert attributes[\"change_status\"] is None or isinstance(attributes[\"change_status\"], dict), attributes[\"change_status\"]\n- self._change_status = None if attributes[\"change_status\"] is None else github.CommitStats.CommitStats(self._requester, attributes[\"change_status\"], completed=False)\n+ self._change_status = None if attributes[\"change_status\"] is None else github.CommitStats.CommitStats(self._requester, self._headers, attributes[\"change_status\"], completed=False)\n if \"committed_at\" in attributes: # pragma no branch\n assert attributes[\"committed_at\"] is None or isinstance(attributes[\"committed_at\"], (str, unicode)), attributes[\"committed_at\"]\n self._committed_at = self._parseDatetime(attributes[\"committed_at\"])\n@@ -93,7 +94,7 @@ def _useAttributes(self, attributes):\n self._url = attributes[\"url\"]\n if \"user\" in attributes: # pragma no branch\n assert attributes[\"user\"] is None or isinstance(attributes[\"user\"], dict), attributes[\"user\"]\n- self._user = None if attributes[\"user\"] is None else github.NamedUser.NamedUser(self._requester, attributes[\"user\"], completed=False)\n+ self._user = None if attributes[\"user\"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes[\"user\"], completed=False)\n if \"version\" in attributes: # pragma no branch\n assert attributes[\"version\"] is None or isinstance(attributes[\"version\"], (str, unicode)), attributes[\"version\"]\n self._version = attributes[\"version\"]"},{"sha":"e56ce94d55e53cc74e259293b1a2c91d22f8b40c","filename":"github/GitAuthor.py","status":"modified","additions":1,"deletions":0,"changes":1,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/GitAuthor.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/GitAuthor.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/GitAuthor.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #"},{"sha":"8f1056829fa56386223cb843005d6777ac71d32e","filename":"github/GitBlob.py","status":"modified","additions":1,"deletions":0,"changes":1,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/GitBlob.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/GitBlob.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/GitBlob.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #"},{"sha":"ffdc6d5a739ed5dd4f701cd2c345108ceb5499c2","filename":"github/GitCommit.py","status":"modified","additions":5,"deletions":4,"changes":9,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/GitCommit.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/GitCommit.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/GitCommit.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #\n@@ -106,17 +107,17 @@ def _initAttributes(self):\n def _useAttributes(self, attributes):\n if \"author\" in attributes: # pragma no branch\n assert attributes[\"author\"] is None or isinstance(attributes[\"author\"], dict), attributes[\"author\"]\n- self._author = None if attributes[\"author\"] is None else github.GitAuthor.GitAuthor(self._requester, attributes[\"author\"], completed=False)\n+ self._author = None if attributes[\"author\"] is None else github.GitAuthor.GitAuthor(self._requester, self._headers, attributes[\"author\"], completed=False)\n if \"committer\" in attributes: # pragma no branch\n assert attributes[\"committer\"] is None or isinstance(attributes[\"committer\"], dict), attributes[\"committer\"]\n- self._committer = None if attributes[\"committer\"] is None else github.GitAuthor.GitAuthor(self._requester, attributes[\"committer\"], completed=False)\n+ self._committer = None if attributes[\"committer\"] is None else github.GitAuthor.GitAuthor(self._requester, self._headers, attributes[\"committer\"], completed=False)\n if \"message\" in attributes: # pragma no branch\n assert attributes[\"message\"] is None or isinstance(attributes[\"message\"], (str, unicode)), attributes[\"message\"]\n self._message = attributes[\"message\"]\n if \"parents\" in attributes: # pragma no branch\n assert attributes[\"parents\"] is None or all(isinstance(element, dict) for element in attributes[\"parents\"]), attributes[\"parents\"]\n self._parents = None if attributes[\"parents\"] is None else [\n- GitCommit(self._requester, element, completed=False)\n+ GitCommit(self._requester, self._headers, element, completed=False)\n for element in attributes[\"parents\"]\n ]\n if \"sha\" in attributes: # pragma no branch\n@@ -124,7 +125,7 @@ def _useAttributes(self, attributes):\n self._sha = attributes[\"sha\"]\n if \"tree\" in attributes: # pragma no branch\n assert attributes[\"tree\"] is None or isinstance(attributes[\"tree\"], dict), attributes[\"tree\"]\n- self._tree = None if attributes[\"tree\"] is None else github.GitTree.GitTree(self._requester, attributes[\"tree\"], completed=False)\n+ self._tree = None if attributes[\"tree\"] is None else github.GitTree.GitTree(self._requester, self._headers, attributes[\"tree\"], completed=False)\n if \"url\" in attributes: # pragma no branch\n assert attributes[\"url\"] is None or isinstance(attributes[\"url\"], (str, unicode)), attributes[\"url\"]\n self._url = attributes[\"url\"]"},{"sha":"a731464122384af8435525853343bce170cb5cd6","filename":"github/GitObject.py","status":"modified","additions":1,"deletions":0,"changes":1,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/GitObject.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/GitObject.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/GitObject.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #"},{"sha":"97a2ca4d6e900f32d7910ef657afc40d4b91a539","filename":"github/GitRef.py","status":"modified","additions":4,"deletions":6,"changes":10,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/GitRef.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/GitRef.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/GitRef.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #\n@@ -64,9 +65,7 @@ def delete(self):\n \"\"\"\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n- self.url,\n- None,\n- None\n+ self.url\n )\n \n def edit(self, sha, force=github.GithubObject.NotSet):\n@@ -86,8 +85,7 @@ def edit(self, sha, force=github.GithubObject.NotSet):\n headers, data = self._requester.requestJsonAndCheck(\n \"PATCH\",\n self.url,\n- None,\n- post_parameters\n+ input=post_parameters\n )\n self._useAttributes(data)\n \n@@ -99,7 +97,7 @@ def _initAttributes(self):\n def _useAttributes(self, attributes):\n if \"object\" in attributes: # pragma no branch\n assert attributes[\"object\"] is None or isinstance(attributes[\"object\"], dict), attributes[\"object\"]\n- self._object = None if attributes[\"object\"] is None else github.GitObject.GitObject(self._requester, attributes[\"object\"], completed=False)\n+ self._object = None if attributes[\"object\"] is None else github.GitObject.GitObject(self._requester, self._headers, attributes[\"object\"], completed=False)\n if \"ref\" in attributes: # pragma no branch\n assert attributes[\"ref\"] is None or isinstance(attributes[\"ref\"], (str, unicode)), attributes[\"ref\"]\n self._ref = attributes[\"ref\"]"},{"sha":"564b6b86fa11f943796a0630afd00e17f7fee1ce","filename":"github/GitTag.py","status":"modified","additions":3,"deletions":2,"changes":5,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/GitTag.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/GitTag.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/GitTag.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #\n@@ -96,7 +97,7 @@ def _useAttributes(self, attributes):\n self._message = attributes[\"message\"]\n if \"object\" in attributes: # pragma no branch\n assert attributes[\"object\"] is None or isinstance(attributes[\"object\"], dict), attributes[\"object\"]\n- self._object = None if attributes[\"object\"] is None else github.GitObject.GitObject(self._requester, attributes[\"object\"], completed=False)\n+ self._object = None if attributes[\"object\"] is None else github.GitObject.GitObject(self._requester, self._headers, attributes[\"object\"], completed=False)\n if \"sha\" in attributes: # pragma no branch\n assert attributes[\"sha\"] is None or isinstance(attributes[\"sha\"], (str, unicode)), attributes[\"sha\"]\n self._sha = attributes[\"sha\"]\n@@ -105,7 +106,7 @@ def _useAttributes(self, attributes):\n self._tag = attributes[\"tag\"]\n if \"tagger\" in attributes: # pragma no branch\n assert attributes[\"tagger\"] is None or isinstance(attributes[\"tagger\"], dict), attributes[\"tagger\"]\n- self._tagger = None if attributes[\"tagger\"] is None else github.GitAuthor.GitAuthor(self._requester, attributes[\"tagger\"], completed=False)\n+ self._tagger = None if attributes[\"tagger\"] is None else github.GitAuthor.GitAuthor(self._requester, self._headers, attributes[\"tagger\"], completed=False)\n if \"url\" in attributes: # pragma no branch\n assert attributes[\"url\"] is None or isinstance(attributes[\"url\"], (str, unicode)), attributes[\"url\"]\n self._url = attributes[\"url\"]"},{"sha":"b06c5e82369ae5ba3a50d0edc483e3b22c207aad","filename":"github/GitTree.py","status":"modified","additions":2,"deletions":1,"changes":3,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/GitTree.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/GitTree.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/GitTree.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #\n@@ -73,7 +74,7 @@ def _useAttributes(self, attributes):\n if \"tree\" in attributes: # pragma no branch\n assert attributes[\"tree\"] is None or all(isinstance(element, dict) for element in attributes[\"tree\"]), attributes[\"tree\"]\n self._tree = None if attributes[\"tree\"] is None else [\n- github.GitTreeElement.GitTreeElement(self._requester, element, completed=False)\n+ github.GitTreeElement.GitTreeElement(self._requester, self._headers, element, completed=False)\n for element in attributes[\"tree\"]\n ]\n if \"url\" in attributes: # pragma no branch"},{"sha":"e7ae76bbcb10fa76c9b0b3316550045a03f5f81b","filename":"github/GitTreeElement.py","status":"modified","additions":1,"deletions":0,"changes":1,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/GitTreeElement.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/GitTreeElement.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/GitTreeElement.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #"},{"sha":"02e7a75e28a911a1bf691663d2e2b3a6bde84768","filename":"github/GithubException.py","status":"modified","additions":1,"deletions":0,"changes":1,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/GithubException.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/GithubException.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/GithubException.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #"},{"sha":"91c079b70a8508a3ab3f7f740f51bdda35cf87ea","filename":"github/GithubObject.py","status":"modified","additions":74,"deletions":10,"changes":84,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/GithubObject.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/GithubObject.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/GithubObject.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #\n@@ -26,6 +27,7 @@\n import datetime\n \n import GithubException\n+import Consts\n \n \n class _NotSetType:\n@@ -38,14 +40,32 @@ class GithubObject(object):\n \"\"\"\n Base class for all classes representing objects returned by the API.\n \"\"\"\n- def __init__(self, requester, attributes, completed):\n+\n+ '''\n+ A global debug flag to enable header validation by requester for all objects\n+ '''\n+ CHECK_AFTER_INIT_FLAG = False\n+\n+ @classmethod\n+ def setCheckAfterInitFlag(cls, flag):\n+ cls.CHECK_AFTER_INIT_FLAG = flag\n+\n+ def __init__(self, requester, headers, attributes, completed):\n self._requester = requester\n self._initAttributes()\n- self._storeAndUseAttributes(attributes)\n+ self._storeAndUseAttributes(headers, attributes)\n \n- def _storeAndUseAttributes(self, attributes):\n- self._useAttributes(attributes)\n+ # Ask requester to do some checking, for debug and test purpose\n+ # Since it's most handy to access and kinda all-knowing\n+ if self.CHECK_AFTER_INIT_FLAG: # pragma no branch (Flag always set in tests)\n+ requester.check_me(self)\n+\n+ def _storeAndUseAttributes(self, headers, attributes):\n+ # Make sure headers are assigned before calling _useAttributes\n+ # (Some derived classes will use headers in _useAttributes)\n+ self._headers = headers\n self._rawData = attributes\n+ self._useAttributes(attributes)\n \n @property\n def raw_data(self):\n@@ -55,6 +75,14 @@ def raw_data(self):\n self._completeIfNeeded()\n return self._rawData\n \n+ @property\n+ def raw_headers(self):\n+ \"\"\"\n+ :type: dict\n+ \"\"\"\n+ self._completeIfNeeded()\n+ return self._headers\n+\n @staticmethod\n def _parentUrl(url):\n return \"/\".join(url.split(\"/\")[: -1])\n@@ -77,6 +105,20 @@ def _parseDatetime(s):\n else:\n return datetime.datetime.strptime(s, \"%Y-%m-%dT%H:%M:%SZ\")\n \n+ @property\n+ def etag(self):\n+ '''\n+ :type str\n+ '''\n+ return self._headers.get(Consts.RES_ETAG)\n+\n+ @property\n+ def last_modified(self):\n+ '''\n+ :type str\n+ '''\n+ return self._headers.get(Consts.RES_LAST_MODIFED)\n+\n \n class NonCompletableGithubObject(GithubObject):\n def _completeIfNeeded(self):\n@@ -84,8 +126,8 @@ def _completeIfNeeded(self):\n \n \n class CompletableGithubObject(GithubObject):\n- def __init__(self, requester, attributes, completed):\n- GithubObject.__init__(self, requester, attributes, completed)\n+ def __init__(self, requester, headers, attributes, completed):\n+ GithubObject.__init__(self, requester, headers, attributes, completed)\n self.__completed = completed\n \n def _completeIfNotSet(self, value):\n@@ -99,9 +141,31 @@ def _completeIfNeeded(self):\n def __complete(self):\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- self._url,\n- None,\n- None\n+ self._url\n )\n- self._storeAndUseAttributes(data)\n+ self._storeAndUseAttributes(headers, data)\n self.__completed = True\n+\n+ def update(self):\n+ '''\n+ Check and update the object with conditional request\n+ :rtype: Boolean value indicating whether the object is changed\n+ '''\n+ conditionalRequestHeader = dict()\n+ if self.etag is not None:\n+ conditionalRequestHeader[Consts.REQ_IF_NONE_MATCH] = self.etag\n+ if self.last_modified is not None:\n+ conditionalRequestHeader[Consts.REQ_IF_MODIFIED_SINCE] = self.last_modified\n+\n+ status, responseHeaders, output = self._requester.requestJson(\n+ \"GET\",\n+ self._url,\n+ headers=conditionalRequestHeader\n+ )\n+ if status == 304:\n+ return False\n+ else:\n+ headers, data = self._requester._Requester__check(status, responseHeaders, output)\n+ self._storeAndUseAttributes(headers, data)\n+ self.__completed = True\n+ return True"},{"sha":"a8a7022f4602f37b2583f890e324b204cdc89a62","filename":"github/GitignoreTemplate.py","status":"modified","additions":1,"deletions":0,"changes":1,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/GitignoreTemplate.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/GitignoreTemplate.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/GitignoreTemplate.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -3,6 +3,7 @@\n ############################ Copyrights and license ############################\n # #\n # Copyright 2012 Vincent Jacques #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #"},{"sha":"447a0e9a7afa1e845dea9dc82f8c114251ea61bc","filename":"github/Hook.py","status":"modified","additions":7,"deletions":11,"changes":18,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/Hook.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/Hook.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/Hook.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #\n@@ -30,7 +31,7 @@\n \n class Hook(github.GithubObject.CompletableGithubObject):\n \"\"\"\n- This class represents Hooks as returned for example by http://developer.github.com/v3/todo\n+ This class represents Hooks as returned for example by http://developer.github.com/v3/repos/hooks\n \"\"\"\n \n @property\n@@ -112,9 +113,7 @@ def delete(self):\n \"\"\"\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n- self.url,\n- None,\n- None\n+ self.url\n )\n \n def edit(self, name, config, events=github.GithubObject.NotSet, add_events=github.GithubObject.NotSet, remove_events=github.GithubObject.NotSet, active=github.GithubObject.NotSet):\n@@ -149,21 +148,18 @@ def edit(self, name, config, events=github.GithubObject.NotSet, add_events=githu\n headers, data = self._requester.requestJsonAndCheck(\n \"PATCH\",\n self.url,\n- None,\n- post_parameters\n+ input=post_parameters\n )\n self._useAttributes(data)\n \n def test(self):\n \"\"\"\n- :calls: `POST /repos/:owner/:repo/hooks/:id/test `_\n+ :calls: `POST /repos/:owner/:repo/hooks/:id/tests `_\n :rtype: None\n \"\"\"\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n- self.url + \"/test\",\n- None,\n- None\n+ self.url + \"/tests\"\n )\n \n def _initAttributes(self):\n@@ -195,7 +191,7 @@ def _useAttributes(self, attributes):\n self._id = attributes[\"id\"]\n if \"last_response\" in attributes: # pragma no branch\n assert attributes[\"last_response\"] is None or isinstance(attributes[\"last_response\"], dict), attributes[\"last_response\"]\n- self._last_response = None if attributes[\"last_response\"] is None else github.HookResponse.HookResponse(self._requester, attributes[\"last_response\"], completed=False)\n+ self._last_response = None if attributes[\"last_response\"] is None else github.HookResponse.HookResponse(self._requester, self._headers, attributes[\"last_response\"], completed=False)\n if \"name\" in attributes: # pragma no branch\n assert attributes[\"name\"] is None or isinstance(attributes[\"name\"], (str, unicode)), attributes[\"name\"]\n self._name = attributes[\"name\"]"},{"sha":"5653492bbd94babe3e1039d8c30eda3dde4349bb","filename":"github/HookDescription.py","status":"modified","additions":1,"deletions":0,"changes":1,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/HookDescription.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/HookDescription.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/HookDescription.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #"},{"sha":"41e242b3abfb1ac7e961ee5a524cdb0455d5b253","filename":"github/HookResponse.py","status":"modified","additions":1,"deletions":0,"changes":1,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/HookResponse.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/HookResponse.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/HookResponse.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #"},{"sha":"b849e8d459dc6ecbb28278d17680d175a30ba391","filename":"github/Issue.py","status":"modified","additions":18,"deletions":27,"changes":45,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/Issue.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/Issue.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/Issue.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -6,6 +6,7 @@\n # Copyright 2012 Philip Kimmey #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Stuart Glaser #\n # Copyright 2013 Vincent Jacques #\n # #\n@@ -148,7 +149,7 @@ def repository(self):\n if self._repository is github.GithubObject.NotSet:\n # The repository was not set automatically, so it must be looked up by url.\n repo_url = \"/\".join(self.url.split(\"/\")[:-2])\n- self._repository = github.Repository.Repository(self._requester, {'url': repo_url}, False)\n+ self._repository = github.Repository.Repository(self._requester, self._headers, {'url': repo_url}, completed=False)\n return self._repository\n \n @property\n@@ -202,8 +203,7 @@ def add_to_labels(self, *labels):\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n self.url + \"/labels\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n \n def create_comment(self, body):\n@@ -219,10 +219,9 @@ def create_comment(self, body):\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n self.url + \"/comments\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n- return github.IssueComment.IssueComment(self._requester, data, completed=True)\n+ return github.IssueComment.IssueComment(self._requester, headers, data, completed=True)\n \n def delete_labels(self):\n \"\"\"\n@@ -231,9 +230,7 @@ def delete_labels(self):\n \"\"\"\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n- self.url + \"/labels\",\n- None,\n- None\n+ self.url + \"/labels\"\n )\n \n def edit(self, title=github.GithubObject.NotSet, body=github.GithubObject.NotSet, assignee=github.GithubObject.NotSet, state=github.GithubObject.NotSet, milestone=github.GithubObject.NotSet, labels=github.GithubObject.NotSet):\n@@ -269,8 +266,7 @@ def edit(self, title=github.GithubObject.NotSet, body=github.GithubObject.NotSet\n headers, data = self._requester.requestJsonAndCheck(\n \"PATCH\",\n self.url,\n- None,\n- post_parameters\n+ input=post_parameters\n )\n self._useAttributes(data)\n \n@@ -283,11 +279,9 @@ def get_comment(self, id):\n assert isinstance(id, (int, long)), id\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- self._parentUrl(self.url) + \"/comments/\" + str(id),\n- None,\n- None\n+ self._parentUrl(self.url) + \"/comments/\" + str(id)\n )\n- return github.IssueComment.IssueComment(self._requester, data, completed=True)\n+ return github.IssueComment.IssueComment(self._requester, headers, data, completed=True)\n \n def get_comments(self):\n \"\"\"\n@@ -334,9 +328,7 @@ def remove_from_labels(self, label):\n assert isinstance(label, github.Label.Label), label\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n- self.url + \"/labels/\" + label._identity,\n- None,\n- None\n+ self.url + \"/labels/\" + label._identity\n )\n \n def set_labels(self, *labels):\n@@ -350,8 +342,7 @@ def set_labels(self, *labels):\n headers, data = self._requester.requestJsonAndCheck(\n \"PUT\",\n self.url + \"/labels\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n \n @property\n@@ -381,7 +372,7 @@ def _initAttributes(self):\n def _useAttributes(self, attributes):\n if \"assignee\" in attributes: # pragma no branch\n assert attributes[\"assignee\"] is None or isinstance(attributes[\"assignee\"], dict), attributes[\"assignee\"]\n- self._assignee = None if attributes[\"assignee\"] is None else github.NamedUser.NamedUser(self._requester, attributes[\"assignee\"], completed=False)\n+ self._assignee = None if attributes[\"assignee\"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes[\"assignee\"], completed=False)\n if \"body\" in attributes: # pragma no branch\n assert attributes[\"body\"] is None or isinstance(attributes[\"body\"], (str, unicode)), attributes[\"body\"]\n self._body = attributes[\"body\"]\n@@ -390,7 +381,7 @@ def _useAttributes(self, attributes):\n self._closed_at = self._parseDatetime(attributes[\"closed_at\"])\n if \"closed_by\" in attributes: # pragma no branch\n assert attributes[\"closed_by\"] is None or isinstance(attributes[\"closed_by\"], dict), attributes[\"closed_by\"]\n- self._closed_by = None if attributes[\"closed_by\"] is None else github.NamedUser.NamedUser(self._requester, attributes[\"closed_by\"], completed=False)\n+ self._closed_by = None if attributes[\"closed_by\"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes[\"closed_by\"], completed=False)\n if \"comments\" in attributes: # pragma no branch\n assert attributes[\"comments\"] is None or isinstance(attributes[\"comments\"], (int, long)), attributes[\"comments\"]\n self._comments = attributes[\"comments\"]\n@@ -406,21 +397,21 @@ def _useAttributes(self, attributes):\n if \"labels\" in attributes: # pragma no branch\n assert attributes[\"labels\"] is None or all(isinstance(element, dict) for element in attributes[\"labels\"]), attributes[\"labels\"]\n self._labels = None if attributes[\"labels\"] is None else [\n- github.Label.Label(self._requester, element, completed=False)\n+ github.Label.Label(self._requester, self._headers, element, completed=False)\n for element in attributes[\"labels\"]\n ]\n if \"milestone\" in attributes: # pragma no branch\n assert attributes[\"milestone\"] is None or isinstance(attributes[\"milestone\"], dict), attributes[\"milestone\"]\n- self._milestone = None if attributes[\"milestone\"] is None else github.Milestone.Milestone(self._requester, attributes[\"milestone\"], completed=False)\n+ self._milestone = None if attributes[\"milestone\"] is None else github.Milestone.Milestone(self._requester, self._headers, attributes[\"milestone\"], completed=False)\n if \"number\" in attributes: # pragma no branch\n assert attributes[\"number\"] is None or isinstance(attributes[\"number\"], (int, long)), attributes[\"number\"]\n self._number = attributes[\"number\"]\n if \"pull_request\" in attributes: # pragma no branch\n assert attributes[\"pull_request\"] is None or isinstance(attributes[\"pull_request\"], dict), attributes[\"pull_request\"]\n- self._pull_request = None if attributes[\"pull_request\"] is None else github.IssuePullRequest.IssuePullRequest(self._requester, attributes[\"pull_request\"], completed=False)\n+ self._pull_request = None if attributes[\"pull_request\"] is None else github.IssuePullRequest.IssuePullRequest(self._requester, self._headers, attributes[\"pull_request\"], completed=False)\n if \"repository\" in attributes: # pragma no branch\n assert attributes[\"repository\"] is None or isinstance(attributes[\"repository\"], dict), attributes[\"repository\"]\n- self._repository = None if attributes[\"repository\"] is None else github.Repository.Repository(self._requester, attributes[\"repository\"], completed=False)\n+ self._repository = None if attributes[\"repository\"] is None else github.Repository.Repository(self._requester, self._headers, attributes[\"repository\"], completed=False)\n if \"state\" in attributes: # pragma no branch\n assert attributes[\"state\"] is None or isinstance(attributes[\"state\"], (str, unicode)), attributes[\"state\"]\n self._state = attributes[\"state\"]\n@@ -435,4 +426,4 @@ def _useAttributes(self, attributes):\n self._url = attributes[\"url\"]\n if \"user\" in attributes: # pragma no branch\n assert attributes[\"user\"] is None or isinstance(attributes[\"user\"], dict), attributes[\"user\"]\n- self._user = None if attributes[\"user\"] is None else github.NamedUser.NamedUser(self._requester, attributes[\"user\"], completed=False)\n+ self._user = None if attributes[\"user\"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes[\"user\"], completed=False)"},{"sha":"149a6f6f1eafaf177dd951aa211f659a6975d72f","filename":"github/IssueComment.py","status":"modified","additions":4,"deletions":6,"changes":10,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/IssueComment.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/IssueComment.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/IssueComment.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Michael Stead #\n # Copyright 2013 Vincent Jacques #\n # #\n@@ -97,9 +98,7 @@ def delete(self):\n \"\"\"\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n- self.url,\n- None,\n- None\n+ self.url\n )\n \n def edit(self, body):\n@@ -115,8 +114,7 @@ def edit(self, body):\n headers, data = self._requester.requestJsonAndCheck(\n \"PATCH\",\n self.url,\n- None,\n- post_parameters\n+ input=post_parameters\n )\n self._useAttributes(data)\n \n@@ -150,4 +148,4 @@ def _useAttributes(self, attributes):\n self._html_url = attributes[\"html_url\"]\n if \"user\" in attributes: # pragma no branch\n assert attributes[\"user\"] is None or isinstance(attributes[\"user\"], dict), attributes[\"user\"]\n- self._user = None if attributes[\"user\"] is None else github.NamedUser.NamedUser(self._requester, attributes[\"user\"], completed=False)\n+ self._user = None if attributes[\"user\"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes[\"user\"], completed=False)"},{"sha":"aca4cdf8a90313170980f3b75d11de61c6e3d202","filename":"github/IssueEvent.py","status":"modified","additions":3,"deletions":2,"changes":5,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/IssueEvent.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/IssueEvent.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/IssueEvent.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #\n@@ -102,7 +103,7 @@ def _initAttributes(self):\n def _useAttributes(self, attributes):\n if \"actor\" in attributes: # pragma no branch\n assert attributes[\"actor\"] is None or isinstance(attributes[\"actor\"], dict), attributes[\"actor\"]\n- self._actor = None if attributes[\"actor\"] is None else github.NamedUser.NamedUser(self._requester, attributes[\"actor\"], completed=False)\n+ self._actor = None if attributes[\"actor\"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes[\"actor\"], completed=False)\n if \"commit_id\" in attributes: # pragma no branch\n assert attributes[\"commit_id\"] is None or isinstance(attributes[\"commit_id\"], (str, unicode)), attributes[\"commit_id\"]\n self._commit_id = attributes[\"commit_id\"]\n@@ -117,7 +118,7 @@ def _useAttributes(self, attributes):\n self._id = attributes[\"id\"]\n if \"issue\" in attributes: # pragma no branch\n assert attributes[\"issue\"] is None or isinstance(attributes[\"issue\"], dict), attributes[\"issue\"]\n- self._issue = None if attributes[\"issue\"] is None else github.Issue.Issue(self._requester, attributes[\"issue\"], completed=False)\n+ self._issue = None if attributes[\"issue\"] is None else github.Issue.Issue(self._requester, self._headers, attributes[\"issue\"], completed=False)\n if \"url\" in attributes: # pragma no branch\n assert attributes[\"url\"] is None or isinstance(attributes[\"url\"], (str, unicode)), attributes[\"url\"]\n self._url = attributes[\"url\"]"},{"sha":"ae7e6b6c203695bc39cd5d057f80df638f8e8ccb","filename":"github/IssuePullRequest.py","status":"modified","additions":1,"deletions":0,"changes":1,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/IssuePullRequest.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/IssuePullRequest.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/IssuePullRequest.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #"},{"sha":"813cd5f015c056fdd9e1b0e2e4dc0d9265b5f238","filename":"github/Label.py","status":"modified","additions":3,"deletions":5,"changes":8,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/Label.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/Label.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/Label.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # Copyright 2013 martinqt #\n # #\n@@ -65,9 +66,7 @@ def delete(self):\n \"\"\"\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n- self.url,\n- None,\n- None\n+ self.url\n )\n \n def edit(self, name, color):\n@@ -86,8 +85,7 @@ def edit(self, name, color):\n headers, data = self._requester.requestJsonAndCheck(\n \"PATCH\",\n self.url,\n- None,\n- post_parameters\n+ input=post_parameters\n )\n self._useAttributes(data)\n "},{"sha":"cfe48d679963a0e10f861b76fa9a80cfd2ad85cc","filename":"github/Legacy.py","status":"modified","additions":4,"deletions":3,"changes":7,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/Legacy.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/Legacy.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/Legacy.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -5,6 +5,7 @@\n # Copyright 2012 Steve English #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #\n@@ -57,12 +58,12 @@ def get_page(self, page):\n headers, data = self.__requester.requestJsonAndCheck(\n \"GET\",\n self.__url,\n- args,\n- None\n+ parameters=args\n )\n self.__continue = len(data[self.__key]) > 0\n+\n return [\n- self.__contentClass(self.__requester, self.__convert(element), completed=False)\n+ self.__contentClass(self.__requester, headers, self.__convert(element), completed=False)\n for element in data[self.__key]\n ]\n "},{"sha":"a4af1a618da0a5d865eb1675fd96a085bb0ab680","filename":"github/MainClass.py","status":"modified","additions":113,"deletions":44,"changes":157,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/MainClass.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/MainClass.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/MainClass.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -2,6 +2,7 @@\n \n ############################ Copyrights and license ############################\n # #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Ed Jackson #\n # Copyright 2013 Jonathan J Hunt #\n # Copyright 2013 Peter Golm #\n@@ -25,6 +26,7 @@\n ################################################################################\n \n import urllib\n+import pickle\n \n from Requester import Requester\n import AuthenticatedUser\n@@ -38,6 +40,8 @@\n import HookDescription\n import GitignoreTemplate\n import Notification\n+import Status\n+import StatusMessage\n \n \n DEFAULT_BASE_URL = \"https://api.github.com\"\n@@ -91,8 +95,12 @@ def __get_per_page(self):\n def __set_per_page(self, value):\n self.__requester.per_page = value\n \n+ # v2: Remove this property? Why should it be necessary to read/modify it after construction\n per_page = property(__get_per_page, __set_per_page)\n \n+ # v2: Provide a unified way to access values of headers of last response\n+ # v2: (and add/keep ad hoc properties for specific useful headers like rate limiting, oauth scopes, etc.)\n+ # v2: Return an instance of a class: using a tuple did not allow to add a field \"resettime\"\n @property\n def rate_limiting(self):\n \"\"\"\n@@ -103,9 +111,7 @@ def rate_limiting(self):\n if limit < 0:\n self.__requester.requestJsonAndCheck(\n 'GET',\n- '/rate_limit',\n- None,\n- None\n+ '/rate_limit'\n )\n return self.__requester.rate_limiting\n \n@@ -118,9 +124,7 @@ def rate_limiting_resettime(self):\n if self.__requester.rate_limiting_resettime == 0:\n self.__requester.requestJsonAndCheck(\n 'GET',\n- '/rate_limit',\n- None,\n- None\n+ '/rate_limit'\n )\n return self.__requester.rate_limiting_resettime\n \n@@ -139,15 +143,13 @@ def get_user(self, login=github.GithubObject.NotSet):\n \"\"\"\n assert login is github.GithubObject.NotSet or isinstance(login, (str, unicode)), login\n if login is github.GithubObject.NotSet:\n- return AuthenticatedUser.AuthenticatedUser(self.__requester, {\"url\": \"/user\"}, completed=False)\n+ return AuthenticatedUser.AuthenticatedUser(self.__requester, {}, {\"url\": \"/user\"}, completed=False)\n else:\n headers, data = self.__requester.requestJsonAndCheck(\n \"GET\",\n- \"/users/\" + login,\n- None,\n- None\n+ \"/users/\" + login\n )\n- return github.NamedUser.NamedUser(self.__requester, data, completed=True)\n+ return github.NamedUser.NamedUser(self.__requester, headers, data, completed=True)\n \n def get_users(self, since=github.GithubObject.NotSet):\n \"\"\"\n@@ -175,11 +177,9 @@ def get_organization(self, login):\n assert isinstance(login, (str, unicode)), login\n headers, data = self.__requester.requestJsonAndCheck(\n \"GET\",\n- \"/orgs/\" + login,\n- None,\n- None\n+ \"/orgs/\" + login\n )\n- return github.Organization.Organization(self.__requester, data, completed=True)\n+ return github.Organization.Organization(self.__requester, headers, data, completed=True)\n \n def get_repo(self, full_name):\n \"\"\"\n@@ -189,11 +189,26 @@ def get_repo(self, full_name):\n assert isinstance(full_name, (str, unicode)), full_name\n headers, data = self.__requester.requestJsonAndCheck(\n \"GET\",\n- \"/repos/\" + full_name,\n- None,\n- None\n+ \"/repos/\" + full_name\n+ )\n+ return Repository.Repository(self.__requester, headers, data, completed=True)\n+\n+ def get_repos(self, since=github.GithubObject.NotSet):\n+ \"\"\"\n+ :calls: `GET /repositories `_\n+ :param since: integer\n+ :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Repository.Repository`\n+ \"\"\"\n+ assert since is github.GithubObject.NotSet or isinstance(since, (int, long)), since\n+ url_parameters = dict()\n+ if since is not github.GithubObject.NotSet:\n+ url_parameters[\"since\"] = since\n+ return github.PaginatedList.PaginatedList(\n+ github.Repository.Repository,\n+ self.__requester,\n+ \"/repositories\",\n+ url_parameters\n )\n- return Repository.Repository(self.__requester, data, completed=True)\n \n def get_gist(self, id):\n \"\"\"\n@@ -204,11 +219,9 @@ def get_gist(self, id):\n assert isinstance(id, (str, unicode)), id\n headers, data = self.__requester.requestJsonAndCheck(\n \"GET\",\n- \"/gists/\" + id,\n- None,\n- None\n+ \"/gists/\" + id\n )\n- return github.Gist.Gist(self.__requester, data, completed=True)\n+ return github.Gist.Gist(self.__requester, headers, data, completed=True)\n \n def get_gists(self):\n \"\"\"\n@@ -266,11 +279,9 @@ def legacy_search_user_by_email(self, email):\n assert isinstance(email, (str, unicode)), email\n headers, data = self.__requester.requestJsonAndCheck(\n \"GET\",\n- \"/legacy/user/email/\" + email,\n- None,\n- None\n+ \"/legacy/user/email/\" + email\n )\n- return github.NamedUser.NamedUser(self.__requester, Legacy.convertUser(data[\"user\"]), completed=False)\n+ return github.NamedUser.NamedUser(self.__requester, headers, Legacy.convertUser(data[\"user\"]), completed=False)\n \n def render_markdown(self, text, context=github.GithubObject.NotSet):\n \"\"\"\n@@ -290,23 +301,20 @@ def render_markdown(self, text, context=github.GithubObject.NotSet):\n status, headers, data = self.__requester.requestJson(\n \"POST\",\n \"/markdown\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n return data\n \n def get_hooks(self):\n \"\"\"\n :calls: `GET /hooks `_\n- :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.HookDescription.HookDescription`\n+ :rtype: list of :class:`github.HookDescription.HookDescription`\n \"\"\"\n headers, data = self.__requester.requestJsonAndCheck(\n \"GET\",\n- \"/hooks\",\n- None,\n- None\n+ \"/hooks\"\n )\n- return [HookDescription.HookDescription(self.__requester, attributes, completed=True) for attributes in data]\n+ return [HookDescription.HookDescription(self.__requester, headers, attributes, completed=True) for attributes in data]\n \n def get_gitignore_templates(self):\n \"\"\"\n@@ -315,9 +323,7 @@ def get_gitignore_templates(self):\n \"\"\"\n headers, data = self.__requester.requestJsonAndCheck(\n \"GET\",\n- \"/gitignore/templates\",\n- None,\n- None\n+ \"/gitignore/templates\"\n )\n return data\n \n@@ -329,18 +335,81 @@ def get_gitignore_template(self, name):\n assert isinstance(name, (str, unicode)), name\n headers, attributes = self.__requester.requestJsonAndCheck(\n \"GET\",\n- \"/gitignore/templates/\" + name,\n- None,\n- None\n+ \"/gitignore/templates/\" + name\n )\n- return GitignoreTemplate.GitignoreTemplate(self.__requester, attributes, completed=True)\n+ return GitignoreTemplate.GitignoreTemplate(self.__requester, headers, attributes, completed=True)\n \n- def create_from_raw_data(self, klass, raw_data):\n+ def create_from_raw_data(self, klass, raw_data, headers={}):\n \"\"\"\n- Creates an object from raw_data previously obtained by :attr:`github.GithubObject.GithubObject.raw_data`\n+ Creates an object from raw_data previously obtained by :attr:`github.GithubObject.GithubObject.raw_data`,\n+ and optionaly headers previously obtained by :attr:`github.GithubObject.GithubObject.raw_headers`.\n \n :param klass: the class of the object to create\n :param raw_data: dict\n+ :param headers: dict\n :rtype: instance of class ``klass``\n \"\"\"\n- return klass(self.__requester, raw_data, completed=True)\n+ return klass(self.__requester, headers, raw_data, completed=True)\n+\n+ def dump(self, obj, file, protocol=0):\n+ \"\"\"\n+ Dumps (pickles) a PyGithub object to a file-like object.\n+ Some effort is made to not pickle sensitive informations like the Github credentials used in the :class:`Github` instance.\n+ But NO EFFORT is made to remove sensitive information from the object's attributes.\n+\n+ :param obj: the object to pickle\n+ :param file: the file-like object to pickle to\n+ :param protocol: the `pickling protocol `_\n+ \"\"\"\n+ pickle.dump((obj.__class__, obj.raw_data, obj.raw_headers), file, protocol)\n+\n+ def load(self, f):\n+ \"\"\"\n+ Loads (unpickles) a PyGithub object from a file-like object.\n+\n+ :param f: the file-like object to unpickle from\n+ :return: the unpickled object\n+ \"\"\"\n+ return self.create_from_raw_data(*pickle.load(f))\n+\n+ def get_api_status(self):\n+ \"\"\"\n+ This doesn't work with a Github Enterprise installation, because it always targets https://status.github.com.\n+\n+ :calls: `GET /api/status.json `_\n+ :rtype: :class:`github.Status.Status`\n+ \"\"\"\n+ headers, attributes = self.__requester.requestJsonAndCheck(\n+ \"GET\",\n+ \"/api/status.json\",\n+ cnx=\"status\"\n+ )\n+ return Status.Status(self.__requester, headers, attributes, completed=True)\n+\n+ def get_last_api_status_message(self):\n+ \"\"\"\n+ This doesn't work with a Github Enterprise installation, because it always targets https://status.github.com.\n+\n+ :calls: `GET /api/last-message.json `_\n+ :rtype: :class:`github.StatusMessage.StatusMessage`\n+ \"\"\"\n+ headers, attributes = self.__requester.requestJsonAndCheck(\n+ \"GET\",\n+ \"/api/last-message.json\",\n+ cnx=\"status\"\n+ )\n+ return StatusMessage.StatusMessage(self.__requester, headers, attributes, completed=True)\n+\n+ def get_api_status_messages(self):\n+ \"\"\"\n+ This doesn't work with a Github Enterprise installation, because it always targets https://status.github.com.\n+\n+ :calls: `GET /api/messages.json `_\n+ :rtype: list of :class:`github.StatusMessage.StatusMessage`\n+ \"\"\"\n+ headers, data = self.__requester.requestJsonAndCheck(\n+ \"GET\",\n+ \"/api/messages.json\",\n+ cnx=\"status\"\n+ )\n+ return [StatusMessage.StatusMessage(self.__requester, headers, attributes, completed=True) for attributes in data]"},{"sha":"c07ec38911b95b9baaccd7926cab22c549a9e5dd","filename":"github/Milestone.py","status":"modified","additions":4,"deletions":6,"changes":10,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/Milestone.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/Milestone.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/Milestone.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # Copyright 2013 martinqt #\n # #\n@@ -133,9 +134,7 @@ def delete(self):\n \"\"\"\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n- self.url,\n- None,\n- None\n+ self.url\n )\n \n def edit(self, title, state=github.GithubObject.NotSet, description=github.GithubObject.NotSet, due_on=github.GithubObject.NotSet):\n@@ -163,8 +162,7 @@ def edit(self, title, state=github.GithubObject.NotSet, description=github.Githu\n headers, data = self._requester.requestJsonAndCheck(\n \"PATCH\",\n self.url,\n- None,\n- post_parameters\n+ input=post_parameters\n )\n self._useAttributes(data)\n \n@@ -206,7 +204,7 @@ def _useAttributes(self, attributes):\n self._created_at = self._parseDatetime(attributes[\"created_at\"])\n if \"creator\" in attributes: # pragma no branch\n assert attributes[\"creator\"] is None or isinstance(attributes[\"creator\"], dict), attributes[\"creator\"]\n- self._creator = None if attributes[\"creator\"] is None else github.NamedUser.NamedUser(self._requester, attributes[\"creator\"], completed=False)\n+ self._creator = None if attributes[\"creator\"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes[\"creator\"], completed=False)\n if \"description\" in attributes: # pragma no branch\n assert attributes[\"description\"] is None or isinstance(attributes[\"description\"], (str, unicode)), attributes[\"description\"]\n self._description = attributes[\"description\"]"},{"sha":"ec9bfbeddafff7bdf23258a08dc9f0ac8f4d964c","filename":"github/NamedUser.py","status":"modified","additions":19,"deletions":8,"changes":27,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/NamedUser.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/NamedUser.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/NamedUser.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -5,6 +5,7 @@\n # Copyright 2012 Steve English #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #\n@@ -268,10 +269,9 @@ def create_gist(self, public, files, description=github.GithubObject.NotSet):\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n self.url + \"/gists\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n- return github.Gist.Gist(self._requester, data, completed=True)\n+ return github.Gist.Gist(self._requester, headers, data, completed=True)\n \n def get_events(self):\n \"\"\"\n@@ -390,11 +390,9 @@ def get_repo(self, name):\n assert isinstance(name, (str, unicode)), name\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- \"/repos/\" + self.login + \"/\" + name,\n- None,\n- None\n+ \"/repos/\" + self.login + \"/\" + name\n )\n- return github.Repository.Repository(self._requester, data, completed=True)\n+ return github.Repository.Repository(self._requester, headers, data, completed=True)\n \n def get_repos(self, type=github.GithubObject.NotSet):\n \"\"\"\n@@ -449,6 +447,19 @@ def get_watched(self):\n None\n )\n \n+ def has_in_following(self, following):\n+ \"\"\"\n+ :calls: `GET /user/:user/following/:target_user `_\n+ :param following: :class:`github.NamedUser.NamedUser`\n+ :rtype: bool\n+ \"\"\"\n+ assert isinstance(following, github.NamedUser.NamedUser), following\n+ status, headers, data = self._requester.requestJson(\n+ \"GET\",\n+ self.url + \"/following/\" + following._identity\n+ )\n+ return status == 204\n+\n @property\n def _identity(self):\n return self.login\n@@ -541,7 +552,7 @@ def _useAttributes(self, attributes):\n self._owned_private_repos = attributes[\"owned_private_repos\"]\n if \"plan\" in attributes: # pragma no branch\n assert attributes[\"plan\"] is None or isinstance(attributes[\"plan\"], dict), attributes[\"plan\"]\n- self._plan = None if attributes[\"plan\"] is None else github.Plan.Plan(self._requester, attributes[\"plan\"], completed=False)\n+ self._plan = None if attributes[\"plan\"] is None else github.Plan.Plan(self._requester, self._headers, attributes[\"plan\"], completed=False)\n if \"private_gists\" in attributes: # pragma no branch\n assert attributes[\"private_gists\"] is None or isinstance(attributes[\"private_gists\"], (int, long)), attributes[\"private_gists\"]\n self._private_gists = attributes[\"private_gists\"]"},{"sha":"bb1c96b6780fb31573952d049166fd68ecb5a64a","filename":"github/Notification.py","status":"modified","additions":3,"deletions":2,"changes":5,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/Notification.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/Notification.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/Notification.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -2,6 +2,7 @@\n \n ############################ Copyrights and license ############################\n # #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Peter Golm #\n # Copyright 2013 Vincent Jacques #\n # Copyright 2013 martinqt #\n@@ -104,10 +105,10 @@ def _useAttributes(self, attributes):\n self._id = attributes[\"id\"]\n if \"repository\" in attributes: # pragma no branch\n assert attributes[\"repository\"] is None or isinstance(attributes[\"repository\"], dict), attributes[\"repository\"]\n- self._repository = None if attributes[\"repository\"] is None else github.Repository.Repository(self._requester, attributes[\"repository\"], completed=False)\n+ self._repository = None if attributes[\"repository\"] is None else github.Repository.Repository(self._requester, self._headers, attributes[\"repository\"], completed=False)\n if \"subject\" in attributes: # pragma no branch\n assert attributes[\"subject\"] is None or isinstance(attributes[\"subject\"], dict), attributes[\"subject\"]\n- self._subject = None if attributes[\"subject\"] is None else github.NotificationSubject.NotificationSubject(self._requester, attributes[\"subject\"], completed=False)\n+ self._subject = None if attributes[\"subject\"] is None else github.NotificationSubject.NotificationSubject(self._requester, self._headers, attributes[\"subject\"], completed=False)\n if \"reason\" in attributes: # pragma no branch\n assert attributes[\"reason\"] is None or isinstance(attributes[\"reason\"], (str, unicode)), attributes[\"reason\"]\n self._reason = attributes[\"reason\"]"},{"sha":"7e1ce3adbf00f58e49724f0af978be5294a5b6f1","filename":"github/NotificationSubject.py","status":"modified","additions":1,"deletions":0,"changes":1,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/NotificationSubject.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/NotificationSubject.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/NotificationSubject.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -2,6 +2,7 @@\n \n ############################ Copyrights and license ############################\n # #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #"},{"sha":"68245f3e28173790bcae32b16120ab027b995188","filename":"github/Organization.py","status":"modified","additions":18,"deletions":35,"changes":53,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/Organization.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/Organization.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/Organization.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -5,6 +5,7 @@\n # Copyright 2012 Steve English #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # Copyright 2013 martinqt #\n # #\n@@ -243,9 +244,7 @@ def add_to_public_members(self, public_member):\n assert isinstance(public_member, github.NamedUser.NamedUser), public_member\n headers, data = self._requester.requestJsonAndCheck(\n \"PUT\",\n- self.url + \"/public_members/\" + public_member._identity,\n- None,\n- None\n+ self.url + \"/public_members/\" + public_member._identity\n )\n \n def create_fork(self, repo):\n@@ -261,10 +260,9 @@ def create_fork(self, repo):\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n \"/repos/\" + repo.owner.login + \"/\" + repo.name + \"/forks\",\n- url_parameters,\n- None\n+ parameters=url_parameters\n )\n- return github.Repository.Repository(self._requester, data, completed=True)\n+ return github.Repository.Repository(self._requester, headers, data, completed=True)\n \n def create_repo(self, name, description=github.GithubObject.NotSet, homepage=github.GithubObject.NotSet, private=github.GithubObject.NotSet, has_issues=github.GithubObject.NotSet, has_wiki=github.GithubObject.NotSet, has_downloads=github.GithubObject.NotSet, team_id=github.GithubObject.NotSet, auto_init=github.GithubObject.NotSet, gitignore_template=github.GithubObject.NotSet):\n \"\"\"\n@@ -315,10 +313,9 @@ def create_repo(self, name, description=github.GithubObject.NotSet, homepage=git\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n self.url + \"/repos\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n- return github.Repository.Repository(self._requester, data, completed=True)\n+ return github.Repository.Repository(self._requester, headers, data, completed=True)\n \n def create_team(self, name, repo_names=github.GithubObject.NotSet, permission=github.GithubObject.NotSet):\n \"\"\"\n@@ -341,10 +338,9 @@ def create_team(self, name, repo_names=github.GithubObject.NotSet, permission=gi\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n self.url + \"/teams\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n- return github.Team.Team(self._requester, data, completed=True)\n+ return github.Team.Team(self._requester, headers, data, completed=True)\n \n def edit(self, billing_email=github.GithubObject.NotSet, blog=github.GithubObject.NotSet, company=github.GithubObject.NotSet, email=github.GithubObject.NotSet, location=github.GithubObject.NotSet, name=github.GithubObject.NotSet):\n \"\"\"\n@@ -379,8 +375,7 @@ def edit(self, billing_email=github.GithubObject.NotSet, blog=github.GithubObjec\n headers, data = self._requester.requestJsonAndCheck(\n \"PATCH\",\n self.url,\n- None,\n- post_parameters\n+ input=post_parameters\n )\n self._useAttributes(data)\n \n@@ -467,11 +462,9 @@ def get_repo(self, name):\n assert isinstance(name, (str, unicode)), name\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- \"/repos/\" + self.login + \"/\" + name,\n- None,\n- None\n+ \"/repos/\" + self.login + \"/\" + name\n )\n- return github.Repository.Repository(self._requester, data, completed=True)\n+ return github.Repository.Repository(self._requester, headers, data, completed=True)\n \n def get_repos(self, type=github.GithubObject.NotSet):\n \"\"\"\n@@ -499,11 +492,9 @@ def get_team(self, id):\n assert isinstance(id, (int, long)), id\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- \"/teams/\" + str(id),\n- None,\n- None\n+ \"/teams/\" + str(id)\n )\n- return github.Team.Team(self._requester, data, completed=True)\n+ return github.Team.Team(self._requester, headers, data, completed=True)\n \n def get_teams(self):\n \"\"\"\n@@ -526,9 +517,7 @@ def has_in_members(self, member):\n assert isinstance(member, github.NamedUser.NamedUser), member\n status, headers, data = self._requester.requestJson(\n \"GET\",\n- self.url + \"/members/\" + member._identity,\n- None,\n- None\n+ self.url + \"/members/\" + member._identity\n )\n return status == 204\n \n@@ -541,9 +530,7 @@ def has_in_public_members(self, public_member):\n assert isinstance(public_member, github.NamedUser.NamedUser), public_member\n status, headers, data = self._requester.requestJson(\n \"GET\",\n- self.url + \"/public_members/\" + public_member._identity,\n- None,\n- None\n+ self.url + \"/public_members/\" + public_member._identity\n )\n return status == 204\n \n@@ -556,9 +543,7 @@ def remove_from_members(self, member):\n assert isinstance(member, github.NamedUser.NamedUser), member\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n- self.url + \"/members/\" + member._identity,\n- None,\n- None\n+ self.url + \"/members/\" + member._identity\n )\n \n def remove_from_public_members(self, public_member):\n@@ -570,9 +555,7 @@ def remove_from_public_members(self, public_member):\n assert isinstance(public_member, github.NamedUser.NamedUser), public_member\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n- self.url + \"/public_members/\" + public_member._identity,\n- None,\n- None\n+ self.url + \"/public_members/\" + public_member._identity\n )\n \n def _initAttributes(self):\n@@ -655,7 +638,7 @@ def _useAttributes(self, attributes):\n self._owned_private_repos = attributes[\"owned_private_repos\"]\n if \"plan\" in attributes: # pragma no branch\n assert attributes[\"plan\"] is None or isinstance(attributes[\"plan\"], dict), attributes[\"plan\"]\n- self._plan = None if attributes[\"plan\"] is None else github.Plan.Plan(self._requester, attributes[\"plan\"], completed=False)\n+ self._plan = None if attributes[\"plan\"] is None else github.Plan.Plan(self._requester, self._headers, attributes[\"plan\"], completed=False)\n if \"private_gists\" in attributes: # pragma no branch\n assert attributes[\"private_gists\"] is None or isinstance(attributes[\"private_gists\"], (int, long)), attributes[\"private_gists\"]\n self._private_gists = attributes[\"private_gists\"]"},{"sha":"4c22b991def262d6e5032a708ba610f65417f1b9","filename":"github/PaginatedList.py","status":"modified","additions":18,"deletions":5,"changes":23,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/PaginatedList.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/PaginatedList.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/PaginatedList.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Bill Mill #\n # Copyright 2013 Vincent Jacques #\n # Copyright 2013 davidbrai #\n@@ -118,7 +119,11 @@ def __init__(self, contentClass, requester, firstUrl, firstParams):\n self._reversed = False\n \n def _getLastPageUrl(self):\n- headers, data = self.__requester.requestJsonAndCheck(\"GET\", self.__firstUrl, self.__nextParams, None)\n+ headers, data = self.__requester.requestJsonAndCheck(\n+ \"GET\",\n+ self.__firstUrl,\n+ parameters=self.__nextParams\n+ )\n links = self.__parseLinkHeader(headers)\n lastUrl = links.get(\"last\")\n return lastUrl\n@@ -139,7 +144,11 @@ def _couldGrow(self):\n return self.__nextUrl is not None\n \n def _fetchNextPage(self):\n- headers, data = self.__requester.requestJsonAndCheck(\"GET\", self.__nextUrl, self.__nextParams, None)\n+ headers, data = self.__requester.requestJsonAndCheck(\n+ \"GET\",\n+ self.__nextUrl,\n+ parameters=self.__nextParams\n+ )\n \n self.__nextUrl = None\n if len(data) > 0:\n@@ -152,7 +161,7 @@ def _fetchNextPage(self):\n self.__nextParams = None\n \n content = [\n- self.__contentClass(self.__requester, element, completed=False)\n+ self.__contentClass(self.__requester, headers, element, completed=False)\n for element in data\n ]\n if self._reversed:\n@@ -176,9 +185,13 @@ def get_page(self, page):\n params[\"page\"] = page + 1\n if self.__requester.per_page != 30:\n params[\"per_page\"] = self.__requester.per_page\n- headers, data = self.__requester.requestJsonAndCheck(\"GET\", self.__firstUrl, params, None)\n+ headers, data = self.__requester.requestJsonAndCheck(\n+ \"GET\",\n+ self.__firstUrl,\n+ parameters=params\n+ )\n \n return [\n- self.__contentClass(self.__requester, element, completed=False)\n+ self.__contentClass(self.__requester, headers, element, completed=False)\n for element in data\n ]"},{"sha":"3a3b420615062ee9e8a4fff31b65bd575c65d5a9","filename":"github/Permissions.py","status":"modified","additions":1,"deletions":0,"changes":1,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/Permissions.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/Permissions.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/Permissions.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #"},{"sha":"99a3c3a6d9b4bef7b9bc78f0bd247a4083a2285e","filename":"github/Plan.py","status":"modified","additions":1,"deletions":0,"changes":1,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/Plan.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/Plan.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/Plan.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #"},{"sha":"85867c60e0f888692b9410f45be43cb69528ca0b","filename":"github/PullRequest.py","status":"modified","additions":18,"deletions":27,"changes":45,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/PullRequest.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/PullRequest.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/PullRequest.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -5,6 +5,7 @@\n # Copyright 2012 Michael Stead #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # Copyright 2013 martinqt #\n # #\n@@ -291,10 +292,9 @@ def create_review_comment(self, body, commit_id, path, position):\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n self.url + \"/comments\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n- return github.PullRequestComment.PullRequestComment(self._requester, data, completed=True)\n+ return github.PullRequestComment.PullRequestComment(self._requester, headers, data, completed=True)\n \n def create_issue_comment(self, body):\n \"\"\"\n@@ -309,10 +309,9 @@ def create_issue_comment(self, body):\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n self._parentUrl(self._parentUrl(self.url)) + \"/issues/\" + str(self.number) + \"/comments\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n- return github.IssueComment.IssueComment(self._requester, data, completed=True)\n+ return github.IssueComment.IssueComment(self._requester, headers, data, completed=True)\n \n def edit(self, title=github.GithubObject.NotSet, body=github.GithubObject.NotSet, state=github.GithubObject.NotSet):\n \"\"\"\n@@ -335,8 +334,7 @@ def edit(self, title=github.GithubObject.NotSet, body=github.GithubObject.NotSet\n headers, data = self._requester.requestJsonAndCheck(\n \"PATCH\",\n self.url,\n- None,\n- post_parameters\n+ input=post_parameters\n )\n self._useAttributes(data)\n \n@@ -357,11 +355,9 @@ def get_review_comment(self, id):\n assert isinstance(id, (int, long)), id\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- self._parentUrl(self.url) + \"/comments/\" + str(id),\n- None,\n- None\n+ self._parentUrl(self.url) + \"/comments/\" + str(id)\n )\n- return github.PullRequestComment.PullRequestComment(self._requester, data, completed=True)\n+ return github.PullRequestComment.PullRequestComment(self._requester, headers, data, completed=True)\n \n def get_comments(self):\n \"\"\"\n@@ -415,11 +411,9 @@ def get_issue_comment(self, id):\n assert isinstance(id, (int, long)), id\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- self._parentUrl(self._parentUrl(self.url)) + \"/issues/comments/\" + str(id),\n- None,\n- None\n+ self._parentUrl(self._parentUrl(self.url)) + \"/issues/comments/\" + str(id)\n )\n- return github.IssueComment.IssueComment(self._requester, data, completed=True)\n+ return github.IssueComment.IssueComment(self._requester, headers, data, completed=True)\n \n def get_issue_comments(self):\n \"\"\"\n@@ -440,9 +434,7 @@ def is_merged(self):\n \"\"\"\n status, headers, data = self._requester.requestJson(\n \"GET\",\n- self.url + \"/merge\",\n- None,\n- None\n+ self.url + \"/merge\"\n )\n return status == 204\n \n@@ -459,10 +451,9 @@ def merge(self, commit_message=github.GithubObject.NotSet):\n headers, data = self._requester.requestJsonAndCheck(\n \"PUT\",\n self.url + \"/merge\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n- return github.PullRequestMergeStatus.PullRequestMergeStatus(self._requester, data, completed=True)\n+ return github.PullRequestMergeStatus.PullRequestMergeStatus(self._requester, headers, data, completed=True)\n \n def _initAttributes(self):\n self._additions = github.GithubObject.NotSet\n@@ -499,10 +490,10 @@ def _useAttributes(self, attributes):\n self._additions = attributes[\"additions\"]\n if \"assignee\" in attributes: # pragma no branch\n assert attributes[\"assignee\"] is None or isinstance(attributes[\"assignee\"], dict), attributes[\"assignee\"]\n- self._assignee = None if attributes[\"assignee\"] is None else github.NamedUser.NamedUser(self._requester, attributes[\"assignee\"], completed=False)\n+ self._assignee = None if attributes[\"assignee\"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes[\"assignee\"], completed=False)\n if \"base\" in attributes: # pragma no branch\n assert attributes[\"base\"] is None or isinstance(attributes[\"base\"], dict), attributes[\"base\"]\n- self._base = None if attributes[\"base\"] is None else github.PullRequestPart.PullRequestPart(self._requester, attributes[\"base\"], completed=False)\n+ self._base = None if attributes[\"base\"] is None else github.PullRequestPart.PullRequestPart(self._requester, self._headers, attributes[\"base\"], completed=False)\n if \"body\" in attributes: # pragma no branch\n assert attributes[\"body\"] is None or isinstance(attributes[\"body\"], (str, unicode)), attributes[\"body\"]\n self._body = attributes[\"body\"]\n@@ -529,7 +520,7 @@ def _useAttributes(self, attributes):\n self._diff_url = attributes[\"diff_url\"]\n if \"head\" in attributes: # pragma no branch\n assert attributes[\"head\"] is None or isinstance(attributes[\"head\"], dict), attributes[\"head\"]\n- self._head = None if attributes[\"head\"] is None else github.PullRequestPart.PullRequestPart(self._requester, attributes[\"head\"], completed=False)\n+ self._head = None if attributes[\"head\"] is None else github.PullRequestPart.PullRequestPart(self._requester, self._headers, attributes[\"head\"], completed=False)\n if \"html_url\" in attributes: # pragma no branch\n assert attributes[\"html_url\"] is None or isinstance(attributes[\"html_url\"], (str, unicode)), attributes[\"html_url\"]\n self._html_url = attributes[\"html_url\"]\n@@ -550,7 +541,7 @@ def _useAttributes(self, attributes):\n self._merged_at = self._parseDatetime(attributes[\"merged_at\"])\n if \"merged_by\" in attributes: # pragma no branch\n assert attributes[\"merged_by\"] is None or isinstance(attributes[\"merged_by\"], dict), attributes[\"merged_by\"]\n- self._merged_by = None if attributes[\"merged_by\"] is None else github.NamedUser.NamedUser(self._requester, attributes[\"merged_by\"], completed=False)\n+ self._merged_by = None if attributes[\"merged_by\"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes[\"merged_by\"], completed=False)\n if \"number\" in attributes: # pragma no branch\n assert attributes[\"number\"] is None or isinstance(attributes[\"number\"], (int, long)), attributes[\"number\"]\n self._number = attributes[\"number\"]\n@@ -574,4 +565,4 @@ def _useAttributes(self, attributes):\n self._url = attributes[\"url\"]\n if \"user\" in attributes: # pragma no branch\n assert attributes[\"user\"] is None or isinstance(attributes[\"user\"], dict), attributes[\"user\"]\n- self._user = None if attributes[\"user\"] is None else github.NamedUser.NamedUser(self._requester, attributes[\"user\"], completed=False)\n+ self._user = None if attributes[\"user\"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes[\"user\"], completed=False)"},{"sha":"1e96426e98b1f17f5ec26185257276cafabb376b","filename":"github/PullRequestComment.py","status":"modified","additions":4,"deletions":6,"changes":10,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/PullRequestComment.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/PullRequestComment.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/PullRequestComment.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Michael Stead #\n # Copyright 2013 Vincent Jacques #\n # Copyright 2013 martinqt #\n@@ -138,9 +139,7 @@ def delete(self):\n \"\"\"\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n- self.url,\n- None,\n- None\n+ self.url\n )\n \n def edit(self, body):\n@@ -156,8 +155,7 @@ def edit(self, body):\n headers, data = self._requester.requestJsonAndCheck(\n \"PATCH\",\n self.url,\n- None,\n- post_parameters\n+ input=post_parameters\n )\n self._useAttributes(data)\n \n@@ -211,4 +209,4 @@ def _useAttributes(self, attributes):\n self._html_url = attributes[\"html_url\"]\n if \"user\" in attributes: # pragma no branch\n assert attributes[\"user\"] is None or isinstance(attributes[\"user\"], dict), attributes[\"user\"]\n- self._user = None if attributes[\"user\"] is None else github.NamedUser.NamedUser(self._requester, attributes[\"user\"], completed=False)\n+ self._user = None if attributes[\"user\"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes[\"user\"], completed=False)"},{"sha":"9c416dbd5a260662bca2f7d8d3725e87f822ae06","filename":"github/PullRequestMergeStatus.py","status":"modified","additions":1,"deletions":0,"changes":1,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/PullRequestMergeStatus.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/PullRequestMergeStatus.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/PullRequestMergeStatus.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # Copyright 2013 martinqt #\n # #"},{"sha":"791452b028bd4d1a970b78581b849bb755be2efa","filename":"github/PullRequestPart.py","status":"modified","additions":3,"deletions":2,"changes":5,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/PullRequestPart.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/PullRequestPart.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/PullRequestPart.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #\n@@ -85,10 +86,10 @@ def _useAttributes(self, attributes):\n self._ref = attributes[\"ref\"]\n if \"repo\" in attributes: # pragma no branch\n assert attributes[\"repo\"] is None or isinstance(attributes[\"repo\"], dict), attributes[\"repo\"]\n- self._repo = None if attributes[\"repo\"] is None else github.Repository.Repository(self._requester, attributes[\"repo\"], completed=False)\n+ self._repo = None if attributes[\"repo\"] is None else github.Repository.Repository(self._requester, self._headers, attributes[\"repo\"], completed=False)\n if \"sha\" in attributes: # pragma no branch\n assert attributes[\"sha\"] is None or isinstance(attributes[\"sha\"], (str, unicode)), attributes[\"sha\"]\n self._sha = attributes[\"sha\"]\n if \"user\" in attributes: # pragma no branch\n assert attributes[\"user\"] is None or isinstance(attributes[\"user\"], dict), attributes[\"user\"]\n- self._user = None if attributes[\"user\"] is None else github.NamedUser.NamedUser(self._requester, attributes[\"user\"], completed=False)\n+ self._user = None if attributes[\"user\"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes[\"user\"], completed=False)"},{"sha":"7eb3d235917b3a63e8d31caefae5cba981a25134","filename":"github/Repository.py","status":"modified","additions":85,"deletions":152,"changes":237,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/Repository.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/Repository.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/Repository.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -7,6 +7,7 @@\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n # Copyright 2013 Adrian Petrescu #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Mark Roddy #\n # Copyright 2013 Vincent Jacques #\n # Copyright 2013 martinqt #\n@@ -316,9 +317,7 @@ def add_to_collaborators(self, collaborator):\n assert isinstance(collaborator, github.NamedUser.NamedUser), collaborator\n headers, data = self._requester.requestJsonAndCheck(\n \"PUT\",\n- self.url + \"/collaborators/\" + collaborator._identity,\n- None,\n- None\n+ self.url + \"/collaborators/\" + collaborator._identity\n )\n \n def compare(self, base, head):\n@@ -332,11 +331,9 @@ def compare(self, base, head):\n assert isinstance(head, (str, unicode)), head\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- self.url + \"/compare/\" + base + \"...\" + head,\n- None,\n- None\n+ self.url + \"/compare/\" + base + \"...\" + head\n )\n- return github.Comparison.Comparison(self._requester, data, completed=True)\n+ return github.Comparison.Comparison(self._requester, headers, data, completed=True)\n \n def create_download(self, name, size, description=github.GithubObject.NotSet, content_type=github.GithubObject.NotSet):\n \"\"\"\n@@ -362,10 +359,9 @@ def create_download(self, name, size, description=github.GithubObject.NotSet, co\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n self.url + \"/downloads\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n- return github.Download.Download(self._requester, data, completed=True)\n+ return github.Download.Download(self._requester, headers, data, completed=True)\n \n def create_git_blob(self, content, encoding):\n \"\"\"\n@@ -383,10 +379,9 @@ def create_git_blob(self, content, encoding):\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n self.url + \"/git/blobs\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n- return github.GitBlob.GitBlob(self._requester, data, completed=True)\n+ return github.GitBlob.GitBlob(self._requester, headers, data, completed=True)\n \n def create_git_commit(self, message, tree, parents, author=github.GithubObject.NotSet, committer=github.GithubObject.NotSet):\n \"\"\"\n@@ -415,10 +410,9 @@ def create_git_commit(self, message, tree, parents, author=github.GithubObject.N\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n self.url + \"/git/commits\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n- return github.GitCommit.GitCommit(self._requester, data, completed=True)\n+ return github.GitCommit.GitCommit(self._requester, headers, data, completed=True)\n \n def create_git_ref(self, ref, sha):\n \"\"\"\n@@ -436,10 +430,9 @@ def create_git_ref(self, ref, sha):\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n self.url + \"/git/refs\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n- return github.GitRef.GitRef(self._requester, data, completed=True)\n+ return github.GitRef.GitRef(self._requester, headers, data, completed=True)\n \n def create_git_tag(self, tag, message, object, type, tagger=github.GithubObject.NotSet):\n \"\"\"\n@@ -467,10 +460,9 @@ def create_git_tag(self, tag, message, object, type, tagger=github.GithubObject.\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n self.url + \"/git/tags\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n- return github.GitTag.GitTag(self._requester, data, completed=True)\n+ return github.GitTag.GitTag(self._requester, headers, data, completed=True)\n \n def create_git_tree(self, tree, base_tree=github.GithubObject.NotSet):\n \"\"\"\n@@ -489,10 +481,9 @@ def create_git_tree(self, tree, base_tree=github.GithubObject.NotSet):\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n self.url + \"/git/trees\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n- return github.GitTree.GitTree(self._requester, data, completed=True)\n+ return github.GitTree.GitTree(self._requester, headers, data, completed=True)\n \n def create_hook(self, name, config, events=github.GithubObject.NotSet, active=github.GithubObject.NotSet):\n \"\"\"\n@@ -518,10 +509,9 @@ def create_hook(self, name, config, events=github.GithubObject.NotSet, active=gi\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n self.url + \"/hooks\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n- return github.Hook.Hook(self._requester, data, completed=True)\n+ return github.Hook.Hook(self._requester, headers, data, completed=True)\n \n def create_issue(self, title, body=github.GithubObject.NotSet, assignee=github.GithubObject.NotSet, milestone=github.GithubObject.NotSet, labels=github.GithubObject.NotSet):\n \"\"\"\n@@ -552,10 +542,9 @@ def create_issue(self, title, body=github.GithubObject.NotSet, assignee=github.G\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n self.url + \"/issues\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n- return github.Issue.Issue(self._requester, data, completed=True)\n+ return github.Issue.Issue(self._requester, headers, data, completed=True)\n \n def create_key(self, title, key):\n \"\"\"\n@@ -573,10 +562,9 @@ def create_key(self, title, key):\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n self.url + \"/keys\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n- return github.RepositoryKey.RepositoryKey(self._requester, data, completed=True, repoUrl=self._url)\n+ return github.RepositoryKey.RepositoryKey(self._requester, headers, data, completed=True, repoUrl=self._url)\n \n def create_label(self, name, color):\n \"\"\"\n@@ -594,10 +582,9 @@ def create_label(self, name, color):\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n self.url + \"/labels\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n- return github.Label.Label(self._requester, data, completed=True)\n+ return github.Label.Label(self._requester, headers, data, completed=True)\n \n def create_milestone(self, title, state=github.GithubObject.NotSet, description=github.GithubObject.NotSet, due_on=github.GithubObject.NotSet):\n \"\"\"\n@@ -624,10 +611,9 @@ def create_milestone(self, title, state=github.GithubObject.NotSet, description=\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n self.url + \"/milestones\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n- return github.Milestone.Milestone(self._requester, data, completed=True)\n+ return github.Milestone.Milestone(self._requester, headers, data, completed=True)\n \n def create_pull(self, *args, **kwds):\n \"\"\"\n@@ -662,10 +648,9 @@ def __create_pull(self, **kwds):\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n self.url + \"/pulls\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n- return github.PullRequest.PullRequest(self._requester, data, completed=True)\n+ return github.PullRequest.PullRequest(self._requester, headers, data, completed=True)\n \n def delete(self):\n \"\"\"\n@@ -674,9 +659,7 @@ def delete(self):\n \"\"\"\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n- self.url,\n- None,\n- None\n+ self.url\n )\n \n def edit(self, name, description=github.GithubObject.NotSet, homepage=github.GithubObject.NotSet, public=github.GithubObject.NotSet, has_issues=github.GithubObject.NotSet, has_wiki=github.GithubObject.NotSet, has_downloads=github.GithubObject.NotSet, default_branch=github.GithubObject.NotSet):\n@@ -720,8 +703,7 @@ def edit(self, name, description=github.GithubObject.NotSet, homepage=github.Git\n headers, data = self._requester.requestJsonAndCheck(\n \"PATCH\",\n self.url,\n- None,\n- post_parameters\n+ input=post_parameters\n )\n self._useAttributes(data)\n \n@@ -739,9 +721,7 @@ def get_archive_link(self, archive_format, ref=github.GithubObject.NotSet):\n url += \"/\" + ref\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- url,\n- None,\n- None\n+ url\n )\n return headers[\"location\"]\n \n@@ -766,11 +746,9 @@ def get_branch(self, branch):\n assert isinstance(branch, (str, unicode)), branch\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- self.url + \"/branches/\" + branch,\n- None,\n- None\n+ self.url + \"/branches/\" + branch\n )\n- return github.Branch.Branch(self._requester, data, completed=True)\n+ return github.Branch.Branch(self._requester, headers, data, completed=True)\n \n def get_branches(self):\n \"\"\"\n@@ -805,11 +783,9 @@ def get_comment(self, id):\n assert isinstance(id, (int, long)), id\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- self.url + \"/comments/\" + str(id),\n- None,\n- None\n+ self.url + \"/comments/\" + str(id)\n )\n- return github.CommitComment.CommitComment(self._requester, data, completed=True)\n+ return github.CommitComment.CommitComment(self._requester, headers, data, completed=True)\n \n def get_comments(self):\n \"\"\"\n@@ -832,11 +808,9 @@ def get_commit(self, sha):\n assert isinstance(sha, (str, unicode)), sha\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- self.url + \"/commits/\" + sha,\n- None,\n- None\n+ self.url + \"/commits/\" + sha\n )\n- return github.Commit.Commit(self._requester, data, completed=True)\n+ return github.Commit.Commit(self._requester, headers, data, completed=True)\n \n def get_commits(self, sha=github.GithubObject.NotSet, path=github.GithubObject.NotSet, since=github.GithubObject.NotSet, until=github.GithubObject.NotSet):\n \"\"\"\n@@ -891,10 +865,9 @@ def get_file_contents(self, path, ref=github.GithubObject.NotSet):\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n self.url + \"/contents\" + path,\n- url_parameters,\n- None\n+ parameters=url_parameters\n )\n- return github.ContentFile.ContentFile(self._requester, data, completed=True)\n+ return github.ContentFile.ContentFile(self._requester, headers, data, completed=True)\n \n def get_dir_contents(self, path, ref=github.GithubObject.NotSet):\n \"\"\"\n@@ -911,8 +884,7 @@ def get_dir_contents(self, path, ref=github.GithubObject.NotSet):\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n self.url + \"/contents\" + path,\n- url_parameters,\n- None\n+ parameters=url_parameters\n )\n \n # Handle 302 redirect response\n@@ -920,12 +892,11 @@ def get_dir_contents(self, path, ref=github.GithubObject.NotSet):\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n headers['location'],\n- url_parameters,\n- None\n+ parameters=url_parameters\n )\n \n return [\n- 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\n+ 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\n for attributes in data\n ]\n \n@@ -950,11 +921,9 @@ def get_download(self, id):\n assert isinstance(id, (int, long)), id\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- self.url + \"/downloads/\" + str(id),\n- None,\n- None\n+ self.url + \"/downloads/\" + str(id)\n )\n- return github.Download.Download(self._requester, data, completed=True)\n+ return github.Download.Download(self._requester, headers, data, completed=True)\n \n def get_downloads(self):\n \"\"\"\n@@ -1001,11 +970,9 @@ def get_git_blob(self, sha):\n assert isinstance(sha, (str, unicode)), sha\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- self.url + \"/git/blobs/\" + sha,\n- None,\n- None\n+ self.url + \"/git/blobs/\" + sha\n )\n- return github.GitBlob.GitBlob(self._requester, data, completed=True)\n+ return github.GitBlob.GitBlob(self._requester, headers, data, completed=True)\n \n def get_git_commit(self, sha):\n \"\"\"\n@@ -1016,11 +983,9 @@ def get_git_commit(self, sha):\n assert isinstance(sha, (str, unicode)), sha\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- self.url + \"/git/commits/\" + sha,\n- None,\n- None\n+ self.url + \"/git/commits/\" + sha\n )\n- return github.GitCommit.GitCommit(self._requester, data, completed=True)\n+ return github.GitCommit.GitCommit(self._requester, headers, data, completed=True)\n \n def get_git_ref(self, ref):\n \"\"\"\n@@ -1034,11 +999,9 @@ def get_git_ref(self, ref):\n assert isinstance(ref, (str, unicode)), ref\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- self.url + prefix + ref,\n- None,\n- None\n+ self.url + prefix + ref\n )\n- return github.GitRef.GitRef(self._requester, data, completed=True)\n+ return github.GitRef.GitRef(self._requester, headers, data, completed=True)\n \n def get_git_refs(self):\n \"\"\"\n@@ -1061,11 +1024,9 @@ def get_git_tag(self, sha):\n assert isinstance(sha, (str, unicode)), sha\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- self.url + \"/git/tags/\" + sha,\n- None,\n- None\n+ self.url + \"/git/tags/\" + sha\n )\n- return github.GitTag.GitTag(self._requester, data, completed=True)\n+ return github.GitTag.GitTag(self._requester, headers, data, completed=True)\n \n def get_git_tree(self, sha, recursive=github.GithubObject.NotSet):\n \"\"\"\n@@ -1082,10 +1043,9 @@ def get_git_tree(self, sha, recursive=github.GithubObject.NotSet):\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n self.url + \"/git/trees/\" + sha,\n- url_parameters,\n- None\n+ parameters=url_parameters\n )\n- return github.GitTree.GitTree(self._requester, data, completed=True)\n+ return github.GitTree.GitTree(self._requester, headers, data, completed=True)\n \n def get_hook(self, id):\n \"\"\"\n@@ -1096,11 +1056,9 @@ def get_hook(self, id):\n assert isinstance(id, (int, long)), id\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- self.url + \"/hooks/\" + str(id),\n- None,\n- None\n+ self.url + \"/hooks/\" + str(id)\n )\n- return github.Hook.Hook(self._requester, data, completed=True)\n+ return github.Hook.Hook(self._requester, headers, data, completed=True)\n \n def get_hooks(self):\n \"\"\"\n@@ -1123,11 +1081,9 @@ def get_issue(self, number):\n assert isinstance(number, (int, long)), number\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- self.url + \"/issues/\" + str(number),\n- None,\n- None\n+ self.url + \"/issues/\" + str(number)\n )\n- return github.Issue.Issue(self._requester, data, completed=True)\n+ return github.Issue.Issue(self._requester, headers, data, completed=True)\n \n 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):\n \"\"\"\n@@ -1214,11 +1170,9 @@ def get_issues_event(self, id):\n assert isinstance(id, (int, long)), id\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- self.url + \"/issues/events/\" + str(id),\n- None,\n- None\n+ self.url + \"/issues/events/\" + str(id)\n )\n- return github.IssueEvent.IssueEvent(self._requester, data, completed=True)\n+ return github.IssueEvent.IssueEvent(self._requester, headers, data, completed=True)\n \n def get_issues_events(self):\n \"\"\"\n@@ -1241,11 +1195,9 @@ def get_key(self, id):\n assert isinstance(id, (int, long)), id\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- self.url + \"/keys/\" + str(id),\n- None,\n- None\n+ self.url + \"/keys/\" + str(id)\n )\n- return github.RepositoryKey.RepositoryKey(self._requester, data, completed=True, repoUrl=self._url)\n+ return github.RepositoryKey.RepositoryKey(self._requester, headers, data, completed=True, repoUrl=self._url)\n \n def get_keys(self):\n \"\"\"\n@@ -1253,7 +1205,7 @@ def get_keys(self):\n :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.RepositoryKey.RepositoryKey`\n \"\"\"\n return github.PaginatedList.PaginatedList(\n- lambda requester, data, completed: github.RepositoryKey.RepositoryKey(requester, data, completed, repoUrl=self._url),\n+ lambda requester, headers, data, completed: github.RepositoryKey.RepositoryKey(requester, headers, data, completed, repoUrl=self._url),\n self._requester,\n self.url + \"/keys\",\n None\n@@ -1268,11 +1220,9 @@ def get_label(self, name):\n assert isinstance(name, (str, unicode)), name\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- self.url + \"/labels/\" + urllib.quote(name),\n- None,\n- None\n+ self.url + \"/labels/\" + urllib.quote(name)\n )\n- return github.Label.Label(self._requester, data, completed=True)\n+ return github.Label.Label(self._requester, headers, data, completed=True)\n \n def get_labels(self):\n \"\"\"\n@@ -1293,9 +1243,7 @@ def get_languages(self):\n \"\"\"\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- self.url + \"/languages\",\n- None,\n- None\n+ self.url + \"/languages\"\n )\n return data\n \n@@ -1308,11 +1256,9 @@ def get_milestone(self, number):\n assert isinstance(number, (int, long)), number\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- self.url + \"/milestones/\" + str(number),\n- None,\n- None\n+ self.url + \"/milestones/\" + str(number)\n )\n- return github.Milestone.Milestone(self._requester, data, completed=True)\n+ return github.Milestone.Milestone(self._requester, headers, data, completed=True)\n \n def get_milestones(self, state=github.GithubObject.NotSet, sort=github.GithubObject.NotSet, direction=github.GithubObject.NotSet):\n \"\"\"\n@@ -1360,11 +1306,9 @@ def get_pull(self, number):\n assert isinstance(number, (int, long)), number\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- self.url + \"/pulls/\" + str(number),\n- None,\n- None\n+ self.url + \"/pulls/\" + str(number)\n )\n- return github.PullRequest.PullRequest(self._requester, data, completed=True)\n+ return github.PullRequest.PullRequest(self._requester, headers, data, completed=True)\n \n def get_pulls(self, state=github.GithubObject.NotSet):\n \"\"\"\n@@ -1431,10 +1375,9 @@ def get_readme(self, ref=github.GithubObject.NotSet):\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n self.url + \"/readme\",\n- url_parameters,\n- None\n+ parameters=url_parameters\n )\n- return github.ContentFile.ContentFile(self._requester, data, completed=True)\n+ return github.ContentFile.ContentFile(self._requester, headers, data, completed=True)\n \n def get_stargazers(self):\n \"\"\"\n@@ -1505,9 +1448,7 @@ def has_in_assignees(self, assignee):\n assert isinstance(assignee, github.NamedUser.NamedUser), assignee\n status, headers, data = self._requester.requestJson(\n \"GET\",\n- self.url + \"/assignees/\" + assignee._identity,\n- None,\n- None\n+ self.url + \"/assignees/\" + assignee._identity\n )\n return status == 204\n \n@@ -1520,9 +1461,7 @@ def has_in_collaborators(self, collaborator):\n assert isinstance(collaborator, github.NamedUser.NamedUser), collaborator\n status, headers, data = self._requester.requestJson(\n \"GET\",\n- self.url + \"/collaborators/\" + collaborator._identity,\n- None,\n- None\n+ self.url + \"/collaborators/\" + collaborator._identity\n )\n return status == 204\n \n@@ -1537,12 +1476,10 @@ def legacy_search_issues(self, state, keyword):\n assert isinstance(keyword, (str, unicode)), keyword\n headers, data = self._requester.requestJsonAndCheck(\n \"GET\",\n- \"/legacy/issues/search/\" + self.owner.login + \"/\" + self.name + \"/\" + state + \"/\" + urllib.quote(keyword),\n- None,\n- None\n+ \"/legacy/issues/search/\" + self.owner.login + \"/\" + self.name + \"/\" + state + \"/\" + urllib.quote(keyword)\n )\n return [\n- github.Issue.Issue(self._requester, github.Legacy.convertIssue(element), completed=False)\n+ github.Issue.Issue(self._requester, headers, github.Legacy.convertIssue(element), completed=False)\n for element in data[\"issues\"]\n ]\n \n@@ -1566,13 +1503,12 @@ def merge(self, base, head, commit_message=github.GithubObject.NotSet):\n headers, data = self._requester.requestJsonAndCheck(\n \"POST\",\n self.url + \"/merges\",\n- None,\n- post_parameters\n+ input=post_parameters\n )\n if data is None:\n return None\n else:\n- return github.Commit.Commit(self._requester, data, completed=True)\n+ return github.Commit.Commit(self._requester, headers, data, completed=True)\n \n def remove_from_collaborators(self, collaborator):\n \"\"\"\n@@ -1583,9 +1519,7 @@ def remove_from_collaborators(self, collaborator):\n assert isinstance(collaborator, github.NamedUser.NamedUser), collaborator\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n- self.url + \"/collaborators/\" + collaborator._identity,\n- None,\n- None\n+ self.url + \"/collaborators/\" + collaborator._identity\n )\n \n def subscribe_to_hub(self, event, callback, secret=github.GithubObject.NotSet):\n@@ -1625,8 +1559,7 @@ def _hub(self, mode, event, callback, secret):\n responseHeaders, output = self._requester.requestMultipartAndCheck(\n \"POST\",\n \"/hub\",\n- None,\n- post_parameters,\n+ input=post_parameters\n )\n \n @property\n@@ -1719,16 +1652,16 @@ def _useAttributes(self, attributes):\n self._open_issues = attributes[\"open_issues\"]\n if \"organization\" in attributes: # pragma no branch\n assert attributes[\"organization\"] is None or isinstance(attributes[\"organization\"], dict), attributes[\"organization\"]\n- self._organization = None if attributes[\"organization\"] is None else github.Organization.Organization(self._requester, attributes[\"organization\"], completed=False)\n+ self._organization = None if attributes[\"organization\"] is None else github.Organization.Organization(self._requester, self._headers, attributes[\"organization\"], completed=False)\n if \"owner\" in attributes: # pragma no branch\n assert attributes[\"owner\"] is None or isinstance(attributes[\"owner\"], dict), attributes[\"owner\"]\n- self._owner = None if attributes[\"owner\"] is None else github.NamedUser.NamedUser(self._requester, attributes[\"owner\"], completed=False)\n+ self._owner = None if attributes[\"owner\"] is None else github.NamedUser.NamedUser(self._requester, self._headers, attributes[\"owner\"], completed=False)\n if \"parent\" in attributes: # pragma no branch\n assert attributes[\"parent\"] is None or isinstance(attributes[\"parent\"], dict), attributes[\"parent\"]\n- self._parent = None if attributes[\"parent\"] is None else Repository(self._requester, attributes[\"parent\"], completed=False)\n+ self._parent = None if attributes[\"parent\"] is None else Repository(self._requester, self._headers, attributes[\"parent\"], completed=False)\n if \"permissions\" in attributes: # pragma no branch\n assert attributes[\"permissions\"] is None or isinstance(attributes[\"permissions\"], dict), attributes[\"permissions\"]\n- self._permissions = None if attributes[\"permissions\"] is None else github.Permissions.Permissions(self._requester, attributes[\"permissions\"], completed=False)\n+ self._permissions = None if attributes[\"permissions\"] is None else github.Permissions.Permissions(self._requester, self._headers, attributes[\"permissions\"], completed=False)\n if \"private\" in attributes: # pragma no branch\n assert attributes[\"private\"] is None or isinstance(attributes[\"private\"], bool), attributes[\"private\"]\n self._private = attributes[\"private\"]\n@@ -1740,7 +1673,7 @@ def _useAttributes(self, attributes):\n self._size = attributes[\"size\"]\n if \"source\" in attributes: # pragma no branch\n assert attributes[\"source\"] is None or isinstance(attributes[\"source\"], dict), attributes[\"source\"]\n- self._source = None if attributes[\"source\"] is None else Repository(self._requester, attributes[\"source\"], completed=False)\n+ self._source = None if attributes[\"source\"] is None else Repository(self._requester, self._headers, attributes[\"source\"], completed=False)\n if \"ssh_url\" in attributes: # pragma no branch\n assert attributes[\"ssh_url\"] is None or isinstance(attributes[\"ssh_url\"], (str, unicode)), attributes[\"ssh_url\"]\n self._ssh_url = attributes[\"ssh_url\"]"},{"sha":"69e1c6162f2f414f9679101b3fb29de677f7e72f","filename":"github/RepositoryKey.py","status":"modified","additions":5,"deletions":7,"changes":12,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/RepositoryKey.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/RepositoryKey.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/RepositoryKey.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Srijan Choudhary #\n # Copyright 2013 Vincent Jacques #\n # Copyright 2013 martinqt #\n@@ -33,8 +34,8 @@ class RepositoryKey(github.GithubObject.CompletableGithubObject):\n This class represents RepositoryKeys. The reference can be found here http://developer.github.com/v3/repos/keys/\n \"\"\"\n \n- def __init__(self, requester, attributes, completed, repoUrl):\n- github.GithubObject.CompletableGithubObject.__init__(self, requester, attributes, completed)\n+ def __init__(self, requester, headers, attributes, completed, repoUrl):\n+ github.GithubObject.CompletableGithubObject.__init__(self, requester, headers, attributes, completed)\n self.__repoUrl = repoUrl\n \n @property\n@@ -88,9 +89,7 @@ def delete(self):\n \"\"\"\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n- self.__customUrl,\n- None,\n- None\n+ self.__customUrl\n )\n \n def edit(self, title=github.GithubObject.NotSet, key=github.GithubObject.NotSet):\n@@ -110,8 +109,7 @@ def edit(self, title=github.GithubObject.NotSet, key=github.GithubObject.NotSet)\n headers, data = self._requester.requestJsonAndCheck(\n \"PATCH\",\n self.__customUrl,\n- None,\n- post_parameters\n+ input=post_parameters\n )\n self._useAttributes(data)\n "},{"sha":"836b776e42a3080cffc8d5f1e6959fa6414a518c","filename":"github/Requester.py","status":"modified","additions":88,"deletions":18,"changes":106,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/Requester.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/Requester.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/Requester.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -9,6 +9,7 @@\n # Copyright 2012 Steve English #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Ed Jackson #\n # Copyright 2013 Jonathan J Hunt #\n # Copyright 2013 Mark Roddy #\n@@ -37,6 +38,7 @@\n import urllib\n import urlparse\n import sys\n+import Consts\n \n atLeastPython26 = sys.hexversion >= 0x02060000\n atLeastPython3 = sys.hexversion >= 0x03000000\n@@ -63,7 +65,66 @@ def resetConnectionClasses(cls):\n cls.__httpConnectionClass = httplib.HTTPConnection\n cls.__httpsConnectionClass = httplib.HTTPSConnection\n \n+ #############################################################\n+ # For Debug\n+ @classmethod\n+ def setDebugFlag(cls, flag):\n+ cls.DEBUG_FLAG = flag\n+\n+ @classmethod\n+ def setOnCheckMe(cls, onCheckMe):\n+ cls.ON_CHECK_ME = onCheckMe\n+\n+ DEBUG_FLAG = False\n+\n+ DEBUG_FRAME_BUFFER_SIZE = 1024\n+\n+ DEBUG_HEADER_KEY = \"DEBUG_FRAME\"\n+\n+ ON_CHECK_ME = None\n+\n+ def NEW_DEBUG_FRAME(self, requestHeader):\n+ '''\n+ Initialize a debug frame with requestHeader\n+ Frame count is updated and will be attached to respond header\n+ The structure of a frame: [requestHeader, statusCode, responseHeader, raw_data]\n+ Some of them may be None\n+ '''\n+ if self.DEBUG_FLAG: # pragma no branch (Flag always set in tests)\n+ new_frame = [requestHeader, None, None, None]\n+ if self._frameCount < self.DEBUG_FRAME_BUFFER_SIZE - 1: # pragma no branch (Should be covered)\n+ self._frameBuffer.append(new_frame)\n+ else:\n+ self._frameBuffer[0] = new_frame # pragma no cover (Should be covered)\n+\n+ self._frameCount = len(self._frameBuffer) - 1\n+\n+ def DEBUG_ON_RESPONSE(self, statusCode, responseHeader, data):\n+ '''\n+ Update current frame with response\n+ Current frame index will be attached to responseHeader\n+ '''\n+ if self.DEBUG_FLAG: # pragma no branch (Flag always set in tests)\n+ self._frameBuffer[self._frameCount][1:4] = [statusCode, responseHeader, data]\n+ responseHeader[self.DEBUG_HEADER_KEY] = self._frameCount\n+\n+ def check_me(self, obj):\n+ if self.DEBUG_FLAG and self.ON_CHECK_ME is not None: # pragma no branch (Flag always set in tests)\n+ frame = None\n+ if self.DEBUG_HEADER_KEY in obj._headers:\n+ frame_index = obj._headers[self.DEBUG_HEADER_KEY]\n+ frame = self._frameBuffer[frame_index]\n+ self.ON_CHECK_ME(obj, frame)\n+\n+ def _initializeDebugFeature(self):\n+ self._frameCount = 0\n+ self._frameBuffer = []\n+\n+ #############################################################\n+\n def __init__(self, login_or_token, password, base_url, timeout, client_id, client_secret, user_agent, per_page):\n+ self._initializeDebugFeature()\n+\n if password is not None:\n login = login_or_token\n if atLeastPython3:\n@@ -103,11 +164,11 @@ def __init__(self, login_or_token, password, base_url, timeout, client_id, clien\n 'See http://developer.github.com/v3/#user-agent-required'\n self.__userAgent = user_agent\n \n- def requestJsonAndCheck(self, verb, url, parameters, input):\n- return self.__check(*self.requestJson(verb, url, parameters, input))\n+ def requestJsonAndCheck(self, verb, url, parameters=None, headers=None, input=None, cnx=None):\n+ return self.__check(*self.requestJson(verb, url, parameters, headers, input, cnx))\n \n- def requestMultipartAndCheck(self, verb, url, parameters, input):\n- return self.__check(*self.requestMultipart(verb, url, parameters, input))\n+ def requestMultipartAndCheck(self, verb, url, parameters=None, headers=None, input=None):\n+ return self.__check(*self.requestMultipart(verb, url, parameters, headers, input))\n \n def __check(self, status, responseHeaders, output):\n output = self.__structuredFromJson(output)\n@@ -116,13 +177,13 @@ def __check(self, status, responseHeaders, output):\n return responseHeaders, output\n \n def __createException(self, status, output):\n- if status == 401 and output[\"message\"] == \"Bad credentials\":\n+ if status == 401 and output.get(\"message\") == \"Bad credentials\":\n cls = GithubException.BadCredentialsException\n- elif status == 403 and output[\"message\"].startswith(\"Missing or invalid User Agent string\"):\n+ elif status == 403 and output.get(\"message\").startswith(\"Missing or invalid User Agent string\"):\n cls = GithubException.BadUserAgentException\n- elif status == 403 and output[\"message\"].startswith(\"API Rate Limit Exceeded\"):\n+ elif status == 403 and output.get(\"message\").startswith(\"API Rate Limit Exceeded\"):\n cls = GithubException.RateLimitExceededException\n- elif status == 404 and output[\"message\"] == \"Not Found\":\n+ elif status == 404 and output.get(\"message\") == \"Not Found\":\n cls = GithubException.UnknownObjectException\n else:\n cls = GithubException.GithubException\n@@ -139,13 +200,13 @@ def __structuredFromJson(self, data):\n except ValueError, e:\n return {'data': data}\n \n- def requestJson(self, verb, url, parameters, input):\n+ def requestJson(self, verb, url, parameters=None, headers=None, input=None, cnx=None):\n def encode(input):\n return \"application/json\", json.dumps(input)\n \n- return self.__requestEncode(verb, url, parameters, input, encode)\n+ return self.__requestEncode(cnx, verb, url, parameters, headers, input, encode)\n \n- def requestMultipart(self, verb, url, parameters, input):\n+ def requestMultipart(self, verb, url, parameters=None, headers=None, input=None):\n def encode(input):\n boundary = \"----------------------------3c3ba8b523b2\"\n eol = \"\\r\\n\"\n@@ -159,14 +220,15 @@ def encode(input):\n encoded_input += \"--\" + boundary + \"--\" + eol\n return \"multipart/form-data; boundary=\" + boundary, encoded_input\n \n- return self.__requestEncode(verb, url, parameters, input, encode)\n+ return self.__requestEncode(None, verb, url, parameters, headers, input, encode)\n \n- def __requestEncode(self, verb, url, parameters, input, encode):\n+ def __requestEncode(self, cnx, verb, url, parameters, requestHeaders, input, encode):\n assert verb in [\"HEAD\", \"GET\", \"POST\", \"PATCH\", \"PUT\", \"DELETE\"]\n if parameters is None:\n parameters = dict()\n+ if requestHeaders is None:\n+ requestHeaders = dict()\n \n- requestHeaders = dict()\n self.__authenticate(url, requestHeaders, parameters)\n requestHeaders[\"User-Agent\"] = self.__userAgent\n \n@@ -177,7 +239,9 @@ def __requestEncode(self, verb, url, parameters, input, encode):\n if input is not None:\n requestHeaders[\"Content-Type\"], encoded_input = encode(input)\n \n- status, responseHeaders, output = self.__requestRaw(verb, url, requestHeaders, encoded_input)\n+ self.NEW_DEBUG_FRAME(requestHeaders)\n+\n+ status, responseHeaders, output = self.__requestRaw(cnx, verb, url, requestHeaders, encoded_input)\n \n if \"x-ratelimit-remaining\" in responseHeaders and \"x-ratelimit-limit\" in responseHeaders:\n self.rate_limiting = (int(responseHeaders[\"x-ratelimit-remaining\"]), int(responseHeaders[\"x-ratelimit-limit\"]))\n@@ -187,10 +251,16 @@ def __requestEncode(self, verb, url, parameters, input, encode):\n if \"x-oauth-scopes\" in responseHeaders:\n self.oauth_scopes = responseHeaders[\"x-oauth-scopes\"].split(\", \")\n \n+ self.DEBUG_ON_RESPONSE(status, responseHeaders, output)\n+\n return status, responseHeaders, output\n \n- def __requestRaw(self, verb, url, requestHeaders, input):\n- cnx = self.__createConnection()\n+ def __requestRaw(self, cnx, verb, url, requestHeaders, input):\n+ if cnx is None:\n+ cnx = self.__createConnection()\n+ else:\n+ assert cnx == \"status\"\n+ cnx = self.__httpsConnectionClass(\"status.github.com\", 443)\n cnx.request(\n verb,\n url,\n@@ -244,7 +314,7 @@ def __createConnection(self):\n kwds[\"strict\"] = True # Useless in Python3, would generate a deprecation warning\n if atLeastPython26: # pragma no branch (Branch useful only with Python 2.5)\n kwds[\"timeout\"] = self.__timeout # Did not exist before Python2.6\n- return self.__connectionClass(host=self.__hostname, port=self.__port, **kwds)\n+ return self.__connectionClass(self.__hostname, self.__port, **kwds)\n \n def __log(self, verb, url, requestHeaders, input, status, responseHeaders, output):\n logger = logging.getLogger(__name__)"},{"sha":"6c117241297b8cc312ef45fa6240453e35ca36ed","filename":"github/Status.py","status":"added","additions":56,"deletions":0,"changes":56,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/Status.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/Status.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/Status.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -0,0 +1,56 @@\n+# -*- coding: utf-8 -*-\n+\n+############################ Copyrights and license ############################\n+# #\n+# Copyright 2013 Vincent Jacques #\n+# #\n+# This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #\n+# #\n+# PyGithub is free software: you can redistribute it and/or modify it under #\n+# the terms of the GNU Lesser General Public License as published by the Free #\n+# Software Foundation, either version 3 of the License, or (at your option) #\n+# any later version. #\n+# #\n+# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY #\n+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS #\n+# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more #\n+# details. #\n+# #\n+# You should have received a copy of the GNU Lesser General Public License #\n+# along with PyGithub. If not, see . #\n+# #\n+################################################################################\n+\n+import github.GithubObject\n+\n+\n+class Status(github.GithubObject.NonCompletableGithubObject):\n+ \"\"\"\n+ This class represents status as defined in https://status.github.com/api\n+ \"\"\"\n+\n+ @property\n+ def status(self):\n+ \"\"\"\n+ :type: string\n+ \"\"\"\n+ return self._NoneIfNotSet(self._status)\n+\n+ @property\n+ def last_updated(self):\n+ \"\"\"\n+ :type: datetime.datetime\n+ \"\"\"\n+ return self._NoneIfNotSet(self._last_updated)\n+\n+ def _initAttributes(self):\n+ self._status = github.GithubObject.NotSet\n+ self._last_updated = github.GithubObject.NotSet\n+\n+ def _useAttributes(self, attributes):\n+ if \"status\" in attributes: # pragma no branch\n+ assert attributes[\"status\"] is None or isinstance(attributes[\"status\"], (str, unicode)), attributes[\"status\"]\n+ self._status = attributes[\"status\"]\n+ if \"last_updated\" in attributes: # pragma no branch\n+ assert attributes[\"last_updated\"] is None or isinstance(attributes[\"last_updated\"], (str, unicode)), attributes[\"last_updated\"]\n+ self._last_updated = self._parseDatetime(attributes[\"last_updated\"])"},{"sha":"266e1b05cc4f1b1298b6f56eae34e58ad9be871e","filename":"github/StatusMessage.py","status":"added","additions":66,"deletions":0,"changes":66,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/StatusMessage.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/StatusMessage.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/StatusMessage.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -0,0 +1,66 @@\n+# -*- coding: utf-8 -*-\n+\n+############################ Copyrights and license ############################\n+# #\n+# Copyright 2013 Vincent Jacques #\n+# #\n+# This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #\n+# #\n+# PyGithub is free software: you can redistribute it and/or modify it under #\n+# the terms of the GNU Lesser General Public License as published by the Free #\n+# Software Foundation, either version 3 of the License, or (at your option) #\n+# any later version. #\n+# #\n+# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY #\n+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS #\n+# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more #\n+# details. #\n+# #\n+# You should have received a copy of the GNU Lesser General Public License #\n+# along with PyGithub. If not, see . #\n+# #\n+################################################################################\n+\n+import github.GithubObject\n+\n+\n+class StatusMessage(github.GithubObject.NonCompletableGithubObject):\n+ \"\"\"\n+ This class represents status messages as defined in https://status.github.com/api\n+ \"\"\"\n+\n+ @property\n+ def body(self):\n+ \"\"\"\n+ :type: string\n+ \"\"\"\n+ return self._NoneIfNotSet(self._body)\n+\n+ @property\n+ def status(self):\n+ \"\"\"\n+ :type: string\n+ \"\"\"\n+ return self._NoneIfNotSet(self._status)\n+\n+ @property\n+ def created_on(self):\n+ \"\"\"\n+ :type: datetime.datetime\n+ \"\"\"\n+ return self._NoneIfNotSet(self._created_on)\n+\n+ def _initAttributes(self):\n+ self._status = github.GithubObject.NotSet\n+ self._created_on = github.GithubObject.NotSet\n+\n+ def _useAttributes(self, attributes):\n+ if \"body\" in attributes: # pragma no branch\n+ assert attributes[\"body\"] is None or isinstance(attributes[\"body\"], (str, unicode)), attributes[\"body\"]\n+ self._body = attributes[\"body\"]\n+ if \"status\" in attributes: # pragma no branch\n+ assert attributes[\"status\"] is None or isinstance(attributes[\"status\"], (str, unicode)), attributes[\"status\"]\n+ self._status = attributes[\"status\"]\n+ if \"created_on\" in attributes: # pragma no branch\n+ assert attributes[\"created_on\"] is None or isinstance(attributes[\"created_on\"], (str, unicode)), attributes[\"created_on\"]\n+ self._created_on = self._parseDatetime(attributes[\"created_on\"])"},{"sha":"890c1a02366be9fd71e36b90084c7dbd624eb2c0","filename":"github/Tag.py","status":"modified","additions":2,"deletions":1,"changes":3,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/Tag.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/Tag.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/Tag.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # Copyright 2013 martinqt #\n # #\n@@ -71,7 +72,7 @@ def _initAttributes(self):\n def _useAttributes(self, attributes):\n if \"commit\" in attributes: # pragma no branch\n assert attributes[\"commit\"] is None or isinstance(attributes[\"commit\"], dict), attributes[\"commit\"]\n- self._commit = None if attributes[\"commit\"] is None else github.Commit.Commit(self._requester, attributes[\"commit\"], completed=False)\n+ self._commit = None if attributes[\"commit\"] is None else github.Commit.Commit(self._requester, self._headers, attributes[\"commit\"], completed=False)\n if \"name\" in attributes: # pragma no branch\n assert attributes[\"name\"] is None or isinstance(attributes[\"name\"], (str, unicode)), attributes[\"name\"]\n self._name = attributes[\"name\"]"},{"sha":"9b687d8027104bcccf49f6b23d129b94cd963eec","filename":"github/Team.py","status":"modified","additions":9,"deletions":23,"changes":32,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/Team.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/Team.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/Team.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # Copyright 2013 martinqt #\n # #\n@@ -93,9 +94,7 @@ def add_to_members(self, member):\n assert isinstance(member, github.NamedUser.NamedUser), member\n headers, data = self._requester.requestJsonAndCheck(\n \"PUT\",\n- self.url + \"/members/\" + member._identity,\n- None,\n- None\n+ self.url + \"/members/\" + member._identity\n )\n \n def add_to_repos(self, repo):\n@@ -107,9 +106,7 @@ def add_to_repos(self, repo):\n assert isinstance(repo, github.Repository.Repository), repo\n headers, data = self._requester.requestJsonAndCheck(\n \"PUT\",\n- self.url + \"/repos/\" + repo._identity,\n- None,\n- None\n+ self.url + \"/repos/\" + repo._identity\n )\n \n def delete(self):\n@@ -119,9 +116,7 @@ def delete(self):\n \"\"\"\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n- self.url,\n- None,\n- None\n+ self.url\n )\n \n def edit(self, name, permission=github.GithubObject.NotSet):\n@@ -141,8 +136,7 @@ def edit(self, name, permission=github.GithubObject.NotSet):\n headers, data = self._requester.requestJsonAndCheck(\n \"PATCH\",\n self.url,\n- None,\n- post_parameters\n+ input=post_parameters\n )\n self._useAttributes(data)\n \n@@ -179,9 +173,7 @@ def has_in_members(self, member):\n assert isinstance(member, github.NamedUser.NamedUser), member\n status, headers, data = self._requester.requestJson(\n \"GET\",\n- self.url + \"/members/\" + member._identity,\n- None,\n- None\n+ self.url + \"/members/\" + member._identity\n )\n return status == 204\n \n@@ -194,9 +186,7 @@ def has_in_repos(self, repo):\n assert isinstance(repo, github.Repository.Repository), repo\n status, headers, data = self._requester.requestJson(\n \"GET\",\n- self.url + \"/repos/\" + repo._identity,\n- None,\n- None\n+ self.url + \"/repos/\" + repo._identity\n )\n return status == 204\n \n@@ -209,9 +199,7 @@ def remove_from_members(self, member):\n assert isinstance(member, github.NamedUser.NamedUser), member\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n- self.url + \"/members/\" + member._identity,\n- None,\n- None\n+ self.url + \"/members/\" + member._identity\n )\n \n def remove_from_repos(self, repo):\n@@ -223,9 +211,7 @@ def remove_from_repos(self, repo):\n assert isinstance(repo, github.Repository.Repository), repo\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n- self.url + \"/repos/\" + repo._identity,\n- None,\n- None\n+ self.url + \"/repos/\" + repo._identity\n )\n \n @property"},{"sha":"9ca0133be4c77ff5720473de5618c97312d6d7e5","filename":"github/UserKey.py","status":"modified","additions":3,"deletions":5,"changes":8,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/UserKey.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/UserKey.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/UserKey.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # Copyright 2013 martinqt #\n # #\n@@ -79,9 +80,7 @@ def delete(self):\n \"\"\"\n headers, data = self._requester.requestJsonAndCheck(\n \"DELETE\",\n- self.url,\n- None,\n- None\n+ self.url\n )\n \n def edit(self, title=github.GithubObject.NotSet, key=github.GithubObject.NotSet):\n@@ -101,8 +100,7 @@ def edit(self, title=github.GithubObject.NotSet, key=github.GithubObject.NotSet)\n headers, data = self._requester.requestJsonAndCheck(\n \"PATCH\",\n self.url,\n- None,\n- post_parameters\n+ input=post_parameters\n )\n self._useAttributes(data)\n "},{"sha":"4ddefece6ae21f29c76934cbd1ed7f122907ec1e","filename":"github/tests/AllTests.py","status":"modified","additions":4,"deletions":0,"changes":4,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/tests/AllTests.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/tests/AllTests.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/tests/AllTests.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -56,6 +56,7 @@\n from RateLimiting import *\n from Repository import *\n from RepositoryKey import *\n+from Status import *\n from Tag import *\n from Team import *\n from UserKey import *\n@@ -79,3 +80,6 @@\n # from Issue142 import * # Deactivated for Travis-CI because Github has lowered the rate limitations\n from Issue158 import *\n from Issue174 import *\n+\n+from ConditionalRequestUpdate import ConditionalRequestUpdate\n+from Persistence import Persistence"},{"sha":"bfd3f87df527126bffa6c10c78cbb7d790e54542","filename":"github/tests/ConditionalRequestUpdate.py","status":"added","additions":43,"deletions":0,"changes":43,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ConditionalRequestUpdate.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ConditionalRequestUpdate.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/tests/ConditionalRequestUpdate.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -0,0 +1,43 @@\n+# -*- coding: utf-8 -*-\n+\n+############################ Copyrights and license ############################\n+# #\n+# Copyright 2013 AKFish #\n+# #\n+# This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #\n+# #\n+# PyGithub is free software: you can redistribute it and/or modify it under #\n+# the terms of the GNU Lesser General Public License as published by the Free #\n+# Software Foundation, either version 3 of the License, or (at your option) #\n+# any later version. #\n+# #\n+# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY #\n+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS #\n+# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more #\n+# details. #\n+# #\n+# You should have received a copy of the GNU Lesser General Public License #\n+# along with PyGithub. If not, see . #\n+# #\n+################################################################################\n+\n+# #193: Line endings should be linux style\n+\n+import Framework\n+import github\n+\n+\n+class ConditionalRequestUpdate(Framework.TestCase):\n+ def setUp(self):\n+ Framework.TestCase.setUp(self)\n+ self.repo = self.g.get_repo(\"akfish/PyGithub\")\n+\n+ def testDidNotUpdate(self):\n+ self.assertFalse(self.repo.update(), msg=\"The repo is not changes. But update() != False\")\n+\n+ def testDidUpdate(self):\n+ self.assertTrue(self.repo.update(), msg=\"The repo should be changed by now. But update() != True\")\n+\n+ def testUpdateObjectWithoutEtag(self):\n+ r = self.g.get_repo(\"jacquev6/PyGithub\")\n+ self.assertTrue(r.update())"},{"sha":"24e814b49afae222e8ac8a79ee5696166a76abc1","filename":"github/tests/Framework.py","status":"modified","additions":17,"deletions":0,"changes":17,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/tests/Framework.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/tests/Framework.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/tests/Framework.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -4,6 +4,7 @@\n # #\n # Copyright 2012 Vincent Jacques #\n # Copyright 2012 Zearin #\n+# Copyright 2013 AKFish #\n # Copyright 2013 Vincent Jacques #\n # #\n # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #\n@@ -244,8 +245,24 @@ def assertListKeyBegin(self, elements, key, expectedKeys):\n \n \n class TestCase(BasicTestCase):\n+ def doCheckFrame(self, obj, frame):\n+ if obj._headers == {} and frame is None:\n+ return\n+ if obj._headers is None and frame == {}:\n+ return\n+ self.assertEqual(obj._headers, frame[2])\n+\n+ def getFrameChecker(self):\n+ return lambda requester, obj, frame: self.doCheckFrame(obj, frame)\n+\n def setUp(self):\n BasicTestCase.setUp(self)\n+\n+ # Set up frame debugging\n+ github.GithubObject.GithubObject.setCheckAfterInitFlag(True)\n+ github.Requester.Requester.setDebugFlag(True)\n+ github.Requester.Requester.setOnCheckMe(self.getFrameChecker())\n+\n self.g = github.Github(self.login, self.password)\n \n "},{"sha":"d74dbac39717bba9476ca39070f6f0beced70578","filename":"github/tests/Gist.py","status":"modified","additions":4,"deletions":4,"changes":8,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/tests/Gist.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/tests/Gist.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/tests/Gist.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -108,12 +108,12 @@ def testStarring(self):\n self.assertFalse(self.gist.is_starred())\n \n def testFork(self):\n- gist = self.g.get_gist(\"2729818\") # Random gist\n+ gist = self.g.get_gist(\"6296553\") # Random gist\n myGist = gist.create_fork()\n- self.assertEqual(myGist.id, \"2729865\")\n+ self.assertEqual(myGist.id, \"6296732\")\n self.assertEqual(myGist.fork_of, None) # WTF\n- sameGist = self.g.get_gist(\"2729865\")\n- self.assertEqual(sameGist.fork_of.id, \"2729818\")\n+ sameGist = self.g.get_gist(\"6296732\")\n+ self.assertEqual(sameGist.fork_of.id, \"6296553\")\n \n def testDelete(self):\n self.gist.delete()"},{"sha":"dec6a80595e541d50720527d16f752d44ef4acf3","filename":"github/tests/Github_.py","status":"modified","additions":6,"deletions":0,"changes":6,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/tests/Github_.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/tests/Github_.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/tests/Github_.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -128,3 +128,9 @@ def testGetUsers(self):\n \n def testGetUsersSince(self):\n self.assertListKeyBegin(self.g.get_users(since=1000), lambda u: u.login, [\"sbecker\"])\n+\n+ def testGetRepos(self):\n+ self.assertListKeyBegin(self.g.get_repos(), lambda r: r.name, [\"grit\", \"merb-core\", \"rubinius\", \"god\", \"jsawesome\", \"jspec\", \"exception_logger\", \"ambition\"])\n+\n+ def testGetReposSince(self):\n+ self.assertListKeyBegin(self.g.get_repos(since=1000), lambda r: r.name, [\"jquery-humanize-messages-plugin\", \"4slicer\", \"fixture-scenarios\", \"mongrel_proctitle\", \"rails-plugins\"])"},{"sha":"5a56bd195039b7f2077fa19952af9bcb5f6c95d1","filename":"github/tests/NamedUser.py","status":"modified","additions":4,"deletions":0,"changes":4,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/tests/NamedUser.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/tests/NamedUser.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/tests/NamedUser.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -109,6 +109,10 @@ def testGetFollowers(self):\n def testGetFollowing(self):\n self.assertListKeyEqual(self.user.get_following(), lambda f: f.login, [\"nvie\", \"schacon\", \"jamis\", \"chad\", \"unclebob\", \"dabrahams\", \"jnorthrup\", \"brugidou\", \"regisb\", \"walidk\", \"tanzilli\", \"fjardon\", \"r3c\", \"sdanzan\", \"vineus\", \"cjuniet\", \"gturri\", \"ant9000\", \"asquini\", \"claudyus\", \"jardon-u\", \"s-bernard\", \"kamaradclimber\", \"Lyloa\"])\n \n+ def testHasInFollowing(self):\n+ nvie = self.g.get_user(\"nvie\")\n+ self.assertTrue(self.user.has_in_following(nvie))\n+\n def testGetOrgs(self):\n self.assertListKeyEqual(self.user.get_orgs(), lambda o: o.login, [\"BeaverSoftware\"])\n "},{"sha":"300e91744c7c62d950b6e5eb91ea8e697b3f570b","filename":"github/tests/Persistence.py","status":"added","additions":55,"deletions":0,"changes":55,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/tests/Persistence.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/tests/Persistence.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/tests/Persistence.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -0,0 +1,55 @@\n+# -*- coding: utf-8 -*-\n+\n+############################ Copyrights and license ############################\n+# #\n+# Copyright 2013 Vincent Jacques #\n+# #\n+# This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #\n+# #\n+# PyGithub is free software: you can redistribute it and/or modify it under #\n+# the terms of the GNU Lesser General Public License as published by the Free #\n+# Software Foundation, either version 3 of the License, or (at your option) #\n+# any later version. #\n+# #\n+# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY #\n+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS #\n+# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more #\n+# details. #\n+# #\n+# You should have received a copy of the GNU Lesser General Public License #\n+# along with PyGithub. If not, see . #\n+# #\n+################################################################################\n+\n+import Framework\n+import github\n+\n+if Framework.atLeastPython26:\n+ from io import BytesIO as IO\n+else:\n+ from StringIO import StringIO as IO\n+\n+\n+class Persistence(Framework.TestCase):\n+ def setUp(self):\n+ Framework.TestCase.setUp(self)\n+ self.repo = self.g.get_repo(\"akfish/PyGithub\")\n+\n+ self.dumpedRepo = IO()\n+ self.g.dump(self.repo, self.dumpedRepo)\n+ self.dumpedRepo.seek(0)\n+\n+ def tearDown(self):\n+ self.dumpedRepo.close()\n+\n+ def testLoad(self):\n+ loadedRepo = self.g.load(self.dumpedRepo)\n+ self.assertTrue(isinstance(loadedRepo, github.Repository.Repository))\n+ self.assertTrue(loadedRepo._requester is self.repo._requester)\n+ self.assertTrue(loadedRepo.owner._requester is self.repo._requester)\n+ self.assertEqual(loadedRepo.name, \"PyGithub\")\n+ self.assertEqual(loadedRepo.url, \"https://api.github.com/repos/akfish/PyGithub\")\n+\n+ def testLoadAndUpdate(self):\n+ loadedRepo = self.g.load(self.dumpedRepo)\n+ self.assertTrue(loadedRepo.update())"},{"sha":"dfc62ba258a155c9b40432ec67a51b8b8822ec73","filename":"github/tests/ReplayData/ConditionalRequestUpdate.setUp.txt","status":"added","additions":11,"deletions":0,"changes":11,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/ConditionalRequestUpdate.setUp.txt","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/ConditionalRequestUpdate.setUp.txt","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/tests/ReplayData/ConditionalRequestUpdate.setUp.txt?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -0,0 +1,11 @@\n+https\n+GET\n+api.github.com\n+None\n+/repos/akfish/PyGithub\n+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}\n+null\n+200\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4988'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '13698'), ('server', 'GitHub.com'), ('last-modified', 'Thu, 22 Aug 2013 02:09:11 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '\"8600bedcb7fed1d8065e1693e05529ce\"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Thu, 22 Aug 2013 02:13:08 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1377140429')]\n+{\"id\":12156762,\"name\":\"PyGithub\",\"full_name\":\"akfish/PyGithub\",\"owner\":{\"login\":\"akfish\",\"id\":922715,\"avatar_url\":\"https://1.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png\",\"gravatar_id\":\"12a1b44d4e5c19cee59618084602b112\",\"url\":\"https://api.github.com/users/akfish\",\"html_url\":\"https://github.com/akfish\",\"followers_url\":\"https://api.github.com/users/akfish/followers\",\"following_url\":\"https://api.github.com/users/akfish/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/akfish/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/akfish/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/akfish/subscriptions\",\"organizations_url\":\"https://api.github.com/users/akfish/orgs\",\"repos_url\":\"https://api.github.com/users/akfish/repos\",\"events_url\":\"https://api.github.com/users/akfish/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/akfish/received_events\",\"type\":\"User\"},\"private\":false,\"html_url\":\"https://github.com/akfish/PyGithub\",\"description\":\"Python library implementing the full Github API v3\",\"fork\":true,\"url\":\"https://api.github.com/repos/akfish/PyGithub\",\"forks_url\":\"https://api.github.com/repos/akfish/PyGithub/forks\",\"keys_url\":\"https://api.github.com/repos/akfish/PyGithub/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/akfish/PyGithub/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/akfish/PyGithub/teams\",\"hooks_url\":\"https://api.github.com/repos/akfish/PyGithub/hooks\",\"issue_events_url\":\"https://api.github.com/repos/akfish/PyGithub/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/akfish/PyGithub/events\",\"assignees_url\":\"https://api.github.com/repos/akfish/PyGithub/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/akfish/PyGithub/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/akfish/PyGithub/tags\",\"blobs_url\":\"https://api.github.com/repos/akfish/PyGithub/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/akfish/PyGithub/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/akfish/PyGithub/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/akfish/PyGithub/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/akfish/PyGithub/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/akfish/PyGithub/languages\",\"stargazers_url\":\"https://api.github.com/repos/akfish/PyGithub/stargazers\",\"contributors_url\":\"https://api.github.com/repos/akfish/PyGithub/contributors\",\"subscribers_url\":\"https://api.github.com/repos/akfish/PyGithub/subscribers\",\"subscription_url\":\"https://api.github.com/repos/akfish/PyGithub/subscription\",\"commits_url\":\"https://api.github.com/repos/akfish/PyGithub/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/akfish/PyGithub/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/akfish/PyGithub/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/akfish/PyGithub/issues/comments/{number}\",\"contents_url\":\"https://api.github.com/repos/akfish/PyGithub/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/akfish/PyGithub/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/akfish/PyGithub/merges\",\"archive_url\":\"https://api.github.com/repos/akfish/PyGithub/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/akfish/PyGithub/downloads\",\"issues_url\":\"https://api.github.com/repos/akfish/PyGithub/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/akfish/PyGithub/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/akfish/PyGithub/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/akfish/PyGithub/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/akfish/PyGithub/labels{/name}\",\"created_at\":\"2013-08-16T10:56:11Z\",\"updated_at\":\"2013-08-22T02:09:11Z\",\"pushed_at\":\"2013-08-22T02:09:09Z\",\"git_url\":\"git://github.com/akfish/PyGithub.git\",\"ssh_url\":\"git@github.com:akfish/PyGithub.git\",\"clone_url\":\"https://github.com/akfish/PyGithub.git\",\"svn_url\":\"https://github.com/akfish/PyGithub\",\"homepage\":\"http://jacquev6.github.com/PyGithub\",\"size\":6736,\"watchers_count\":0,\"language\":\"Python\",\"has_issues\":false,\"has_downloads\":true,\"has_wiki\":true,\"forks_count\":0,\"mirror_url\":null,\"open_issues_count\":0,\"forks\":0,\"open_issues\":0,\"watchers\":0,\"master_branch\":\"master\",\"default_branch\":\"master\",\"permissions\":{\"admin\":true,\"push\":true,\"pull\":true},\"network_count\":70,\"parent\":{\"id\":3544490,\"name\":\"PyGithub\",\"full_name\":\"jacquev6/PyGithub\",\"owner\":{\"login\":\"jacquev6\",\"id\":327146,\"avatar_url\":\"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png\",\"gravatar_id\":\"b68de5ae38616c296fa345d2b9df2225\",\"url\":\"https://api.github.com/users/jacquev6\",\"html_url\":\"https://github.com/jacquev6\",\"followers_url\":\"https://api.github.com/users/jacquev6/followers\",\"following_url\":\"https://api.github.com/users/jacquev6/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/jacquev6/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/jacquev6/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/jacquev6/subscriptions\",\"organizations_url\":\"https://api.github.com/users/jacquev6/orgs\",\"repos_url\":\"https://api.github.com/users/jacquev6/repos\",\"events_url\":\"https://api.github.com/users/jacquev6/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/jacquev6/received_events\",\"type\":\"User\"},\"private\":false,\"html_url\":\"https://github.com/jacquev6/PyGithub\",\"description\":\"Python library implementing the full Github API v3\",\"fork\":false,\"url\":\"https://api.github.com/repos/jacquev6/PyGithub\",\"forks_url\":\"https://api.github.com/repos/jacquev6/PyGithub/forks\",\"keys_url\":\"https://api.github.com/repos/jacquev6/PyGithub/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/jacquev6/PyGithub/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/jacquev6/PyGithub/teams\",\"hooks_url\":\"https://api.github.com/repos/jacquev6/PyGithub/hooks\",\"issue_events_url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/jacquev6/PyGithub/events\",\"assignees_url\":\"https://api.github.com/repos/jacquev6/PyGithub/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/jacquev6/PyGithub/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/jacquev6/PyGithub/tags\",\"blobs_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/jacquev6/PyGithub/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/jacquev6/PyGithub/languages\",\"stargazers_url\":\"https://api.github.com/repos/jacquev6/PyGithub/stargazers\",\"contributors_url\":\"https://api.github.com/repos/jacquev6/PyGithub/contributors\",\"subscribers_url\":\"https://api.github.com/repos/jacquev6/PyGithub/subscribers\",\"subscription_url\":\"https://api.github.com/repos/jacquev6/PyGithub/subscription\",\"commits_url\":\"https://api.github.com/repos/jacquev6/PyGithub/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/jacquev6/PyGithub/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/{number}\",\"contents_url\":\"https://api.github.com/repos/jacquev6/PyGithub/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/jacquev6/PyGithub/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/jacquev6/PyGithub/merges\",\"archive_url\":\"https://api.github.com/repos/jacquev6/PyGithub/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/jacquev6/PyGithub/downloads\",\"issues_url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/jacquev6/PyGithub/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/jacquev6/PyGithub/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/jacquev6/PyGithub/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels{/name}\",\"created_at\":\"2012-02-25T12:53:47Z\",\"updated_at\":\"2013-08-21T20:32:08Z\",\"pushed_at\":\"2013-08-21T20:31:45Z\",\"git_url\":\"git://github.com/jacquev6/PyGithub.git\",\"ssh_url\":\"git@github.com:jacquev6/PyGithub.git\",\"clone_url\":\"https://github.com/jacquev6/PyGithub.git\",\"svn_url\":\"https://github.com/jacquev6/PyGithub\",\"homepage\":\"http://jacquev6.github.com/PyGithub\",\"size\":7437,\"watchers_count\":248,\"language\":\"Python\",\"has_issues\":true,\"has_downloads\":true,\"has_wiki\":true,\"forks_count\":70,\"mirror_url\":null,\"open_issues_count\":17,\"forks\":70,\"open_issues\":17,\"watchers\":248,\"master_branch\":\"master\",\"default_branch\":\"master\"},\"source\":{\"id\":3544490,\"name\":\"PyGithub\",\"full_name\":\"jacquev6/PyGithub\",\"owner\":{\"login\":\"jacquev6\",\"id\":327146,\"avatar_url\":\"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png\",\"gravatar_id\":\"b68de5ae38616c296fa345d2b9df2225\",\"url\":\"https://api.github.com/users/jacquev6\",\"html_url\":\"https://github.com/jacquev6\",\"followers_url\":\"https://api.github.com/users/jacquev6/followers\",\"following_url\":\"https://api.github.com/users/jacquev6/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/jacquev6/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/jacquev6/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/jacquev6/subscriptions\",\"organizations_url\":\"https://api.github.com/users/jacquev6/orgs\",\"repos_url\":\"https://api.github.com/users/jacquev6/repos\",\"events_url\":\"https://api.github.com/users/jacquev6/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/jacquev6/received_events\",\"type\":\"User\"},\"private\":false,\"html_url\":\"https://github.com/jacquev6/PyGithub\",\"description\":\"Python library implementing the full Github API v3\",\"fork\":false,\"url\":\"https://api.github.com/repos/jacquev6/PyGithub\",\"forks_url\":\"https://api.github.com/repos/jacquev6/PyGithub/forks\",\"keys_url\":\"https://api.github.com/repos/jacquev6/PyGithub/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/jacquev6/PyGithub/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/jacquev6/PyGithub/teams\",\"hooks_url\":\"https://api.github.com/repos/jacquev6/PyGithub/hooks\",\"issue_events_url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/jacquev6/PyGithub/events\",\"assignees_url\":\"https://api.github.com/repos/jacquev6/PyGithub/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/jacquev6/PyGithub/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/jacquev6/PyGithub/tags\",\"blobs_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/jacquev6/PyGithub/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/jacquev6/PyGithub/languages\",\"stargazers_url\":\"https://api.github.com/repos/jacquev6/PyGithub/stargazers\",\"contributors_url\":\"https://api.github.com/repos/jacquev6/PyGithub/contributors\",\"subscribers_url\":\"https://api.github.com/repos/jacquev6/PyGithub/subscribers\",\"subscription_url\":\"https://api.github.com/repos/jacquev6/PyGithub/subscription\",\"commits_url\":\"https://api.github.com/repos/jacquev6/PyGithub/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/jacquev6/PyGithub/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/{number}\",\"contents_url\":\"https://api.github.com/repos/jacquev6/PyGithub/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/jacquev6/PyGithub/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/jacquev6/PyGithub/merges\",\"archive_url\":\"https://api.github.com/repos/jacquev6/PyGithub/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/jacquev6/PyGithub/downloads\",\"issues_url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/jacquev6/PyGithub/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/jacquev6/PyGithub/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/jacquev6/PyGithub/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels{/name}\",\"created_at\":\"2012-02-25T12:53:47Z\",\"updated_at\":\"2013-08-21T20:32:08Z\",\"pushed_at\":\"2013-08-21T20:31:45Z\",\"git_url\":\"git://github.com/jacquev6/PyGithub.git\",\"ssh_url\":\"git@github.com:jacquev6/PyGithub.git\",\"clone_url\":\"https://github.com/jacquev6/PyGithub.git\",\"svn_url\":\"https://github.com/jacquev6/PyGithub\",\"homepage\":\"http://jacquev6.github.com/PyGithub\",\"size\":7437,\"watchers_count\":248,\"language\":\"Python\",\"has_issues\":true,\"has_downloads\":true,\"has_wiki\":true,\"forks_count\":70,\"mirror_url\":null,\"open_issues_count\":17,\"forks\":70,\"open_issues\":17,\"watchers\":248,\"master_branch\":\"master\",\"default_branch\":\"master\"}}\n+"},{"sha":"025aee8c0f6dea08b255b2229fd018af435b9d2a","filename":"github/tests/ReplayData/ConditionalRequestUpdate.testDidNotUpdate.txt","status":"added","additions":11,"deletions":0,"changes":11,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/ConditionalRequestUpdate.testDidNotUpdate.txt","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/ConditionalRequestUpdate.testDidNotUpdate.txt","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/tests/ReplayData/ConditionalRequestUpdate.testDidNotUpdate.txt?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -0,0 +1,11 @@\n+https\n+GET\n+api.github.com\n+None\n+/repos/akfish/PyGithub\n+{'If-None-Match': '\"8600bedcb7fed1d8065e1693e05529ce\"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Thu, 22 Aug 2013 02:09:11 GMT'}\n+null\n+304\n+[('status', '304 Not Modified'), ('x-ratelimit-remaining', '4988'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('last-modified', 'Thu, 22 Aug 2013 02:09:11 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '\"8600bedcb7fed1d8065e1693e05529ce\"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Thu, 22 Aug 2013 02:13:10 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1377140429')]\n+\n+"},{"sha":"b6d8aeec9b3c663cfe561eb2513a514f10011673","filename":"github/tests/ReplayData/ConditionalRequestUpdate.testDidUpdate.txt","status":"added","additions":11,"deletions":0,"changes":11,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/ConditionalRequestUpdate.testDidUpdate.txt","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/ConditionalRequestUpdate.testDidUpdate.txt","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/tests/ReplayData/ConditionalRequestUpdate.testDidUpdate.txt?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -0,0 +1,11 @@\n+https\n+GET\n+api.github.com\n+None\n+/repos/akfish/PyGithub\n+{'If-None-Match': '\"8600bedcb7fed1d8065e1693e05529ce\"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Thu, 22 Aug 2013 02:09:11 GMT'}\n+null\n+200\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4987'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '13712'), ('server', 'GitHub.com'), ('last-modified', 'Thu, 22 Aug 2013 02:14:54 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '\"ef281ef0e821c18f80da36902727160b\"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Thu, 22 Aug 2013 02:15:01 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1377140429')]\n+{\"id\":12156762,\"name\":\"PyGithub\",\"full_name\":\"akfish/PyGithub\",\"owner\":{\"login\":\"akfish\",\"id\":922715,\"avatar_url\":\"https://0.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png\",\"gravatar_id\":\"12a1b44d4e5c19cee59618084602b112\",\"url\":\"https://api.github.com/users/akfish\",\"html_url\":\"https://github.com/akfish\",\"followers_url\":\"https://api.github.com/users/akfish/followers\",\"following_url\":\"https://api.github.com/users/akfish/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/akfish/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/akfish/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/akfish/subscriptions\",\"organizations_url\":\"https://api.github.com/users/akfish/orgs\",\"repos_url\":\"https://api.github.com/users/akfish/repos\",\"events_url\":\"https://api.github.com/users/akfish/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/akfish/received_events\",\"type\":\"User\"},\"private\":false,\"html_url\":\"https://github.com/akfish/PyGithub\",\"description\":\"Python library implementing the full Github API v3 - AKFish Fork\",\"fork\":true,\"url\":\"https://api.github.com/repos/akfish/PyGithub\",\"forks_url\":\"https://api.github.com/repos/akfish/PyGithub/forks\",\"keys_url\":\"https://api.github.com/repos/akfish/PyGithub/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/akfish/PyGithub/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/akfish/PyGithub/teams\",\"hooks_url\":\"https://api.github.com/repos/akfish/PyGithub/hooks\",\"issue_events_url\":\"https://api.github.com/repos/akfish/PyGithub/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/akfish/PyGithub/events\",\"assignees_url\":\"https://api.github.com/repos/akfish/PyGithub/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/akfish/PyGithub/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/akfish/PyGithub/tags\",\"blobs_url\":\"https://api.github.com/repos/akfish/PyGithub/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/akfish/PyGithub/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/akfish/PyGithub/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/akfish/PyGithub/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/akfish/PyGithub/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/akfish/PyGithub/languages\",\"stargazers_url\":\"https://api.github.com/repos/akfish/PyGithub/stargazers\",\"contributors_url\":\"https://api.github.com/repos/akfish/PyGithub/contributors\",\"subscribers_url\":\"https://api.github.com/repos/akfish/PyGithub/subscribers\",\"subscription_url\":\"https://api.github.com/repos/akfish/PyGithub/subscription\",\"commits_url\":\"https://api.github.com/repos/akfish/PyGithub/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/akfish/PyGithub/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/akfish/PyGithub/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/akfish/PyGithub/issues/comments/{number}\",\"contents_url\":\"https://api.github.com/repos/akfish/PyGithub/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/akfish/PyGithub/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/akfish/PyGithub/merges\",\"archive_url\":\"https://api.github.com/repos/akfish/PyGithub/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/akfish/PyGithub/downloads\",\"issues_url\":\"https://api.github.com/repos/akfish/PyGithub/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/akfish/PyGithub/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/akfish/PyGithub/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/akfish/PyGithub/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/akfish/PyGithub/labels{/name}\",\"created_at\":\"2013-08-16T10:56:11Z\",\"updated_at\":\"2013-08-22T02:14:54Z\",\"pushed_at\":\"2013-08-22T02:09:09Z\",\"git_url\":\"git://github.com/akfish/PyGithub.git\",\"ssh_url\":\"git@github.com:akfish/PyGithub.git\",\"clone_url\":\"https://github.com/akfish/PyGithub.git\",\"svn_url\":\"https://github.com/akfish/PyGithub\",\"homepage\":\"http://jacquev6.github.com/PyGithub\",\"size\":6736,\"watchers_count\":0,\"language\":\"Python\",\"has_issues\":false,\"has_downloads\":true,\"has_wiki\":true,\"forks_count\":0,\"mirror_url\":null,\"open_issues_count\":0,\"forks\":0,\"open_issues\":0,\"watchers\":0,\"master_branch\":\"master\",\"default_branch\":\"master\",\"permissions\":{\"admin\":true,\"push\":true,\"pull\":true},\"network_count\":70,\"parent\":{\"id\":3544490,\"name\":\"PyGithub\",\"full_name\":\"jacquev6/PyGithub\",\"owner\":{\"login\":\"jacquev6\",\"id\":327146,\"avatar_url\":\"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png\",\"gravatar_id\":\"b68de5ae38616c296fa345d2b9df2225\",\"url\":\"https://api.github.com/users/jacquev6\",\"html_url\":\"https://github.com/jacquev6\",\"followers_url\":\"https://api.github.com/users/jacquev6/followers\",\"following_url\":\"https://api.github.com/users/jacquev6/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/jacquev6/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/jacquev6/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/jacquev6/subscriptions\",\"organizations_url\":\"https://api.github.com/users/jacquev6/orgs\",\"repos_url\":\"https://api.github.com/users/jacquev6/repos\",\"events_url\":\"https://api.github.com/users/jacquev6/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/jacquev6/received_events\",\"type\":\"User\"},\"private\":false,\"html_url\":\"https://github.com/jacquev6/PyGithub\",\"description\":\"Python library implementing the full Github API v3\",\"fork\":false,\"url\":\"https://api.github.com/repos/jacquev6/PyGithub\",\"forks_url\":\"https://api.github.com/repos/jacquev6/PyGithub/forks\",\"keys_url\":\"https://api.github.com/repos/jacquev6/PyGithub/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/jacquev6/PyGithub/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/jacquev6/PyGithub/teams\",\"hooks_url\":\"https://api.github.com/repos/jacquev6/PyGithub/hooks\",\"issue_events_url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/jacquev6/PyGithub/events\",\"assignees_url\":\"https://api.github.com/repos/jacquev6/PyGithub/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/jacquev6/PyGithub/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/jacquev6/PyGithub/tags\",\"blobs_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/jacquev6/PyGithub/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/jacquev6/PyGithub/languages\",\"stargazers_url\":\"https://api.github.com/repos/jacquev6/PyGithub/stargazers\",\"contributors_url\":\"https://api.github.com/repos/jacquev6/PyGithub/contributors\",\"subscribers_url\":\"https://api.github.com/repos/jacquev6/PyGithub/subscribers\",\"subscription_url\":\"https://api.github.com/repos/jacquev6/PyGithub/subscription\",\"commits_url\":\"https://api.github.com/repos/jacquev6/PyGithub/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/jacquev6/PyGithub/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/{number}\",\"contents_url\":\"https://api.github.com/repos/jacquev6/PyGithub/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/jacquev6/PyGithub/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/jacquev6/PyGithub/merges\",\"archive_url\":\"https://api.github.com/repos/jacquev6/PyGithub/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/jacquev6/PyGithub/downloads\",\"issues_url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/jacquev6/PyGithub/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/jacquev6/PyGithub/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/jacquev6/PyGithub/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels{/name}\",\"created_at\":\"2012-02-25T12:53:47Z\",\"updated_at\":\"2013-08-21T20:32:08Z\",\"pushed_at\":\"2013-08-21T20:31:45Z\",\"git_url\":\"git://github.com/jacquev6/PyGithub.git\",\"ssh_url\":\"git@github.com:jacquev6/PyGithub.git\",\"clone_url\":\"https://github.com/jacquev6/PyGithub.git\",\"svn_url\":\"https://github.com/jacquev6/PyGithub\",\"homepage\":\"http://jacquev6.github.com/PyGithub\",\"size\":7437,\"watchers_count\":248,\"language\":\"Python\",\"has_issues\":true,\"has_downloads\":true,\"has_wiki\":true,\"forks_count\":70,\"mirror_url\":null,\"open_issues_count\":17,\"forks\":70,\"open_issues\":17,\"watchers\":248,\"master_branch\":\"master\",\"default_branch\":\"master\"},\"source\":{\"id\":3544490,\"name\":\"PyGithub\",\"full_name\":\"jacquev6/PyGithub\",\"owner\":{\"login\":\"jacquev6\",\"id\":327146,\"avatar_url\":\"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png\",\"gravatar_id\":\"b68de5ae38616c296fa345d2b9df2225\",\"url\":\"https://api.github.com/users/jacquev6\",\"html_url\":\"https://github.com/jacquev6\",\"followers_url\":\"https://api.github.com/users/jacquev6/followers\",\"following_url\":\"https://api.github.com/users/jacquev6/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/jacquev6/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/jacquev6/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/jacquev6/subscriptions\",\"organizations_url\":\"https://api.github.com/users/jacquev6/orgs\",\"repos_url\":\"https://api.github.com/users/jacquev6/repos\",\"events_url\":\"https://api.github.com/users/jacquev6/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/jacquev6/received_events\",\"type\":\"User\"},\"private\":false,\"html_url\":\"https://github.com/jacquev6/PyGithub\",\"description\":\"Python library implementing the full Github API v3\",\"fork\":false,\"url\":\"https://api.github.com/repos/jacquev6/PyGithub\",\"forks_url\":\"https://api.github.com/repos/jacquev6/PyGithub/forks\",\"keys_url\":\"https://api.github.com/repos/jacquev6/PyGithub/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/jacquev6/PyGithub/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/jacquev6/PyGithub/teams\",\"hooks_url\":\"https://api.github.com/repos/jacquev6/PyGithub/hooks\",\"issue_events_url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/jacquev6/PyGithub/events\",\"assignees_url\":\"https://api.github.com/repos/jacquev6/PyGithub/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/jacquev6/PyGithub/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/jacquev6/PyGithub/tags\",\"blobs_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/jacquev6/PyGithub/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/jacquev6/PyGithub/languages\",\"stargazers_url\":\"https://api.github.com/repos/jacquev6/PyGithub/stargazers\",\"contributors_url\":\"https://api.github.com/repos/jacquev6/PyGithub/contributors\",\"subscribers_url\":\"https://api.github.com/repos/jacquev6/PyGithub/subscribers\",\"subscription_url\":\"https://api.github.com/repos/jacquev6/PyGithub/subscription\",\"commits_url\":\"https://api.github.com/repos/jacquev6/PyGithub/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/jacquev6/PyGithub/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/{number}\",\"contents_url\":\"https://api.github.com/repos/jacquev6/PyGithub/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/jacquev6/PyGithub/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/jacquev6/PyGithub/merges\",\"archive_url\":\"https://api.github.com/repos/jacquev6/PyGithub/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/jacquev6/PyGithub/downloads\",\"issues_url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/jacquev6/PyGithub/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/jacquev6/PyGithub/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/jacquev6/PyGithub/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels{/name}\",\"created_at\":\"2012-02-25T12:53:47Z\",\"updated_at\":\"2013-08-21T20:32:08Z\",\"pushed_at\":\"2013-08-21T20:31:45Z\",\"git_url\":\"git://github.com/jacquev6/PyGithub.git\",\"ssh_url\":\"git@github.com:jacquev6/PyGithub.git\",\"clone_url\":\"https://github.com/jacquev6/PyGithub.git\",\"svn_url\":\"https://github.com/jacquev6/PyGithub\",\"homepage\":\"http://jacquev6.github.com/PyGithub\",\"size\":7437,\"watchers_count\":248,\"language\":\"Python\",\"has_issues\":true,\"has_downloads\":true,\"has_wiki\":true,\"forks_count\":70,\"mirror_url\":null,\"open_issues_count\":17,\"forks\":70,\"open_issues\":17,\"watchers\":248,\"master_branch\":\"master\",\"default_branch\":\"master\"}}\n+"},{"sha":"6ef154b5c89fc41728599711ada9ac0aa8d36959","filename":"github/tests/ReplayData/ConditionalRequestUpdate.testUpdateObjectWithoutEtag.txt","status":"added","additions":22,"deletions":0,"changes":22,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/ConditionalRequestUpdate.testUpdateObjectWithoutEtag.txt","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/ConditionalRequestUpdate.testUpdateObjectWithoutEtag.txt","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/tests/ReplayData/ConditionalRequestUpdate.testUpdateObjectWithoutEtag.txt?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -0,0 +1,22 @@\n+https\r\n+GET\r\n+api.github.com\r\n+None\r\n+/repos/jacquev6/PyGithub\r\n+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}\r\n+null\r\n+200\r\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4911'), ('content-length', '1129'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('date', 'Sun, 27 May 2012 07:17:09 GMT'), ('content-type', 'application/json; charset=utf-8')]\r\n+{\"clone_url\":\"https://github.com/jacquev6/PyGithub.git\",\"has_downloads\":true,\"watchers\":15,\"git_url\":\"git://github.com/jacquev6/PyGithub.git\",\"updated_at\":\"2012-05-27T06:55:28Z\",\"permissions\":{\"pull\":true,\"admin\":true,\"push\":true},\"homepage\":\"http://vincent-jacques.net/PyGithub\",\"url\":\"https://api.github.com/repos/jacquev6/PyGithub\",\"mirror_url\":null,\"has_wiki\":false,\"has_issues\":true,\"fork\":false,\"forks\":3,\"size\":308,\"private\":false,\"open_issues\":16,\"svn_url\":\"https://github.com/jacquev6/PyGithub\",\"owner\":{\"url\":\"https://api.github.com/users/jacquev6\",\"avatar_url\":\"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"gravatar_id\":\"b68de5ae38616c296fa345d2b9df2225\",\"login\":\"jacquev6\",\"id\":327146},\"name\":\"PyGithub\",\"language\":\"Python\",\"description\":\"Python library implementing the full Github API v3\",\"ssh_url\":\"git@github.com:jacquev6/PyGithub.git\",\"pushed_at\":\"2012-05-27T06:00:28Z\",\"created_at\":\"2012-02-25T12:53:47Z\",\"id\":3544490,\"html_url\":\"https://github.com/jacquev6/PyGithub\",\"full_name\":\"jacquev6/PyGithub\"}\r\n+\r\n+https\r\n+GET\r\n+api.github.com\r\n+None\r\n+/repos/jacquev6/PyGithub\r\n+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}\r\n+null\r\n+200\r\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4911'), ('content-length', '1129'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('date', 'Sun, 27 May 2012 07:17:09 GMT'), ('content-type', 'application/json; charset=utf-8')]\r\n+{\"clone_url\":\"https://github.com/jacquev6/PyGithub.git\",\"has_downloads\":true,\"watchers\":15,\"git_url\":\"git://github.com/jacquev6/PyGithub.git\",\"updated_at\":\"2012-05-27T06:55:28Z\",\"permissions\":{\"pull\":true,\"admin\":true,\"push\":true},\"homepage\":\"http://vincent-jacques.net/PyGithub\",\"url\":\"https://api.github.com/repos/jacquev6/PyGithub\",\"mirror_url\":null,\"has_wiki\":false,\"has_issues\":true,\"fork\":false,\"forks\":3,\"size\":308,\"private\":false,\"open_issues\":16,\"svn_url\":\"https://github.com/jacquev6/PyGithub\",\"owner\":{\"url\":\"https://api.github.com/users/jacquev6\",\"avatar_url\":\"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"gravatar_id\":\"b68de5ae38616c296fa345d2b9df2225\",\"login\":\"jacquev6\",\"id\":327146},\"name\":\"PyGithub\",\"language\":\"Python\",\"description\":\"Python library implementing the full Github API v3\",\"ssh_url\":\"git@github.com:jacquev6/PyGithub.git\",\"pushed_at\":\"2012-05-27T06:00:28Z\",\"created_at\":\"2012-02-25T12:53:47Z\",\"id\":3544490,\"html_url\":\"https://github.com/jacquev6/PyGithub\",\"full_name\":\"jacquev6/PyGithub\"}\r\n+\r"},{"sha":"0589aa6c8958061fa31f388fd9d737750bdac50a","filename":"github/tests/ReplayData/Gist.testFork.txt","status":"modified","additions":9,"deletions":9,"changes":18,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/Gist.testFork.txt","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/Gist.testFork.txt","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/tests/ReplayData/Gist.testFork.txt?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -2,32 +2,32 @@ https\n GET\n api.github.com\n None\n-/gists/2729818\n+/gists/6296553\n {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}\n null\n 200\n-[('status', '200 OK'), ('x-ratelimit-remaining', '4970'), ('content-length', '2576'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '\"fda4eb92e9b9a245bccf9efd47857766\"'), ('date', 'Sat, 19 May 2012 07:25:30 GMT'), ('content-type', 'application/json; charset=utf-8')]\n-{\"git_push_url\":\"git@gist.github.com:2729818.git\",\"updated_at\":\"2012-05-19T07:06:08Z\",\"forks\":[],\"url\":\"https://api.github.com/gists/2729818\",\"comments\":0,\"public\":true,\"files\":{\"ror.markdown\":{\"type\":\"text/plain\",\"raw_url\":\"https://gist.github.com/raw/2729818/1284e70f4c16550ef32a26aa4f5f0c78edaa7008/ror.markdown\",\"size\":1076,\"filename\":\"ror.markdown\",\"content\":\"## create user\\n\\nsudo useradd -m username\\nvisudo\\n\\n## delete default user\\n\\nsudo userdel ubuntu\\nsudo rm -Rf ubuntu\\n\\n## setup ssh\\n\\nmkdir ~/.ssh\\nvi /etc/ssh/authorized_keys\\nsudo vi /etc/ssh/sshd_config\\n\\n\\n## install packages\\n\\nsudo apt-get update\\n\\nsudo apt-get install sysv-rc-init git-core apache2-utils wget vim\\nsudo apt-get install mysql-client mysql-server libmysqld-dev\\nsudo apt-get install g++ openssl zlib1g readline-common libyaml-dev libssl-dev zlib1g-dev libxml2-dev libxslt1-dev libjson0-dev libgcc1 libreadline-dev\\n\\n\\n## install nginx\\n\\nwget http://nginx.org/keys/nginx_signing.key\\nsudo apt-key add nginx_signing.key\\n\\n### add /etc/sources.list\\n> \\\"deb http://nginx.org/packages/ubuntu/ lucid nginx\\ndeb-src http://nginx.org/packages/ubuntu/ lucid nginx\\\"\\n\\napt-get update\\napt-get install nginx\\n\\n\\n## setup system\\n\\nsudo sysv-rc-init\\n\\n\\n## install ruby\\n\\ncd /usr/local/src\\nsudo wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz\\nsudo tar zxvf ruby-1.9.3-p194.tar.gz\\ncd ruby-1.9.3-p194\\nsudo ./configure\\nsudo make && make install\\n\\n\\n## install RoR\\n\\nsudo gem install rails\",\"language\":\"Markdown\"}},\"html_url\":\"https://gist.github.com/2729818\",\"user\":{\"url\":\"https://api.github.com/users/Kechol\",\"gravatar_id\":\"f2a6400b393749ccd9ad3f24d4995f77\",\"login\":\"Kechol\",\"avatar_url\":\"https://secure.gravatar.com/avatar/f2a6400b393749ccd9ad3f24d4995f77?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"id\":625489},\"description\":\"RoR setup in AWS EC2(Ubuntu 12.04 LTS)\",\"created_at\":\"2012-05-19T07:06:08Z\",\"git_pull_url\":\"git://gist.github.com/2729818.git\",\"id\":\"2729818\",\"history\":[{\"url\":\"https://api.github.com/gists/2729818/a655d19a12233e5e5615deb714eae95c433eed57\",\"version\":\"a655d19a12233e5e5615deb714eae95c433eed57\",\"change_status\":{\"deletions\":0,\"additions\":57,\"total\":57},\"committed_at\":\"2012-05-19T07:06:08Z\",\"user\":{\"url\":\"https://api.github.com/users/Kechol\",\"gravatar_id\":\"f2a6400b393749ccd9ad3f24d4995f77\",\"login\":\"Kechol\",\"avatar_url\":\"https://secure.gravatar.com/avatar/f2a6400b393749ccd9ad3f24d4995f77?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"id\":625489}}]}\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4966'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '25285'), ('server', 'GitHub.com'), ('last-modified', 'Wed, 21 Aug 2013 16:26:50 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '\"b96b3895f5da8f5e9533f0db72748a49\"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Wed, 21 Aug 2013 16:28:20 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1377104997')]\n+{\"url\":\"https://api.github.com/gists/6296553\",\"forks_url\":\"https://api.github.com/gists/6296553/forks\",\"commits_url\":\"https://api.github.com/gists/6296553/commits\",\"id\":\"6296553\",\"git_pull_url\":\"https://gist.github.com/6296553.git\",\"git_push_url\":\"https://gist.github.com/6296553.git\",\"html_url\":\"https://gist.github.com/6296553\",\"files\":{\"GithubAPI.lua\":{\"filename\":\"GithubAPI.lua\",\"type\":\"text/plain\",\"language\":\"Lua\",\"raw_url\":\"https://gist.github.com/raw/6296553/88aafa25fb28e17013054a117354a37f0d78963c/GithubAPI.lua\",\"size\":21229,\"content\":\"-- GithubAPI\\n-- @Author : Hyro Vitaly Protago\\n-- @Version : 1.0.0\\n\\n--[[\\n\\nINFOS :\\n - Cannot delete an anonymous gist\\n]]--\\n\\nGithubAPI = {\\n\\tlocation = \\\"https://api.github.com/\\\",\\n\\ttoken = nil,\\n\\tOAuth = {\\n\\t\\tauthorizations = {}\\n\\t},\\n\\tgist = {\\n\\t\\tlist = {},\\n\\t\\tcomment = {}\\n\\t},\\n\\tgithub = {}\\n}\\n\\n----------------------------------------------------------------------------\\n------------------------------ Github API ----------------------------------\\n----------------------------------------------------------------------------\\n\\n--- Authentication ---\\n\\n--[[ Scopes --\\n\\nScopes let you specify exactly what type of access you need. Scopes limit access for OAuth tokens.\\nThey do not grant any additional permission beyond that which the user already has.\\n\\nFor the web flow, requested scopes will be displayed to the user on the authorize form.\\n\\nCheck headers to see what OAuth scopes you have, and what the API action accepts.\\n\\n~~~\\n$ curl -H \\\"Authorization: token OAUTH-TOKEN\\\" https://api.github.com/users/technoweenie -I\\nHTTP/1.1 200 OK\\nX-OAuth-Scopes: repo, user\\nX-Accepted-OAuth-Scopes: user\\nX-OAuth-Scopes lists the scopes your token has authorized. X-Accepted-OAuth-Scopes lists the scopes that the action checks for.\\n~~~\\n\\n- (no scope)\\npublic read-only access (includes public user profile info, public repo info, and gists).\\n- user\\nRead/write access to profile info only. Note: this scope includes user:email and user:follow.\\n- user:email\\nRead access to a user’s email addresses.\\n- user:follow\\nAccess to follow or unfollow other users.\\n- public_repo\\nRead/write access to public repos and organizations.\\n- repo\\nRead/write access to public and private repos and organizations.\\n- repo:status\\nRead/write access to public and private repository commit statuses.\\nThis scope is only necessary to grant other users or services access to private repository commit statuses without granting access to the code.\\nThe repo and public_repo scopes already include access to commit status for private and public repositories respectively.\\n- delete_repo\\nDelete access to adminable repositories.\\n- notifications\\nRead access to a user’s notifications. repo is accepted too.\\n- gist\\nWrite access to gists.\\n\\nNOTE: Your application can request the scopes in the initial redirection. You can specify multiple scopes by separating them by a comma.\\n~~~\\nhttps://github.com/login/oauth/authorize?\\n client_id=...&\\n scope=user,public_repo\\n~~~\\n]]--\\n\\n-- Redirect users to request GitHub access --\\nfunction GithubAPI.OAuth.getToken(client_id, scope, callback)\\n\\tGithubAPI.http_request(\\\"https://github.com/login/oauth/authorize?client_id=\\\"..client_id..\\\"&scope=\\\"..scope, function(data, status, headers)\\n\\t\\tGithubAPI.OAuth._getToken(client_id, client_secret, data, callback)\\n\\tend, nil, true)\\nend\\n-- GitHub redirects back to your site --\\nfunction GithubAPI.OAuth._getToken(client_id, client_secret, code, callback)\\n\\tGithubAPI.http_request(\\\"https://github.com/login/oauth/access_token\\\", callback, {\\n\\t\\tmethod = \\\"POST\\\",\\n\\t\\tdata = {\\n\\t\\t\\tclient_id = client_id,\\n\\t\\t\\tclient_secret = client_secret,\\n\\t\\t\\tcode = code\\n\\t\\t}\\n\\t}, true)\\nend\\n\\n-- List your authorizations --\\nfunction GithubAPI.OAuth.authorizations.list(callback)\\n\\tGithubAPI.http_request(\\\"authorizations\\\", callback)\\nend\\n\\n--[[ Response --\\nStatus: 200 OK\\nLink: ; rel=\\\"next\\\",\\n ; rel=\\\"last\\\"\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n[\\n {\\n \\\"id\\\": 1,\\n \\\"url\\\": \\\"https://api.github.com/authorizations/1\\\",\\n \\\"scopes\\\": [\\n \\\"public_repo\\\"\\n ],\\n \\\"token\\\": \\\"abc123\\\",\\n \\\"app\\\": {\\n \\\"url\\\": \\\"http://my-github-app.com\\\",\\n \\\"name\\\": \\\"my github app\\\",\\n \\\"client_id\\\": \\\"abcde12345fghij67890\\\"\\n },\\n \\\"note\\\": \\\"optional note\\\",\\n \\\"note_url\\\": \\\"http://optional/note/url\\\",\\n \\\"updated_at\\\": \\\"2011-09-06T20:39:23Z\\\",\\n \\\"created_at\\\": \\\"2011-09-06T17:26:27Z\\\"\\n }\\n]\\n]]--\\n\\n-- Get a single authorization --\\nfunction GithubAPI.OAuth.authorizations.get(id, callback)\\n\\tGithubAPI.http_request(\\\"authorizations/\\\"..id, callback)\\nend\\n\\n--[[ Response --\\nStatus: 200 OK\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n{\\n \\\"id\\\": 1,\\n \\\"url\\\": \\\"https://api.github.com/authorizations/1\\\",\\n \\\"scopes\\\": [\\n \\\"public_repo\\\"\\n ],\\n \\\"token\\\": \\\"abc123\\\",\\n \\\"app\\\": {\\n \\\"url\\\": \\\"http://my-github-app.com\\\",\\n \\\"name\\\": \\\"my github app\\\",\\n \\\"client_id\\\": \\\"abcde12345fghij67890\\\"\\n },\\n \\\"note\\\": \\\"optional note\\\",\\n \\\"note_url\\\": \\\"http://optional/note/url\\\",\\n \\\"updated_at\\\": \\\"2011-09-06T20:39:23Z\\\",\\n \\\"created_at\\\": \\\"2011-09-06T17:26:27Z\\\"\\n}\\n]]--\\n\\n-- Create a new authorization --\\nfunction GithubAPI.OAuth.authorizations.create(callback, scopes, note, note_url, client_id, client_secret)\\n\\tGithubAPI.http_request(\\\"authorizations/\\\", callback, {\\n\\t\\tmethod = \\\"POST\\\",\\n\\t\\tdata = {\\n\\t\\t\\tscopes = scopes,\\n\\t\\t\\tnote = note,\\n\\t\\t\\tnote_url = note_url,\\n\\t\\t\\tclient_id = client_id,\\n\\t\\t\\tclient_secret = client_secret\\n\\t\\t}\\n\\t})\\nend\\n\\n--[[ Input --\\nscopes\\nOptional array - A list of scopes that this authorization is in.\\n\\nnote\\nOptional string - A note to remind you what the OAuth token is for.\\n\\nnote_url\\nOptional string - A URL to remind you what app the OAuth token is for.\\n\\nclient_id\\nOptional String - The 20 character OAuth app client key for which to create the token.\\n\\nclient_secret\\nOptional String - The 40 character OAuth app client secret for which to create the token.\\n~~~\\n{\\n \\\"scopes\\\": [\\n \\\"public_repo\\\"\\n ],\\n \\\"note\\\": \\\"admin script\\\"\\n}\\n~~~\\n]]--\\n\\n--[[ Response --\\nStatus: 201 Created\\nLocation: https://api.github.com/authorizations/1\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n{\\n \\\"id\\\": 1,\\n \\\"url\\\": \\\"https://api.github.com/authorizations/1\\\",\\n \\\"scopes\\\": [\\n \\\"public_repo\\\"\\n ],\\n \\\"token\\\": \\\"abc123\\\",\\n \\\"app\\\": {\\n \\\"url\\\": \\\"http://my-github-app.com\\\",\\n \\\"name\\\": \\\"my github app\\\",\\n \\\"client_id\\\": \\\"abcde12345fghij67890\\\"\\n },\\n \\\"note\\\": \\\"optional note\\\",\\n \\\"note_url\\\": \\\"http://optional/note/url\\\",\\n \\\"updated_at\\\": \\\"2011-09-06T20:39:23Z\\\",\\n \\\"created_at\\\": \\\"2011-09-06T17:26:27Z\\\"\\n}\\n]]--\\n\\n-- TODO\\n-- Update\\n-- Check\\n-- Delete\\n\\n--- GISTS ---\\n\\n-- List gists --\\nfunction GithubAPI.gist.list.user(user, callback)\\n\\tGithubAPI.http_request(\\\"users/\\\"..user..\\\"/gists\\\", callback)\\nend\\nfunction GithubAPI.gist.list.all(callback) -- return all public gists if called anonymously\\n\\tGithubAPI.http_request(\\\"gists\\\", callback)\\nend\\nfunction GithubAPI.gist.list.allPublic(callback)\\n\\tGithubAPI.http_request(\\\"gists/public\\\", callback)\\nend\\nfunction GithubAPI.gist.list.starred(callback)\\n\\tGithubAPI.http_request(\\\"gists/starred\\\", callback)\\nend\\n\\n--[[ Response --\\nStatus: 200 OK\\nLink: ; rel=\\\"next\\\",\\n ; rel=\\\"last\\\"\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n[\\n {\\n \\\"url\\\": \\\"https://api.github.com/gists/88a3112be74ba6ad701e\\\",\\n \\\"id\\\": \\\"1\\\",\\n \\\"description\\\": \\\"description of gist\\\",\\n \\\"public\\\": true,\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"files\\\": {\\n \\\"ring.erl\\\": {\\n \\\"size\\\": 932,\\n \\\"filename\\\": \\\"ring.erl\\\",\\n \\\"raw_url\\\": \\\"https://gist.github.com/raw/365370/8c4d2d43d178df44f4c03a7f2ac0ff512853564e/ring.erl\\\"\\n }\\n },\\n \\\"comments\\\": 0,\\n \\\"comments_url\\\": \\\"https://api.github.com/gists/8438e99468ee9a4ab10e/comments/\\\",\\n \\\"html_url\\\": \\\"https://gist.github.com/1\\\",\\n \\\"git_pull_url\\\": \\\"git://gist.github.com/1.git\\\",\\n \\\"git_push_url\\\": \\\"git@gist.github.com:1.git\\\",\\n \\\"created_at\\\": \\\"2010-04-14T02:15:15Z\\\"\\n }\\n]\\n]]--\\n\\n-- Get a single gist --\\nfunction GithubAPI.gist.get(id, callback)\\n\\tGithubAPI.http_request(\\\"gists/\\\"..id, callback)\\nend\\n\\n--[[ Response --\\nStatus: 200 OK\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n{\\n \\\"url\\\": \\\"https://api.github.com/gists/88a3112be74ba6ad701e\\\",\\n \\\"id\\\": \\\"1\\\",\\n \\\"description\\\": \\\"description of gist\\\",\\n \\\"public\\\": true,\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"files\\\": {\\n \\\"ring.erl\\\": {\\n \\\"size\\\": 932,\\n \\\"filename\\\": \\\"ring.erl\\\",\\n \\\"raw_url\\\": \\\"https://gist.github.com/raw/365370/8c4d2d43d178df44f4c03a7f2ac0ff512853564e/ring.erl\\\"\\n }\\n },\\n \\\"comments\\\": 0,\\n \\\"comments_url\\\": \\\"https://api.github.com/gists/8438e99468ee9a4ab10e/comments/\\\",\\n \\\"html_url\\\": \\\"https://gist.github.com/1\\\",\\n \\\"git_pull_url\\\": \\\"git://gist.github.com/1.git\\\",\\n \\\"git_push_url\\\": \\\"git@gist.github.com:1.git\\\",\\n \\\"created_at\\\": \\\"2010-04-14T02:15:15Z\\\",\\n \\\"forks\\\": [\\n {\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"url\\\": \\\"https://api.github.com/gists/add0d71b065f55c46f60\\\",\\n \\\"created_at\\\": \\\"2011-04-14T16:00:49Z\\\"\\n }\\n ],\\n \\\"history\\\": [\\n {\\n \\\"url\\\": \\\"https://api.github.com/gists/80bdb0d081c447600e18\\\",\\n \\\"version\\\": \\\"57a7f021a713b1c5a6a199b54cc514735d2d462f\\\",\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"change_status\\\": {\\n \\\"deletions\\\": 0,\\n \\\"additions\\\": 180,\\n \\\"total\\\": 180\\n },\\n \\\"committed_at\\\": \\\"2010-04-14T02:15:15Z\\\"\\n }\\n ]\\n}\\n]]--\\n\\n-- Create a gist --\\nfunction GithubAPI.gist.create(public, files, callback ,description)\\n\\tGithubAPI.http_request(\\\"gists/\\\"..id, callback, {\\n\\t\\tmethod = \\\"POST\\\",\\n\\t\\tdata = {\\n\\t\\t\\tpublic = public,\\n\\t\\t\\tfiles = files,\\n\\t\\t\\tdescription = description\\n\\t\\t}\\n\\t})\\nend\\n\\n--[[ Input --\\n{\\n \\\"description\\\": \\\"the description for this gist\\\",\\n \\\"public\\\": true,\\n \\\"files\\\": {\\n \\\"file1.txt\\\": {\\n \\\"content\\\": \\\"String file contents\\\"\\n }\\n }\\n}\\n]]--\\n\\n--[[ Response --\\nStatus: 201 Created\\nLocation: https://api.github.com/gists/1\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n{\\n \\\"url\\\": \\\"https://api.github.com/gists/88a3112be74ba6ad701e\\\",\\n \\\"id\\\": \\\"1\\\",\\n \\\"description\\\": \\\"description of gist\\\",\\n \\\"public\\\": true,\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"files\\\": {\\n \\\"ring.erl\\\": {\\n \\\"size\\\": 932,\\n \\\"filename\\\": \\\"ring.erl\\\",\\n \\\"raw_url\\\": \\\"https://gist.github.com/raw/365370/8c4d2d43d178df44f4c03a7f2ac0ff512853564e/ring.erl\\\"\\n }\\n },\\n \\\"comments\\\": 0,\\n \\\"comments_url\\\": \\\"https://api.github.com/gists/8438e99468ee9a4ab10e/comments/\\\",\\n \\\"html_url\\\": \\\"https://gist.github.com/1\\\",\\n \\\"git_pull_url\\\": \\\"git://gist.github.com/1.git\\\",\\n \\\"git_push_url\\\": \\\"git@gist.github.com:1.git\\\",\\n \\\"created_at\\\": \\\"2010-04-14T02:15:15Z\\\",\\n \\\"forks\\\": [\\n {\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"url\\\": \\\"https://api.github.com/gists/add0d71b065f55c46f60\\\",\\n \\\"created_at\\\": \\\"2011-04-14T16:00:49Z\\\"\\n }\\n ],\\n \\\"history\\\": [\\n {\\n \\\"url\\\": \\\"https://api.github.com/gists/80bdb0d081c447600e18\\\",\\n \\\"version\\\": \\\"57a7f021a713b1c5a6a199b54cc514735d2d462f\\\",\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"change_status\\\": {\\n \\\"deletions\\\": 0,\\n \\\"additions\\\": 180,\\n \\\"total\\\": 180\\n },\\n \\\"committed_at\\\": \\\"2010-04-14T02:15:15Z\\\"\\n }\\n ]\\n}\\n]]--\\n\\n-- Edit a gist --\\nfunction GithubAPI.gist.edit(id, files, callback, description)\\n\\tGithubAPI.http_request(\\\"gists/\\\"..id, callback, {\\n\\t\\tmethod = \\\"PATCH\\\",\\n\\t\\tdata = {\\n\\t\\t\\tid = id,\\n\\t\\t\\tfiles = files,\\n\\t\\t\\tdescription = description\\n\\t\\t}\\n\\t})\\nend\\n\\n--[[ Input --\\n{\\n \\\"description\\\": \\\"the description for this gist\\\",\\n \\\"files\\\": {\\n \\\"file1.txt\\\": {\\n \\\"content\\\": \\\"updated file contents\\\"\\n },\\n \\\"old_name.txt\\\": {\\n \\\"filename\\\": \\\"new_name.txt\\\",\\n \\\"content\\\": \\\"modified contents\\\"\\n },\\n \\\"new_file.txt\\\": {\\n \\\"content\\\": \\\"a new file\\\"\\n },\\n \\\"delete_this_file.txt\\\": null\\n }\\n}\\n]]--\\n\\n--[[ Response --\\nStatus: 200 OK\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n{\\n \\\"url\\\": \\\"https://api.github.com/gists/88a3112be74ba6ad701e\\\",\\n \\\"id\\\": \\\"1\\\",\\n \\\"description\\\": \\\"description of gist\\\",\\n \\\"public\\\": true,\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"files\\\": {\\n \\\"ring.erl\\\": {\\n \\\"size\\\": 932,\\n \\\"filename\\\": \\\"ring.erl\\\",\\n \\\"raw_url\\\": \\\"https://gist.github.com/raw/365370/8c4d2d43d178df44f4c03a7f2ac0ff512853564e/ring.erl\\\"\\n }\\n },\\n \\\"comments\\\": 0,\\n \\\"comments_url\\\": \\\"https://api.github.com/gists/8438e99468ee9a4ab10e/comments/\\\",\\n \\\"html_url\\\": \\\"https://gist.github.com/1\\\",\\n \\\"git_pull_url\\\": \\\"git://gist.github.com/1.git\\\",\\n \\\"git_push_url\\\": \\\"git@gist.github.com:1.git\\\",\\n \\\"created_at\\\": \\\"2010-04-14T02:15:15Z\\\",\\n \\\"forks\\\": [\\n {\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"url\\\": \\\"https://api.github.com/gists/add0d71b065f55c46f60\\\",\\n \\\"created_at\\\": \\\"2011-04-14T16:00:49Z\\\"\\n }\\n ],\\n \\\"history\\\": [\\n {\\n \\\"url\\\": \\\"https://api.github.com/gists/80bdb0d081c447600e18\\\",\\n \\\"version\\\": \\\"57a7f021a713b1c5a6a199b54cc514735d2d462f\\\",\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"change_status\\\": {\\n \\\"deletions\\\": 0,\\n \\\"additions\\\": 180,\\n \\\"total\\\": 180\\n },\\n \\\"committed_at\\\": \\\"2010-04-14T02:15:15Z\\\"\\n }\\n ]\\n}\\n]]--\\n\\n-- Star a gist --\\nfunction GithubAPI.gist.star(id, callback)\\n\\tGithubAPI.http_request(\\\"gists/\\\"..id..\\\"/star\\\", callback, {method=\\\"PUT\\\"})\\nend\\n\\n--[[ Response --\\nStatus: 204 No Content\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n]]--\\n\\n-- Unstar a gist --\\nfunction GithubAPI.gist.unstar(id, callback)\\n\\tGithubAPI.http_request(\\\"gists/\\\"..id..\\\"/star\\\", callback, {method=\\\"DELETE\\\"})\\nend\\n\\n--[[ Response --\\nStatus: 204 No Content\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n]]--\\n\\n-- Check if a gist is starred --\\nfunction GithubAPI.gist.checkStar(id, callback)\\n\\tGithubAPI.http_request(\\\"gists/\\\"..id..\\\"/star\\\", callback)\\nend\\n\\n--[[\\n-- Response if gist is starred --\\nStatus: 204 No Content\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n\\n-- Response if gist is not starred --\\nStatus: 404 Not Found\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n]]--\\n\\n-- Fork a gist --\\nfunction GithubAPI.gist.fork(id, callback)\\n\\tGithubAPI.http_request(\\\"gists/\\\"..id..\\\"/forks\\\", callback, {method=\\\"POST\\\"})\\nend\\n\\n--[[ Response --\\nStatus: 201 Created\\nLocation: https://api.github.com/gists/2\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n{\\n \\\"url\\\": \\\"https://api.github.com/gists/88a3112be74ba6ad701e\\\",\\n \\\"id\\\": \\\"1\\\",\\n \\\"description\\\": \\\"description of gist\\\",\\n \\\"public\\\": true,\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"files\\\": {\\n \\\"ring.erl\\\": {\\n \\\"size\\\": 932,\\n \\\"filename\\\": \\\"ring.erl\\\",\\n \\\"raw_url\\\": \\\"https://gist.github.com/raw/365370/8c4d2d43d178df44f4c03a7f2ac0ff512853564e/ring.erl\\\"\\n }\\n },\\n \\\"comments\\\": 0,\\n \\\"comments_url\\\": \\\"https://api.github.com/gists/8438e99468ee9a4ab10e/comments/\\\",\\n \\\"html_url\\\": \\\"https://gist.github.com/1\\\",\\n \\\"git_pull_url\\\": \\\"git://gist.github.com/1.git\\\",\\n \\\"git_push_url\\\": \\\"git@gist.github.com:1.git\\\",\\n \\\"created_at\\\": \\\"2010-04-14T02:15:15Z\\\"\\n}\\n]]--\\n\\n-- Delete a gist --\\nfunction GithubAPI.gist.delete(id, callback)\\n\\tGithubAPI.http_request(\\\"gists/\\\"..id, callback, {method=\\\"DELETE\\\"})\\nend\\n\\n--[[ Response --\\nStatus: 204 No Content\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n]]--\\n\\n--- GISTS COMMENTS ---\\n\\n-- List comments on a gist --\\nfunction GithubAPI.gist.comment.list(gist_id, callback)\\n\\tGithubAPI.http_request(\\\"gists/..\\\"gist_id\\\"../comments\\\", callback)\\nend\\n\\n--[[ Response --\\nStatus: 200 OK\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n[\\n {\\n \\\"id\\\": 1,\\n \\\"url\\\": \\\"https://api.github.com/gists/ae709e9cf889e485e65f/comments/1\\\",\\n \\\"body\\\": \\\"Just commenting for the sake of commenting\\\",\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"created_at\\\": \\\"2011-04-18T23:23:56Z\\\"\\n }\\n]\\n]]--\\n\\n-- Get a single comment --\\nfunction GithubAPI.gist.comment.get(gist_id, id, callback)\\n\\tGithubAPI.http_request(\\\"gists/..\\\"gist_id\\\"../comments/\\\"..id, callback)\\nend\\n\\n--[[ Response --\\nStatus: 200 OK\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n{\\n \\\"id\\\": 1,\\n \\\"url\\\": \\\"https://api.github.com/gists/ae709e9cf889e485e65f/comments/1\\\",\\n \\\"body\\\": \\\"Just commenting for the sake of commenting\\\",\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"created_at\\\": \\\"2011-04-18T23:23:56Z\\\"\\n}\\n]]--\\n\\n-- Create a comment --\\nfunction GithubAPI.gist.comment.create(gist_id, body, callback)\\n\\tGithubAPI.http_request(\\\"gists/..\\\"gist_id\\\"../comments/\\\"..id, callback, {\\n\\t\\tmethod = \\\"POST\\\",\\n\\t\\tdata = {\\n\\t\\t\\tbody = body\\n\\t\\t}\\n\\t})\\nend\\n\\n--[[ Input --\\n{\\n \\\"body\\\": \\\"Just commenting for the sake of commenting\\\"\\n}\\n]]--\\n--[[ Response --\\nStatus: 201 Created\\nLocation: https://api.github.com/gists/comments/1\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n{\\n \\\"id\\\": 1,\\n \\\"url\\\": \\\"https://api.github.com/gists/ae709e9cf889e485e65f/comments/1\\\",\\n \\\"body\\\": \\\"Just commenting for the sake of commenting\\\",\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"created_at\\\": \\\"2011-04-18T23:23:56Z\\\"\\n}\\n]]--\\n\\n-- Edit a comment --\\nfunction GithubAPI.gist.comment.edit(gist_id, id, body, callback)\\n\\tGithubAPI.http_request(\\\"gists/..\\\"gist_id\\\"../comments/\\\"..id, callback, {\\n\\t\\tmethod = \\\"PATCH\\\",\\n\\t\\tdata = {\\n\\t\\t\\tbody = body\\n\\t\\t}\\n\\t})\\nend\\n\\n--[[ Input --\\n{\\n \\\"body\\\": \\\"Just commenting for the sake of commenting\\\"\\n}\\n]]--\\n--[[ Response --\\nStatus: 200 OK\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n{\\n \\\"id\\\": 1,\\n \\\"url\\\": \\\"https://api.github.com/gists/ae709e9cf889e485e65f/comments/1\\\",\\n \\\"body\\\": \\\"Just commenting for the sake of commenting\\\",\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"created_at\\\": \\\"2011-04-18T23:23:56Z\\\"\\n}\\n]]--\\n\\n-- Delete a comment --\\nfunction GithubAPI.gist.comment.delete(gist_id, id, callback)\\n\\tGithubAPI.http_request(\\\"gists/..\\\"gist_id\\\"../comments/\\\"..id, callback, {method = \\\"DELETE\\\"})\\nend\\n\\n--[[ Response --\\nStatus: 204 No Content\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n]]--\\n\\n----------------------------------------------------------------------------\\n-------------------------------- TOOLS -------------------------------------\\n----------------------------------------------------------------------------\\n\\nfunction GithubAPI.http_request(url, callback, opts, fullUrl)\\n\\topts = opts or {}\\n\\t-- if GithubAPI.token then opts.headers = TOKEN BEARER\\n\\tif opts.data then opts.data = json.encode(opts.data) end\\n\\n\\tlocal _url\\n\\tif (fullUrl) then _url = url else _url = GithubAPI.location .. url end\\n\\n\\thttp.request(_url, function(data, status, headers)\\n\\t\\tif (status == 500) then error(\\\"Github: Internal Server Error ...\\\") end\\n\\t\\tdata = json.decode(data)\\n\\t\\tcallback(data, status, headers)\\n\\tend, alert, opts)\\nend\\n\\nfunction GithubAPI.explode(div,str) -- credit: http://richard.warburton.it\\n if (div=='') then return false end\\n local pos,arr = 0,{}\\n for st,sp in function() return string.find(str,div,pos,true) end do\\n table.insert(arr,string.sub(str,pos,st-1))\\n pos = sp + 1\\n end\\n table.insert(arr,string.sub(str,pos))\\n return arr\\nend\\n\\n-- GITHUB TIMESTAMP (YYYY-MM-DDTHH:MM:SSZ) to os.time\\nfunction GithubAPI.gtimestamp(githubTime)\\n\\tgithubTime = githubTime:sub(1, #githubTime-1) -- remove Z\\n\\tgithubTime = GithubAPI.explode(\\\"T\\\", githubTime)\\n\\tgithubTime[1] = GithubAPI.explode(\\\"-\\\", githubTime[1])\\n\\tgithubTime[2] = GithubAPI.explode(\\\":\\\", githubTime[2])\\n\\treturn os.time({\\n\\t\\tyear = tonumber(githubTime[1][1]),\\n\\t\\tmonth = tonumber(githubTime[1][2]),\\n\\t\\tday = tonumber(githubTime[1][3]),\\n\\t\\thour = tonumber(githubTime[2][1]),\\n\\t\\tmin = tonumber(githubTime[2][2]),\\n\\t\\tsec = tonumber(githubTime[2][3])\\n\\t})\\nend\"}},\"public\":true,\"created_at\":\"2013-08-21T16:12:27Z\",\"updated_at\":\"2013-08-21T16:26:50Z\",\"description\":\"Github API\",\"comments\":0,\"user\":{\"login\":\"HyroVitalyProtago\",\"id\":3470988,\"avatar_url\":\"https://2.gravatar.com/avatar/ed59562b231a649345f38703948f76f4?d=https%3A%2F%2Fidenticons.github.com%2F6582cb986b7a730b12f7c18dfcc865f0.png\",\"gravatar_id\":\"ed59562b231a649345f38703948f76f4\",\"url\":\"https://api.github.com/users/HyroVitalyProtago\",\"html_url\":\"https://github.com/HyroVitalyProtago\",\"followers_url\":\"https://api.github.com/users/HyroVitalyProtago/followers\",\"following_url\":\"https://api.github.com/users/HyroVitalyProtago/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/HyroVitalyProtago/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/HyroVitalyProtago/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/HyroVitalyProtago/subscriptions\",\"organizations_url\":\"https://api.github.com/users/HyroVitalyProtago/orgs\",\"repos_url\":\"https://api.github.com/users/HyroVitalyProtago/repos\",\"events_url\":\"https://api.github.com/users/HyroVitalyProtago/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/HyroVitalyProtago/received_events\",\"type\":\"User\"},\"comments_url\":\"https://api.github.com/gists/6296553/comments\",\"forks\":[],\"history\":[{\"user\":null,\"version\":\"c464aecd7fea16684e935607eeea7ae4f8caa0e2\",\"committed_at\":\"2013-08-21T16:12:27Z\",\"change_status\":{\"total\":793,\"additions\":793,\"deletions\":0},\"url\":\"https://api.github.com/gists/6296553/c464aecd7fea16684e935607eeea7ae4f8caa0e2\"}]}\n \n https\n POST\n api.github.com\n None\n-/gists/2729818/fork\n+/gists/6296553/forks\n {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}\n null\n 201\n-[('status', '201 Created'), ('x-ratelimit-remaining', '4969'), ('content-length', '873'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '\"502531cd2afdff81b572c8565b17f601\"'), ('date', 'Sat, 19 May 2012 07:25:30 GMT'), ('content-type', 'application/json; charset=utf-8'), ('location', 'https://api.github.com/gists/2729865')]\n-{\"updated_at\":\"2012-05-19T07:25:30Z\",\"url\":\"https://api.github.com/gists/2729865\",\"comments\":0,\"public\":true,\"git_pull_url\":\"git://gist.github.com/2729865.git\",\"files\":{\"ror.markdown\":{\"raw_url\":\"https://gist.github.com/raw/2729865/1284e70f4c16550ef32a26aa4f5f0c78edaa7008/ror.markdown\",\"type\":\"text/plain\",\"size\":1076,\"filename\":\"ror.markdown\",\"language\":\"Markdown\"}},\"html_url\":\"https://gist.github.com/2729865\",\"user\":{\"url\":\"https://api.github.com/users/jacquev6\",\"gravatar_id\":\"b68de5ae38616c296fa345d2b9df2225\",\"avatar_url\":\"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"login\":\"jacquev6\",\"id\":327146},\"description\":\"RoR setup in AWS EC2(Ubuntu 12.04 LTS)\",\"created_at\":\"2012-05-19T07:25:30Z\",\"git_push_url\":\"git@gist.github.com:2729865.git\",\"id\":\"2729865\"}\n+[('status', '201 Created'), ('x-ratelimit-remaining', '4965'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('cache-control', 'max-age=0, private, must-revalidate'), ('content-length', '1510'), ('server', 'GitHub.com'), ('x-ratelimit-limit', '5000'), ('location', 'https://api.github.com/gists/6296732'), ('access-control-allow-credentials', 'true'), ('date', 'Wed, 21 Aug 2013 16:28:24 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('etag', '\"ceb086d4f395719d1124cade5cedbfd4\"'), ('x-ratelimit-reset', '1377104997')]\n+{\"url\":\"https://api.github.com/gists/6296732\",\"forks_url\":\"https://api.github.com/gists/6296732/forks\",\"commits_url\":\"https://api.github.com/gists/6296732/commits\",\"id\":\"6296732\",\"git_pull_url\":\"https://gist.github.com/6296732.git\",\"git_push_url\":\"https://gist.github.com/6296732.git\",\"html_url\":\"https://gist.github.com/6296732\",\"files\":{},\"public\":true,\"created_at\":\"2013-08-21T16:28:24Z\",\"updated_at\":\"2013-08-21T16:28:24Z\",\"description\":\"Github API\",\"comments\":0,\"user\":{\"login\":\"jacquev6\",\"id\":327146,\"avatar_url\":\"https://1.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png\",\"gravatar_id\":\"b68de5ae38616c296fa345d2b9df2225\",\"url\":\"https://api.github.com/users/jacquev6\",\"html_url\":\"https://github.com/jacquev6\",\"followers_url\":\"https://api.github.com/users/jacquev6/followers\",\"following_url\":\"https://api.github.com/users/jacquev6/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/jacquev6/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/jacquev6/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/jacquev6/subscriptions\",\"organizations_url\":\"https://api.github.com/users/jacquev6/orgs\",\"repos_url\":\"https://api.github.com/users/jacquev6/repos\",\"events_url\":\"https://api.github.com/users/jacquev6/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/jacquev6/received_events\",\"type\":\"User\"},\"comments_url\":\"https://api.github.com/gists/6296732/comments\"}\n \n https\n GET\n api.github.com\n None\n-/gists/2729865\n+/gists/6296732\n {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}\n null\n 200\n-[('status', '200 OK'), ('x-ratelimit-remaining', '4966'), ('content-length', '3460'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '\"e829012f18db493a69740de762186eb5\"'), ('date', 'Sat, 19 May 2012 07:26:54 GMT'), ('content-type', 'application/json; charset=utf-8')]\n-{\"user\":{\"url\":\"https://api.github.com/users/jacquev6\",\"avatar_url\":\"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"gravatar_id\":\"b68de5ae38616c296fa345d2b9df2225\",\"login\":\"jacquev6\",\"id\":327146},\"description\":\"RoR setup in AWS EC2(Ubuntu 12.04 LTS)\",\"comments\":0,\"updated_at\":\"2012-05-19T07:25:30Z\",\"public\":true,\"git_pull_url\":\"git://gist.github.com/2729865.git\",\"history\":[{\"user\":{\"url\":\"https://api.github.com/users/Kechol\",\"avatar_url\":\"https://secure.gravatar.com/avatar/f2a6400b393749ccd9ad3f24d4995f77?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"gravatar_id\":\"f2a6400b393749ccd9ad3f24d4995f77\",\"login\":\"Kechol\",\"id\":625489},\"change_status\":{\"total\":57,\"deletions\":0,\"additions\":57},\"committed_at\":\"2012-05-19T07:06:08Z\",\"version\":\"a655d19a12233e5e5615deb714eae95c433eed57\",\"url\":\"https://api.github.com/gists/2729865/a655d19a12233e5e5615deb714eae95c433eed57\"}],\"git_push_url\":\"git@gist.github.com:2729865.git\",\"url\":\"https://api.github.com/gists/2729865\",\"fork_of\":{\"user\":{\"url\":\"https://api.github.com/users/Kechol\",\"avatar_url\":\"https://secure.gravatar.com/avatar/f2a6400b393749ccd9ad3f24d4995f77?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\",\"gravatar_id\":\"f2a6400b393749ccd9ad3f24d4995f77\",\"login\":\"Kechol\",\"id\":625489},\"description\":\"RoR setup in AWS EC2(Ubuntu 12.04 LTS)\",\"comments\":0,\"updated_at\":\"2012-05-19T07:06:08Z\",\"public\":true,\"git_pull_url\":\"git://gist.github.com/2729818.git\",\"git_push_url\":\"git@gist.github.com:2729818.git\",\"url\":\"https://api.github.com/gists/2729818\",\"html_url\":\"https://gist.github.com/2729818\",\"id\":\"2729818\",\"created_at\":\"2012-05-19T07:06:08Z\",\"files\":{\"ror.markdown\":{\"type\":\"text/plain\",\"size\":1076,\"filename\":\"ror.markdown\",\"raw_url\":\"https://gist.github.com/raw/2729818/1284e70f4c16550ef32a26aa4f5f0c78edaa7008/ror.markdown\",\"language\":\"Markdown\"}}},\"html_url\":\"https://gist.github.com/2729865\",\"id\":\"2729865\",\"forks\":[],\"created_at\":\"2012-05-19T07:25:30Z\",\"files\":{\"ror.markdown\":{\"content\":\"## create user\\n\\nsudo useradd -m username\\nvisudo\\n\\n## delete default user\\n\\nsudo userdel ubuntu\\nsudo rm -Rf ubuntu\\n\\n## setup ssh\\n\\nmkdir ~/.ssh\\nvi /etc/ssh/authorized_keys\\nsudo vi /etc/ssh/sshd_config\\n\\n\\n## install packages\\n\\nsudo apt-get update\\n\\nsudo apt-get install sysv-rc-init git-core apache2-utils wget vim\\nsudo apt-get install mysql-client mysql-server libmysqld-dev\\nsudo apt-get install g++ openssl zlib1g readline-common libyaml-dev libssl-dev zlib1g-dev libxml2-dev libxslt1-dev libjson0-dev libgcc1 libreadline-dev\\n\\n\\n## install nginx\\n\\nwget http://nginx.org/keys/nginx_signing.key\\nsudo apt-key add nginx_signing.key\\n\\n### add /etc/sources.list\\n> \\\"deb http://nginx.org/packages/ubuntu/ lucid nginx\\ndeb-src http://nginx.org/packages/ubuntu/ lucid nginx\\\"\\n\\napt-get update\\napt-get install nginx\\n\\n\\n## setup system\\n\\nsudo sysv-rc-init\\n\\n\\n## install ruby\\n\\ncd /usr/local/src\\nsudo wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz\\nsudo tar zxvf ruby-1.9.3-p194.tar.gz\\ncd ruby-1.9.3-p194\\nsudo ./configure\\nsudo make && make install\\n\\n\\n## install RoR\\n\\nsudo gem install rails\",\"type\":\"text/plain\",\"size\":1076,\"filename\":\"ror.markdown\",\"raw_url\":\"https://gist.github.com/raw/2729865/1284e70f4c16550ef32a26aa4f5f0c78edaa7008/ror.markdown\",\"language\":\"Markdown\"}}}\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4964'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '26806'), ('server', 'GitHub.com'), ('last-modified', 'Wed, 21 Aug 2013 16:28:24 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '\"f2916c23435522156274bed022a322e7\"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Wed, 21 Aug 2013 16:28:25 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1377104997')]\n+{\"url\":\"https://api.github.com/gists/6296732\",\"forks_url\":\"https://api.github.com/gists/6296732/forks\",\"commits_url\":\"https://api.github.com/gists/6296732/commits\",\"id\":\"6296732\",\"git_pull_url\":\"https://gist.github.com/6296732.git\",\"git_push_url\":\"https://gist.github.com/6296732.git\",\"html_url\":\"https://gist.github.com/6296732\",\"files\":{\"GithubAPI.lua\":{\"filename\":\"GithubAPI.lua\",\"type\":\"text/plain\",\"language\":\"Lua\",\"raw_url\":\"https://gist.github.com/raw/6296732/88aafa25fb28e17013054a117354a37f0d78963c/GithubAPI.lua\",\"size\":21229,\"content\":\"-- GithubAPI\\n-- @Author : Hyro Vitaly Protago\\n-- @Version : 1.0.0\\n\\n--[[\\n\\nINFOS :\\n - Cannot delete an anonymous gist\\n]]--\\n\\nGithubAPI = {\\n\\tlocation = \\\"https://api.github.com/\\\",\\n\\ttoken = nil,\\n\\tOAuth = {\\n\\t\\tauthorizations = {}\\n\\t},\\n\\tgist = {\\n\\t\\tlist = {},\\n\\t\\tcomment = {}\\n\\t},\\n\\tgithub = {}\\n}\\n\\n----------------------------------------------------------------------------\\n------------------------------ Github API ----------------------------------\\n----------------------------------------------------------------------------\\n\\n--- Authentication ---\\n\\n--[[ Scopes --\\n\\nScopes let you specify exactly what type of access you need. Scopes limit access for OAuth tokens.\\nThey do not grant any additional permission beyond that which the user already has.\\n\\nFor the web flow, requested scopes will be displayed to the user on the authorize form.\\n\\nCheck headers to see what OAuth scopes you have, and what the API action accepts.\\n\\n~~~\\n$ curl -H \\\"Authorization: token OAUTH-TOKEN\\\" https://api.github.com/users/technoweenie -I\\nHTTP/1.1 200 OK\\nX-OAuth-Scopes: repo, user\\nX-Accepted-OAuth-Scopes: user\\nX-OAuth-Scopes lists the scopes your token has authorized. X-Accepted-OAuth-Scopes lists the scopes that the action checks for.\\n~~~\\n\\n- (no scope)\\npublic read-only access (includes public user profile info, public repo info, and gists).\\n- user\\nRead/write access to profile info only. Note: this scope includes user:email and user:follow.\\n- user:email\\nRead access to a user’s email addresses.\\n- user:follow\\nAccess to follow or unfollow other users.\\n- public_repo\\nRead/write access to public repos and organizations.\\n- repo\\nRead/write access to public and private repos and organizations.\\n- repo:status\\nRead/write access to public and private repository commit statuses.\\nThis scope is only necessary to grant other users or services access to private repository commit statuses without granting access to the code.\\nThe repo and public_repo scopes already include access to commit status for private and public repositories respectively.\\n- delete_repo\\nDelete access to adminable repositories.\\n- notifications\\nRead access to a user’s notifications. repo is accepted too.\\n- gist\\nWrite access to gists.\\n\\nNOTE: Your application can request the scopes in the initial redirection. You can specify multiple scopes by separating them by a comma.\\n~~~\\nhttps://github.com/login/oauth/authorize?\\n client_id=...&\\n scope=user,public_repo\\n~~~\\n]]--\\n\\n-- Redirect users to request GitHub access --\\nfunction GithubAPI.OAuth.getToken(client_id, scope, callback)\\n\\tGithubAPI.http_request(\\\"https://github.com/login/oauth/authorize?client_id=\\\"..client_id..\\\"&scope=\\\"..scope, function(data, status, headers)\\n\\t\\tGithubAPI.OAuth._getToken(client_id, client_secret, data, callback)\\n\\tend, nil, true)\\nend\\n-- GitHub redirects back to your site --\\nfunction GithubAPI.OAuth._getToken(client_id, client_secret, code, callback)\\n\\tGithubAPI.http_request(\\\"https://github.com/login/oauth/access_token\\\", callback, {\\n\\t\\tmethod = \\\"POST\\\",\\n\\t\\tdata = {\\n\\t\\t\\tclient_id = client_id,\\n\\t\\t\\tclient_secret = client_secret,\\n\\t\\t\\tcode = code\\n\\t\\t}\\n\\t}, true)\\nend\\n\\n-- List your authorizations --\\nfunction GithubAPI.OAuth.authorizations.list(callback)\\n\\tGithubAPI.http_request(\\\"authorizations\\\", callback)\\nend\\n\\n--[[ Response --\\nStatus: 200 OK\\nLink: ; rel=\\\"next\\\",\\n ; rel=\\\"last\\\"\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n[\\n {\\n \\\"id\\\": 1,\\n \\\"url\\\": \\\"https://api.github.com/authorizations/1\\\",\\n \\\"scopes\\\": [\\n \\\"public_repo\\\"\\n ],\\n \\\"token\\\": \\\"abc123\\\",\\n \\\"app\\\": {\\n \\\"url\\\": \\\"http://my-github-app.com\\\",\\n \\\"name\\\": \\\"my github app\\\",\\n \\\"client_id\\\": \\\"abcde12345fghij67890\\\"\\n },\\n \\\"note\\\": \\\"optional note\\\",\\n \\\"note_url\\\": \\\"http://optional/note/url\\\",\\n \\\"updated_at\\\": \\\"2011-09-06T20:39:23Z\\\",\\n \\\"created_at\\\": \\\"2011-09-06T17:26:27Z\\\"\\n }\\n]\\n]]--\\n\\n-- Get a single authorization --\\nfunction GithubAPI.OAuth.authorizations.get(id, callback)\\n\\tGithubAPI.http_request(\\\"authorizations/\\\"..id, callback)\\nend\\n\\n--[[ Response --\\nStatus: 200 OK\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n{\\n \\\"id\\\": 1,\\n \\\"url\\\": \\\"https://api.github.com/authorizations/1\\\",\\n \\\"scopes\\\": [\\n \\\"public_repo\\\"\\n ],\\n \\\"token\\\": \\\"abc123\\\",\\n \\\"app\\\": {\\n \\\"url\\\": \\\"http://my-github-app.com\\\",\\n \\\"name\\\": \\\"my github app\\\",\\n \\\"client_id\\\": \\\"abcde12345fghij67890\\\"\\n },\\n \\\"note\\\": \\\"optional note\\\",\\n \\\"note_url\\\": \\\"http://optional/note/url\\\",\\n \\\"updated_at\\\": \\\"2011-09-06T20:39:23Z\\\",\\n \\\"created_at\\\": \\\"2011-09-06T17:26:27Z\\\"\\n}\\n]]--\\n\\n-- Create a new authorization --\\nfunction GithubAPI.OAuth.authorizations.create(callback, scopes, note, note_url, client_id, client_secret)\\n\\tGithubAPI.http_request(\\\"authorizations/\\\", callback, {\\n\\t\\tmethod = \\\"POST\\\",\\n\\t\\tdata = {\\n\\t\\t\\tscopes = scopes,\\n\\t\\t\\tnote = note,\\n\\t\\t\\tnote_url = note_url,\\n\\t\\t\\tclient_id = client_id,\\n\\t\\t\\tclient_secret = client_secret\\n\\t\\t}\\n\\t})\\nend\\n\\n--[[ Input --\\nscopes\\nOptional array - A list of scopes that this authorization is in.\\n\\nnote\\nOptional string - A note to remind you what the OAuth token is for.\\n\\nnote_url\\nOptional string - A URL to remind you what app the OAuth token is for.\\n\\nclient_id\\nOptional String - The 20 character OAuth app client key for which to create the token.\\n\\nclient_secret\\nOptional String - The 40 character OAuth app client secret for which to create the token.\\n~~~\\n{\\n \\\"scopes\\\": [\\n \\\"public_repo\\\"\\n ],\\n \\\"note\\\": \\\"admin script\\\"\\n}\\n~~~\\n]]--\\n\\n--[[ Response --\\nStatus: 201 Created\\nLocation: https://api.github.com/authorizations/1\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n{\\n \\\"id\\\": 1,\\n \\\"url\\\": \\\"https://api.github.com/authorizations/1\\\",\\n \\\"scopes\\\": [\\n \\\"public_repo\\\"\\n ],\\n \\\"token\\\": \\\"abc123\\\",\\n \\\"app\\\": {\\n \\\"url\\\": \\\"http://my-github-app.com\\\",\\n \\\"name\\\": \\\"my github app\\\",\\n \\\"client_id\\\": \\\"abcde12345fghij67890\\\"\\n },\\n \\\"note\\\": \\\"optional note\\\",\\n \\\"note_url\\\": \\\"http://optional/note/url\\\",\\n \\\"updated_at\\\": \\\"2011-09-06T20:39:23Z\\\",\\n \\\"created_at\\\": \\\"2011-09-06T17:26:27Z\\\"\\n}\\n]]--\\n\\n-- TODO\\n-- Update\\n-- Check\\n-- Delete\\n\\n--- GISTS ---\\n\\n-- List gists --\\nfunction GithubAPI.gist.list.user(user, callback)\\n\\tGithubAPI.http_request(\\\"users/\\\"..user..\\\"/gists\\\", callback)\\nend\\nfunction GithubAPI.gist.list.all(callback) -- return all public gists if called anonymously\\n\\tGithubAPI.http_request(\\\"gists\\\", callback)\\nend\\nfunction GithubAPI.gist.list.allPublic(callback)\\n\\tGithubAPI.http_request(\\\"gists/public\\\", callback)\\nend\\nfunction GithubAPI.gist.list.starred(callback)\\n\\tGithubAPI.http_request(\\\"gists/starred\\\", callback)\\nend\\n\\n--[[ Response --\\nStatus: 200 OK\\nLink: ; rel=\\\"next\\\",\\n ; rel=\\\"last\\\"\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n[\\n {\\n \\\"url\\\": \\\"https://api.github.com/gists/88a3112be74ba6ad701e\\\",\\n \\\"id\\\": \\\"1\\\",\\n \\\"description\\\": \\\"description of gist\\\",\\n \\\"public\\\": true,\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"files\\\": {\\n \\\"ring.erl\\\": {\\n \\\"size\\\": 932,\\n \\\"filename\\\": \\\"ring.erl\\\",\\n \\\"raw_url\\\": \\\"https://gist.github.com/raw/365370/8c4d2d43d178df44f4c03a7f2ac0ff512853564e/ring.erl\\\"\\n }\\n },\\n \\\"comments\\\": 0,\\n \\\"comments_url\\\": \\\"https://api.github.com/gists/8438e99468ee9a4ab10e/comments/\\\",\\n \\\"html_url\\\": \\\"https://gist.github.com/1\\\",\\n \\\"git_pull_url\\\": \\\"git://gist.github.com/1.git\\\",\\n \\\"git_push_url\\\": \\\"git@gist.github.com:1.git\\\",\\n \\\"created_at\\\": \\\"2010-04-14T02:15:15Z\\\"\\n }\\n]\\n]]--\\n\\n-- Get a single gist --\\nfunction GithubAPI.gist.get(id, callback)\\n\\tGithubAPI.http_request(\\\"gists/\\\"..id, callback)\\nend\\n\\n--[[ Response --\\nStatus: 200 OK\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n{\\n \\\"url\\\": \\\"https://api.github.com/gists/88a3112be74ba6ad701e\\\",\\n \\\"id\\\": \\\"1\\\",\\n \\\"description\\\": \\\"description of gist\\\",\\n \\\"public\\\": true,\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"files\\\": {\\n \\\"ring.erl\\\": {\\n \\\"size\\\": 932,\\n \\\"filename\\\": \\\"ring.erl\\\",\\n \\\"raw_url\\\": \\\"https://gist.github.com/raw/365370/8c4d2d43d178df44f4c03a7f2ac0ff512853564e/ring.erl\\\"\\n }\\n },\\n \\\"comments\\\": 0,\\n \\\"comments_url\\\": \\\"https://api.github.com/gists/8438e99468ee9a4ab10e/comments/\\\",\\n \\\"html_url\\\": \\\"https://gist.github.com/1\\\",\\n \\\"git_pull_url\\\": \\\"git://gist.github.com/1.git\\\",\\n \\\"git_push_url\\\": \\\"git@gist.github.com:1.git\\\",\\n \\\"created_at\\\": \\\"2010-04-14T02:15:15Z\\\",\\n \\\"forks\\\": [\\n {\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"url\\\": \\\"https://api.github.com/gists/add0d71b065f55c46f60\\\",\\n \\\"created_at\\\": \\\"2011-04-14T16:00:49Z\\\"\\n }\\n ],\\n \\\"history\\\": [\\n {\\n \\\"url\\\": \\\"https://api.github.com/gists/80bdb0d081c447600e18\\\",\\n \\\"version\\\": \\\"57a7f021a713b1c5a6a199b54cc514735d2d462f\\\",\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"change_status\\\": {\\n \\\"deletions\\\": 0,\\n \\\"additions\\\": 180,\\n \\\"total\\\": 180\\n },\\n \\\"committed_at\\\": \\\"2010-04-14T02:15:15Z\\\"\\n }\\n ]\\n}\\n]]--\\n\\n-- Create a gist --\\nfunction GithubAPI.gist.create(public, files, callback ,description)\\n\\tGithubAPI.http_request(\\\"gists/\\\"..id, callback, {\\n\\t\\tmethod = \\\"POST\\\",\\n\\t\\tdata = {\\n\\t\\t\\tpublic = public,\\n\\t\\t\\tfiles = files,\\n\\t\\t\\tdescription = description\\n\\t\\t}\\n\\t})\\nend\\n\\n--[[ Input --\\n{\\n \\\"description\\\": \\\"the description for this gist\\\",\\n \\\"public\\\": true,\\n \\\"files\\\": {\\n \\\"file1.txt\\\": {\\n \\\"content\\\": \\\"String file contents\\\"\\n }\\n }\\n}\\n]]--\\n\\n--[[ Response --\\nStatus: 201 Created\\nLocation: https://api.github.com/gists/1\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n{\\n \\\"url\\\": \\\"https://api.github.com/gists/88a3112be74ba6ad701e\\\",\\n \\\"id\\\": \\\"1\\\",\\n \\\"description\\\": \\\"description of gist\\\",\\n \\\"public\\\": true,\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"files\\\": {\\n \\\"ring.erl\\\": {\\n \\\"size\\\": 932,\\n \\\"filename\\\": \\\"ring.erl\\\",\\n \\\"raw_url\\\": \\\"https://gist.github.com/raw/365370/8c4d2d43d178df44f4c03a7f2ac0ff512853564e/ring.erl\\\"\\n }\\n },\\n \\\"comments\\\": 0,\\n \\\"comments_url\\\": \\\"https://api.github.com/gists/8438e99468ee9a4ab10e/comments/\\\",\\n \\\"html_url\\\": \\\"https://gist.github.com/1\\\",\\n \\\"git_pull_url\\\": \\\"git://gist.github.com/1.git\\\",\\n \\\"git_push_url\\\": \\\"git@gist.github.com:1.git\\\",\\n \\\"created_at\\\": \\\"2010-04-14T02:15:15Z\\\",\\n \\\"forks\\\": [\\n {\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"url\\\": \\\"https://api.github.com/gists/add0d71b065f55c46f60\\\",\\n \\\"created_at\\\": \\\"2011-04-14T16:00:49Z\\\"\\n }\\n ],\\n \\\"history\\\": [\\n {\\n \\\"url\\\": \\\"https://api.github.com/gists/80bdb0d081c447600e18\\\",\\n \\\"version\\\": \\\"57a7f021a713b1c5a6a199b54cc514735d2d462f\\\",\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"change_status\\\": {\\n \\\"deletions\\\": 0,\\n \\\"additions\\\": 180,\\n \\\"total\\\": 180\\n },\\n \\\"committed_at\\\": \\\"2010-04-14T02:15:15Z\\\"\\n }\\n ]\\n}\\n]]--\\n\\n-- Edit a gist --\\nfunction GithubAPI.gist.edit(id, files, callback, description)\\n\\tGithubAPI.http_request(\\\"gists/\\\"..id, callback, {\\n\\t\\tmethod = \\\"PATCH\\\",\\n\\t\\tdata = {\\n\\t\\t\\tid = id,\\n\\t\\t\\tfiles = files,\\n\\t\\t\\tdescription = description\\n\\t\\t}\\n\\t})\\nend\\n\\n--[[ Input --\\n{\\n \\\"description\\\": \\\"the description for this gist\\\",\\n \\\"files\\\": {\\n \\\"file1.txt\\\": {\\n \\\"content\\\": \\\"updated file contents\\\"\\n },\\n \\\"old_name.txt\\\": {\\n \\\"filename\\\": \\\"new_name.txt\\\",\\n \\\"content\\\": \\\"modified contents\\\"\\n },\\n \\\"new_file.txt\\\": {\\n \\\"content\\\": \\\"a new file\\\"\\n },\\n \\\"delete_this_file.txt\\\": null\\n }\\n}\\n]]--\\n\\n--[[ Response --\\nStatus: 200 OK\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n{\\n \\\"url\\\": \\\"https://api.github.com/gists/88a3112be74ba6ad701e\\\",\\n \\\"id\\\": \\\"1\\\",\\n \\\"description\\\": \\\"description of gist\\\",\\n \\\"public\\\": true,\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"files\\\": {\\n \\\"ring.erl\\\": {\\n \\\"size\\\": 932,\\n \\\"filename\\\": \\\"ring.erl\\\",\\n \\\"raw_url\\\": \\\"https://gist.github.com/raw/365370/8c4d2d43d178df44f4c03a7f2ac0ff512853564e/ring.erl\\\"\\n }\\n },\\n \\\"comments\\\": 0,\\n \\\"comments_url\\\": \\\"https://api.github.com/gists/8438e99468ee9a4ab10e/comments/\\\",\\n \\\"html_url\\\": \\\"https://gist.github.com/1\\\",\\n \\\"git_pull_url\\\": \\\"git://gist.github.com/1.git\\\",\\n \\\"git_push_url\\\": \\\"git@gist.github.com:1.git\\\",\\n \\\"created_at\\\": \\\"2010-04-14T02:15:15Z\\\",\\n \\\"forks\\\": [\\n {\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"url\\\": \\\"https://api.github.com/gists/add0d71b065f55c46f60\\\",\\n \\\"created_at\\\": \\\"2011-04-14T16:00:49Z\\\"\\n }\\n ],\\n \\\"history\\\": [\\n {\\n \\\"url\\\": \\\"https://api.github.com/gists/80bdb0d081c447600e18\\\",\\n \\\"version\\\": \\\"57a7f021a713b1c5a6a199b54cc514735d2d462f\\\",\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"change_status\\\": {\\n \\\"deletions\\\": 0,\\n \\\"additions\\\": 180,\\n \\\"total\\\": 180\\n },\\n \\\"committed_at\\\": \\\"2010-04-14T02:15:15Z\\\"\\n }\\n ]\\n}\\n]]--\\n\\n-- Star a gist --\\nfunction GithubAPI.gist.star(id, callback)\\n\\tGithubAPI.http_request(\\\"gists/\\\"..id..\\\"/star\\\", callback, {method=\\\"PUT\\\"})\\nend\\n\\n--[[ Response --\\nStatus: 204 No Content\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n]]--\\n\\n-- Unstar a gist --\\nfunction GithubAPI.gist.unstar(id, callback)\\n\\tGithubAPI.http_request(\\\"gists/\\\"..id..\\\"/star\\\", callback, {method=\\\"DELETE\\\"})\\nend\\n\\n--[[ Response --\\nStatus: 204 No Content\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n]]--\\n\\n-- Check if a gist is starred --\\nfunction GithubAPI.gist.checkStar(id, callback)\\n\\tGithubAPI.http_request(\\\"gists/\\\"..id..\\\"/star\\\", callback)\\nend\\n\\n--[[\\n-- Response if gist is starred --\\nStatus: 204 No Content\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n\\n-- Response if gist is not starred --\\nStatus: 404 Not Found\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n]]--\\n\\n-- Fork a gist --\\nfunction GithubAPI.gist.fork(id, callback)\\n\\tGithubAPI.http_request(\\\"gists/\\\"..id..\\\"/forks\\\", callback, {method=\\\"POST\\\"})\\nend\\n\\n--[[ Response --\\nStatus: 201 Created\\nLocation: https://api.github.com/gists/2\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n{\\n \\\"url\\\": \\\"https://api.github.com/gists/88a3112be74ba6ad701e\\\",\\n \\\"id\\\": \\\"1\\\",\\n \\\"description\\\": \\\"description of gist\\\",\\n \\\"public\\\": true,\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"files\\\": {\\n \\\"ring.erl\\\": {\\n \\\"size\\\": 932,\\n \\\"filename\\\": \\\"ring.erl\\\",\\n \\\"raw_url\\\": \\\"https://gist.github.com/raw/365370/8c4d2d43d178df44f4c03a7f2ac0ff512853564e/ring.erl\\\"\\n }\\n },\\n \\\"comments\\\": 0,\\n \\\"comments_url\\\": \\\"https://api.github.com/gists/8438e99468ee9a4ab10e/comments/\\\",\\n \\\"html_url\\\": \\\"https://gist.github.com/1\\\",\\n \\\"git_pull_url\\\": \\\"git://gist.github.com/1.git\\\",\\n \\\"git_push_url\\\": \\\"git@gist.github.com:1.git\\\",\\n \\\"created_at\\\": \\\"2010-04-14T02:15:15Z\\\"\\n}\\n]]--\\n\\n-- Delete a gist --\\nfunction GithubAPI.gist.delete(id, callback)\\n\\tGithubAPI.http_request(\\\"gists/\\\"..id, callback, {method=\\\"DELETE\\\"})\\nend\\n\\n--[[ Response --\\nStatus: 204 No Content\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n]]--\\n\\n--- GISTS COMMENTS ---\\n\\n-- List comments on a gist --\\nfunction GithubAPI.gist.comment.list(gist_id, callback)\\n\\tGithubAPI.http_request(\\\"gists/..\\\"gist_id\\\"../comments\\\", callback)\\nend\\n\\n--[[ Response --\\nStatus: 200 OK\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n[\\n {\\n \\\"id\\\": 1,\\n \\\"url\\\": \\\"https://api.github.com/gists/ae709e9cf889e485e65f/comments/1\\\",\\n \\\"body\\\": \\\"Just commenting for the sake of commenting\\\",\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"created_at\\\": \\\"2011-04-18T23:23:56Z\\\"\\n }\\n]\\n]]--\\n\\n-- Get a single comment --\\nfunction GithubAPI.gist.comment.get(gist_id, id, callback)\\n\\tGithubAPI.http_request(\\\"gists/..\\\"gist_id\\\"../comments/\\\"..id, callback)\\nend\\n\\n--[[ Response --\\nStatus: 200 OK\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n{\\n \\\"id\\\": 1,\\n \\\"url\\\": \\\"https://api.github.com/gists/ae709e9cf889e485e65f/comments/1\\\",\\n \\\"body\\\": \\\"Just commenting for the sake of commenting\\\",\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"created_at\\\": \\\"2011-04-18T23:23:56Z\\\"\\n}\\n]]--\\n\\n-- Create a comment --\\nfunction GithubAPI.gist.comment.create(gist_id, body, callback)\\n\\tGithubAPI.http_request(\\\"gists/..\\\"gist_id\\\"../comments/\\\"..id, callback, {\\n\\t\\tmethod = \\\"POST\\\",\\n\\t\\tdata = {\\n\\t\\t\\tbody = body\\n\\t\\t}\\n\\t})\\nend\\n\\n--[[ Input --\\n{\\n \\\"body\\\": \\\"Just commenting for the sake of commenting\\\"\\n}\\n]]--\\n--[[ Response --\\nStatus: 201 Created\\nLocation: https://api.github.com/gists/comments/1\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n{\\n \\\"id\\\": 1,\\n \\\"url\\\": \\\"https://api.github.com/gists/ae709e9cf889e485e65f/comments/1\\\",\\n \\\"body\\\": \\\"Just commenting for the sake of commenting\\\",\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"created_at\\\": \\\"2011-04-18T23:23:56Z\\\"\\n}\\n]]--\\n\\n-- Edit a comment --\\nfunction GithubAPI.gist.comment.edit(gist_id, id, body, callback)\\n\\tGithubAPI.http_request(\\\"gists/..\\\"gist_id\\\"../comments/\\\"..id, callback, {\\n\\t\\tmethod = \\\"PATCH\\\",\\n\\t\\tdata = {\\n\\t\\t\\tbody = body\\n\\t\\t}\\n\\t})\\nend\\n\\n--[[ Input --\\n{\\n \\\"body\\\": \\\"Just commenting for the sake of commenting\\\"\\n}\\n]]--\\n--[[ Response --\\nStatus: 200 OK\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n{\\n \\\"id\\\": 1,\\n \\\"url\\\": \\\"https://api.github.com/gists/ae709e9cf889e485e65f/comments/1\\\",\\n \\\"body\\\": \\\"Just commenting for the sake of commenting\\\",\\n \\\"user\\\": {\\n \\\"login\\\": \\\"octocat\\\",\\n \\\"id\\\": 1,\\n \\\"avatar_url\\\": \\\"https://github.com/images/error/octocat_happy.gif\\\",\\n \\\"gravatar_id\\\": \\\"somehexcode\\\",\\n \\\"url\\\": \\\"https://api.github.com/users/octocat\\\"\\n },\\n \\\"created_at\\\": \\\"2011-04-18T23:23:56Z\\\"\\n}\\n]]--\\n\\n-- Delete a comment --\\nfunction GithubAPI.gist.comment.delete(gist_id, id, callback)\\n\\tGithubAPI.http_request(\\\"gists/..\\\"gist_id\\\"../comments/\\\"..id, callback, {method = \\\"DELETE\\\"})\\nend\\n\\n--[[ Response --\\nStatus: 204 No Content\\nX-RateLimit-Limit: 5000\\nX-RateLimit-Remaining: 4999\\n]]--\\n\\n----------------------------------------------------------------------------\\n-------------------------------- TOOLS -------------------------------------\\n----------------------------------------------------------------------------\\n\\nfunction GithubAPI.http_request(url, callback, opts, fullUrl)\\n\\topts = opts or {}\\n\\t-- if GithubAPI.token then opts.headers = TOKEN BEARER\\n\\tif opts.data then opts.data = json.encode(opts.data) end\\n\\n\\tlocal _url\\n\\tif (fullUrl) then _url = url else _url = GithubAPI.location .. url end\\n\\n\\thttp.request(_url, function(data, status, headers)\\n\\t\\tif (status == 500) then error(\\\"Github: Internal Server Error ...\\\") end\\n\\t\\tdata = json.decode(data)\\n\\t\\tcallback(data, status, headers)\\n\\tend, alert, opts)\\nend\\n\\nfunction GithubAPI.explode(div,str) -- credit: http://richard.warburton.it\\n if (div=='') then return false end\\n local pos,arr = 0,{}\\n for st,sp in function() return string.find(str,div,pos,true) end do\\n table.insert(arr,string.sub(str,pos,st-1))\\n pos = sp + 1\\n end\\n table.insert(arr,string.sub(str,pos))\\n return arr\\nend\\n\\n-- GITHUB TIMESTAMP (YYYY-MM-DDTHH:MM:SSZ) to os.time\\nfunction GithubAPI.gtimestamp(githubTime)\\n\\tgithubTime = githubTime:sub(1, #githubTime-1) -- remove Z\\n\\tgithubTime = GithubAPI.explode(\\\"T\\\", githubTime)\\n\\tgithubTime[1] = GithubAPI.explode(\\\"-\\\", githubTime[1])\\n\\tgithubTime[2] = GithubAPI.explode(\\\":\\\", githubTime[2])\\n\\treturn os.time({\\n\\t\\tyear = tonumber(githubTime[1][1]),\\n\\t\\tmonth = tonumber(githubTime[1][2]),\\n\\t\\tday = tonumber(githubTime[1][3]),\\n\\t\\thour = tonumber(githubTime[2][1]),\\n\\t\\tmin = tonumber(githubTime[2][2]),\\n\\t\\tsec = tonumber(githubTime[2][3])\\n\\t})\\nend\"}},\"public\":true,\"created_at\":\"2013-08-21T16:28:24Z\",\"updated_at\":\"2013-08-21T16:28:24Z\",\"description\":\"Github API\",\"comments\":0,\"user\":{\"login\":\"jacquev6\",\"id\":327146,\"avatar_url\":\"https://2.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png\",\"gravatar_id\":\"b68de5ae38616c296fa345d2b9df2225\",\"url\":\"https://api.github.com/users/jacquev6\",\"html_url\":\"https://github.com/jacquev6\",\"followers_url\":\"https://api.github.com/users/jacquev6/followers\",\"following_url\":\"https://api.github.com/users/jacquev6/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/jacquev6/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/jacquev6/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/jacquev6/subscriptions\",\"organizations_url\":\"https://api.github.com/users/jacquev6/orgs\",\"repos_url\":\"https://api.github.com/users/jacquev6/repos\",\"events_url\":\"https://api.github.com/users/jacquev6/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/jacquev6/received_events\",\"type\":\"User\"},\"comments_url\":\"https://api.github.com/gists/6296732/comments\",\"forks\":[],\"history\":[{\"user\":null,\"version\":\"c464aecd7fea16684e935607eeea7ae4f8caa0e2\",\"committed_at\":\"2013-08-21T16:12:27Z\",\"change_status\":{\"total\":793,\"additions\":793,\"deletions\":0},\"url\":\"https://api.github.com/gists/6296732/c464aecd7fea16684e935607eeea7ae4f8caa0e2\"}],\"fork_of\":{\"url\":\"https://api.github.com/gists/6296553\",\"forks_url\":\"https://api.github.com/gists/6296553/forks\",\"commits_url\":\"https://api.github.com/gists/6296553/commits\",\"id\":\"6296553\",\"git_pull_url\":\"https://gist.github.com/6296553.git\",\"git_push_url\":\"https://gist.github.com/6296553.git\",\"html_url\":\"https://gist.github.com/6296553\",\"files\":{},\"public\":true,\"created_at\":\"2013-08-21T16:12:27Z\",\"updated_at\":\"2013-08-21T16:28:24Z\",\"description\":\"Github API\",\"comments\":0,\"user\":{\"login\":\"HyroVitalyProtago\",\"id\":3470988,\"avatar_url\":\"https://1.gravatar.com/avatar/ed59562b231a649345f38703948f76f4?d=https%3A%2F%2Fidenticons.github.com%2F6582cb986b7a730b12f7c18dfcc865f0.png\",\"gravatar_id\":\"ed59562b231a649345f38703948f76f4\",\"url\":\"https://api.github.com/users/HyroVitalyProtago\",\"html_url\":\"https://github.com/HyroVitalyProtago\",\"followers_url\":\"https://api.github.com/users/HyroVitalyProtago/followers\",\"following_url\":\"https://api.github.com/users/HyroVitalyProtago/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/HyroVitalyProtago/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/HyroVitalyProtago/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/HyroVitalyProtago/subscriptions\",\"organizations_url\":\"https://api.github.com/users/HyroVitalyProtago/orgs\",\"repos_url\":\"https://api.github.com/users/HyroVitalyProtago/repos\",\"events_url\":\"https://api.github.com/users/HyroVitalyProtago/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/HyroVitalyProtago/received_events\",\"type\":\"User\"},\"comments_url\":\"https://api.github.com/gists/6296553/comments\"}}\n "},{"sha":"7d335ffc25d0f2bf8208709c1d73ec7b216eee61","filename":"github/tests/ReplayData/Github.testGetRepos.txt","status":"added","additions":11,"deletions":0,"changes":11,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/Github.testGetRepos.txt","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/Github.testGetRepos.txt","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/tests/ReplayData/Github.testGetRepos.txt?ref=a6597499c2f82e063074a3036d875417d5efa296"},{"sha":"476baddfbabd644ff708e3ea3778ae474ff03c86","filename":"github/tests/ReplayData/Github.testGetReposSince.txt","status":"added","additions":11,"deletions":0,"changes":11,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/Github.testGetReposSince.txt","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/Github.testGetReposSince.txt","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/tests/ReplayData/Github.testGetReposSince.txt?ref=a6597499c2f82e063074a3036d875417d5efa296"},{"sha":"6f6e25494e129725b5aad650839888e3494c52f7","filename":"github/tests/ReplayData/Hook.testTest.txt","status":"modified","additions":1,"deletions":1,"changes":2,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/Hook.testTest.txt","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/Hook.testTest.txt","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/tests/ReplayData/Hook.testTest.txt?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -2,7 +2,7 @@ https\n POST\n api.github.com\n None\n-/repos/jacquev6/PyGithub/hooks/257993/test\n+/repos/jacquev6/PyGithub/hooks/257993/tests\n {'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}\n null\n 204"},{"sha":"08c61a84ee63868aac85f3d64397e65b0fdf9132","filename":"github/tests/ReplayData/NamedUser.testHasInFollowing.txt","status":"added","additions":22,"deletions":0,"changes":22,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/NamedUser.testHasInFollowing.txt","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/NamedUser.testHasInFollowing.txt","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/tests/ReplayData/NamedUser.testHasInFollowing.txt?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -0,0 +1,22 @@\n+https\n+GET\n+api.github.com\n+None\n+/users/nvie\n+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}\n+null\n+200\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4996'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '1218'), ('server', 'GitHub.com'), ('last-modified', 'Wed, 21 Aug 2013 16:26:40 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '\"8e2b307f8fb4186bfb512febd7215fc8\"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Wed, 21 Aug 2013 17:20:44 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1377108637')]\n+{\"login\":\"nvie\",\"id\":83844,\"avatar_url\":\"https://2.gravatar.com/avatar/466ef7561a0b100dc5a1021959962d28?d=https%3A%2F%2Fidenticons.github.com%2Fe6d0513ce49cc06cb956251623cb8fd9.png\",\"gravatar_id\":\"466ef7561a0b100dc5a1021959962d28\",\"url\":\"https://api.github.com/users/nvie\",\"html_url\":\"https://github.com/nvie\",\"followers_url\":\"https://api.github.com/users/nvie/followers\",\"following_url\":\"https://api.github.com/users/nvie/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/nvie/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/nvie/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/nvie/subscriptions\",\"organizations_url\":\"https://api.github.com/users/nvie/orgs\",\"repos_url\":\"https://api.github.com/users/nvie/repos\",\"events_url\":\"https://api.github.com/users/nvie/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/nvie/received_events\",\"type\":\"User\",\"name\":\"Vincent Driessen\",\"company\":\"3rd Cloud\",\"blog\":\"http://nvie.com\",\"location\":\"Netherlands\",\"email\":\"vincent@3rdcloud.com\",\"hireable\":true,\"bio\":null,\"public_repos\":86,\"followers\":530,\"following\":45,\"created_at\":\"2009-05-12T21:19:38Z\",\"updated_at\":\"2013-08-21T16:26:40Z\",\"public_gists\":38}\n+\n+https\n+GET\n+api.github.com\n+None\n+/users/jacquev6/following/nvie\n+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}\n+null\n+204\n+[('status', '204 No Content'), ('x-ratelimit-remaining', '4995'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('x-ratelimit-limit', '5000'), ('access-control-allow-credentials', 'true'), ('date', 'Wed, 21 Aug 2013 17:20:48 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1377108637')]\n+\n+"},{"sha":"dfc62ba258a155c9b40432ec67a51b8b8822ec73","filename":"github/tests/ReplayData/Persistence.setUp.txt","status":"added","additions":11,"deletions":0,"changes":11,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/Persistence.setUp.txt","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/Persistence.setUp.txt","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/tests/ReplayData/Persistence.setUp.txt?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -0,0 +1,11 @@\n+https\n+GET\n+api.github.com\n+None\n+/repos/akfish/PyGithub\n+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}\n+null\n+200\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4988'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '13698'), ('server', 'GitHub.com'), ('last-modified', 'Thu, 22 Aug 2013 02:09:11 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '\"8600bedcb7fed1d8065e1693e05529ce\"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Thu, 22 Aug 2013 02:13:08 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1377140429')]\n+{\"id\":12156762,\"name\":\"PyGithub\",\"full_name\":\"akfish/PyGithub\",\"owner\":{\"login\":\"akfish\",\"id\":922715,\"avatar_url\":\"https://1.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png\",\"gravatar_id\":\"12a1b44d4e5c19cee59618084602b112\",\"url\":\"https://api.github.com/users/akfish\",\"html_url\":\"https://github.com/akfish\",\"followers_url\":\"https://api.github.com/users/akfish/followers\",\"following_url\":\"https://api.github.com/users/akfish/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/akfish/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/akfish/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/akfish/subscriptions\",\"organizations_url\":\"https://api.github.com/users/akfish/orgs\",\"repos_url\":\"https://api.github.com/users/akfish/repos\",\"events_url\":\"https://api.github.com/users/akfish/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/akfish/received_events\",\"type\":\"User\"},\"private\":false,\"html_url\":\"https://github.com/akfish/PyGithub\",\"description\":\"Python library implementing the full Github API v3\",\"fork\":true,\"url\":\"https://api.github.com/repos/akfish/PyGithub\",\"forks_url\":\"https://api.github.com/repos/akfish/PyGithub/forks\",\"keys_url\":\"https://api.github.com/repos/akfish/PyGithub/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/akfish/PyGithub/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/akfish/PyGithub/teams\",\"hooks_url\":\"https://api.github.com/repos/akfish/PyGithub/hooks\",\"issue_events_url\":\"https://api.github.com/repos/akfish/PyGithub/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/akfish/PyGithub/events\",\"assignees_url\":\"https://api.github.com/repos/akfish/PyGithub/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/akfish/PyGithub/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/akfish/PyGithub/tags\",\"blobs_url\":\"https://api.github.com/repos/akfish/PyGithub/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/akfish/PyGithub/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/akfish/PyGithub/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/akfish/PyGithub/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/akfish/PyGithub/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/akfish/PyGithub/languages\",\"stargazers_url\":\"https://api.github.com/repos/akfish/PyGithub/stargazers\",\"contributors_url\":\"https://api.github.com/repos/akfish/PyGithub/contributors\",\"subscribers_url\":\"https://api.github.com/repos/akfish/PyGithub/subscribers\",\"subscription_url\":\"https://api.github.com/repos/akfish/PyGithub/subscription\",\"commits_url\":\"https://api.github.com/repos/akfish/PyGithub/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/akfish/PyGithub/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/akfish/PyGithub/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/akfish/PyGithub/issues/comments/{number}\",\"contents_url\":\"https://api.github.com/repos/akfish/PyGithub/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/akfish/PyGithub/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/akfish/PyGithub/merges\",\"archive_url\":\"https://api.github.com/repos/akfish/PyGithub/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/akfish/PyGithub/downloads\",\"issues_url\":\"https://api.github.com/repos/akfish/PyGithub/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/akfish/PyGithub/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/akfish/PyGithub/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/akfish/PyGithub/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/akfish/PyGithub/labels{/name}\",\"created_at\":\"2013-08-16T10:56:11Z\",\"updated_at\":\"2013-08-22T02:09:11Z\",\"pushed_at\":\"2013-08-22T02:09:09Z\",\"git_url\":\"git://github.com/akfish/PyGithub.git\",\"ssh_url\":\"git@github.com:akfish/PyGithub.git\",\"clone_url\":\"https://github.com/akfish/PyGithub.git\",\"svn_url\":\"https://github.com/akfish/PyGithub\",\"homepage\":\"http://jacquev6.github.com/PyGithub\",\"size\":6736,\"watchers_count\":0,\"language\":\"Python\",\"has_issues\":false,\"has_downloads\":true,\"has_wiki\":true,\"forks_count\":0,\"mirror_url\":null,\"open_issues_count\":0,\"forks\":0,\"open_issues\":0,\"watchers\":0,\"master_branch\":\"master\",\"default_branch\":\"master\",\"permissions\":{\"admin\":true,\"push\":true,\"pull\":true},\"network_count\":70,\"parent\":{\"id\":3544490,\"name\":\"PyGithub\",\"full_name\":\"jacquev6/PyGithub\",\"owner\":{\"login\":\"jacquev6\",\"id\":327146,\"avatar_url\":\"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png\",\"gravatar_id\":\"b68de5ae38616c296fa345d2b9df2225\",\"url\":\"https://api.github.com/users/jacquev6\",\"html_url\":\"https://github.com/jacquev6\",\"followers_url\":\"https://api.github.com/users/jacquev6/followers\",\"following_url\":\"https://api.github.com/users/jacquev6/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/jacquev6/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/jacquev6/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/jacquev6/subscriptions\",\"organizations_url\":\"https://api.github.com/users/jacquev6/orgs\",\"repos_url\":\"https://api.github.com/users/jacquev6/repos\",\"events_url\":\"https://api.github.com/users/jacquev6/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/jacquev6/received_events\",\"type\":\"User\"},\"private\":false,\"html_url\":\"https://github.com/jacquev6/PyGithub\",\"description\":\"Python library implementing the full Github API v3\",\"fork\":false,\"url\":\"https://api.github.com/repos/jacquev6/PyGithub\",\"forks_url\":\"https://api.github.com/repos/jacquev6/PyGithub/forks\",\"keys_url\":\"https://api.github.com/repos/jacquev6/PyGithub/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/jacquev6/PyGithub/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/jacquev6/PyGithub/teams\",\"hooks_url\":\"https://api.github.com/repos/jacquev6/PyGithub/hooks\",\"issue_events_url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/jacquev6/PyGithub/events\",\"assignees_url\":\"https://api.github.com/repos/jacquev6/PyGithub/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/jacquev6/PyGithub/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/jacquev6/PyGithub/tags\",\"blobs_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/jacquev6/PyGithub/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/jacquev6/PyGithub/languages\",\"stargazers_url\":\"https://api.github.com/repos/jacquev6/PyGithub/stargazers\",\"contributors_url\":\"https://api.github.com/repos/jacquev6/PyGithub/contributors\",\"subscribers_url\":\"https://api.github.com/repos/jacquev6/PyGithub/subscribers\",\"subscription_url\":\"https://api.github.com/repos/jacquev6/PyGithub/subscription\",\"commits_url\":\"https://api.github.com/repos/jacquev6/PyGithub/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/jacquev6/PyGithub/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/{number}\",\"contents_url\":\"https://api.github.com/repos/jacquev6/PyGithub/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/jacquev6/PyGithub/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/jacquev6/PyGithub/merges\",\"archive_url\":\"https://api.github.com/repos/jacquev6/PyGithub/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/jacquev6/PyGithub/downloads\",\"issues_url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/jacquev6/PyGithub/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/jacquev6/PyGithub/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/jacquev6/PyGithub/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels{/name}\",\"created_at\":\"2012-02-25T12:53:47Z\",\"updated_at\":\"2013-08-21T20:32:08Z\",\"pushed_at\":\"2013-08-21T20:31:45Z\",\"git_url\":\"git://github.com/jacquev6/PyGithub.git\",\"ssh_url\":\"git@github.com:jacquev6/PyGithub.git\",\"clone_url\":\"https://github.com/jacquev6/PyGithub.git\",\"svn_url\":\"https://github.com/jacquev6/PyGithub\",\"homepage\":\"http://jacquev6.github.com/PyGithub\",\"size\":7437,\"watchers_count\":248,\"language\":\"Python\",\"has_issues\":true,\"has_downloads\":true,\"has_wiki\":true,\"forks_count\":70,\"mirror_url\":null,\"open_issues_count\":17,\"forks\":70,\"open_issues\":17,\"watchers\":248,\"master_branch\":\"master\",\"default_branch\":\"master\"},\"source\":{\"id\":3544490,\"name\":\"PyGithub\",\"full_name\":\"jacquev6/PyGithub\",\"owner\":{\"login\":\"jacquev6\",\"id\":327146,\"avatar_url\":\"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png\",\"gravatar_id\":\"b68de5ae38616c296fa345d2b9df2225\",\"url\":\"https://api.github.com/users/jacquev6\",\"html_url\":\"https://github.com/jacquev6\",\"followers_url\":\"https://api.github.com/users/jacquev6/followers\",\"following_url\":\"https://api.github.com/users/jacquev6/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/jacquev6/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/jacquev6/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/jacquev6/subscriptions\",\"organizations_url\":\"https://api.github.com/users/jacquev6/orgs\",\"repos_url\":\"https://api.github.com/users/jacquev6/repos\",\"events_url\":\"https://api.github.com/users/jacquev6/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/jacquev6/received_events\",\"type\":\"User\"},\"private\":false,\"html_url\":\"https://github.com/jacquev6/PyGithub\",\"description\":\"Python library implementing the full Github API v3\",\"fork\":false,\"url\":\"https://api.github.com/repos/jacquev6/PyGithub\",\"forks_url\":\"https://api.github.com/repos/jacquev6/PyGithub/forks\",\"keys_url\":\"https://api.github.com/repos/jacquev6/PyGithub/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/jacquev6/PyGithub/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/jacquev6/PyGithub/teams\",\"hooks_url\":\"https://api.github.com/repos/jacquev6/PyGithub/hooks\",\"issue_events_url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/jacquev6/PyGithub/events\",\"assignees_url\":\"https://api.github.com/repos/jacquev6/PyGithub/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/jacquev6/PyGithub/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/jacquev6/PyGithub/tags\",\"blobs_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/jacquev6/PyGithub/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/jacquev6/PyGithub/languages\",\"stargazers_url\":\"https://api.github.com/repos/jacquev6/PyGithub/stargazers\",\"contributors_url\":\"https://api.github.com/repos/jacquev6/PyGithub/contributors\",\"subscribers_url\":\"https://api.github.com/repos/jacquev6/PyGithub/subscribers\",\"subscription_url\":\"https://api.github.com/repos/jacquev6/PyGithub/subscription\",\"commits_url\":\"https://api.github.com/repos/jacquev6/PyGithub/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/jacquev6/PyGithub/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/{number}\",\"contents_url\":\"https://api.github.com/repos/jacquev6/PyGithub/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/jacquev6/PyGithub/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/jacquev6/PyGithub/merges\",\"archive_url\":\"https://api.github.com/repos/jacquev6/PyGithub/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/jacquev6/PyGithub/downloads\",\"issues_url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/jacquev6/PyGithub/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/jacquev6/PyGithub/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/jacquev6/PyGithub/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels{/name}\",\"created_at\":\"2012-02-25T12:53:47Z\",\"updated_at\":\"2013-08-21T20:32:08Z\",\"pushed_at\":\"2013-08-21T20:31:45Z\",\"git_url\":\"git://github.com/jacquev6/PyGithub.git\",\"ssh_url\":\"git@github.com:jacquev6/PyGithub.git\",\"clone_url\":\"https://github.com/jacquev6/PyGithub.git\",\"svn_url\":\"https://github.com/jacquev6/PyGithub\",\"homepage\":\"http://jacquev6.github.com/PyGithub\",\"size\":7437,\"watchers_count\":248,\"language\":\"Python\",\"has_issues\":true,\"has_downloads\":true,\"has_wiki\":true,\"forks_count\":70,\"mirror_url\":null,\"open_issues_count\":17,\"forks\":70,\"open_issues\":17,\"watchers\":248,\"master_branch\":\"master\",\"default_branch\":\"master\"}}\n+"},{"sha":"b6d8aeec9b3c663cfe561eb2513a514f10011673","filename":"github/tests/ReplayData/Persistence.testLoadAndUpdate.txt","status":"added","additions":11,"deletions":0,"changes":11,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/Persistence.testLoadAndUpdate.txt","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/Persistence.testLoadAndUpdate.txt","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/tests/ReplayData/Persistence.testLoadAndUpdate.txt?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -0,0 +1,11 @@\n+https\n+GET\n+api.github.com\n+None\n+/repos/akfish/PyGithub\n+{'If-None-Match': '\"8600bedcb7fed1d8065e1693e05529ce\"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Thu, 22 Aug 2013 02:09:11 GMT'}\n+null\n+200\n+[('status', '200 OK'), ('x-ratelimit-remaining', '4987'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '13712'), ('server', 'GitHub.com'), ('last-modified', 'Thu, 22 Aug 2013 02:14:54 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '\"ef281ef0e821c18f80da36902727160b\"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Thu, 22 Aug 2013 02:15:01 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1377140429')]\n+{\"id\":12156762,\"name\":\"PyGithub\",\"full_name\":\"akfish/PyGithub\",\"owner\":{\"login\":\"akfish\",\"id\":922715,\"avatar_url\":\"https://0.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png\",\"gravatar_id\":\"12a1b44d4e5c19cee59618084602b112\",\"url\":\"https://api.github.com/users/akfish\",\"html_url\":\"https://github.com/akfish\",\"followers_url\":\"https://api.github.com/users/akfish/followers\",\"following_url\":\"https://api.github.com/users/akfish/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/akfish/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/akfish/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/akfish/subscriptions\",\"organizations_url\":\"https://api.github.com/users/akfish/orgs\",\"repos_url\":\"https://api.github.com/users/akfish/repos\",\"events_url\":\"https://api.github.com/users/akfish/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/akfish/received_events\",\"type\":\"User\"},\"private\":false,\"html_url\":\"https://github.com/akfish/PyGithub\",\"description\":\"Python library implementing the full Github API v3 - AKFish Fork\",\"fork\":true,\"url\":\"https://api.github.com/repos/akfish/PyGithub\",\"forks_url\":\"https://api.github.com/repos/akfish/PyGithub/forks\",\"keys_url\":\"https://api.github.com/repos/akfish/PyGithub/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/akfish/PyGithub/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/akfish/PyGithub/teams\",\"hooks_url\":\"https://api.github.com/repos/akfish/PyGithub/hooks\",\"issue_events_url\":\"https://api.github.com/repos/akfish/PyGithub/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/akfish/PyGithub/events\",\"assignees_url\":\"https://api.github.com/repos/akfish/PyGithub/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/akfish/PyGithub/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/akfish/PyGithub/tags\",\"blobs_url\":\"https://api.github.com/repos/akfish/PyGithub/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/akfish/PyGithub/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/akfish/PyGithub/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/akfish/PyGithub/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/akfish/PyGithub/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/akfish/PyGithub/languages\",\"stargazers_url\":\"https://api.github.com/repos/akfish/PyGithub/stargazers\",\"contributors_url\":\"https://api.github.com/repos/akfish/PyGithub/contributors\",\"subscribers_url\":\"https://api.github.com/repos/akfish/PyGithub/subscribers\",\"subscription_url\":\"https://api.github.com/repos/akfish/PyGithub/subscription\",\"commits_url\":\"https://api.github.com/repos/akfish/PyGithub/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/akfish/PyGithub/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/akfish/PyGithub/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/akfish/PyGithub/issues/comments/{number}\",\"contents_url\":\"https://api.github.com/repos/akfish/PyGithub/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/akfish/PyGithub/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/akfish/PyGithub/merges\",\"archive_url\":\"https://api.github.com/repos/akfish/PyGithub/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/akfish/PyGithub/downloads\",\"issues_url\":\"https://api.github.com/repos/akfish/PyGithub/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/akfish/PyGithub/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/akfish/PyGithub/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/akfish/PyGithub/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/akfish/PyGithub/labels{/name}\",\"created_at\":\"2013-08-16T10:56:11Z\",\"updated_at\":\"2013-08-22T02:14:54Z\",\"pushed_at\":\"2013-08-22T02:09:09Z\",\"git_url\":\"git://github.com/akfish/PyGithub.git\",\"ssh_url\":\"git@github.com:akfish/PyGithub.git\",\"clone_url\":\"https://github.com/akfish/PyGithub.git\",\"svn_url\":\"https://github.com/akfish/PyGithub\",\"homepage\":\"http://jacquev6.github.com/PyGithub\",\"size\":6736,\"watchers_count\":0,\"language\":\"Python\",\"has_issues\":false,\"has_downloads\":true,\"has_wiki\":true,\"forks_count\":0,\"mirror_url\":null,\"open_issues_count\":0,\"forks\":0,\"open_issues\":0,\"watchers\":0,\"master_branch\":\"master\",\"default_branch\":\"master\",\"permissions\":{\"admin\":true,\"push\":true,\"pull\":true},\"network_count\":70,\"parent\":{\"id\":3544490,\"name\":\"PyGithub\",\"full_name\":\"jacquev6/PyGithub\",\"owner\":{\"login\":\"jacquev6\",\"id\":327146,\"avatar_url\":\"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png\",\"gravatar_id\":\"b68de5ae38616c296fa345d2b9df2225\",\"url\":\"https://api.github.com/users/jacquev6\",\"html_url\":\"https://github.com/jacquev6\",\"followers_url\":\"https://api.github.com/users/jacquev6/followers\",\"following_url\":\"https://api.github.com/users/jacquev6/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/jacquev6/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/jacquev6/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/jacquev6/subscriptions\",\"organizations_url\":\"https://api.github.com/users/jacquev6/orgs\",\"repos_url\":\"https://api.github.com/users/jacquev6/repos\",\"events_url\":\"https://api.github.com/users/jacquev6/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/jacquev6/received_events\",\"type\":\"User\"},\"private\":false,\"html_url\":\"https://github.com/jacquev6/PyGithub\",\"description\":\"Python library implementing the full Github API v3\",\"fork\":false,\"url\":\"https://api.github.com/repos/jacquev6/PyGithub\",\"forks_url\":\"https://api.github.com/repos/jacquev6/PyGithub/forks\",\"keys_url\":\"https://api.github.com/repos/jacquev6/PyGithub/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/jacquev6/PyGithub/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/jacquev6/PyGithub/teams\",\"hooks_url\":\"https://api.github.com/repos/jacquev6/PyGithub/hooks\",\"issue_events_url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/jacquev6/PyGithub/events\",\"assignees_url\":\"https://api.github.com/repos/jacquev6/PyGithub/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/jacquev6/PyGithub/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/jacquev6/PyGithub/tags\",\"blobs_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/jacquev6/PyGithub/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/jacquev6/PyGithub/languages\",\"stargazers_url\":\"https://api.github.com/repos/jacquev6/PyGithub/stargazers\",\"contributors_url\":\"https://api.github.com/repos/jacquev6/PyGithub/contributors\",\"subscribers_url\":\"https://api.github.com/repos/jacquev6/PyGithub/subscribers\",\"subscription_url\":\"https://api.github.com/repos/jacquev6/PyGithub/subscription\",\"commits_url\":\"https://api.github.com/repos/jacquev6/PyGithub/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/jacquev6/PyGithub/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/{number}\",\"contents_url\":\"https://api.github.com/repos/jacquev6/PyGithub/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/jacquev6/PyGithub/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/jacquev6/PyGithub/merges\",\"archive_url\":\"https://api.github.com/repos/jacquev6/PyGithub/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/jacquev6/PyGithub/downloads\",\"issues_url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/jacquev6/PyGithub/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/jacquev6/PyGithub/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/jacquev6/PyGithub/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels{/name}\",\"created_at\":\"2012-02-25T12:53:47Z\",\"updated_at\":\"2013-08-21T20:32:08Z\",\"pushed_at\":\"2013-08-21T20:31:45Z\",\"git_url\":\"git://github.com/jacquev6/PyGithub.git\",\"ssh_url\":\"git@github.com:jacquev6/PyGithub.git\",\"clone_url\":\"https://github.com/jacquev6/PyGithub.git\",\"svn_url\":\"https://github.com/jacquev6/PyGithub\",\"homepage\":\"http://jacquev6.github.com/PyGithub\",\"size\":7437,\"watchers_count\":248,\"language\":\"Python\",\"has_issues\":true,\"has_downloads\":true,\"has_wiki\":true,\"forks_count\":70,\"mirror_url\":null,\"open_issues_count\":17,\"forks\":70,\"open_issues\":17,\"watchers\":248,\"master_branch\":\"master\",\"default_branch\":\"master\"},\"source\":{\"id\":3544490,\"name\":\"PyGithub\",\"full_name\":\"jacquev6/PyGithub\",\"owner\":{\"login\":\"jacquev6\",\"id\":327146,\"avatar_url\":\"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png\",\"gravatar_id\":\"b68de5ae38616c296fa345d2b9df2225\",\"url\":\"https://api.github.com/users/jacquev6\",\"html_url\":\"https://github.com/jacquev6\",\"followers_url\":\"https://api.github.com/users/jacquev6/followers\",\"following_url\":\"https://api.github.com/users/jacquev6/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/jacquev6/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/jacquev6/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/jacquev6/subscriptions\",\"organizations_url\":\"https://api.github.com/users/jacquev6/orgs\",\"repos_url\":\"https://api.github.com/users/jacquev6/repos\",\"events_url\":\"https://api.github.com/users/jacquev6/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/jacquev6/received_events\",\"type\":\"User\"},\"private\":false,\"html_url\":\"https://github.com/jacquev6/PyGithub\",\"description\":\"Python library implementing the full Github API v3\",\"fork\":false,\"url\":\"https://api.github.com/repos/jacquev6/PyGithub\",\"forks_url\":\"https://api.github.com/repos/jacquev6/PyGithub/forks\",\"keys_url\":\"https://api.github.com/repos/jacquev6/PyGithub/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/jacquev6/PyGithub/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/jacquev6/PyGithub/teams\",\"hooks_url\":\"https://api.github.com/repos/jacquev6/PyGithub/hooks\",\"issue_events_url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/jacquev6/PyGithub/events\",\"assignees_url\":\"https://api.github.com/repos/jacquev6/PyGithub/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/jacquev6/PyGithub/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/jacquev6/PyGithub/tags\",\"blobs_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/jacquev6/PyGithub/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/jacquev6/PyGithub/languages\",\"stargazers_url\":\"https://api.github.com/repos/jacquev6/PyGithub/stargazers\",\"contributors_url\":\"https://api.github.com/repos/jacquev6/PyGithub/contributors\",\"subscribers_url\":\"https://api.github.com/repos/jacquev6/PyGithub/subscribers\",\"subscription_url\":\"https://api.github.com/repos/jacquev6/PyGithub/subscription\",\"commits_url\":\"https://api.github.com/repos/jacquev6/PyGithub/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/jacquev6/PyGithub/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/jacquev6/PyGithub/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/{number}\",\"contents_url\":\"https://api.github.com/repos/jacquev6/PyGithub/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/jacquev6/PyGithub/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/jacquev6/PyGithub/merges\",\"archive_url\":\"https://api.github.com/repos/jacquev6/PyGithub/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/jacquev6/PyGithub/downloads\",\"issues_url\":\"https://api.github.com/repos/jacquev6/PyGithub/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/jacquev6/PyGithub/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/jacquev6/PyGithub/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/jacquev6/PyGithub/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/jacquev6/PyGithub/labels{/name}\",\"created_at\":\"2012-02-25T12:53:47Z\",\"updated_at\":\"2013-08-21T20:32:08Z\",\"pushed_at\":\"2013-08-21T20:31:45Z\",\"git_url\":\"git://github.com/jacquev6/PyGithub.git\",\"ssh_url\":\"git@github.com:jacquev6/PyGithub.git\",\"clone_url\":\"https://github.com/jacquev6/PyGithub.git\",\"svn_url\":\"https://github.com/jacquev6/PyGithub\",\"homepage\":\"http://jacquev6.github.com/PyGithub\",\"size\":7437,\"watchers_count\":248,\"language\":\"Python\",\"has_issues\":true,\"has_downloads\":true,\"has_wiki\":true,\"forks_count\":70,\"mirror_url\":null,\"open_issues_count\":17,\"forks\":70,\"open_issues\":17,\"watchers\":248,\"master_branch\":\"master\",\"default_branch\":\"master\"}}\n+"},{"sha":"3d4b27e8aa1282bb8401e6e2ae753044a7208686","filename":"github/tests/ReplayData/Status.testGetLastMessage.txt","status":"added","additions":11,"deletions":0,"changes":11,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/Status.testGetLastMessage.txt","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/Status.testGetLastMessage.txt","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/tests/ReplayData/Status.testGetLastMessage.txt?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -0,0 +1,11 @@\n+https\n+GET\n+status.github.com\n+443\n+/api/last-message.json\n+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}\n+null\n+200\n+[('status', '200 OK'), ('content-length', '93'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('connection', 'keep-alive'), ('date', 'Fri, 06 Sep 2013 08:34:01 GMT'), ('content-type', 'application/json;charset=utf-8')]\n+{\"status\":\"good\",\"body\":\"Everything operating normally.\",\"created_on\":\"2013-09-01T15:41:46Z\"}\n+"},{"sha":"6c79412a7a4039830228927d1ca5c9557298bdd3","filename":"github/tests/ReplayData/Status.testGetMessages.txt","status":"added","additions":11,"deletions":0,"changes":11,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/Status.testGetMessages.txt","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/Status.testGetMessages.txt","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/tests/ReplayData/Status.testGetMessages.txt?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -0,0 +1,11 @@\n+https\n+GET\n+status.github.com\n+443\n+/api/messages.json\n+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}\n+null\n+200\n+[('status', '200 OK'), ('content-length', '1492'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('connection', 'keep-alive'), ('date', 'Fri, 06 Sep 2013 08:41:31 GMT'), ('content-type', 'application/json;charset=utf-8')]\n+[{\"status\":\"good\",\"body\":\"Everything operating normally.\",\"created_on\":\"2013-09-01T15:41:46Z\"},{\"status\":\"minor\",\"body\":\"GitHub Pages are currently unavailable. We're investigating the problem.\",\"created_on\":\"2013-09-01T15:26:59Z\"},{\"status\":\"good\",\"body\":\"Everything operating normally.\",\"created_on\":\"2013-09-01T15:17:24Z\"},{\"status\":\"minor\",\"body\":\"We are investigating an increased rate of errors on GitHub.com\",\"created_on\":\"2013-09-01T15:14:24Z\"},{\"status\":\"good\",\"body\":\"Everything operating normally.\",\"created_on\":\"2013-09-01T06:52:46Z\"},{\"status\":\"minor\",\"body\":\"Some GitHub pages are again unavailable. We are continuing to investigate.\",\"created_on\":\"2013-09-01T06:50:31Z\"},{\"status\":\"good\",\"body\":\"Everything operating normally.\",\"created_on\":\"2013-09-01T06:47:25Z\"},{\"status\":\"minor\",\"body\":\"Some GitHub pages are temporarily unavailable.\",\"created_on\":\"2013-09-01T06:43:03Z\"},{\"status\":\"good\",\"body\":\"We're back up, now featuring a massively upgraded DB cluster with SSDs and 10Gbps networking! Thanks for your patience.\",\"created_on\":\"2013-08-31T12:13:04Z\"},{\"status\":\"major\",\"body\":\"We're beginning our scheduled maintenance now, and expect to be back up in 20 minutes. https://github.com/blog/1603-site-maintenance-august-31st-2013\",\"created_on\":\"2013-08-31T12:00:13Z\"},{\"status\":\"good\",\"body\":\"Everything operating normally.\",\"created_on\":\"2013-08-31T11:45:50Z\"},{\"status\":\"minor\",\"body\":\"We are investigating issues with GitHub Pages\",\"created_on\":\"2013-08-31T11:43:39Z\"}]\n+"},{"sha":"e01aec021bcb172a4eaf436c5d23e69594bc022f","filename":"github/tests/ReplayData/Status.testGetStatus.txt","status":"added","additions":11,"deletions":0,"changes":11,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/Status.testGetStatus.txt","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/tests/ReplayData/Status.testGetStatus.txt","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/tests/ReplayData/Status.testGetStatus.txt?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -0,0 +1,11 @@\n+https\n+GET\n+status.github.com\n+443\n+/api/status.json\n+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}\n+null\n+200\n+[('status', '200 OK'), ('content-length', '55'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('connection', 'keep-alive'), ('date', 'Fri, 06 Sep 2013 08:29:36 GMT'), ('content-type', 'application/json;charset=utf-8')]\n+{\"status\":\"good\",\"last_updated\":\"2013-09-06T08:29:27Z\"}\n+"},{"sha":"0bb3c935ce2f4fa86d410b2759a4825e42bc44a3","filename":"github/tests/Status.py","status":"added","additions":43,"deletions":0,"changes":43,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/github/tests/Status.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/github/tests/Status.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/github/tests/Status.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -0,0 +1,43 @@\n+# -*- coding: utf-8 -*-\n+\n+############################ Copyrights and license ############################\n+# #\n+# Copyright 2013 Vincent Jacques #\n+# #\n+# This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #\n+# #\n+# PyGithub is free software: you can redistribute it and/or modify it under #\n+# the terms of the GNU Lesser General Public License as published by the Free #\n+# Software Foundation, either version 3 of the License, or (at your option) #\n+# any later version. #\n+# #\n+# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY #\n+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS #\n+# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more #\n+# details. #\n+# #\n+# You should have received a copy of the GNU Lesser General Public License #\n+# along with PyGithub. If not, see . #\n+# #\n+################################################################################\n+\n+import Framework\n+\n+import github\n+import datetime\n+\n+\n+class Status(Framework.TestCase):\n+ def testGetStatus(self):\n+ status = self.g.get_api_status()\n+ self.assertEqual(status.status, \"good\")\n+ self.assertEqual(status.last_updated, datetime.datetime(2013, 9, 6, 8, 29, 27))\n+\n+ def testGetLastMessage(self):\n+ message = self.g.get_last_api_status_message()\n+ self.assertEqual(message.status, \"good\")\n+ self.assertEqual(message.body, \"Everything operating normally.\")\n+ self.assertEqual(message.created_on, datetime.datetime(2013, 9, 1, 15, 41, 46))\n+\n+ def testGetMessages(self):\n+ self.assertListKeyEqual(self.g.get_api_status_messages(), lambda m: m.status, [\"good\", \"minor\", \"good\", \"minor\", \"good\", \"minor\", \"good\", \"minor\", \"good\", \"major\", \"good\", \"minor\"])"},{"sha":"3439c6f189e0bd05a747ff4c702518068fde7b3b","filename":"scripts/fix_headers.py","status":"modified","additions":2,"deletions":0,"changes":2,"blob_url":"https://github.com/jacquev6/PyGithub/blob/a6597499c2f82e063074a3036d875417d5efa296/scripts/fix_headers.py","raw_url":"https://github.com/jacquev6/PyGithub/raw/a6597499c2f82e063074a3036d875417d5efa296/scripts/fix_headers.py","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/scripts/fix_headers.py?ref=a6597499c2f82e063074a3036d875417d5efa296","patch":"@@ -132,6 +132,8 @@ def findHeadersAndFiles():\n dirs.remove(\".git\")\n if \"developer.github.com\" in dirs:\n dirs.remove(\"developer.github.com\")\n+ if \"build\" in dirs:\n+ dirs.remove(\"build\")\n \n for filename in files:\n fullname = os.path.join(root, filename)"}]} + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/contentsREADME.rst +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4869'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '36bdc0ef-6149-4a8a-b4b5-3f8a82cf42aa'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '6577'), ('server', 'GitHub.com'), ('last-modified', 'Wed, 21 Aug 2013 16:39:22 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"bbffa70478199a10902bf5da76db3481"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:57 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"name":"README.rst","path":"README.rst","sha":"7b03e11cebcf910764a583dd8be5b6824046459b","size":4271,"url":"https://api.github.com/repos/jacquev6/PyGithub/contents/README.rst?ref=master","html_url":"https://github.com/jacquev6/PyGithub/blob/master/README.rst","git_url":"https://api.github.com/repos/jacquev6/PyGithub/git/blobs/7b03e11cebcf910764a583dd8be5b6824046459b","type":"file","content":"VGhpcyBpcyBhIFB5dGhvbiAoMiBhbmQgMykgbGlicmFyeSB0byBhY2Nlc3Mg\ndGhlIGBHaXRodWIgQVBJIHYzIDxodHRwOi8vZGV2ZWxvcGVyLmdpdGh1Yi5j\nb20vdjM+YF8uCldpdGggaXQsIHlvdSBjYW4gbWFuYWdlIHlvdXIgYEdpdGh1\nYiA8aHR0cDovL2dpdGh1Yi5jb20+YF8gcmVzb3VyY2VzIChyZXBvc2l0b3Jp\nZXMsIHVzZXIgcHJvZmlsZXMsIG9yZ2FuaXphdGlvbnMsIGV0Yy4pIGZyb20g\nUHl0aG9uIHNjcmlwdHMuCgpJdCBjb3ZlcnMgdGhlICoqZnVsbCoqIEFQSSAo\nZXhjZXB0IHJlY2VudCBhZGRpdGlvbnMsIHNlZSAiV2hhdCdzIG1pc3Npbmci\nIGJlbGxvdyksIGFuZCBhbGwgbWV0aG9kcyBhcmUgdGVzdGVkIGFnYWluc3Qg\ndGhlIHJlYWwgR2l0aHViIHNpdGUuCgpTaG91bGQgeW91IGhhdmUgYW55IHF1\nZXN0aW9uLCBhbnkgcmVtYXJrLCBvciBpZiB5b3UgZmluZCBhIGJ1Zywgb3Ig\naWYgdGhlcmUgaXMgc29tZXRoaW5nIHlvdSBjYW4gZG8gd2l0aCB0aGUgQVBJ\nIGJ1dCBub3Qgd2l0aCBQeUdpdGh1YiwgcGxlYXNlIGBvcGVuIGFuIGlzc3Vl\nIDxodHRwczovL2dpdGh1Yi5jb20vamFjcXVldjYvUHlHaXRodWIvaXNzdWVz\nPmBfLgoKUHlHaXRodWIgaXMgc3RhYmxlLiBJIHdpbGwgbWFpbnRhaW4gaXQg\ndXAgdG8gZGF0ZSB3aXRoIHRoZSBBUEksIGFuZCBmaXggYnVncyBpZiBhbnks\nIGJ1dCBJIGRvbid0IHBsYW4gbmV3IGhlYXZ5IGRldmVsb3BtZW50cy4KCldo\nYXQncyBuZXc/Cj09PT09PT09PT09CgoKYFZlcnNpb24gMS4xOC4wIDxodHRw\nczovL2dpdGh1Yi5jb20vamFjcXVldjYvUHlHaXRodWIvaXNzdWVzP21pbGVz\ndG9uZT0zMCZzdGF0ZT1jbG9zZWQ+YF8gKEF1Z3VzdCAyMXN0LCAyMDEzKSAo\nQsOpbm9kZXQgZWRpdGlvbikKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t\nLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t\nLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t\nLS0tLS0tLS0tLQoKKiBgSXNzdWVzIDxodHRwczovL2dpdGh1Yi5jb20vamFj\ncXVldjYvUHlHaXRodWIvcHVsbC8xODE+YF8nIGBgcmVwb3NpdG9yeWBgIGF0\ndHJpYnV0ZSB3aWxsIG5ldmVyIGJlIGBgTm9uZWBgLiBUaGFuayB5b3UgYHN0\ndWdsYXNlciA8aHR0cHM6Ly9naXRodWIuY29tL3N0dWdsYXNlcj5gXyBmb3Ig\ndGhlIHB1bGwgcmVxdWVzdAoqIE5vIG1vcmUgZmFsc2UgYXNzdW1wdGlvbiBv\nbiBgcmF0ZV9saW1pdGluZyA8aHR0cHM6Ly9naXRodWIuY29tL2phY3F1ZXY2\nL1B5R2l0aHViL3B1bGwvMTg2PmBfLCBhbmQgY3JlYXRpb24gb2YgYGByYXRl\nX2xpbWl0aW5nX3Jlc2V0dGltZWBgLiBUaGFuayB5b3UgYGVkamFja3NvbiA8\naHR0cHM6Ly9naXRodWIuY29tL2VkamFja3Nvbj5gXyBmb3IgdGhlIHB1bGwg\ncmVxdWVzdAoqIGBOZXcgPGh0dHBzOi8vZ2l0aHViLmNvbS9qYWNxdWV2Ni9Q\neUdpdGh1Yi9wdWxsLzE4Nz5gXyBwYXJhbWV0ZXJzIGBgc2luY2VgYCBhbmQg\nYGB1bnRpbGBgIHRvIGBgUmVwb3NpdG9yeS5nZXRfY29tbWl0c2BgLiBUaGFu\nayB5b3UgYGFwZXRyZXNjIDxodHRwczovL2dpdGh1Yi5jb20vYXBldHJlc2M+\nYF8gZm9yIHRoZSBwdWxsIHJlcXVlc3QKKiBgQ2F0Y2ggPGh0dHBzOi8vZ2l0\naHViLmNvbS9qYWNxdWV2Ni9QeUdpdGh1Yi9wdWxsLzE4Mj5gXyBKc29uIHBh\ncnNpbmcgZXhjZXB0aW9uIGZvciBzb21lIGludGVybmFsIHNlcnZlciBlcnJv\ncnMsIGFuZCB0aHJvdyBhIGJldHRlciBleGNlcHRpb24uIFRoYW5rIHlvdSBg\nTWFya1JvZGR5IDxodHRwczovL2dpdGh1Yi5jb20vTWFya1JvZGR5PmBfIGZv\nciB0aGUgcHVsbCByZXF1ZXN0CiogYEFsbG93IDxodHRwczovL2dpdGh1Yi5j\nb20vamFjcXVldjYvUHlHaXRodWIvcHVsbC8xODQ+YF8gcmV2ZXJzZWQgaXRl\ncmF0aW9uIG9mIGBgUGFnaW5hdGVkTGlzdGBgcy4gVGhhbmsgeW91IGBkYXZp\nZGJyYWkgPGh0dHBzOi8vZ2l0aHViLmNvbS9kYXZpZGJyYWk+YF8gZm9yIHRo\nZSBwdWxsIHJlcXVlc3QKCldoYXQncyBtaXNzaW5nPwo9PT09PT09PT09PT09\nPT0KCldlIG5vdyBoYXZlIGF1dG9tYXRlZCB3YXlzIHRvIGxpc3QgVVJMcyBk\nb2N1bWVudGVkIGluIGB0aGUgcmVmZXJlbmNlIG9mIEdpdGh1YiBBUEkgdjMg\nPGh0dHA6Ly9kZXZlbG9wZXIuZ2l0aHViLmNvbT5gXyBhbmQgbm90IGNvdmVy\nZWQgYnkgUHlHaXRodWIuCgpHaXRodWIgQVBJIHYzIFVSTHMgbm90ICh5ZXQp\nIGNvdmVyZWQgYnkgUHlHaXRodWIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t\nLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoqIGBgL2FwcGxpY2F0aW9ucy86\nY2xpZW50X2lkL3Rva2Vucy86YWNjZXNzX3Rva2VuYGAgKEdFVCkKKiBgYC9m\nZWVkc2BgIChHRVQpCiogYGAvZ2lzdHMvOmlkL2ZvcmtzYGAgKFBPU1QpCgog\nICogaW5zdGVhZCwgYGBHaXN0LmNyZWF0ZV9mb3JrYGAgY2FsbHMgdGhlIG9s\nZCBVUkwgYGAvZ2lzdHMvOmlkL2ZvcmtgYAoKKiBgYC9tZXRhYGAgKEdFVCkK\nKiBgYC9ub3RpZmljYXRpb25zYGAgKFBVVCkKKiBgYC9ub3RpZmljYXRpb25z\nL2VtYWlsc2BgIChHRVQpCiogYGAvbm90aWZpY2F0aW9ucy9lbWFpbHNgYCAo\nUEFUQ0gpCiogYGAvbm90aWZpY2F0aW9ucy9nbG9iYWwvZW1haWxzYGAgKEdF\nVCkKKiBgYC9ub3RpZmljYXRpb25zL2dsb2JhbC9lbWFpbHNgYCAoUFVUKQoq\nIGBgL25vdGlmaWNhdGlvbnMvb3JnYW5pemF0aW9uLzpvcmcvZW1haWxzYGAg\nKEdFVCkKKiBgYC9ub3RpZmljYXRpb25zL29yZ2FuaXphdGlvbi86b3JnL2Vt\nYWlsc2BgIChQVVQpCiogYGAvbm90aWZpY2F0aW9ucy9zZXR0aW5nc2BgIChH\nRVQpCiogYGAvbm90aWZpY2F0aW9ucy9zZXR0aW5nc2BgIChQQVRDSCkKKiBg\nYC9ub3RpZmljYXRpb25zL3RocmVhZHMvOmlkYGAgKFBBVENIKQoqIGBgL25v\ndGlmaWNhdGlvbnMvdGhyZWFkcy86aWQvc3Vic2NyaXB0aW9uYGAgKERFTEVU\nRSkKKiBgYC9ub3RpZmljYXRpb25zL3RocmVhZHMvOmlkL3N1YnNjcmlwdGlv\nbmBgIChHRVQpCiogYGAvbm90aWZpY2F0aW9ucy90aHJlYWRzLzppZC9zdWJz\nY3JpcHRpb25gYCAoUFVUKQoqIGBgL3JhdGVfbGltaXRgYCAoR0VUKQoKICAq\nIHNob3VsZCBiZSBjYWxsZWQgaW4gbWV0aG9kIGBgR2l0aHViLmdldF9yYXRl\nX2xpbWl0YGAuIFNlZSBhbHNvIGBgR2l0aHViLnJhdGVfbGltaXRpbmdgYAoK\nKiBgYC9yZXBvcy86b3duZXIvOnJlcG8vY29udGVudHMvOnBhdGhgYCAoREVM\nRVRFKQoqIGBgL3JlcG9zLzpvd25lci86cmVwby9jb250ZW50cy86cGF0aGBg\nIChQVVQpCiogYGAvcmVwb3MvOm93bmVyLzpyZXBvL2hvb2tzLzppZC90ZXN0\nc2BgIChQT1NUKQoKICAqIGluc3RlYWQsIGBgSG9vay50ZXN0YGAgY2FsbHMg\ndGhlIG9sZCBVUkwgYGAvcmVwb3MvOm93bmVyLzpyZXBvL2hvb2tzLzppZC90\nZXN0YGAKCiogYGAvcmVwb3MvOm93bmVyLzpyZXBvL25vdGlmaWNhdGlvbnNg\nYCAoR0VUKQoqIGBgL3JlcG9zLzpvd25lci86cmVwby9ub3RpZmljYXRpb25z\nYGAgKFBVVCkKKiBgYC9yZXBvcy86b3duZXIvOnJlcG8vc3RhdHMvY29kZV9m\ncmVxdWVuY3lgYCAoR0VUKQoqIGBgL3JlcG9zLzpvd25lci86cmVwby9zdGF0\ncy9jb21taXRfYWN0aXZpdHlgYCAoR0VUKQoqIGBgL3JlcG9zLzpvd25lci86\ncmVwby9zdGF0cy9jb250cmlidXRvcnNgYCAoR0VUKQoqIGBgL3JlcG9zLzpv\nd25lci86cmVwby9zdGF0cy9wYXJ0aWNpcGF0aW9uYGAgKEdFVCkKKiBgYC9y\nZXBvcy86b3duZXIvOnJlcG8vc3RhdHMvcHVuY2hfY2FyZGBgIChHRVQpCiog\nYGAvcmVwb3MvOm93bmVyLzpyZXBvL3N1YnNjcmlwdGlvbmBgIChERUxFVEUp\nCiogYGAvcmVwb3MvOm93bmVyLzpyZXBvL3N1YnNjcmlwdGlvbmBgIChHRVQp\nCiogYGAvcmVwb3MvOm93bmVyLzpyZXBvL3N1YnNjcmlwdGlvbmBgIChQVVQp\nCiogYGAvcmVwb3NpdG9yaWVzYGAgKEdFVCkKCiAgKiBzaG91bGQgYmUgY2Fs\nbGVkIGluIG1ldGhvZCBgYEdpdGh1Yi5nZXRfcmVwb3NgYAoKKiBgYC9zZWFy\nY2gvY29kZWBgIChHRVQpCiogYGAvc2VhcmNoL2lzc3Vlc2BgIChHRVQpCiog\nYGAvc2VhcmNoL3JlcG9zaXRvcmllc2BgIChHRVQpCiogYGAvc2VhcmNoL3Vz\nZXJzYGAgKEdFVCkKKiBgYC91c2Vycy86dXNlci9mb2xsb3dpbmcvOnRhcmdl\ndF91c2VyYGAgKEdFVCkKCiAgKiBzaG91bGQgYmUgY2FsbGVkIGluIG1ldGhv\nZCBgYE5hbWVkVXNlci5oYXNfaW5fZm9sbG93aW5nYGAKCkRvY3VtZW50YXRp\nb24KPT09PT09PT09PT09PQoKQWxsIHRoZSBkb2N1bWVudGF0aW9uIGlzIGhl\ncmU6IGh0dHA6Ly9qYWNxdWV2Ni5naXRodWIuY29tL1B5R2l0aHViLgo=\n","encoding":"base64","_links":{"self":"https://api.github.com/repos/jacquev6/PyGithub/contents/README.rst?ref=master","git":"https://api.github.com/repos/jacquev6/PyGithub/git/blobs/7b03e11cebcf910764a583dd8be5b6824046459b","html":"https://github.com/jacquev6/PyGithub/blob/master/README.rst"}} + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/events +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4868'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', 'aad86338-b4d2-44ad-b094-37965f99ed02'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '150840'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:41:05 GMT'), ('x-ratelimit-limit', '5000'), ('link', '; rel="next"'), ('etag', '"815ffb5687c4d26df4a1e81e5de3ac7e"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:05:58 GMT'), ('access-control-allow-origin', '*'), ('x-poll-interval', '60'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +[{"id":"1823555573","type":"DeleteEvent","actor":{"id":327146,"login":"jacquev6","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"ref":"topic/ImproveDocumentation","ref_type":"branch"},"public":true,"created_at":"2013-09-06T12:41:05Z"},{"id":"1823554600","type":"DeleteEvent","actor":{"id":327146,"login":"jacquev6","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"ref":"topic/SpecificExceptions","ref_type":"branch"},"public":true,"created_at":"2013-09-06T12:39:45Z"},{"id":"1823452056","type":"IssueCommentEvent","actor":{"id":327146,"login":"jacquev6","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/163","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/163/labels{/name}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/163/comments","events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/163/events","html_url":"https://github.com/jacquev6/PyGithub/issues/163","id":13924435,"number":163,"title":"Looking to help out","user":{"login":"shercoder","id":1681066,"avatar_url":"https://1.gravatar.com/avatar/3bc7caad2383726988f7834c6800f7f9?d=https%3A%2F%2Fidenticons.github.com%2F902797e4e8c74be19dce4e4640f8b455.png","gravatar_id":"3bc7caad2383726988f7834c6800f7f9","url":"https://api.github.com/users/shercoder","html_url":"https://github.com/shercoder","followers_url":"https://api.github.com/users/shercoder/followers","following_url":"https://api.github.com/users/shercoder/following{/other_user}","gists_url":"https://api.github.com/users/shercoder/gists{/gist_id}","starred_url":"https://api.github.com/users/shercoder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shercoder/subscriptions","organizations_url":"https://api.github.com/users/shercoder/orgs","repos_url":"https://api.github.com/users/shercoder/repos","events_url":"https://api.github.com/users/shercoder/events{/privacy}","received_events_url":"https://api.github.com/users/shercoder/received_events","type":"User"},"labels":[{"url":"https://api.github.com/repos/jacquev6/PyGithub/labels/Question","name":"Question","color":"02e10c"}],"state":"open","assignee":null,"milestone":{"url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/28","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/28/labels","id":358501,"number":28,"title":"Issues assigned to volunteers","description":"This (fake) milestone groups all issues on which a volunteer is working.","creator":{"login":"jacquev6","id":327146,"avatar_url":"https://2.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"open_issues":3,"closed_issues":0,"state":"open","created_at":"2013-06-18T20:42:13Z","updated_at":"2013-08-20T21:27:13Z","due_on":null},"comments":3,"created_at":"2013-05-03T07:39:10Z","updated_at":"2013-09-06T10:04:19Z","closed_at":null,"pull_request":{"html_url":null,"diff_url":null,"patch_url":null},"body":"Hey my friend introduced me to your project and we have already started to use it in our small projects.I am looking to help out. Is there anything that i can do to help out in your project. If there is anything that I can help you with, please let me know. Thank you"},"comment":{"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/23930309","html_url":"https://github.com/jacquev6/PyGithub/issues/163#issuecomment-23930309","issue_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/163","id":23930309,"user":{"login":"jacquev6","id":327146,"avatar_url":"https://2.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"created_at":"2013-09-06T10:04:19Z","updated_at":"2013-09-06T10:04:19Z","body":"Update: some missing functionalities are now listed in [README.rst](https://github.com/jacquev6/PyGithub/blob/master/README.rst)"}},"public":true,"created_at":"2013-09-06T10:04:19Z"},{"id":"1823450347","type":"IssueCommentEvent","actor":{"id":327146,"login":"jacquev6","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/179","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/179/labels{/name}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/179/comments","events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/179/events","html_url":"https://github.com/jacquev6/PyGithub/pull/179","id":15885976,"number":179,"title":"Automatic rety, empty repo handling and updated arguments for get_commits","user":{"login":"wcdolphin","id":446889,"avatar_url":"https://1.gravatar.com/avatar/3202f845a8cafe9729d397649dfadd3a?d=https%3A%2F%2Fidenticons.github.com%2F37f8d4e8ebdd8ce92fbb3503fe9aa31a.png","gravatar_id":"3202f845a8cafe9729d397649dfadd3a","url":"https://api.github.com/users/wcdolphin","html_url":"https://github.com/wcdolphin","followers_url":"https://api.github.com/users/wcdolphin/followers","following_url":"https://api.github.com/users/wcdolphin/following{/other_user}","gists_url":"https://api.github.com/users/wcdolphin/gists{/gist_id}","starred_url":"https://api.github.com/users/wcdolphin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wcdolphin/subscriptions","organizations_url":"https://api.github.com/users/wcdolphin/orgs","repos_url":"https://api.github.com/users/wcdolphin/repos","events_url":"https://api.github.com/users/wcdolphin/events{/privacy}","received_events_url":"https://api.github.com/users/wcdolphin/received_events","type":"User"},"labels":[],"state":"open","assignee":null,"milestone":{"url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/28","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/28/labels","id":358501,"number":28,"title":"Issues assigned to volunteers","description":"This (fake) milestone groups all issues on which a volunteer is working.","creator":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"open_issues":3,"closed_issues":0,"state":"open","created_at":"2013-06-18T20:42:13Z","updated_at":"2013-08-20T21:27:13Z","due_on":null},"comments":3,"created_at":"2013-06-22T15:59:01Z","updated_at":"2013-09-06T10:02:07Z","closed_at":null,"pull_request":{"html_url":"https://github.com/jacquev6/PyGithub/pull/179","diff_url":"https://github.com/jacquev6/PyGithub/pull/179.diff","patch_url":"https://github.com/jacquev6/PyGithub/pull/179.patch"},"body":"This PR adds:\r\n1. Automatic retrying on failure of an idempotent request, up to a default of 5 times.\r\n2. Handling and raising of EmptyRepositoryException which can be emitted by a call to get_commits\r\n3. Updated arguments for Repository.get_commits, reflecting the url_params for Github API V3\r\n\r\nPlease let me know if you have any feedback on style, etc. I will happily address. \r\n "},"comment":{"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/23930203","html_url":"https://github.com/jacquev6/PyGithub/pull/179#issuecomment-23930203","issue_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/179","id":23930203,"user":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"created_at":"2013-09-06T10:02:07Z","updated_at":"2013-09-06T10:02:07Z","body":"Hello @wcdolphin,\r\n\r\ndo you still plan to work on this? If not, it's not a problem. I ask you this now because I'm going to have time to do it on my side in the coming days.\r\n\r\nThanks,"}},"public":true,"created_at":"2013-09-06T10:02:07Z"},{"id":"1823413095","type":"IssuesEvent","actor":{"id":327146,"login":"jacquev6","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"action":"closed","issue":{"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/188","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/188/labels{/name}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/188/comments","events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/188/events","html_url":"https://github.com/jacquev6/PyGithub/issues/188","id":17736533,"number":188,"title":"Getting the status of GitHub","user":{"login":"ruxandraburtica","id":797922,"avatar_url":"https://2.gravatar.com/avatar/5703c5907fc67b679be40fd307b07733?d=https%3A%2F%2Fidenticons.github.com%2F470a720db37e19afad67c34e30ffcd85.png","gravatar_id":"5703c5907fc67b679be40fd307b07733","url":"https://api.github.com/users/ruxandraburtica","html_url":"https://github.com/ruxandraburtica","followers_url":"https://api.github.com/users/ruxandraburtica/followers","following_url":"https://api.github.com/users/ruxandraburtica/following{/other_user}","gists_url":"https://api.github.com/users/ruxandraburtica/gists{/gist_id}","starred_url":"https://api.github.com/users/ruxandraburtica/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ruxandraburtica/subscriptions","organizations_url":"https://api.github.com/users/ruxandraburtica/orgs","repos_url":"https://api.github.com/users/ruxandraburtica/repos","events_url":"https://api.github.com/users/ruxandraburtica/events{/privacy}","received_events_url":"https://api.github.com/users/ruxandraburtica/received_events","type":"User"},"labels":[{"url":"https://api.github.com/repos/jacquev6/PyGithub/labels/Functionalities","name":"Functionalities","color":"e102d8"},{"url":"https://api.github.com/repos/jacquev6/PyGithub/labels/Requested+by+user","name":"Requested by user","color":"e10c02"}],"state":"closed","assignee":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"milestone":{"url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/31","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/31/labels","id":402388,"number":31,"title":"Version 1.19.0","description":"","creator":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"open_issues":1,"closed_issues":3,"state":"open","created_at":"2013-08-15T05:54:47Z","updated_at":"2013-09-06T09:11:57Z","due_on":null},"comments":2,"created_at":"2013-08-07T08:57:49Z","updated_at":"2013-09-06T09:11:57Z","closed_at":"2013-09-06T09:11:57Z","pull_request":{"html_url":null,"diff_url":null,"patch_url":null},"body":"Maybe I haven't found it, but it would be very useful to have methods for checking the status of the GitHub API (https://status.github.com/api)"}},"public":true,"created_at":"2013-09-06T09:11:58Z"},{"id":"1823413094","type":"IssueCommentEvent","actor":{"id":327146,"login":"jacquev6","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/188","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/188/labels{/name}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/188/comments","events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/188/events","html_url":"https://github.com/jacquev6/PyGithub/issues/188","id":17736533,"number":188,"title":"Getting the status of GitHub","user":{"login":"ruxandraburtica","id":797922,"avatar_url":"https://2.gravatar.com/avatar/5703c5907fc67b679be40fd307b07733?d=https%3A%2F%2Fidenticons.github.com%2F470a720db37e19afad67c34e30ffcd85.png","gravatar_id":"5703c5907fc67b679be40fd307b07733","url":"https://api.github.com/users/ruxandraburtica","html_url":"https://github.com/ruxandraburtica","followers_url":"https://api.github.com/users/ruxandraburtica/followers","following_url":"https://api.github.com/users/ruxandraburtica/following{/other_user}","gists_url":"https://api.github.com/users/ruxandraburtica/gists{/gist_id}","starred_url":"https://api.github.com/users/ruxandraburtica/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ruxandraburtica/subscriptions","organizations_url":"https://api.github.com/users/ruxandraburtica/orgs","repos_url":"https://api.github.com/users/ruxandraburtica/repos","events_url":"https://api.github.com/users/ruxandraburtica/events{/privacy}","received_events_url":"https://api.github.com/users/ruxandraburtica/received_events","type":"User"},"labels":[{"url":"https://api.github.com/repos/jacquev6/PyGithub/labels/Functionalities","name":"Functionalities","color":"e102d8"},{"url":"https://api.github.com/repos/jacquev6/PyGithub/labels/Requested+by+user","name":"Requested by user","color":"e10c02"}],"state":"closed","assignee":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"milestone":{"url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/31","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/31/labels","id":402388,"number":31,"title":"Version 1.19.0","description":"","creator":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"open_issues":1,"closed_issues":3,"state":"open","created_at":"2013-08-15T05:54:47Z","updated_at":"2013-09-06T09:11:57Z","due_on":null},"comments":2,"created_at":"2013-08-07T08:57:49Z","updated_at":"2013-09-06T09:11:57Z","closed_at":"2013-09-06T09:11:57Z","pull_request":{"html_url":null,"diff_url":null,"patch_url":null},"body":"Maybe I haven't found it, but it would be very useful to have methods for checking the status of the GitHub API (https://status.github.com/api)"},"comment":{"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/23927975","html_url":"https://github.com/jacquev6/PyGithub/issues/188#issuecomment-23927975","issue_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/188","id":23927975,"user":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"created_at":"2013-09-06T09:11:57Z","updated_at":"2013-09-06T09:11:57Z","body":"Done, will be in next release!"}},"public":true,"created_at":"2013-09-06T09:11:58Z"},{"id":"1823408513","type":"PushEvent","actor":{"id":327146,"login":"jacquev6","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"push_id":225103902,"size":5,"distinct_size":5,"ref":"refs/heads/develop","head":"a6597499c2f82e063074a3036d875417d5efa296","before":"1d0ba7ef6461ccdd25af74bfed61d3ceb5bc926d","commits":[{"sha":"dc610dfaac50dd5bbbd572986cda35f6729aee5b","author":{"email":"vincent@vincent-jacques.net","name":"Vincent Jacques"},"message":"Small fixes and todos","distinct":true,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/dc610dfaac50dd5bbbd572986cda35f6729aee5b"},{"sha":"2081675afbfed404f6a580bce0ec363bebbfd98b","author":{"email":"vincent@vincent-jacques.net","name":"Vincent Jacques"},"message":"Fix doc generation","distinct":true,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/2081675afbfed404f6a580bce0ec363bebbfd98b"},{"sha":"f2feb81dae1b28af80c559db7328f2d6fe017911","author":{"email":"vincent@vincent-jacques.net","name":"Vincent Jacques"},"message":"Add default parameters to greatly reduce code redoundancy","distinct":true,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/f2feb81dae1b28af80c559db7328f2d6fe017911"},{"sha":"c819580ce872f251e8ec23deee95d9fb15ca19c9","author":{"email":"vincent@vincent-jacques.net","name":"Vincent Jacques"},"message":"Get status of Github API (#188)","distinct":true,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/c819580ce872f251e8ec23deee95d9fb15ca19c9"},{"sha":"a6597499c2f82e063074a3036d875417d5efa296","author":{"email":"vincent@vincent-jacques.net","name":"Vincent Jacques"},"message":"Merge branch 'topic/ApiStatus' into develop","distinct":true,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/a6597499c2f82e063074a3036d875417d5efa296"}]},"public":true,"created_at":"2013-09-06T09:05:12Z"},{"id":"1823374294","type":"PullRequestEvent","actor":{"id":327146,"login":"jacquev6","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"action":"closed","number":193,"pull_request":{"url":"https://api.github.com/repos/jacquev6/PyGithub/pulls/193","id":7785326,"html_url":"https://github.com/jacquev6/PyGithub/pull/193","diff_url":"https://github.com/jacquev6/PyGithub/pull/193.diff","patch_url":"https://github.com/jacquev6/PyGithub/pull/193.patch","issue_url":"https://github.com/jacquev6/PyGithub/pull/193","number":193,"state":"closed","title":"Add Conditional Request and Data Persistence Support Alternative Solution","user":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"body":"An alternative solution to pull request #189 based on #192. I am making this new pull request for clarity.\r\nChange List\r\n---------------\r\n1. Add support to [Conditional Request](http://developer.github.com/guides/getting-started/#conditional-requests) API.\r\n * Add ```GithubObject.etag``` property\r\n * Add ```GithubObject.last_modified``` property\r\n * Modify ```Requester``` class to handle 304 response code\r\n * Modify ```Requester``` class to enable making conditional request\r\n * Add ```NotModifiedException``` class for 304 response code\r\n * Add ```GithubObject.update()``` method\r\n * Add a few private helper methods to make this work\r\n2. Add methods for Data Persistence\r\n * Add ```GithubObject.save(file_fname)``` method\r\n * Add ```GithubObject.load(file_fname)``` class method\r\n3. Test class for conditional request\r\n\r\nUsage\r\n---------------\r\n```python\r\n# Get remote issue list and cache locally when syncing\r\nfor issue in repo.get_issues():\r\n issue.save(local_file_path)\r\n\r\n# Offline use/Quick restore previous work state\r\nfor local_file_path in cache.get_files():\r\n cached_issue = issue.load(local_file_path)\r\n #do something with it\r\n\r\n# And check for update when needed\r\nif (cached_issue.update()):\r\n print \"Issue synced“\r\n\r\n```","created_at":"2013-08-22T10:14:26Z","updated_at":"2013-09-06T08:15:35Z","closed_at":"2013-09-06T08:15:35Z","merged_at":null,"merge_commit_sha":"de0e83166f4cc5d6cb177b12b313bb0844e89a12","assignee":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"milestone":{"url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/31","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/31/labels","id":402388,"number":31,"title":"Version 1.19.0","description":"","creator":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"open_issues":2,"closed_issues":2,"state":"open","created_at":"2013-08-15T05:54:47Z","updated_at":"2013-09-06T08:15:35Z","due_on":null},"commits_url":"https://github.com/jacquev6/PyGithub/pull/193/commits","review_comments_url":"https://github.com/jacquev6/PyGithub/pull/193/comments","review_comment_url":"/repos/jacquev6/PyGithub/pulls/comments/{number}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193/comments","head":{"label":"akfish:NewFix","ref":"NewFix","sha":"ebbfec86a2fb352cc08e3595a6b58fa1ccccc111","user":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"repo":{"id":12156762,"name":"PyGithub","full_name":"akfish/PyGithub","owner":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"private":false,"html_url":"https://github.com/akfish/PyGithub","description":"Python library implementing the full Github API v3 - AKFish Fork","fork":true,"url":"https://api.github.com/repos/akfish/PyGithub","forks_url":"https://api.github.com/repos/akfish/PyGithub/forks","keys_url":"https://api.github.com/repos/akfish/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/akfish/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/akfish/PyGithub/teams","hooks_url":"https://api.github.com/repos/akfish/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/akfish/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/akfish/PyGithub/events","assignees_url":"https://api.github.com/repos/akfish/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/akfish/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/akfish/PyGithub/tags","blobs_url":"https://api.github.com/repos/akfish/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/akfish/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/akfish/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/akfish/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/akfish/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/akfish/PyGithub/languages","stargazers_url":"https://api.github.com/repos/akfish/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/akfish/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/akfish/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/akfish/PyGithub/subscription","commits_url":"https://api.github.com/repos/akfish/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/akfish/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/akfish/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/akfish/PyGithub/issues/comments/{number}","contents_url":"https://api.github.com/repos/akfish/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/akfish/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/akfish/PyGithub/merges","archive_url":"https://api.github.com/repos/akfish/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/akfish/PyGithub/downloads","issues_url":"https://api.github.com/repos/akfish/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/akfish/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/akfish/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/akfish/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/akfish/PyGithub/labels{/name}","created_at":"2013-08-16T10:56:11Z","updated_at":"2013-09-06T08:15:35Z","pushed_at":"2013-08-27T11:14:27Z","git_url":"git://github.com/akfish/PyGithub.git","ssh_url":"git@github.com:akfish/PyGithub.git","clone_url":"https://github.com/akfish/PyGithub.git","svn_url":"https://github.com/akfish/PyGithub","homepage":"http://jacquev6.github.com/PyGithub","size":7340,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"forks_count":1,"mirror_url":null,"open_issues_count":0,"forks":1,"open_issues":0,"watchers":0,"master_branch":"master","default_branch":"master"}},"base":{"label":"jacquev6:develop","ref":"develop","sha":"ba5b0d5ea93d362ecd8b5a91701a9c62c385d008","user":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"repo":{"id":3544490,"name":"PyGithub","full_name":"jacquev6/PyGithub","owner":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"private":false,"html_url":"https://github.com/jacquev6/PyGithub","description":"Python library implementing the full Github API v3","fork":false,"url":"https://api.github.com/repos/jacquev6/PyGithub","forks_url":"https://api.github.com/repos/jacquev6/PyGithub/forks","keys_url":"https://api.github.com/repos/jacquev6/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jacquev6/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jacquev6/PyGithub/teams","hooks_url":"https://api.github.com/repos/jacquev6/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/jacquev6/PyGithub/events","assignees_url":"https://api.github.com/repos/jacquev6/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/jacquev6/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/jacquev6/PyGithub/tags","blobs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jacquev6/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jacquev6/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/jacquev6/PyGithub/languages","stargazers_url":"https://api.github.com/repos/jacquev6/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/jacquev6/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/jacquev6/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/jacquev6/PyGithub/subscription","commits_url":"https://api.github.com/repos/jacquev6/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/{number}","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/jacquev6/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jacquev6/PyGithub/merges","archive_url":"https://api.github.com/repos/jacquev6/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jacquev6/PyGithub/downloads","issues_url":"https://api.github.com/repos/jacquev6/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/jacquev6/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/jacquev6/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/labels{/name}","created_at":"2012-02-25T12:53:47Z","updated_at":"2013-09-06T08:12:07Z","pushed_at":"2013-09-06T08:12:06Z","git_url":"git://github.com/jacquev6/PyGithub.git","ssh_url":"git@github.com:jacquev6/PyGithub.git","clone_url":"https://github.com/jacquev6/PyGithub.git","svn_url":"https://github.com/jacquev6/PyGithub","homepage":"http://jacquev6.github.com/PyGithub","size":828,"watchers_count":256,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"forks_count":76,"mirror_url":null,"open_issues_count":16,"forks":76,"open_issues":16,"watchers":256,"master_branch":"master","default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/jacquev6/PyGithub/pulls/193"},"html":{"href":"https://github.com/jacquev6/PyGithub/pull/193"},"issue":{"href":"https://api.github.com/repos/jacquev6/PyGithub/issues/193"},"comments":{"href":"https://api.github.com/repos/jacquev6/PyGithub/issues/193/comments"},"review_comments":{"href":"https://api.github.com/repos/jacquev6/PyGithub/pulls/193/comments"}},"merged":false,"mergeable":false,"mergeable_state":"dirty","merged_by":null,"comments":12,"review_comments":1,"commits":40,"additions":1669,"deletions":45,"changed_files":41}},"public":true,"created_at":"2013-09-06T08:15:35Z"},{"id":"1823374292","type":"IssueCommentEvent","actor":{"id":327146,"login":"jacquev6","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193/labels{/name}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193/comments","events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193/events","html_url":"https://github.com/jacquev6/PyGithub/pull/193","id":18404629,"number":193,"title":"Add Conditional Request and Data Persistence Support Alternative Solution","user":{"login":"akfish","id":922715,"avatar_url":"https://0.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"labels":[],"state":"closed","assignee":{"login":"jacquev6","id":327146,"avatar_url":"https://1.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"milestone":{"url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/31","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/31/labels","id":402388,"number":31,"title":"Version 1.19.0","description":"","creator":{"login":"jacquev6","id":327146,"avatar_url":"https://1.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"open_issues":2,"closed_issues":2,"state":"open","created_at":"2013-08-15T05:54:47Z","updated_at":"2013-09-06T08:15:35Z","due_on":null},"comments":12,"created_at":"2013-08-22T10:14:26Z","updated_at":"2013-09-06T08:15:35Z","closed_at":"2013-09-06T08:15:35Z","pull_request":{"html_url":"https://github.com/jacquev6/PyGithub/pull/193","diff_url":"https://github.com/jacquev6/PyGithub/pull/193.diff","patch_url":"https://github.com/jacquev6/PyGithub/pull/193.patch"},"body":"An alternative solution to pull request #189 based on #192. I am making this new pull request for clarity.\r\nChange List\r\n---------------\r\n1. Add support to [Conditional Request](http://developer.github.com/guides/getting-started/#conditional-requests) API.\r\n * Add ```GithubObject.etag``` property\r\n * Add ```GithubObject.last_modified``` property\r\n * Modify ```Requester``` class to handle 304 response code\r\n * Modify ```Requester``` class to enable making conditional request\r\n * Add ```NotModifiedException``` class for 304 response code\r\n * Add ```GithubObject.update()``` method\r\n * Add a few private helper methods to make this work\r\n2. Add methods for Data Persistence\r\n * Add ```GithubObject.save(file_fname)``` method\r\n * Add ```GithubObject.load(file_fname)``` class method\r\n3. Test class for conditional request\r\n\r\nUsage\r\n---------------\r\n```python\r\n# Get remote issue list and cache locally when syncing\r\nfor issue in repo.get_issues():\r\n issue.save(local_file_path)\r\n\r\n# Offline use/Quick restore previous work state\r\nfor local_file_path in cache.get_files():\r\n cached_issue = issue.load(local_file_path)\r\n #do something with it\r\n\r\n# And check for update when needed\r\nif (cached_issue.update()):\r\n print \"Issue synced“\r\n\r\n```"},"comment":{"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/23925438","html_url":"https://github.com/jacquev6/PyGithub/pull/193#issuecomment-23925438","issue_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193","id":23925438,"user":{"login":"jacquev6","id":327146,"avatar_url":"https://1.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"created_at":"2013-09-06T08:15:35Z","updated_at":"2013-09-06T08:15:35Z","body":"I'm glad it suits your needs, I've just merged conditional requests and persistence in the `develop` branch. It will be in next release, probably this week-end.\r\n\r\nIt has been a pleasure to collaborate with you, thank you :-)"}},"public":true,"created_at":"2013-09-06T08:15:35Z"},{"id":"1823372143","type":"DeleteEvent","actor":{"id":327146,"login":"jacquev6","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"ref":"topic/ConditionalRequest","ref_type":"branch"},"public":true,"created_at":"2013-09-06T08:12:07Z"},{"id":"1823371399","type":"PushEvent","actor":{"id":327146,"login":"jacquev6","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"push_id":225082808,"size":28,"distinct_size":4,"ref":"refs/heads/develop","head":"1d0ba7ef6461ccdd25af74bfed61d3ceb5bc926d","before":"ba5b0d5ea93d362ecd8b5a91701a9c62c385d008","commits":[{"sha":"b71329e560795a4df84cb419178ef660824f4c0d","author":{"email":"akfish@gmail.com","name":"AKFish"},"message":"Implement data persistence","distinct":false,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/b71329e560795a4df84cb419178ef660824f4c0d"},{"sha":"bd7abb58772ae1a61fd7eb44308a3a2f60432ad6","author":{"email":"akfish@gmail.com","name":"AKFish"},"message":"Add update() method","distinct":false,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/bd7abb58772ae1a61fd7eb44308a3a2f60432ad6"},{"sha":"1e9ec2df089973db73aaf99b4ef147efd4614e7c","author":{"email":"akfish@gmail.com","name":"AKFish"},"message":"Add NotModifiedException class","distinct":false,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1e9ec2df089973db73aaf99b4ef147efd4614e7c"},{"sha":"6fd05baf6bea732dd846e08c40891c28060e7c64","author":{"email":"akfish@gmail.com","name":"AKFish"},"message":"Handle response code 304","distinct":false,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/6fd05baf6bea732dd846e08c40891c28060e7c64"},{"sha":"5b09f6c82191601cad92076ad4761fe927c511ed","author":{"email":"akfish@gmail.com","name":"AKFish"},"message":"Implement conditional request","distinct":false,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/5b09f6c82191601cad92076ad4761fe927c511ed"},{"sha":"70a7e9c83dec2bf6b549dc5c77d30b53afb32457","author":{"email":"akfish@gmail.com","name":"AKFish"},"message":"Fix update","distinct":false,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/70a7e9c83dec2bf6b549dc5c77d30b53afb32457"},{"sha":"d457afd23ccb47d9f30f09a6ca2a8e32f17dccc7","author":{"email":"akfish@gmail.com","name":"AKFish"},"message":"Add test record helper","distinct":false,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/d457afd23ccb47d9f30f09a6ca2a8e32f17dccc7"},{"sha":"c7593e84c4a92a044b717b7311c2b6ad8d9a5917","author":{"email":"akfish@gmail.com","name":"AKFish"},"message":"Add test case for conditional request","distinct":false,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/c7593e84c4a92a044b717b7311c2b6ad8d9a5917"},{"sha":"cc1bcd5f2da1982a0836a488cf321d363bfcf5b5","author":{"email":"vincent@vincent-jacques.net","name":"Vincent Jacques"},"message":"Merge branch 'develop' into topic/ConditionalRequest\n\nConflicts:\n\t.gitignore\n\tgithub/Requester.py","distinct":false,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/cc1bcd5f2da1982a0836a488cf321d363bfcf5b5"},{"sha":"1787765a61958617d47e764a0bea2acd70c84f72","author":{"email":"vincent@vincent-jacques.net","name":"Vincent Jacques"},"message":"Review of #189: use dict.get\n\nhttp://docs.python.org/2/library/stdtypes.html#dict.get","distinct":false,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/1787765a61958617d47e764a0bea2acd70c84f72"},{"sha":"0f74e4389b3c0fa57a83083ecfbbf5c331022674","author":{"email":"vincent@vincent-jacques.net","name":"Vincent Jacques"},"message":"Review of #189: pep8, copyrights, style, remarks\n\nFor remarks, run: git grep \"#189\"\nThey are only my first thoughts while reviewing this pull request,\nand should be reviewed themselves.","distinct":false,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/0f74e4389b3c0fa57a83083ecfbbf5c331022674"},{"sha":"fb7325884ee0b8ae73f47bf13c6f36cacbc3131c","author":{"email":"vincent@vincent-jacques.net","name":"Vincent Jacques"},"message":"Fix remarks on #189 to #193","distinct":false,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/fb7325884ee0b8ae73f47bf13c6f36cacbc3131c"},{"sha":"0413c87c12e688fb4fc38d978a2f275ef791cd48","author":{"email":"vincent@vincent-jacques.net","name":"Vincent Jacques"},"message":"Remove _record_.py (#193)\n\nAccording to https://github.com/jacquev6/PyGithub/commit/0f74e4389b3c0fa57a83083ecfbbf5c331022674#commitcomment-3919786","distinct":false,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/0413c87c12e688fb4fc38d978a2f275ef791cd48"},{"sha":"bc3b819ac554a2132427c9ffe629ef371511213e","author":{"email":"vincent@vincent-jacques.net","name":"Vincent Jacques"},"message":"Separate tests for conditional requests (#193)","distinct":false,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/bc3b819ac554a2132427c9ffe629ef371511213e"},{"sha":"bae0a37d180a4b224c6aa808d03722908109c57d","author":{"email":"vincent@vincent-jacques.net","name":"Vincent Jacques"},"message":"#193: Don't use a try-except for a usual execution flow in GithubObject.update\n\n(and factorize assignment of headers in _storeAndUseAttributes,\nas done for rawData)","distinct":false,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/bae0a37d180a4b224c6aa808d03722908109c57d"},{"sha":"03d7fb012e9d032165c43f93a4c67bc29af9366f","author":{"email":"vincent@vincent-jacques.net","name":"Vincent Jacques"},"message":"#193: Add remarks","distinct":false,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/03d7fb012e9d032165c43f93a4c67bc29af9366f"},{"sha":"64cf539c83174f95b3410c7decd2549424385ce1","author":{"email":"vincent@vincent-jacques.net","name":"Vincent Jacques"},"message":"#193: Add a param to Requester.requestXxx for request headers","distinct":false,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/64cf539c83174f95b3410c7decd2549424385ce1"},{"sha":"e084b5138106d4ad371a69ca9519862f09c855ae","author":{"email":"vincent@vincent-jacques.net","name":"Vincent Jacques"},"message":"#193: Fix test coverage","distinct":false,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/e084b5138106d4ad371a69ca9519862f09c855ae"},{"sha":"020a3c9917f42d98c1761527825061d2db8352fd","author":{"email":"vincent@vincent-jacques.net","name":"Vincent Jacques"},"message":"Move method update to CompletableGithubObject","distinct":false,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/020a3c9917f42d98c1761527825061d2db8352fd"},{"sha":"fb6980ce36766e4dd1ab03b48ac4b5adf876dc84","author":{"email":"vincent@vincent-jacques.net","name":"Vincent Jacques"},"message":"Move the DEBUG_ON_RESPONSE call to Requester.__requestEncode","distinct":false,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/fb6980ce36766e4dd1ab03b48ac4b5adf876dc84"}]},"public":true,"created_at":"2013-09-06T08:10:53Z"},{"id":"1823216085","type":"IssueCommentEvent","actor":{"id":922715,"login":"akfish","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","avatar_url":"https://0.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193/labels{/name}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193/comments","events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193/events","html_url":"https://github.com/jacquev6/PyGithub/pull/193","id":18404629,"number":193,"title":"Add Conditional Request and Data Persistence Support Alternative Solution","user":{"login":"akfish","id":922715,"avatar_url":"https://1.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"labels":[],"state":"open","assignee":{"login":"jacquev6","id":327146,"avatar_url":"https://1.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"milestone":{"url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/31","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/31/labels","id":402388,"number":31,"title":"Version 1.19.0","description":"","creator":{"login":"jacquev6","id":327146,"avatar_url":"https://1.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"open_issues":3,"closed_issues":1,"state":"open","created_at":"2013-08-15T05:54:47Z","updated_at":"2013-09-04T13:41:07Z","due_on":null},"comments":11,"created_at":"2013-08-22T10:14:26Z","updated_at":"2013-09-06T02:24:06Z","closed_at":null,"pull_request":{"html_url":"https://github.com/jacquev6/PyGithub/pull/193","diff_url":"https://github.com/jacquev6/PyGithub/pull/193.diff","patch_url":"https://github.com/jacquev6/PyGithub/pull/193.patch"},"body":"An alternative solution to pull request #189 based on #192. I am making this new pull request for clarity.\r\nChange List\r\n---------------\r\n1. Add support to [Conditional Request](http://developer.github.com/guides/getting-started/#conditional-requests) API.\r\n * Add ```GithubObject.etag``` property\r\n * Add ```GithubObject.last_modified``` property\r\n * Modify ```Requester``` class to handle 304 response code\r\n * Modify ```Requester``` class to enable making conditional request\r\n * Add ```NotModifiedException``` class for 304 response code\r\n * Add ```GithubObject.update()``` method\r\n * Add a few private helper methods to make this work\r\n2. Add methods for Data Persistence\r\n * Add ```GithubObject.save(file_fname)``` method\r\n * Add ```GithubObject.load(file_fname)``` class method\r\n3. Test class for conditional request\r\n\r\nUsage\r\n---------------\r\n```python\r\n# Get remote issue list and cache locally when syncing\r\nfor issue in repo.get_issues():\r\n issue.save(local_file_path)\r\n\r\n# Offline use/Quick restore previous work state\r\nfor local_file_path in cache.get_files():\r\n cached_issue = issue.load(local_file_path)\r\n #do something with it\r\n\r\n# And check for update when needed\r\nif (cached_issue.update()):\r\n print \"Issue synced“\r\n\r\n```"},"comment":{"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/23915193","html_url":"https://github.com/jacquev6/PyGithub/pull/193#issuecomment-23915193","issue_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193","id":23915193,"user":{"login":"akfish","id":922715,"avatar_url":"https://1.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"created_at":"2013-09-06T02:24:06Z","updated_at":"2013-09-06T02:24:06Z","body":"Well, never mind my previous comments. I think your implementation will work nicely.\r\nThough the pickle format cross-version compatibility still troubles me. I will try it out with some projects and see if a more flexible serialization mechanism (i.e. let developer specify which serializer to use, pickle, JSON, XML and etc) is necessary. \r\nFor now I am happy with that. Thanks."}},"public":true,"created_at":"2013-09-06T02:24:07Z"},{"id":"1823212876","type":"ForkEvent","actor":{"id":1676891,"login":"wadewilliams","gravatar_id":"21a241aa10ee457a5f6b72aca98a4860","url":"https://api.github.com/users/wadewilliams","avatar_url":"https://1.gravatar.com/avatar/21a241aa10ee457a5f6b72aca98a4860?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"forkee":{"id":12633886,"name":"PyGithub","full_name":"wadewilliams/PyGithub","owner":{"login":"wadewilliams","id":1676891,"avatar_url":"https://0.gravatar.com/avatar/21a241aa10ee457a5f6b72aca98a4860?d=https%3A%2F%2Fidenticons.github.com%2F49f04213eb6f9bbf8e6ec031c55c4e31.png","gravatar_id":"21a241aa10ee457a5f6b72aca98a4860","url":"https://api.github.com/users/wadewilliams","html_url":"https://github.com/wadewilliams","followers_url":"https://api.github.com/users/wadewilliams/followers","following_url":"https://api.github.com/users/wadewilliams/following{/other_user}","gists_url":"https://api.github.com/users/wadewilliams/gists{/gist_id}","starred_url":"https://api.github.com/users/wadewilliams/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wadewilliams/subscriptions","organizations_url":"https://api.github.com/users/wadewilliams/orgs","repos_url":"https://api.github.com/users/wadewilliams/repos","events_url":"https://api.github.com/users/wadewilliams/events{/privacy}","received_events_url":"https://api.github.com/users/wadewilliams/received_events","type":"User"},"private":false,"html_url":"https://github.com/wadewilliams/PyGithub","description":"Python library implementing the full Github API v3","fork":true,"url":"https://api.github.com/repos/wadewilliams/PyGithub","forks_url":"https://api.github.com/repos/wadewilliams/PyGithub/forks","keys_url":"https://api.github.com/repos/wadewilliams/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wadewilliams/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wadewilliams/PyGithub/teams","hooks_url":"https://api.github.com/repos/wadewilliams/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/wadewilliams/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/wadewilliams/PyGithub/events","assignees_url":"https://api.github.com/repos/wadewilliams/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/wadewilliams/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/wadewilliams/PyGithub/tags","blobs_url":"https://api.github.com/repos/wadewilliams/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wadewilliams/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wadewilliams/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/wadewilliams/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wadewilliams/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/wadewilliams/PyGithub/languages","stargazers_url":"https://api.github.com/repos/wadewilliams/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/wadewilliams/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/wadewilliams/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/wadewilliams/PyGithub/subscription","commits_url":"https://api.github.com/repos/wadewilliams/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/wadewilliams/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/wadewilliams/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/wadewilliams/PyGithub/issues/comments/{number}","contents_url":"https://api.github.com/repos/wadewilliams/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/wadewilliams/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wadewilliams/PyGithub/merges","archive_url":"https://api.github.com/repos/wadewilliams/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wadewilliams/PyGithub/downloads","issues_url":"https://api.github.com/repos/wadewilliams/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/wadewilliams/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/wadewilliams/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/wadewilliams/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wadewilliams/PyGithub/labels{/name}","created_at":"2013-09-06T02:17:04Z","updated_at":"2013-09-06T02:17:04Z","pushed_at":"2013-09-05T15:53:48Z","git_url":"git://github.com/wadewilliams/PyGithub.git","ssh_url":"git@github.com:wadewilliams/PyGithub.git","clone_url":"https://github.com/wadewilliams/PyGithub.git","svn_url":"https://github.com/wadewilliams/PyGithub","homepage":"http://jacquev6.github.com/PyGithub","size":824,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"master_branch":"master","default_branch":"master","public":true}},"public":true,"created_at":"2013-09-06T02:17:05Z"},{"id":"1822756531","type":"IssueCommentEvent","actor":{"id":922715,"login":"akfish","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","avatar_url":"https://0.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193/labels{/name}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193/comments","events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193/events","html_url":"https://github.com/jacquev6/PyGithub/issues/193","id":18404629,"number":193,"title":"Add Conditional Request and Data Persistence Support Alternative Solution","user":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"labels":[],"state":"open","assignee":{"login":"jacquev6","id":327146,"avatar_url":"https://2.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"milestone":{"url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/31","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/31/labels","id":402388,"number":31,"title":"Version 1.19.0","description":"","creator":{"login":"jacquev6","id":327146,"avatar_url":"https://2.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"open_issues":3,"closed_issues":1,"state":"open","created_at":"2013-08-15T05:54:47Z","updated_at":"2013-09-04T13:41:07Z","due_on":null},"comments":10,"created_at":"2013-08-22T10:14:26Z","updated_at":"2013-09-05T17:00:40Z","closed_at":null,"pull_request":{"html_url":"https://github.com/jacquev6/PyGithub/pull/193","diff_url":"https://github.com/jacquev6/PyGithub/pull/193.diff","patch_url":"https://github.com/jacquev6/PyGithub/pull/193.patch"},"body":"An alternative solution to pull request #189 based on #192. I am making this new pull request for clarity.\r\nChange List\r\n---------------\r\n1. Add support to [Conditional Request](http://developer.github.com/guides/getting-started/#conditional-requests) API.\r\n * Add ```GithubObject.etag``` property\r\n * Add ```GithubObject.last_modified``` property\r\n * Modify ```Requester``` class to handle 304 response code\r\n * Modify ```Requester``` class to enable making conditional request\r\n * Add ```NotModifiedException``` class for 304 response code\r\n * Add ```GithubObject.update()``` method\r\n * Add a few private helper methods to make this work\r\n2. Add methods for Data Persistence\r\n * Add ```GithubObject.save(file_fname)``` method\r\n * Add ```GithubObject.load(file_fname)``` class method\r\n3. Test class for conditional request\r\n\r\nUsage\r\n---------------\r\n```python\r\n# Get remote issue list and cache locally when syncing\r\nfor issue in repo.get_issues():\r\n issue.save(local_file_path)\r\n\r\n# Offline use/Quick restore previous work state\r\nfor local_file_path in cache.get_files():\r\n cached_issue = issue.load(local_file_path)\r\n #do something with it\r\n\r\n# And check for update when needed\r\nif (cached_issue.update()):\r\n print \"Issue synced“\r\n\r\n```"},"comment":{"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/23883975","html_url":"https://github.com/jacquev6/PyGithub/issues/193#issuecomment-23883975","issue_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193","id":23883975,"user":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"created_at":"2013-09-05T17:00:40Z","updated_at":"2013-09-05T17:00:40Z","body":"After some quick scanning of the code, recursively reviving will likely not be an issue. We can just invoke ```_useAttributes``` somehow after ```requester``` is set. That should (re)initialize children with correct info. "}},"public":true,"created_at":"2013-09-05T17:00:41Z"},{"id":"1822742910","type":"IssueCommentEvent","actor":{"id":922715,"login":"akfish","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","avatar_url":"https://0.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193/labels{/name}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193/comments","events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193/events","html_url":"https://github.com/jacquev6/PyGithub/issues/193","id":18404629,"number":193,"title":"Add Conditional Request and Data Persistence Support Alternative Solution","user":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"labels":[],"state":"open","assignee":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"milestone":{"url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/31","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/31/labels","id":402388,"number":31,"title":"Version 1.19.0","description":"","creator":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"open_issues":3,"closed_issues":1,"state":"open","created_at":"2013-08-15T05:54:47Z","updated_at":"2013-09-04T13:41:07Z","due_on":null},"comments":9,"created_at":"2013-08-22T10:14:26Z","updated_at":"2013-09-05T16:47:24Z","closed_at":null,"pull_request":{"html_url":"https://github.com/jacquev6/PyGithub/pull/193","diff_url":"https://github.com/jacquev6/PyGithub/pull/193.diff","patch_url":"https://github.com/jacquev6/PyGithub/pull/193.patch"},"body":"An alternative solution to pull request #189 based on #192. I am making this new pull request for clarity.\r\nChange List\r\n---------------\r\n1. Add support to [Conditional Request](http://developer.github.com/guides/getting-started/#conditional-requests) API.\r\n * Add ```GithubObject.etag``` property\r\n * Add ```GithubObject.last_modified``` property\r\n * Modify ```Requester``` class to handle 304 response code\r\n * Modify ```Requester``` class to enable making conditional request\r\n * Add ```NotModifiedException``` class for 304 response code\r\n * Add ```GithubObject.update()``` method\r\n * Add a few private helper methods to make this work\r\n2. Add methods for Data Persistence\r\n * Add ```GithubObject.save(file_fname)``` method\r\n * Add ```GithubObject.load(file_fname)``` class method\r\n3. Test class for conditional request\r\n\r\nUsage\r\n---------------\r\n```python\r\n# Get remote issue list and cache locally when syncing\r\nfor issue in repo.get_issues():\r\n issue.save(local_file_path)\r\n\r\n# Offline use/Quick restore previous work state\r\nfor local_file_path in cache.get_files():\r\n cached_issue = issue.load(local_file_path)\r\n #do something with it\r\n\r\n# And check for update when needed\r\nif (cached_issue.update()):\r\n print \"Issue synced“\r\n\r\n```"},"comment":{"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/23882993","html_url":"https://github.com/jacquev6/PyGithub/issues/193#issuecomment-23882993","issue_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193","id":23882993,"user":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"created_at":"2013-09-05T16:47:24Z","updated_at":"2013-09-05T16:47:24Z","body":"OK. I will take a look at it in detail tomorrow. Just some quick thoughts:\r\n* It's my oversight that ```__setstate__``` does not implement all ```__init__``` behaviors. That can be easily fixed, since all ```Github.create_from_raw_data``` does is to invoke the constructor. \r\n* I will check on the recursively revive thing. It might be possible to simply introduce a bool flag for status checking and do it lazily when required. And if I understand it correctly, ```Github.create_from_raw_data``` will have the very same issue.\r\n* An alternative for revive is customize the getter for ```self._requester``` that fetches ```requester``` from current ```Github``` instance. Do this in base class, it should then automatically solve every thing, children or not. No \"dead\" objects will exist since they will all be lazily alive.\r\n\r\nSo I think bottom line is to make all the objects serializable and serialize-safe by keep ```__getstate___``` and ```__setstate__```, as long as we can get the initialization right (as ```Github.create_from_raw_data``` does). \r\nAs for the serialization, I am not a big fan on current implementation since I discovery the 2.x and 3.x pickle formats are not compatible. Well, maybe just keep it as an open option and let developers choose whatever methods they want."}},"public":true,"created_at":"2013-09-05T16:47:24Z"},{"id":"1822685130","type":"PushEvent","actor":{"id":327146,"login":"jacquev6","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"push_id":224708516,"size":1,"distinct_size":1,"ref":"refs/heads/topic/ConditionalRequest","head":"6cb149dce41cf1f110ae1f1d6a5c6bdd66790b69","before":"c412d49c9fd28406156dff664a1f848da1e95d0b","commits":[{"sha":"6cb149dce41cf1f110ae1f1d6a5c6bdd66790b69","author":{"email":"vincent@vincent-jacques.net","name":"Vincent Jacques"},"message":"Adapt to Python 2.5 (again:))","distinct":true,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/6cb149dce41cf1f110ae1f1d6a5c6bdd66790b69"}]},"public":true,"created_at":"2013-09-05T15:53:49Z"},{"id":"1822682093","type":"PushEvent","actor":{"id":327146,"login":"jacquev6","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"push_id":224706869,"size":1,"distinct_size":1,"ref":"refs/heads/topic/ConditionalRequest","head":"c412d49c9fd28406156dff664a1f848da1e95d0b","before":"3fe9edf08707d2c289d4e6a05f7521751cf9f8e4","commits":[{"sha":"c412d49c9fd28406156dff664a1f848da1e95d0b","author":{"email":"vincent@vincent-jacques.net","name":"Vincent Jacques"},"message":"Adapt to Python 2.5","distinct":true,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/c412d49c9fd28406156dff664a1f848da1e95d0b"}]},"public":true,"created_at":"2013-09-05T15:51:13Z"},{"id":"1822678337","type":"IssueCommentEvent","actor":{"id":327146,"login":"jacquev6","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193/labels{/name}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193/comments","events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193/events","html_url":"https://github.com/jacquev6/PyGithub/issues/193","id":18404629,"number":193,"title":"Add Conditional Request and Data Persistence Support Alternative Solution","user":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"labels":[],"state":"open","assignee":{"login":"jacquev6","id":327146,"avatar_url":"https://2.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"milestone":{"url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/31","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/31/labels","id":402388,"number":31,"title":"Version 1.19.0","description":"","creator":{"login":"jacquev6","id":327146,"avatar_url":"https://2.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"open_issues":3,"closed_issues":1,"state":"open","created_at":"2013-08-15T05:54:47Z","updated_at":"2013-09-04T13:41:07Z","due_on":null},"comments":8,"created_at":"2013-08-22T10:14:26Z","updated_at":"2013-09-05T15:47:44Z","closed_at":null,"pull_request":{"html_url":"https://github.com/jacquev6/PyGithub/pull/193","diff_url":"https://github.com/jacquev6/PyGithub/pull/193.diff","patch_url":"https://github.com/jacquev6/PyGithub/pull/193.patch"},"body":"An alternative solution to pull request #189 based on #192. I am making this new pull request for clarity.\r\nChange List\r\n---------------\r\n1. Add support to [Conditional Request](http://developer.github.com/guides/getting-started/#conditional-requests) API.\r\n * Add ```GithubObject.etag``` property\r\n * Add ```GithubObject.last_modified``` property\r\n * Modify ```Requester``` class to handle 304 response code\r\n * Modify ```Requester``` class to enable making conditional request\r\n * Add ```NotModifiedException``` class for 304 response code\r\n * Add ```GithubObject.update()``` method\r\n * Add a few private helper methods to make this work\r\n2. Add methods for Data Persistence\r\n * Add ```GithubObject.save(file_fname)``` method\r\n * Add ```GithubObject.load(file_fname)``` class method\r\n3. Test class for conditional request\r\n\r\nUsage\r\n---------------\r\n```python\r\n# Get remote issue list and cache locally when syncing\r\nfor issue in repo.get_issues():\r\n issue.save(local_file_path)\r\n\r\n# Offline use/Quick restore previous work state\r\nfor local_file_path in cache.get_files():\r\n cached_issue = issue.load(local_file_path)\r\n #do something with it\r\n\r\n# And check for update when needed\r\nif (cached_issue.update()):\r\n print \"Issue synced“\r\n\r\n```"},"comment":{"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/23877842","html_url":"https://github.com/jacquev6/PyGithub/issues/193#issuecomment-23877842","issue_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193","id":23877842,"user":{"login":"jacquev6","id":327146,"avatar_url":"https://2.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"created_at":"2013-09-05T15:47:44Z","updated_at":"2013-09-05T15:47:44Z","body":"I think I will merge my branch topic/ConditionalRequest (ending at commit 3fe9edf) in next release.\r\n\r\nI may have missed an advantage of your approach of serialization. If so, please tell me, we can continue to discuss it to get the best of both approaches.\r\n\r\nThank you again for your collaboration!"}},"public":true,"created_at":"2013-09-05T15:47:45Z"},{"id":"1822670928","type":"PullRequestReviewCommentEvent","actor":{"id":327146,"login":"jacquev6","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"comment":{"url":"https://api.github.com/repos/jacquev6/PyGithub/pulls/comments/6184908","id":6184908,"body":"A few comments on this approach:\r\n\r\n* we can't use the unpickled object in any way, because it has no public attributes, only `raw_data` and `_headers`. We must somehow call `_storeAndUseAttributes` in `__setstate__`\r\n* Creating \"dead\" objects looks like a very dangerous thing. They are not very useful, and quite error-prone (no method can be called on them). Reviving an object after creation is complicated, because its children should be revived too (recursively) (to be able to do things like `repo=g.load(saved_repo); repo.owner.get_followers()[0].login`)\r\n* Having several load and save methods (on `GithubObject`, `Github`) is error-prone.\r\n\r\nPlease see commit 3fe9edf for an implementation of my proposal.","diff_hunk":"@@ -96,6 +100,78 @@ def _parseDatetime(s):\n else:\n return datetime.datetime.strptime(s, \"%Y-%m-%dT%H:%M:%SZ\")\n \n+ # #193: I temporarily comment out those two methods\n+ # We need to address the following:\n+ # - The interface should use file-like objects (not file names)\n+ # - it's more \"pythonic\"\n+ # - it allows user to save several objects in the same physical file\n+ # - it's easier to unit-test because we can inject in-memory file-like objects\n+ # - We should not save identification information\n+ # - We should not re-create several instances of Requester when loading objects\n+ # - This would lead to very surprising behaviors, when changing Github.per_page or anything impacting this central part of PyGithub\n+ # - It should be possible to restore a saved object without knowing its previous type\n+ # - The \"load\" method should not make the user think she must know this previous type\n+ # - In particular, it shouldn't be a classmethod of GithubObject\n+ # - They should be covered by unit tests\n+ #\n+ # My proposal, to be experimented and discussed:\n+ # - in \"save\", pickle a tuple containing the class of the object, its rawData and its headers\n+ # - make \"load\" a method of class Github\n+ # - it will unpickle everything and call Github.create_from_raw_data\n+ # - I would even make \"save\" a method of Github, to keep it symetric with \"load\"\n+ #\n+ # Using __get_state__ would not be enought because we wouldn't have access\n+ # to the Requester instance in __set_state__.\n+\n+ def __getstate__(self):","path":"github/GithubObject.py","position":70,"original_position":70,"commit_id":"ebbfec86a2fb352cc08e3595a6b58fa1ccccc111","original_commit_id":"ebbfec86a2fb352cc08e3595a6b58fa1ccccc111","user":{"login":"jacquev6","id":327146,"avatar_url":"https://2.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"created_at":"2013-09-05T15:41:19Z","updated_at":"2013-09-05T15:41:19Z","html_url":"https://github.com/jacquev6/PyGithub/pull/193#discussion_r6184908","pull_request_url":"https://api.github.com/repos/jacquev6/PyGithub/pulls/193","_links":{"self":{"href":"https://api.github.com/repos/jacquev6/PyGithub/pulls/comments/6184908"},"html":{"href":"https://github.com/jacquev6/PyGithub/pull/193#discussion_r6184908"},"pull_request":{"href":"https://api.github.com/repos/jacquev6/PyGithub/pulls/193"}}}},"public":true,"created_at":"2013-09-05T15:41:19Z"},{"id":"1822668222","type":"PushEvent","actor":{"id":327146,"login":"jacquev6","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"push_id":224699122,"size":1,"distinct_size":1,"ref":"refs/heads/topic/ConditionalRequest","head":"3fe9edf08707d2c289d4e6a05f7521751cf9f8e4","before":"38b137fb37c0fdc74f8802a4184518e105db9121","commits":[{"sha":"3fe9edf08707d2c289d4e6a05f7521751cf9f8e4","author":{"email":"vincent@vincent-jacques.net","name":"Vincent Jacques"},"message":"Implement object persistence\n\nThis follows my proposal for #193.\nLargely inspired by AKFish's work.","distinct":true,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/3fe9edf08707d2c289d4e6a05f7521751cf9f8e4"}]},"public":true,"created_at":"2013-09-05T15:38:57Z"},{"id":"1822025629","type":"ForkEvent","actor":{"id":813448,"login":"SergioJorge","gravatar_id":"5949c2b4dec0f01c221015a21db10537","url":"https://api.github.com/users/SergioJorge","avatar_url":"https://2.gravatar.com/avatar/5949c2b4dec0f01c221015a21db10537?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"forkee":{"id":12604651,"name":"PyGithub","full_name":"SergioJorge/PyGithub","owner":{"login":"SergioJorge","id":813448,"avatar_url":"https://2.gravatar.com/avatar/5949c2b4dec0f01c221015a21db10537?d=https%3A%2F%2Fidenticons.github.com%2F345b07c0913e6d201a63ba7910b13a10.png","gravatar_id":"5949c2b4dec0f01c221015a21db10537","url":"https://api.github.com/users/SergioJorge","html_url":"https://github.com/SergioJorge","followers_url":"https://api.github.com/users/SergioJorge/followers","following_url":"https://api.github.com/users/SergioJorge/following{/other_user}","gists_url":"https://api.github.com/users/SergioJorge/gists{/gist_id}","starred_url":"https://api.github.com/users/SergioJorge/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SergioJorge/subscriptions","organizations_url":"https://api.github.com/users/SergioJorge/orgs","repos_url":"https://api.github.com/users/SergioJorge/repos","events_url":"https://api.github.com/users/SergioJorge/events{/privacy}","received_events_url":"https://api.github.com/users/SergioJorge/received_events","type":"User"},"private":false,"html_url":"https://github.com/SergioJorge/PyGithub","description":"Python library implementing the full Github API v3","fork":true,"url":"https://api.github.com/repos/SergioJorge/PyGithub","forks_url":"https://api.github.com/repos/SergioJorge/PyGithub/forks","keys_url":"https://api.github.com/repos/SergioJorge/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/SergioJorge/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/SergioJorge/PyGithub/teams","hooks_url":"https://api.github.com/repos/SergioJorge/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/SergioJorge/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/SergioJorge/PyGithub/events","assignees_url":"https://api.github.com/repos/SergioJorge/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/SergioJorge/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/SergioJorge/PyGithub/tags","blobs_url":"https://api.github.com/repos/SergioJorge/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/SergioJorge/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/SergioJorge/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/SergioJorge/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/SergioJorge/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/SergioJorge/PyGithub/languages","stargazers_url":"https://api.github.com/repos/SergioJorge/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/SergioJorge/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/SergioJorge/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/SergioJorge/PyGithub/subscription","commits_url":"https://api.github.com/repos/SergioJorge/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/SergioJorge/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/SergioJorge/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/SergioJorge/PyGithub/issues/comments/{number}","contents_url":"https://api.github.com/repos/SergioJorge/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/SergioJorge/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/SergioJorge/PyGithub/merges","archive_url":"https://api.github.com/repos/SergioJorge/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/SergioJorge/PyGithub/downloads","issues_url":"https://api.github.com/repos/SergioJorge/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/SergioJorge/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/SergioJorge/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/SergioJorge/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/SergioJorge/PyGithub/labels{/name}","created_at":"2013-09-04T23:40:46Z","updated_at":"2013-09-04T23:40:46Z","pushed_at":"2013-09-04T19:49:59Z","git_url":"git://github.com/SergioJorge/PyGithub.git","ssh_url":"git@github.com:SergioJorge/PyGithub.git","clone_url":"https://github.com/SergioJorge/PyGithub.git","svn_url":"https://github.com/SergioJorge/PyGithub","homepage":"http://jacquev6.github.com/PyGithub","size":820,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"master_branch":"master","default_branch":"master","public":true}},"public":true,"created_at":"2013-09-04T23:40:46Z"},{"id":"1822025563","type":"WatchEvent","actor":{"id":813448,"login":"SergioJorge","gravatar_id":"5949c2b4dec0f01c221015a21db10537","url":"https://api.github.com/users/SergioJorge","avatar_url":"https://2.gravatar.com/avatar/5949c2b4dec0f01c221015a21db10537?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"action":"started"},"public":true,"created_at":"2013-09-04T23:40:42Z"},{"id":"1821810477","type":"PushEvent","actor":{"id":327146,"login":"jacquev6","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"push_id":224224755,"size":1,"distinct_size":1,"ref":"refs/heads/topic/ConditionalRequest","head":"38b137fb37c0fdc74f8802a4184518e105db9121","before":"fb6980ce36766e4dd1ab03b48ac4b5adf876dc84","commits":[{"sha":"38b137fb37c0fdc74f8802a4184518e105db9121","author":{"email":"akfish@gmail.com","name":"AKFish"},"message":"Fix line ending","distinct":true,"url":"https://api.github.com/repos/jacquev6/PyGithub/commits/38b137fb37c0fdc74f8802a4184518e105db9121"}]},"public":true,"created_at":"2013-09-04T19:50:00Z"},{"id":"1821476672","type":"IssueCommentEvent","actor":{"id":327146,"login":"jacquev6","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/194","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/194/labels{/name}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/194/comments","events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/194/events","html_url":"https://github.com/jacquev6/PyGithub/issues/194","id":18951718,"number":194,"title":"GitHub 400 \"Problems parsing JSON\" when creating an issue","user":{"login":"technoskald","id":1624387,"avatar_url":"https://0.gravatar.com/avatar/afdbc4563c208b1bc332762fbd1145cb?d=https%3A%2F%2Fidenticons.github.com%2F1fe48bd7b38910219f53e7709ac82ccf.png","gravatar_id":"afdbc4563c208b1bc332762fbd1145cb","url":"https://api.github.com/users/technoskald","html_url":"https://github.com/technoskald","followers_url":"https://api.github.com/users/technoskald/followers","following_url":"https://api.github.com/users/technoskald/following{/other_user}","gists_url":"https://api.github.com/users/technoskald/gists{/gist_id}","starred_url":"https://api.github.com/users/technoskald/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/technoskald/subscriptions","organizations_url":"https://api.github.com/users/technoskald/orgs","repos_url":"https://api.github.com/users/technoskald/repos","events_url":"https://api.github.com/users/technoskald/events{/privacy}","received_events_url":"https://api.github.com/users/technoskald/received_events","type":"User"},"labels":[],"state":"open","assignee":{"login":"jacquev6","id":327146,"avatar_url":"https://1.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"milestone":{"url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/31","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/31/labels","id":402388,"number":31,"title":"Version 1.19.0","description":"","creator":{"login":"jacquev6","id":327146,"avatar_url":"https://1.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"open_issues":3,"closed_issues":1,"state":"open","created_at":"2013-08-15T05:54:47Z","updated_at":"2013-09-04T13:41:07Z","due_on":null},"comments":2,"created_at":"2013-09-04T03:34:22Z","updated_at":"2013-09-04T14:35:22Z","closed_at":null,"pull_request":{"html_url":null,"diff_url":null,"patch_url":null},"body":"I'm working from the `develop` branch and consistently get an `HTTP 400: Problems parsing JSON` when trying to create an issue.\r\n\r\nThe traceback, including the actual API call, is:\r\n```\r\nTraceback (most recent call last):\r\n File \"import.py\", line 68, in \r\n issue=repo.create_issue(title=i['description'],body=comment,labels=ilabels)\r\n File \"/home/kmaxwell/PyGithub/github/Repository.py\", line 557, in create_issue\r\n post_parameters\r\n File \"/home/kmaxwell/PyGithub/github/Requester.py\", line 171, in requestJsonAndCheck\r\n return self.__check(*self.requestJson(verb, url, parameters, input))\r\n File \"/home/kmaxwell/PyGithub/github/Requester.py\", line 182, in __check\r\n raise self.__createException(status, output)\r\ngithub.GithubException.GithubException: 400 {u'message': u'Problems parsing JSON'}\r\n```\r\n\r\nAdditionally, I enabled console logging while debugging (per the contribution guidelines) and have the following logs:\r\n\r\n```\r\nPOST https://api.github.com/repos/vz-risk/VCDB/issues {'Content-Type': 'application/json', 'Authorization': 'token (oauth token removed)', 'User-Agent': 'PyGithub/Python'} {\"body\": \"http://www.heraldonline.com/2013/08/27/5152564/advanced-data-processing-inc-notification.html\\n\\nAnother of the ADP Partner breaches There are several more on the pinboard--search term is ADP.\\n\\nhttp://posttrib.suntimes.com/news/porter/22190511-418/valpo-ambulance-users-could-have-had-personal-information-stolen.html\\n\\nhttp://www.healthdatamanagement.com/news/breach-notification-hipaa-privacy-security-46520-1.html\\n\\n\\n2013 DataBreach NC\", \"labels\": [\"Breach\"], \"title\": \"VALPARAISO, Ind., Aug. 27, 2013: Advanced Data Processing, Inc.: Notification of Possible Unauthorized Access of Patient Information | PRNewswire | Rock Hill Herald Online\"} ==> 400 {'status': '400 Bad Request', 'x-ratelimit-remaining': '4993', 'x-github-media-type': 'github.beta; format=json', 'x-content-type-options': 'nosniff', 'access-control-expose-headers': 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes', 'x-github-request-id': '54c3445d-e229-4b45-b3f1-ef528f1325be', 'x-accepted-oauth-scopes': 'repo, public_repo', 'content-length': '35', 'server': 'GitHub.com', 'x-ratelimit-limit': '5000', 'access-control-allow-credentials': 'true', 'date': 'Wed, 04 Sep 2013 03:27:33 GMT', 'access-control-allow-origin': '*', 'content-type': 'application/json; charset=utf-8', 'x-oauth-scopes': 'user, public_repo, repo, gist', 'x-ratelimit-reset': '1378268851'} {\"message\":\"Problems parsing JSON\"}\r\n```"},"comment":{"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/23794023","html_url":"https://github.com/jacquev6/PyGithub/issues/194#issuecomment-23794023","issue_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/194","id":23794023,"user":{"login":"jacquev6","id":327146,"avatar_url":"https://1.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"created_at":"2013-09-04T14:35:22Z","updated_at":"2013-09-04T14:35:22Z","body":"Hum in fact I'm going to need your help to solve this... \r\n\r\nCan you please run the script here: https://gist.github.com/jacquev6/6437766 (modify it to use your credentials first) and tell me what you obtain?\r\n\r\nWhen I run it, it works, and the request sent (before the \"==>\" in the log) it **very** similar to the request failing in your case:\r\n\r\n POST https://api.github.com/repos/jacquev6/TestPyGithub/issues {'Content-Type': 'application/json', 'Authorization': 'Basic (login and password removed)', 'User-Agent': 'PyGithub/Python'} {\"body\": \"http://www.heraldonline.com/2013/08/27/5152564/advanced-data-processing-inc-notification.html\\n\\nAnother of the ADP Partner breaches There are several more on the pinboard--search term is ADP.\\n\\nhttp://posttrib.suntimes.com/news/porter/22190511-418/valpo-ambulance-users-could-have-had-personal-information-stolen.html\\n\\nhttp://www.healthdatamanagement.com/news/breach-notification-hipaa-privacy-security-46520-1.html\\n\\n\\n2013 DataBreach NC\", \"labels\": [\"Breach\"], \"title\": \"VALPARAISO, Ind., Aug. 27, 2013: Advanced Data Processing, Inc.: Notification of Possible Unauthorized Access of Patient Information | PRNewswire | Rock Hill Herald Online\"} ==> 201 {'status': '201 Created', 'x-ratelimit-remaining': '4972', 'x-github-media-type': 'github.beta; format=json', 'x-content-type-options': 'nosniff', 'access-control-expose-headers': 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes', 'x-github-request-id': '2be0b759-6752-4210-8ec9-243932b431a4', 'cache-control': 'private, max-age=60, s-maxage=60', 'content-length': '2382', 'server': 'GitHub.com', 'x-ratelimit-limit': '5000', 'location': 'https://api.github.com/repos/jacquev6/TestPyGithub/issues/4', 'access-control-allow-credentials': 'true', 'date': 'Wed, 04 Sep 2013 14:27:51 GMT', 'etag': '\"c95c9d428a9cb16001205311010e4f98\"', 'content-type': 'application/json; charset=utf-8', 'access-control-allow-origin': '*', 'x-ratelimit-reset': '1378305746'} {\"url\":\"https://api.github.com/repos/jacquev6/TestPyGithub/issues/4\",\"labels_url\":\"https://api.github.com/repos/jacquev6/TestPyGithub/issues/4/labels{/name}\",\"comments_url\":\"https://api.github.com/repos/jacquev6/TestPyGithub/issues/4/comments\",\"events_url\":\"https://api.github.com/repos/jacquev6/TestPyGithub/issues/4/events\",\"html_url\":\"https://github.com/jacquev6/TestPyGithub/issues/4\",\"id\":18974584,\"number\":4,\"title\":\"VALPARAISO, Ind., Aug. 27, 2013: Advanced Data Processing, Inc.: Notification of Possible Unauthorized Access of Patient Information | PRNewswire | Rock Hill Herald Online\",\"user\":{\"login\":\"jacquev6\",\"id\":327146,\"avatar_url\":\"https://1.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png\",\"gravatar_id\":\"b68de5ae38616c296fa345d2b9df2225\",\"url\":\"https://api.github.com/users/jacquev6\",\"html_url\":\"https://github.com/jacquev6\",\"followers_url\":\"https://api.github.com/users/jacquev6/followers\",\"following_url\":\"https://api.github.com/users/jacquev6/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/jacquev6/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/jacquev6/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/jacquev6/subscriptions\",\"organizations_url\":\"https://api.github.com/users/jacquev6/orgs\",\"repos_url\":\"https://api.github.com/users/jacquev6/repos\",\"events_url\":\"https://api.github.com/users/jacquev6/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/jacquev6/received_events\",\"type\":\"User\"},\"labels\":[{\"url\":\"https://api.github.com/repos/jacquev6/TestPyGithub/labels/Breach\",\"name\":\"Breach\",\"color\":\"fbca04\"}],\"state\":\"open\",\"assignee\":null,\"milestone\":null,\"comments\":0,\"created_at\":\"2013-09-04T14:27:51Z\",\"updated_at\":\"2013-09-04T14:27:51Z\",\"closed_at\":null,\"pull_request\":{\"html_url\":null,\"diff_url\":null,\"patch_url\":null},\"body\":\"http://www.heraldonline.com/2013/08/27/5152564/advanced-data-processing-inc-notification.html\\n\\nAnother of the ADP Partner breaches There are several more on the pinboard--search term is ADP.\\n\\nhttp://posttrib.suntimes.com/news/porter/22190511-418/valpo-ambulance-users-could-have-had-personal-information-stolen.html\\n\\nhttp://www.healthdatamanagement.com/news/breach-notification-hipaa-privacy-security-46520-1.html\\n\\n\\n2013 DataBreach NC\",\"closed_by\":null}\r\n"}},"public":true,"created_at":"2013-09-04T14:35:23Z"},{"id":"1821420344","type":"IssueCommentEvent","actor":{"id":327146,"login":"jacquev6","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193/labels{/name}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193/comments","events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193/events","html_url":"https://github.com/jacquev6/PyGithub/issues/193","id":18404629,"number":193,"title":"Add Conditional Request and Data Persistence Support Alternative Solution","user":{"login":"akfish","id":922715,"avatar_url":"https://2.gravatar.com/avatar/12a1b44d4e5c19cee59618084602b112?d=https%3A%2F%2Fidenticons.github.com%2F6eb90fb68a77fb5a5a997c6264bedf35.png","gravatar_id":"12a1b44d4e5c19cee59618084602b112","url":"https://api.github.com/users/akfish","html_url":"https://github.com/akfish","followers_url":"https://api.github.com/users/akfish/followers","following_url":"https://api.github.com/users/akfish/following{/other_user}","gists_url":"https://api.github.com/users/akfish/gists{/gist_id}","starred_url":"https://api.github.com/users/akfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akfish/subscriptions","organizations_url":"https://api.github.com/users/akfish/orgs","repos_url":"https://api.github.com/users/akfish/repos","events_url":"https://api.github.com/users/akfish/events{/privacy}","received_events_url":"https://api.github.com/users/akfish/received_events","type":"User"},"labels":[],"state":"open","assignee":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"milestone":{"url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/31","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/31/labels","id":402388,"number":31,"title":"Version 1.19.0","description":"","creator":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"open_issues":3,"closed_issues":1,"state":"open","created_at":"2013-08-15T05:54:47Z","updated_at":"2013-09-04T13:41:07Z","due_on":null},"comments":7,"created_at":"2013-08-22T10:14:26Z","updated_at":"2013-09-04T13:43:45Z","closed_at":null,"pull_request":{"html_url":"https://github.com/jacquev6/PyGithub/pull/193","diff_url":"https://github.com/jacquev6/PyGithub/pull/193.diff","patch_url":"https://github.com/jacquev6/PyGithub/pull/193.patch"},"body":"An alternative solution to pull request #189 based on #192. I am making this new pull request for clarity.\r\nChange List\r\n---------------\r\n1. Add support to [Conditional Request](http://developer.github.com/guides/getting-started/#conditional-requests) API.\r\n * Add ```GithubObject.etag``` property\r\n * Add ```GithubObject.last_modified``` property\r\n * Modify ```Requester``` class to handle 304 response code\r\n * Modify ```Requester``` class to enable making conditional request\r\n * Add ```NotModifiedException``` class for 304 response code\r\n * Add ```GithubObject.update()``` method\r\n * Add a few private helper methods to make this work\r\n2. Add methods for Data Persistence\r\n * Add ```GithubObject.save(file_fname)``` method\r\n * Add ```GithubObject.load(file_fname)``` class method\r\n3. Test class for conditional request\r\n\r\nUsage\r\n---------------\r\n```python\r\n# Get remote issue list and cache locally when syncing\r\nfor issue in repo.get_issues():\r\n issue.save(local_file_path)\r\n\r\n# Offline use/Quick restore previous work state\r\nfor local_file_path in cache.get_files():\r\n cached_issue = issue.load(local_file_path)\r\n #do something with it\r\n\r\n# And check for update when needed\r\nif (cached_issue.update()):\r\n print \"Issue synced“\r\n\r\n```"},"comment":{"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/23789799","html_url":"https://github.com/jacquev6/PyGithub/issues/193#issuecomment-23789799","issue_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/193","id":23789799,"user":{"login":"jacquev6","id":327146,"avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"created_at":"2013-09-04T13:43:45Z","updated_at":"2013-09-04T13:43:45Z","body":"Thank you for the update, this looks very promising! I'll look at it this afternoon."}},"public":true,"created_at":"2013-09-04T13:43:45Z"},{"id":"1821419438","type":"IssueCommentEvent","actor":{"id":327146,"login":"jacquev6","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","avatar_url":"https://0.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/194","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/194/labels{/name}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/194/comments","events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/194/events","html_url":"https://github.com/jacquev6/PyGithub/issues/194","id":18951718,"number":194,"title":"GitHub 400 \"Problems parsing JSON\" when creating an issue","user":{"login":"technoskald","id":1624387,"avatar_url":"https://1.gravatar.com/avatar/afdbc4563c208b1bc332762fbd1145cb?d=https%3A%2F%2Fidenticons.github.com%2F1fe48bd7b38910219f53e7709ac82ccf.png","gravatar_id":"afdbc4563c208b1bc332762fbd1145cb","url":"https://api.github.com/users/technoskald","html_url":"https://github.com/technoskald","followers_url":"https://api.github.com/users/technoskald/followers","following_url":"https://api.github.com/users/technoskald/following{/other_user}","gists_url":"https://api.github.com/users/technoskald/gists{/gist_id}","starred_url":"https://api.github.com/users/technoskald/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/technoskald/subscriptions","organizations_url":"https://api.github.com/users/technoskald/orgs","repos_url":"https://api.github.com/users/technoskald/repos","events_url":"https://api.github.com/users/technoskald/events{/privacy}","received_events_url":"https://api.github.com/users/technoskald/received_events","type":"User"},"labels":[],"state":"open","assignee":{"login":"jacquev6","id":327146,"avatar_url":"https://1.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"milestone":{"url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/31","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/31/labels","id":402388,"number":31,"title":"Version 1.19.0","description":"","creator":{"login":"jacquev6","id":327146,"avatar_url":"https://1.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"open_issues":3,"closed_issues":1,"state":"open","created_at":"2013-08-15T05:54:47Z","updated_at":"2013-09-04T13:41:07Z","due_on":null},"comments":1,"created_at":"2013-09-04T03:34:22Z","updated_at":"2013-09-04T13:42:51Z","closed_at":null,"pull_request":{"html_url":null,"diff_url":null,"patch_url":null},"body":"I'm working from the `develop` branch and consistently get an `HTTP 400: Problems parsing JSON` when trying to create an issue.\r\n\r\nThe traceback, including the actual API call, is:\r\n```\r\nTraceback (most recent call last):\r\n File \"import.py\", line 68, in \r\n issue=repo.create_issue(title=i['description'],body=comment,labels=ilabels)\r\n File \"/home/kmaxwell/PyGithub/github/Repository.py\", line 557, in create_issue\r\n post_parameters\r\n File \"/home/kmaxwell/PyGithub/github/Requester.py\", line 171, in requestJsonAndCheck\r\n return self.__check(*self.requestJson(verb, url, parameters, input))\r\n File \"/home/kmaxwell/PyGithub/github/Requester.py\", line 182, in __check\r\n raise self.__createException(status, output)\r\ngithub.GithubException.GithubException: 400 {u'message': u'Problems parsing JSON'}\r\n```\r\n\r\nAdditionally, I enabled console logging while debugging (per the contribution guidelines) and have the following logs:\r\n\r\n```\r\nPOST https://api.github.com/repos/vz-risk/VCDB/issues {'Content-Type': 'application/json', 'Authorization': 'token (oauth token removed)', 'User-Agent': 'PyGithub/Python'} {\"body\": \"http://www.heraldonline.com/2013/08/27/5152564/advanced-data-processing-inc-notification.html\\n\\nAnother of the ADP Partner breaches There are several more on the pinboard--search term is ADP.\\n\\nhttp://posttrib.suntimes.com/news/porter/22190511-418/valpo-ambulance-users-could-have-had-personal-information-stolen.html\\n\\nhttp://www.healthdatamanagement.com/news/breach-notification-hipaa-privacy-security-46520-1.html\\n\\n\\n2013 DataBreach NC\", \"labels\": [\"Breach\"], \"title\": \"VALPARAISO, Ind., Aug. 27, 2013: Advanced Data Processing, Inc.: Notification of Possible Unauthorized Access of Patient Information | PRNewswire | Rock Hill Herald Online\"} ==> 400 {'status': '400 Bad Request', 'x-ratelimit-remaining': '4993', 'x-github-media-type': 'github.beta; format=json', 'x-content-type-options': 'nosniff', 'access-control-expose-headers': 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes', 'x-github-request-id': '54c3445d-e229-4b45-b3f1-ef528f1325be', 'x-accepted-oauth-scopes': 'repo, public_repo', 'content-length': '35', 'server': 'GitHub.com', 'x-ratelimit-limit': '5000', 'access-control-allow-credentials': 'true', 'date': 'Wed, 04 Sep 2013 03:27:33 GMT', 'access-control-allow-origin': '*', 'content-type': 'application/json; charset=utf-8', 'x-oauth-scopes': 'user, public_repo, repo, gist', 'x-ratelimit-reset': '1378268851'} {\"message\":\"Problems parsing JSON\"}\r\n```"},"comment":{"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/23789742","html_url":"https://github.com/jacquev6/PyGithub/issues/194#issuecomment-23789742","issue_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/194","id":23789742,"user":{"login":"jacquev6","id":327146,"avatar_url":"https://1.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"created_at":"2013-09-04T13:42:51Z","updated_at":"2013-09-04T13:42:51Z","body":"Hello! Thank you for the issue report, I have all the info I need to investigate that.\r\n\r\nThere seems to be something wrong with the json-encoding of the request, in PyGithub. I'll keep you informed this afternoon."}},"public":true,"created_at":"2013-09-04T13:42:52Z"},{"id":"1821181865","type":"WatchEvent","actor":{"id":1114542,"login":"nvbn","gravatar_id":"9c2082cdbe74353788ae2845c2bd8281","url":"https://api.github.com/users/nvbn","avatar_url":"https://1.gravatar.com/avatar/9c2082cdbe74353788ae2845c2bd8281?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"action":"started"},"public":true,"created_at":"2013-09-04T08:31:39Z"},{"id":"1821036113","type":"IssuesEvent","actor":{"id":1624387,"login":"technoskald","gravatar_id":"afdbc4563c208b1bc332762fbd1145cb","url":"https://api.github.com/users/technoskald","avatar_url":"https://1.gravatar.com/avatar/afdbc4563c208b1bc332762fbd1145cb?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"action":"opened","issue":{"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/194","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/194/labels{/name}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/194/comments","events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/194/events","html_url":"https://github.com/jacquev6/PyGithub/issues/194","id":18951718,"number":194,"title":"GitHub 400 \"Problems parsing JSON\" when creating an issue","user":{"login":"technoskald","id":1624387,"avatar_url":"https://0.gravatar.com/avatar/afdbc4563c208b1bc332762fbd1145cb?d=https%3A%2F%2Fidenticons.github.com%2F1fe48bd7b38910219f53e7709ac82ccf.png","gravatar_id":"afdbc4563c208b1bc332762fbd1145cb","url":"https://api.github.com/users/technoskald","html_url":"https://github.com/technoskald","followers_url":"https://api.github.com/users/technoskald/followers","following_url":"https://api.github.com/users/technoskald/following{/other_user}","gists_url":"https://api.github.com/users/technoskald/gists{/gist_id}","starred_url":"https://api.github.com/users/technoskald/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/technoskald/subscriptions","organizations_url":"https://api.github.com/users/technoskald/orgs","repos_url":"https://api.github.com/users/technoskald/repos","events_url":"https://api.github.com/users/technoskald/events{/privacy}","received_events_url":"https://api.github.com/users/technoskald/received_events","type":"User"},"labels":[],"state":"open","assignee":null,"milestone":null,"comments":0,"created_at":"2013-09-04T03:34:22Z","updated_at":"2013-09-04T03:34:22Z","closed_at":null,"pull_request":{"html_url":null,"diff_url":null,"patch_url":null},"body":"I'm working from the `develop` branch and consistently get an `HTTP 400: Problems parsing JSON` when trying to create an issue.\r\n\r\nThe traceback, including the actual API call, is:\r\n```\r\nTraceback (most recent call last):\r\n File \"import.py\", line 68, in \r\n issue=repo.create_issue(title=i['description'],body=comment,labels=ilabels)\r\n File \"/home/kmaxwell/PyGithub/github/Repository.py\", line 557, in create_issue\r\n post_parameters\r\n File \"/home/kmaxwell/PyGithub/github/Requester.py\", line 171, in requestJsonAndCheck\r\n return self.__check(*self.requestJson(verb, url, parameters, input))\r\n File \"/home/kmaxwell/PyGithub/github/Requester.py\", line 182, in __check\r\n raise self.__createException(status, output)\r\ngithub.GithubException.GithubException: 400 {u'message': u'Problems parsing JSON'}\r\n```\r\n\r\nAdditionally, I enabled console logging while debugging (per the contribution guidelines) and have the following logs:\r\n\r\n```\r\nPOST https://api.github.com/repos/vz-risk/VCDB/issues {'Content-Type': 'application/json', 'Authorization': 'token (oauth token removed)', 'User-Agent': 'PyGithub/Python'} {\"body\": \"http://www.heraldonline.com/2013/08/27/5152564/advanced-data-processing-inc-notification.html\\n\\nAnother of the ADP Partner breaches There are several more on the pinboard--search term is ADP.\\n\\nhttp://posttrib.suntimes.com/news/porter/22190511-418/valpo-ambulance-users-could-have-had-personal-information-stolen.html\\n\\nhttp://www.healthdatamanagement.com/news/breach-notification-hipaa-privacy-security-46520-1.html\\n\\n\\n2013 DataBreach NC\", \"labels\": [\"Breach\"], \"title\": \"VALPARAISO, Ind., Aug. 27, 2013: Advanced Data Processing, Inc.: Notification of Possible Unauthorized Access of Patient Information | PRNewswire | Rock Hill Herald Online\"} ==> 400 {'status': '400 Bad Request', 'x-ratelimit-remaining': '4993', 'x-github-media-type': 'github.beta; format=json', 'x-content-type-options': 'nosniff', 'access-control-expose-headers': 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes', 'x-github-request-id': '54c3445d-e229-4b45-b3f1-ef528f1325be', 'x-accepted-oauth-scopes': 'repo, public_repo', 'content-length': '35', 'server': 'GitHub.com', 'x-ratelimit-limit': '5000', 'access-control-allow-credentials': 'true', 'date': 'Wed, 04 Sep 2013 03:27:33 GMT', 'access-control-allow-origin': '*', 'content-type': 'application/json; charset=utf-8', 'x-oauth-scopes': 'user, public_repo, repo, gist', 'x-ratelimit-reset': '1378268851'} {\"message\":\"Problems parsing JSON\"}\r\n```"}},"public":true,"created_at":"2013-09-04T03:34:22Z"},{"id":"1819316534","type":"WatchEvent","actor":{"id":1681405,"login":"marianitadn","gravatar_id":"4ede901d02edfca3e35db27377f13d5d","url":"https://api.github.com/users/marianitadn","avatar_url":"https://2.gravatar.com/avatar/4ede901d02edfca3e35db27377f13d5d?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"action":"started"},"public":true,"created_at":"2013-09-02T07:43:17Z"},{"id":"1818956660","type":"ForkEvent","actor":{"id":5172637,"login":"schmidt-fu","gravatar_id":"c9ced8b816f6470e64a4ad13f8ebe16a","url":"https://api.github.com/users/schmidt-fu","avatar_url":"https://1.gravatar.com/avatar/c9ced8b816f6470e64a4ad13f8ebe16a?d=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"},"repo":{"id":3544490,"name":"jacquev6/PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub"},"payload":{"forkee":{"id":12518636,"name":"PyGithub","full_name":"schmidt-fu/PyGithub","owner":{"login":"schmidt-fu","id":5172637,"avatar_url":"https://2.gravatar.com/avatar/c9ced8b816f6470e64a4ad13f8ebe16a?d=https%3A%2F%2Fidenticons.github.com%2F3cc9645c6fb2437530f57a2253cf3a8c.png","gravatar_id":"c9ced8b816f6470e64a4ad13f8ebe16a","url":"https://api.github.com/users/schmidt-fu","html_url":"https://github.com/schmidt-fu","followers_url":"https://api.github.com/users/schmidt-fu/followers","following_url":"https://api.github.com/users/schmidt-fu/following{/other_user}","gists_url":"https://api.github.com/users/schmidt-fu/gists{/gist_id}","starred_url":"https://api.github.com/users/schmidt-fu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/schmidt-fu/subscriptions","organizations_url":"https://api.github.com/users/schmidt-fu/orgs","repos_url":"https://api.github.com/users/schmidt-fu/repos","events_url":"https://api.github.com/users/schmidt-fu/events{/privacy}","received_events_url":"https://api.github.com/users/schmidt-fu/received_events","type":"User"},"private":false,"html_url":"https://github.com/schmidt-fu/PyGithub","description":"Python library implementing the full Github API v3","fork":true,"url":"https://api.github.com/repos/schmidt-fu/PyGithub","forks_url":"https://api.github.com/repos/schmidt-fu/PyGithub/forks","keys_url":"https://api.github.com/repos/schmidt-fu/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/schmidt-fu/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/schmidt-fu/PyGithub/teams","hooks_url":"https://api.github.com/repos/schmidt-fu/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/schmidt-fu/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/schmidt-fu/PyGithub/events","assignees_url":"https://api.github.com/repos/schmidt-fu/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/schmidt-fu/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/schmidt-fu/PyGithub/tags","blobs_url":"https://api.github.com/repos/schmidt-fu/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/schmidt-fu/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/schmidt-fu/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/schmidt-fu/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/schmidt-fu/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/schmidt-fu/PyGithub/languages","stargazers_url":"https://api.github.com/repos/schmidt-fu/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/schmidt-fu/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/schmidt-fu/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/schmidt-fu/PyGithub/subscription","commits_url":"https://api.github.com/repos/schmidt-fu/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/schmidt-fu/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/schmidt-fu/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/schmidt-fu/PyGithub/issues/comments/{number}","contents_url":"https://api.github.com/repos/schmidt-fu/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/schmidt-fu/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/schmidt-fu/PyGithub/merges","archive_url":"https://api.github.com/repos/schmidt-fu/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/schmidt-fu/PyGithub/downloads","issues_url":"https://api.github.com/repos/schmidt-fu/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/schmidt-fu/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/schmidt-fu/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/schmidt-fu/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/schmidt-fu/PyGithub/labels{/name}","created_at":"2013-09-01T09:51:50Z","updated_at":"2013-09-01T09:51:50Z","pushed_at":"2013-08-23T17:06:48Z","git_url":"git://github.com/schmidt-fu/PyGithub.git","ssh_url":"git@github.com:schmidt-fu/PyGithub.git","clone_url":"https://github.com/schmidt-fu/PyGithub.git","svn_url":"https://github.com/schmidt-fu/PyGithub","homepage":"http://jacquev6.github.com/PyGithub","size":7642,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"master_branch":"master","default_branch":"master","public":true}},"public":true,"created_at":"2013-09-01T09:51:50Z"}] + +https +GET +api.github.com +None +/notifications/threads/8406712 +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4867'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '30848a7f-7351-4751-af8c-3b0a85f5bb7e'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('content-length', '4203'), ('server', 'GitHub.com'), ('x-ratelimit-limit', '5000'), ('etag', '"848b2905eeb475bca3c72fe17bedcc0c"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:00 GMT'), ('access-control-allow-origin', '*'), ('x-poll-interval', '60'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"id":"8406712","unread":null,"reason":"subscribed","updated_at":"2013-03-15T05:43:11Z","last_read_at":null,"subject":{"title":"Feature/coveralls","url":"https://api.github.com/repos/ZIMK/fwadmin/pulls/21","latest_comment_url":"https://api.github.com/repos/ZIMK/fwadmin/issues/comments/14944813","type":"PullRequest"},"repository":{"id":8432784,"name":"fwadmin","full_name":"ZIMK/fwadmin","owner":{"login":"ZIMK","id":1187008,"avatar_url":"https://1.gravatar.com/avatar/ce407a684dac7cf642606501244dd9f0?d=https%3A%2F%2Fidenticons.github.com%2Fa8b50d6bf21d85e47ce11e1d23087af2.png","gravatar_id":"ce407a684dac7cf642606501244dd9f0","url":"https://api.github.com/users/ZIMK","html_url":"https://github.com/ZIMK","followers_url":"https://api.github.com/users/ZIMK/followers","following_url":"https://api.github.com/users/ZIMK/following{/other_user}","gists_url":"https://api.github.com/users/ZIMK/gists{/gist_id}","starred_url":"https://api.github.com/users/ZIMK/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ZIMK/subscriptions","organizations_url":"https://api.github.com/users/ZIMK/orgs","repos_url":"https://api.github.com/users/ZIMK/repos","events_url":"https://api.github.com/users/ZIMK/events{/privacy}","received_events_url":"https://api.github.com/users/ZIMK/received_events","type":"Organization"},"private":false,"html_url":"https://github.com/ZIMK/fwadmin","description":"Django based self-service firewall config tool","fork":true,"url":"https://api.github.com/repos/ZIMK/fwadmin","forks_url":"https://api.github.com/repos/ZIMK/fwadmin/forks","keys_url":"https://api.github.com/repos/ZIMK/fwadmin/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ZIMK/fwadmin/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ZIMK/fwadmin/teams","hooks_url":"https://api.github.com/repos/ZIMK/fwadmin/hooks","issue_events_url":"https://api.github.com/repos/ZIMK/fwadmin/issues/events{/number}","events_url":"https://api.github.com/repos/ZIMK/fwadmin/events","assignees_url":"https://api.github.com/repos/ZIMK/fwadmin/assignees{/user}","branches_url":"https://api.github.com/repos/ZIMK/fwadmin/branches{/branch}","tags_url":"https://api.github.com/repos/ZIMK/fwadmin/tags","blobs_url":"https://api.github.com/repos/ZIMK/fwadmin/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ZIMK/fwadmin/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ZIMK/fwadmin/git/refs{/sha}","trees_url":"https://api.github.com/repos/ZIMK/fwadmin/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ZIMK/fwadmin/statuses/{sha}","languages_url":"https://api.github.com/repos/ZIMK/fwadmin/languages","stargazers_url":"https://api.github.com/repos/ZIMK/fwadmin/stargazers","contributors_url":"https://api.github.com/repos/ZIMK/fwadmin/contributors","subscribers_url":"https://api.github.com/repos/ZIMK/fwadmin/subscribers","subscription_url":"https://api.github.com/repos/ZIMK/fwadmin/subscription","commits_url":"https://api.github.com/repos/ZIMK/fwadmin/commits{/sha}","git_commits_url":"https://api.github.com/repos/ZIMK/fwadmin/git/commits{/sha}","comments_url":"https://api.github.com/repos/ZIMK/fwadmin/comments{/number}","issue_comment_url":"https://api.github.com/repos/ZIMK/fwadmin/issues/comments/{number}","contents_url":"https://api.github.com/repos/ZIMK/fwadmin/contents/{+path}","compare_url":"https://api.github.com/repos/ZIMK/fwadmin/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ZIMK/fwadmin/merges","archive_url":"https://api.github.com/repos/ZIMK/fwadmin/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ZIMK/fwadmin/downloads","issues_url":"https://api.github.com/repos/ZIMK/fwadmin/issues{/number}","pulls_url":"https://api.github.com/repos/ZIMK/fwadmin/pulls{/number}","milestones_url":"https://api.github.com/repos/ZIMK/fwadmin/milestones{/number}","notifications_url":"https://api.github.com/repos/ZIMK/fwadmin/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ZIMK/fwadmin/labels{/name}"},"url":"https://api.github.com/notifications/threads/8406712","subscription_url":"https://api.github.com/notifications/threads/8406712/subscription"} + +https +GET +api.github.com +None +/users/jacquev6 +{'If-None-Match': '"654d1a29abe3a61b096e8bffbc61c162"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Fri, 06 Sep 2013 12:51:22 GMT'} +null +304 +[('status', '304 Not Modified'), ('x-ratelimit-remaining', '4867'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', 'f88ab8d2-9b5a-4283-8001-fdd72ca23ee2'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:51:22 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"654d1a29abe3a61b096e8bffbc61c162"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:00 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1378482241')] + + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/commits/1292bf0e22c796e91cc3d6e24b544aece8c21f2a +{'If-None-Match': '"91582e2dc24ad5461e61062c01b32969"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Wed, 09 May 2012 16:22:33 GMT'} +null +304 +[('status', '304 Not Modified'), ('x-ratelimit-remaining', '4867'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '74293a9e-2207-4848-903c-69d3b04efebe'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('last-modified', 'Wed, 09 May 2012 16:22:33 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"91582e2dc24ad5461e61062c01b32969"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:01 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1378482241')] + + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/comments/3630301 +{'If-None-Match': '"654d1a29abe3a61b096e8bffbc61c162"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Fri, 06 Sep 2013 12:51:22 GMT'} +null +304 +[('status', '304 Not Modified'), ('x-ratelimit-remaining', '4867'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '31f93d19-354a-448b-ac36-9c674814c063'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:51:22 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"654d1a29abe3a61b096e8bffbc61c162"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:02 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1378482241')] + + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/compare/master...develop +{'If-None-Match': '"ff2ab76c56b865233dfb98f5804276b6"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Fri, 06 Sep 2013 09:04:41 GMT'} +null +304 +[('status', '304 Not Modified'), ('x-ratelimit-remaining', '4867'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', 'bed81d6d-586b-453e-bf17-3db9b2abe473'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 09:04:41 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"ff2ab76c56b865233dfb98f5804276b6"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:03 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1378482241')] + + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/contents/README.rst?ref=master +{'If-None-Match': '"bbffa70478199a10902bf5da76db3481"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Wed, 21 Aug 2013 16:39:22 GMT'} +null +304 +[('status', '304 Not Modified'), ('x-ratelimit-remaining', '4867'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', 'c3ab101c-0643-4405-8dde-d9738631a6d1'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('last-modified', 'Wed, 21 Aug 2013 16:39:22 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"bbffa70478199a10902bf5da76db3481"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:04 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1378482241')] + + +https +GET +api.github.com +None +/gists/149016 +{'If-None-Match': '"1aaa6053c05e25abbc1703b90bd409b9"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Fri, 06 Sep 2013 13:04:59 GMT'} +null +304 +[('status', '304 Not Modified'), ('x-ratelimit-remaining', '4867'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', 'acf3d7f7-920c-4e6c-9e9f-8c619691fd70'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 13:04:59 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"1aaa6053c05e25abbc1703b90bd409b9"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:05 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1378482241')] + + +https +GET +api.github.com +None +/gists/149016/comments/4565 +{'If-None-Match': '"923dd32a449cce56dae93d3438b9451a"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Thu, 29 Aug 2013 01:07:03 GMT'} +null +304 +[('status', '304 Not Modified'), ('x-ratelimit-remaining', '4867'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '76905633-de04-422b-83f6-9f8dde705b0f'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('last-modified', 'Thu, 29 Aug 2013 01:07:03 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"923dd32a449cce56dae93d3438b9451a"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:06 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1378482241')] + + +https +GET +api.github.com +None +/gists/149016/3e0e8350f040f21811ceea13975086158ccae986 +{'If-None-Match': '"1aaa6053c05e25abbc1703b90bd409b9"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Fri, 06 Sep 2013 13:04:59 GMT'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4866'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '704fb785-3c6d-4f9f-9c14-91f368156bb0'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('content-length', '32105'), ('server', 'GitHub.com'), ('x-ratelimit-limit', '5000'), ('etag', '"ad4288b80b5ef38fdd8599ec34f610f7"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:09 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"url":"https://api.github.com/gists/149016","forks_url":"https://api.github.com/gists/149016/forks","commits_url":"https://api.github.com/gists/149016/commits","id":"149016","git_pull_url":"https://gist.github.com/149016.git","git_push_url":"https://gist.github.com/149016.git","html_url":"https://gist.github.com/149016","files":{".gitignore":{"filename":".gitignore","type":"text/plain","language":null,"raw_url":"https://gist.github.com/raw/149016/e056704ebab0fbcd7bf937169b4057d378d09cf8/.gitignore","size":145,"content":"*.aux\n*.glo\n*.idx\n*.log\n*.toc\n*.ist\n*.acn\n*.acr\n*.alg\n*.bbl\n*.blg\n*.dvi\n*.glg\n*.gls\n*.ilg\n*.ind\n*.lof\n*.lot\n*.maf\n*.mtc\n*.mtc1\n*.out\n*.synctex.gz"}},"public":true,"created_at":"2009-07-17T11:37:42Z","updated_at":"2013-09-06T13:04:59Z","description":"Git: .gitignore file for LaTeX projects","comments":18,"user":{"login":"kogakure","id":5535,"avatar_url":"https://0.gravatar.com/avatar/b53f98d49e275e8387897de02c92288d?d=https%3A%2F%2Fidenticons.github.com%2F7ec69dd44416c46745f6edd947b470cd.png","gravatar_id":"b53f98d49e275e8387897de02c92288d","url":"https://api.github.com/users/kogakure","html_url":"https://github.com/kogakure","followers_url":"https://api.github.com/users/kogakure/followers","following_url":"https://api.github.com/users/kogakure/following{/other_user}","gists_url":"https://api.github.com/users/kogakure/gists{/gist_id}","starred_url":"https://api.github.com/users/kogakure/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kogakure/subscriptions","organizations_url":"https://api.github.com/users/kogakure/orgs","repos_url":"https://api.github.com/users/kogakure/repos","events_url":"https://api.github.com/users/kogakure/events{/privacy}","received_events_url":"https://api.github.com/users/kogakure/received_events","type":"User"},"comments_url":"https://api.github.com/gists/149016/comments","forks":[{"url":"https://api.github.com/gists/452042","user":{"login":"cflewis","id":43708,"avatar_url":"https://2.gravatar.com/avatar/5f986018993d9f078927fe29ee912cf2?d=https%3A%2F%2Fidenticons.github.com%2F287915711d06ce6d90e2c18e1d89d3a6.png","gravatar_id":"5f986018993d9f078927fe29ee912cf2","url":"https://api.github.com/users/cflewis","html_url":"https://github.com/cflewis","followers_url":"https://api.github.com/users/cflewis/followers","following_url":"https://api.github.com/users/cflewis/following{/other_user}","gists_url":"https://api.github.com/users/cflewis/gists{/gist_id}","starred_url":"https://api.github.com/users/cflewis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cflewis/subscriptions","organizations_url":"https://api.github.com/users/cflewis/orgs","repos_url":"https://api.github.com/users/cflewis/repos","events_url":"https://api.github.com/users/cflewis/events{/privacy}","received_events_url":"https://api.github.com/users/cflewis/received_events","type":"User"},"id":"452042","created_at":"2010-06-24T21:51:00Z","updated_at":"2010-06-24T21:51:25Z"},{"url":"https://api.github.com/gists/871983","user":{"login":"rbochet","id":56806,"avatar_url":"https://2.gravatar.com/avatar/54925726f7c3a2b76028718eddb8522a?d=https%3A%2F%2Fidenticons.github.com%2F8818556ce6ba4bc9302dca9ec1979591.png","gravatar_id":"54925726f7c3a2b76028718eddb8522a","url":"https://api.github.com/users/rbochet","html_url":"https://github.com/rbochet","followers_url":"https://api.github.com/users/rbochet/followers","following_url":"https://api.github.com/users/rbochet/following{/other_user}","gists_url":"https://api.github.com/users/rbochet/gists{/gist_id}","starred_url":"https://api.github.com/users/rbochet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rbochet/subscriptions","organizations_url":"https://api.github.com/users/rbochet/orgs","repos_url":"https://api.github.com/users/rbochet/repos","events_url":"https://api.github.com/users/rbochet/events{/privacy}","received_events_url":"https://api.github.com/users/rbochet/received_events","type":"User"},"id":"871983","created_at":"2011-03-16T03:48:24Z","updated_at":"2013-08-16T00:46:15Z"},{"url":"https://api.github.com/gists/980414","user":{"login":"j10","id":250070,"avatar_url":"https://0.gravatar.com/avatar/7eb0a4d397a695f7fd15069a4f24ad44?d=https%3A%2F%2Fidenticons.github.com%2F6019c728e12af5d048c3d2decb9800cd.png","gravatar_id":"7eb0a4d397a695f7fd15069a4f24ad44","url":"https://api.github.com/users/j10","html_url":"https://github.com/j10","followers_url":"https://api.github.com/users/j10/followers","following_url":"https://api.github.com/users/j10/following{/other_user}","gists_url":"https://api.github.com/users/j10/gists{/gist_id}","starred_url":"https://api.github.com/users/j10/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/j10/subscriptions","organizations_url":"https://api.github.com/users/j10/orgs","repos_url":"https://api.github.com/users/j10/repos","events_url":"https://api.github.com/users/j10/events{/privacy}","received_events_url":"https://api.github.com/users/j10/received_events","type":"User"},"id":"980414","created_at":"2011-05-19T08:43:14Z","updated_at":"2011-05-19T08:43:20Z"},{"url":"https://api.github.com/gists/1404741","user":{"login":"Vaguery","id":81171,"avatar_url":"https://0.gravatar.com/avatar/db04d40ecceb0a4c0683a60462d11794?d=https%3A%2F%2Fidenticons.github.com%2Fc3ea21d464d21b7bf62431791ec01b78.png","gravatar_id":"db04d40ecceb0a4c0683a60462d11794","url":"https://api.github.com/users/Vaguery","html_url":"https://github.com/Vaguery","followers_url":"https://api.github.com/users/Vaguery/followers","following_url":"https://api.github.com/users/Vaguery/following{/other_user}","gists_url":"https://api.github.com/users/Vaguery/gists{/gist_id}","starred_url":"https://api.github.com/users/Vaguery/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Vaguery/subscriptions","organizations_url":"https://api.github.com/users/Vaguery/orgs","repos_url":"https://api.github.com/users/Vaguery/repos","events_url":"https://api.github.com/users/Vaguery/events{/privacy}","received_events_url":"https://api.github.com/users/Vaguery/received_events","type":"User"},"id":"1404741","created_at":"2011-11-29T13:05:35Z","updated_at":"2011-11-29T13:05:35Z"},{"url":"https://api.github.com/gists/1422904","user":{"login":"phieber","id":1208351,"avatar_url":"https://1.gravatar.com/avatar/e2f846ae903d79fa8750763d0809cab5?d=https%3A%2F%2Fidenticons.github.com%2F09c10f8d5454910d48c67ff6081e8601.png","gravatar_id":"e2f846ae903d79fa8750763d0809cab5","url":"https://api.github.com/users/phieber","html_url":"https://github.com/phieber","followers_url":"https://api.github.com/users/phieber/followers","following_url":"https://api.github.com/users/phieber/following{/other_user}","gists_url":"https://api.github.com/users/phieber/gists{/gist_id}","starred_url":"https://api.github.com/users/phieber/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/phieber/subscriptions","organizations_url":"https://api.github.com/users/phieber/orgs","repos_url":"https://api.github.com/users/phieber/repos","events_url":"https://api.github.com/users/phieber/events{/privacy}","received_events_url":"https://api.github.com/users/phieber/received_events","type":"User"},"id":"1422904","created_at":"2011-12-02T11:25:46Z","updated_at":"2011-12-02T11:25:46Z"},{"url":"https://api.github.com/gists/1585783","user":{"login":"pbroschwitz","id":92129,"avatar_url":"https://1.gravatar.com/avatar/68e33f71f778ec322d68ca15ef2a7315?d=https%3A%2F%2Fidenticons.github.com%2F8417990ede5b8e7dc3295d4dd63e4062.png","gravatar_id":"68e33f71f778ec322d68ca15ef2a7315","url":"https://api.github.com/users/pbroschwitz","html_url":"https://github.com/pbroschwitz","followers_url":"https://api.github.com/users/pbroschwitz/followers","following_url":"https://api.github.com/users/pbroschwitz/following{/other_user}","gists_url":"https://api.github.com/users/pbroschwitz/gists{/gist_id}","starred_url":"https://api.github.com/users/pbroschwitz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pbroschwitz/subscriptions","organizations_url":"https://api.github.com/users/pbroschwitz/orgs","repos_url":"https://api.github.com/users/pbroschwitz/repos","events_url":"https://api.github.com/users/pbroschwitz/events{/privacy}","received_events_url":"https://api.github.com/users/pbroschwitz/received_events","type":"User"},"id":"1585783","created_at":"2012-01-09T23:59:07Z","updated_at":"2012-02-20T11:18:52Z"},{"url":"https://api.github.com/gists/2549120","user":{"login":"gaving","id":43741,"avatar_url":"https://2.gravatar.com/avatar/839485ec6b0111d4ccc69646789d6728?d=https%3A%2F%2Fidenticons.github.com%2F781870bb5979fcc948dcc48da5fb798a.png","gravatar_id":"839485ec6b0111d4ccc69646789d6728","url":"https://api.github.com/users/gaving","html_url":"https://github.com/gaving","followers_url":"https://api.github.com/users/gaving/followers","following_url":"https://api.github.com/users/gaving/following{/other_user}","gists_url":"https://api.github.com/users/gaving/gists{/gist_id}","starred_url":"https://api.github.com/users/gaving/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gaving/subscriptions","organizations_url":"https://api.github.com/users/gaving/orgs","repos_url":"https://api.github.com/users/gaving/repos","events_url":"https://api.github.com/users/gaving/events{/privacy}","received_events_url":"https://api.github.com/users/gaving/received_events","type":"User"},"id":"2549120","created_at":"2012-04-29T09:57:32Z","updated_at":"2012-04-29T09:57:32Z"},{"url":"https://api.github.com/gists/2549928","user":{"login":"pbelmans","id":700126,"avatar_url":"https://2.gravatar.com/avatar/bf4c56431003682b725b72668e7de35f?d=https%3A%2F%2Fidenticons.github.com%2Fb6e0db3b4d374eb7e8d52b9f271f4822.png","gravatar_id":"bf4c56431003682b725b72668e7de35f","url":"https://api.github.com/users/pbelmans","html_url":"https://github.com/pbelmans","followers_url":"https://api.github.com/users/pbelmans/followers","following_url":"https://api.github.com/users/pbelmans/following{/other_user}","gists_url":"https://api.github.com/users/pbelmans/gists{/gist_id}","starred_url":"https://api.github.com/users/pbelmans/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pbelmans/subscriptions","organizations_url":"https://api.github.com/users/pbelmans/orgs","repos_url":"https://api.github.com/users/pbelmans/repos","events_url":"https://api.github.com/users/pbelmans/events{/privacy}","received_events_url":"https://api.github.com/users/pbelmans/received_events","type":"User"},"id":"2549928","created_at":"2012-04-29T12:07:11Z","updated_at":"2012-05-14T11:08:39Z"},{"url":"https://api.github.com/gists/3061207","user":{"login":"robEllenberg","id":1210940,"avatar_url":"https://1.gravatar.com/avatar/cee0a0313cb89262ccaf408cf42eeae8?d=https%3A%2F%2Fidenticons.github.com%2Fb927fc8b72fac9a5b05e8afd1545e069.png","gravatar_id":"cee0a0313cb89262ccaf408cf42eeae8","url":"https://api.github.com/users/robEllenberg","html_url":"https://github.com/robEllenberg","followers_url":"https://api.github.com/users/robEllenberg/followers","following_url":"https://api.github.com/users/robEllenberg/following{/other_user}","gists_url":"https://api.github.com/users/robEllenberg/gists{/gist_id}","starred_url":"https://api.github.com/users/robEllenberg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/robEllenberg/subscriptions","organizations_url":"https://api.github.com/users/robEllenberg/orgs","repos_url":"https://api.github.com/users/robEllenberg/repos","events_url":"https://api.github.com/users/robEllenberg/events{/privacy}","received_events_url":"https://api.github.com/users/robEllenberg/received_events","type":"User"},"id":"3061207","created_at":"2012-07-06T16:34:35Z","updated_at":"2012-07-06T16:34:35Z"},{"url":"https://api.github.com/gists/3073850","user":{"login":"naught101","id":167164,"avatar_url":"https://2.gravatar.com/avatar/20cb8dcc17ad4334c0f8cb1ddc28bcd0?d=https%3A%2F%2Fidenticons.github.com%2F16a0a5f3381b862da55875130a94ad3f.png","gravatar_id":"20cb8dcc17ad4334c0f8cb1ddc28bcd0","url":"https://api.github.com/users/naught101","html_url":"https://github.com/naught101","followers_url":"https://api.github.com/users/naught101/followers","following_url":"https://api.github.com/users/naught101/following{/other_user}","gists_url":"https://api.github.com/users/naught101/gists{/gist_id}","starred_url":"https://api.github.com/users/naught101/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/naught101/subscriptions","organizations_url":"https://api.github.com/users/naught101/orgs","repos_url":"https://api.github.com/users/naught101/repos","events_url":"https://api.github.com/users/naught101/events{/privacy}","received_events_url":"https://api.github.com/users/naught101/received_events","type":"User"},"id":"3073850","created_at":"2012-07-09T02:17:21Z","updated_at":"2012-07-09T02:17:21Z"},{"url":"https://api.github.com/gists/3683565","user":{"login":"TKAB","id":66597,"avatar_url":"https://1.gravatar.com/avatar/7a66c8124726c66cf9901d7e09f4f3cb?d=https%3A%2F%2Fidenticons.github.com%2F4bec99ec5bd39630575692948d9e8169.png","gravatar_id":"7a66c8124726c66cf9901d7e09f4f3cb","url":"https://api.github.com/users/TKAB","html_url":"https://github.com/TKAB","followers_url":"https://api.github.com/users/TKAB/followers","following_url":"https://api.github.com/users/TKAB/following{/other_user}","gists_url":"https://api.github.com/users/TKAB/gists{/gist_id}","starred_url":"https://api.github.com/users/TKAB/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TKAB/subscriptions","organizations_url":"https://api.github.com/users/TKAB/orgs","repos_url":"https://api.github.com/users/TKAB/repos","events_url":"https://api.github.com/users/TKAB/events{/privacy}","received_events_url":"https://api.github.com/users/TKAB/received_events","type":"User"},"id":"3683565","created_at":"2012-09-09T09:58:43Z","updated_at":"2012-09-09T09:58:43Z"},{"url":"https://api.github.com/gists/3802139","user":{"login":"linchen04","id":1383767,"avatar_url":"https://1.gravatar.com/avatar/4380e7c4928005fc0eaf9772e1fe64b7?d=https%3A%2F%2Fidenticons.github.com%2F39a2a9b3f884c9a2e97ce61cb56e02fd.png","gravatar_id":"4380e7c4928005fc0eaf9772e1fe64b7","url":"https://api.github.com/users/linchen04","html_url":"https://github.com/linchen04","followers_url":"https://api.github.com/users/linchen04/followers","following_url":"https://api.github.com/users/linchen04/following{/other_user}","gists_url":"https://api.github.com/users/linchen04/gists{/gist_id}","starred_url":"https://api.github.com/users/linchen04/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/linchen04/subscriptions","organizations_url":"https://api.github.com/users/linchen04/orgs","repos_url":"https://api.github.com/users/linchen04/repos","events_url":"https://api.github.com/users/linchen04/events{/privacy}","received_events_url":"https://api.github.com/users/linchen04/received_events","type":"User"},"id":"3802139","created_at":"2012-09-28T21:20:16Z","updated_at":"2012-09-28T21:20:16Z"},{"url":"https://api.github.com/gists/3958094","user":{"login":"macalicious","id":717205,"avatar_url":"https://2.gravatar.com/avatar/59eb80f68e015e725e9eeb90f24987b2?d=https%3A%2F%2Fidenticons.github.com%2F1d2591e0232d5734561c3c71252a2efa.png","gravatar_id":"59eb80f68e015e725e9eeb90f24987b2","url":"https://api.github.com/users/macalicious","html_url":"https://github.com/macalicious","followers_url":"https://api.github.com/users/macalicious/followers","following_url":"https://api.github.com/users/macalicious/following{/other_user}","gists_url":"https://api.github.com/users/macalicious/gists{/gist_id}","starred_url":"https://api.github.com/users/macalicious/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/macalicious/subscriptions","organizations_url":"https://api.github.com/users/macalicious/orgs","repos_url":"https://api.github.com/users/macalicious/repos","events_url":"https://api.github.com/users/macalicious/events{/privacy}","received_events_url":"https://api.github.com/users/macalicious/received_events","type":"User"},"id":"3958094","created_at":"2012-10-26T10:37:44Z","updated_at":"2012-10-26T10:37:44Z"},{"url":"https://api.github.com/gists/4362953","user":{"login":"dermesser","id":1042327,"avatar_url":"https://0.gravatar.com/avatar/1f99406671a26d17de4f0a52a41ad0c7?d=https%3A%2F%2Fidenticons.github.com%2F1b2f62f9f8f36eeb3c2a1ed42d1a2249.png","gravatar_id":"1f99406671a26d17de4f0a52a41ad0c7","url":"https://api.github.com/users/dermesser","html_url":"https://github.com/dermesser","followers_url":"https://api.github.com/users/dermesser/followers","following_url":"https://api.github.com/users/dermesser/following{/other_user}","gists_url":"https://api.github.com/users/dermesser/gists{/gist_id}","starred_url":"https://api.github.com/users/dermesser/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dermesser/subscriptions","organizations_url":"https://api.github.com/users/dermesser/orgs","repos_url":"https://api.github.com/users/dermesser/repos","events_url":"https://api.github.com/users/dermesser/events{/privacy}","received_events_url":"https://api.github.com/users/dermesser/received_events","type":"User"},"id":"4362953","created_at":"2012-12-23T11:04:08Z","updated_at":"2013-08-07T18:49:16Z"},{"url":"https://api.github.com/gists/4401093","user":{"login":"szalansky","id":323025,"avatar_url":"https://1.gravatar.com/avatar/b96196ac5b306a6f0d302dd9f82a24ee?d=https%3A%2F%2Fidenticons.github.com%2F6470274ac82665a71a91d36c419016ce.png","gravatar_id":"b96196ac5b306a6f0d302dd9f82a24ee","url":"https://api.github.com/users/szalansky","html_url":"https://github.com/szalansky","followers_url":"https://api.github.com/users/szalansky/followers","following_url":"https://api.github.com/users/szalansky/following{/other_user}","gists_url":"https://api.github.com/users/szalansky/gists{/gist_id}","starred_url":"https://api.github.com/users/szalansky/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/szalansky/subscriptions","organizations_url":"https://api.github.com/users/szalansky/orgs","repos_url":"https://api.github.com/users/szalansky/repos","events_url":"https://api.github.com/users/szalansky/events{/privacy}","received_events_url":"https://api.github.com/users/szalansky/received_events","type":"User"},"id":"4401093","created_at":"2012-12-28T19:28:03Z","updated_at":"2012-12-28T19:28:03Z"},{"url":"https://api.github.com/gists/4568476","user":{"login":"flomey","id":3226735,"avatar_url":"https://1.gravatar.com/avatar/3143afe043a2fdcd6a22a537e4cc3c8e?d=https%3A%2F%2Fidenticons.github.com%2F9271b5a509f2dabd1c5850acf684759c.png","gravatar_id":"3143afe043a2fdcd6a22a537e4cc3c8e","url":"https://api.github.com/users/flomey","html_url":"https://github.com/flomey","followers_url":"https://api.github.com/users/flomey/followers","following_url":"https://api.github.com/users/flomey/following{/other_user}","gists_url":"https://api.github.com/users/flomey/gists{/gist_id}","starred_url":"https://api.github.com/users/flomey/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/flomey/subscriptions","organizations_url":"https://api.github.com/users/flomey/orgs","repos_url":"https://api.github.com/users/flomey/repos","events_url":"https://api.github.com/users/flomey/events{/privacy}","received_events_url":"https://api.github.com/users/flomey/received_events","type":"User"},"id":"4568476","created_at":"2013-01-18T20:59:25Z","updated_at":"2013-01-18T20:59:25Z"},{"url":"https://api.github.com/gists/4732801","user":{"login":"mhebing","id":905115,"avatar_url":"https://2.gravatar.com/avatar/14e2a01d187cb0a167942e24e9234f95?d=https%3A%2F%2Fidenticons.github.com%2Fb874dedd9bb70a549db142d519aa6648.png","gravatar_id":"14e2a01d187cb0a167942e24e9234f95","url":"https://api.github.com/users/mhebing","html_url":"https://github.com/mhebing","followers_url":"https://api.github.com/users/mhebing/followers","following_url":"https://api.github.com/users/mhebing/following{/other_user}","gists_url":"https://api.github.com/users/mhebing/gists{/gist_id}","starred_url":"https://api.github.com/users/mhebing/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mhebing/subscriptions","organizations_url":"https://api.github.com/users/mhebing/orgs","repos_url":"https://api.github.com/users/mhebing/repos","events_url":"https://api.github.com/users/mhebing/events{/privacy}","received_events_url":"https://api.github.com/users/mhebing/received_events","type":"User"},"id":"4732801","created_at":"2013-02-07T17:57:21Z","updated_at":"2013-02-07T17:59:53Z"},{"url":"https://api.github.com/gists/5074215","user":{"login":"fumingshih","id":171536,"avatar_url":"https://0.gravatar.com/avatar/cdaeda52c7e0e7db119ec242652a7eac?d=https%3A%2F%2Fidenticons.github.com%2Ff3daf33ead84c02b32d673addce28321.png","gravatar_id":"cdaeda52c7e0e7db119ec242652a7eac","url":"https://api.github.com/users/fumingshih","html_url":"https://github.com/fumingshih","followers_url":"https://api.github.com/users/fumingshih/followers","following_url":"https://api.github.com/users/fumingshih/following{/other_user}","gists_url":"https://api.github.com/users/fumingshih/gists{/gist_id}","starred_url":"https://api.github.com/users/fumingshih/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fumingshih/subscriptions","organizations_url":"https://api.github.com/users/fumingshih/orgs","repos_url":"https://api.github.com/users/fumingshih/repos","events_url":"https://api.github.com/users/fumingshih/events{/privacy}","received_events_url":"https://api.github.com/users/fumingshih/received_events","type":"User"},"id":"5074215","created_at":"2013-03-03T02:30:54Z","updated_at":"2013-03-03T02:30:54Z"},{"url":"https://api.github.com/gists/5126805","user":{"login":"xiddw","id":742519,"avatar_url":"https://2.gravatar.com/avatar/e3aea2d1cdb375467416bff41c614582?d=https%3A%2F%2Fidenticons.github.com%2Ffd082f32f1f9679671081ba58bb37459.png","gravatar_id":"e3aea2d1cdb375467416bff41c614582","url":"https://api.github.com/users/xiddw","html_url":"https://github.com/xiddw","followers_url":"https://api.github.com/users/xiddw/followers","following_url":"https://api.github.com/users/xiddw/following{/other_user}","gists_url":"https://api.github.com/users/xiddw/gists{/gist_id}","starred_url":"https://api.github.com/users/xiddw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xiddw/subscriptions","organizations_url":"https://api.github.com/users/xiddw/orgs","repos_url":"https://api.github.com/users/xiddw/repos","events_url":"https://api.github.com/users/xiddw/events{/privacy}","received_events_url":"https://api.github.com/users/xiddw/received_events","type":"User"},"id":"5126805","created_at":"2013-03-10T02:21:30Z","updated_at":"2013-03-10T02:21:30Z"},{"url":"https://api.github.com/gists/5353918","user":{"login":"stared","id":1001610,"avatar_url":"https://2.gravatar.com/avatar/1b324e4900e79878eb518c1263b41795?d=https%3A%2F%2Fidenticons.github.com%2F031dfe1b6a9e475fa708179fb35beb3b.png","gravatar_id":"1b324e4900e79878eb518c1263b41795","url":"https://api.github.com/users/stared","html_url":"https://github.com/stared","followers_url":"https://api.github.com/users/stared/followers","following_url":"https://api.github.com/users/stared/following{/other_user}","gists_url":"https://api.github.com/users/stared/gists{/gist_id}","starred_url":"https://api.github.com/users/stared/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stared/subscriptions","organizations_url":"https://api.github.com/users/stared/orgs","repos_url":"https://api.github.com/users/stared/repos","events_url":"https://api.github.com/users/stared/events{/privacy}","received_events_url":"https://api.github.com/users/stared/received_events","type":"User"},"id":"5353918","created_at":"2013-04-10T11:42:03Z","updated_at":"2013-04-10T11:43:47Z"},{"url":"https://api.github.com/gists/5600181","user":{"login":"huashuai","id":256761,"avatar_url":"https://1.gravatar.com/avatar/279030da669c3950fc54dea37ee3109e?d=https%3A%2F%2Fidenticons.github.com%2Fc66590f0228b4de1b7d16d1b8f10161c.png","gravatar_id":"279030da669c3950fc54dea37ee3109e","url":"https://api.github.com/users/huashuai","html_url":"https://github.com/huashuai","followers_url":"https://api.github.com/users/huashuai/followers","following_url":"https://api.github.com/users/huashuai/following{/other_user}","gists_url":"https://api.github.com/users/huashuai/gists{/gist_id}","starred_url":"https://api.github.com/users/huashuai/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/huashuai/subscriptions","organizations_url":"https://api.github.com/users/huashuai/orgs","repos_url":"https://api.github.com/users/huashuai/repos","events_url":"https://api.github.com/users/huashuai/events{/privacy}","received_events_url":"https://api.github.com/users/huashuai/received_events","type":"User"},"id":"5600181","created_at":"2013-05-17T16:15:32Z","updated_at":"2013-05-17T16:15:32Z"},{"url":"https://api.github.com/gists/5639946","user":{"login":"simardcasanova","id":739940,"avatar_url":"https://0.gravatar.com/avatar/63c42221c8ed3dfc335a0d1b19397e36?d=https%3A%2F%2Fidenticons.github.com%2F819fcce6467f36e0beb6ffc69afa9f21.png","gravatar_id":"63c42221c8ed3dfc335a0d1b19397e36","url":"https://api.github.com/users/simardcasanova","html_url":"https://github.com/simardcasanova","followers_url":"https://api.github.com/users/simardcasanova/followers","following_url":"https://api.github.com/users/simardcasanova/following{/other_user}","gists_url":"https://api.github.com/users/simardcasanova/gists{/gist_id}","starred_url":"https://api.github.com/users/simardcasanova/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/simardcasanova/subscriptions","organizations_url":"https://api.github.com/users/simardcasanova/orgs","repos_url":"https://api.github.com/users/simardcasanova/repos","events_url":"https://api.github.com/users/simardcasanova/events{/privacy}","received_events_url":"https://api.github.com/users/simardcasanova/received_events","type":"User"},"id":"5639946","created_at":"2013-05-23T22:24:19Z","updated_at":"2013-05-23T22:24:57Z"},{"url":"https://api.github.com/gists/5965077","user":{"login":"habi","id":1651235,"avatar_url":"https://1.gravatar.com/avatar/4a0a820ba6c1996bc37d64ce14606ad4?d=https%3A%2F%2Fidenticons.github.com%2Fbaa3c8588d9ab73deea280466d5db7e1.png","gravatar_id":"4a0a820ba6c1996bc37d64ce14606ad4","url":"https://api.github.com/users/habi","html_url":"https://github.com/habi","followers_url":"https://api.github.com/users/habi/followers","following_url":"https://api.github.com/users/habi/following{/other_user}","gists_url":"https://api.github.com/users/habi/gists{/gist_id}","starred_url":"https://api.github.com/users/habi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/habi/subscriptions","organizations_url":"https://api.github.com/users/habi/orgs","repos_url":"https://api.github.com/users/habi/repos","events_url":"https://api.github.com/users/habi/events{/privacy}","received_events_url":"https://api.github.com/users/habi/received_events","type":"User"},"id":"5965077","created_at":"2013-07-10T09:57:15Z","updated_at":"2013-07-10T09:57:40Z"},{"url":"https://api.github.com/gists/6394053","user":{"login":"glaubius","id":5349064,"avatar_url":"https://0.gravatar.com/avatar/ff2451755814a23845b19551371bb026?d=https%3A%2F%2Fidenticons.github.com%2Faa59a5980a33a834ee55c9f386e7c996.png","gravatar_id":"ff2451755814a23845b19551371bb026","url":"https://api.github.com/users/glaubius","html_url":"https://github.com/glaubius","followers_url":"https://api.github.com/users/glaubius/followers","following_url":"https://api.github.com/users/glaubius/following{/other_user}","gists_url":"https://api.github.com/users/glaubius/gists{/gist_id}","starred_url":"https://api.github.com/users/glaubius/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/glaubius/subscriptions","organizations_url":"https://api.github.com/users/glaubius/orgs","repos_url":"https://api.github.com/users/glaubius/repos","events_url":"https://api.github.com/users/glaubius/events{/privacy}","received_events_url":"https://api.github.com/users/glaubius/received_events","type":"User"},"id":"6394053","created_at":"2013-08-30T20:39:05Z","updated_at":"2013-08-30T20:39:05Z"},{"url":"https://api.github.com/gists/6463518","user":{"login":"janten","id":1794407,"avatar_url":"https://2.gravatar.com/avatar/44f5d723bf2ef2dac40327bfa9815989?d=https%3A%2F%2Fidenticons.github.com%2Fe177a89b246259b7b5a84411923e6881.png","gravatar_id":"44f5d723bf2ef2dac40327bfa9815989","url":"https://api.github.com/users/janten","html_url":"https://github.com/janten","followers_url":"https://api.github.com/users/janten/followers","following_url":"https://api.github.com/users/janten/following{/other_user}","gists_url":"https://api.github.com/users/janten/gists{/gist_id}","starred_url":"https://api.github.com/users/janten/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/janten/subscriptions","organizations_url":"https://api.github.com/users/janten/orgs","repos_url":"https://api.github.com/users/janten/repos","events_url":"https://api.github.com/users/janten/events{/privacy}","received_events_url":"https://api.github.com/users/janten/received_events","type":"User"},"id":"6463518","created_at":"2013-09-06T13:04:58Z","updated_at":"2013-09-06T13:04:58Z"}],"history":[{"user":{"login":"kogakure","id":5535,"avatar_url":"https://0.gravatar.com/avatar/b53f98d49e275e8387897de02c92288d?d=https%3A%2F%2Fidenticons.github.com%2F7ec69dd44416c46745f6edd947b470cd.png","gravatar_id":"b53f98d49e275e8387897de02c92288d","url":"https://api.github.com/users/kogakure","html_url":"https://github.com/kogakure","followers_url":"https://api.github.com/users/kogakure/followers","following_url":"https://api.github.com/users/kogakure/following{/other_user}","gists_url":"https://api.github.com/users/kogakure/gists{/gist_id}","starred_url":"https://api.github.com/users/kogakure/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kogakure/subscriptions","organizations_url":"https://api.github.com/users/kogakure/orgs","repos_url":"https://api.github.com/users/kogakure/repos","events_url":"https://api.github.com/users/kogakure/events{/privacy}","received_events_url":"https://api.github.com/users/kogakure/received_events","type":"User"},"version":"3e0e8350f040f21811ceea13975086158ccae986","committed_at":"2010-06-25T06:52:37Z","change_status":{"total":3,"additions":2,"deletions":1},"url":"https://api.github.com/gists/149016/3e0e8350f040f21811ceea13975086158ccae986"},{"user":{"login":"kogakure","id":5535,"avatar_url":"https://0.gravatar.com/avatar/b53f98d49e275e8387897de02c92288d?d=https%3A%2F%2Fidenticons.github.com%2F7ec69dd44416c46745f6edd947b470cd.png","gravatar_id":"b53f98d49e275e8387897de02c92288d","url":"https://api.github.com/users/kogakure","html_url":"https://github.com/kogakure","followers_url":"https://api.github.com/users/kogakure/followers","following_url":"https://api.github.com/users/kogakure/following{/other_user}","gists_url":"https://api.github.com/users/kogakure/gists{/gist_id}","starred_url":"https://api.github.com/users/kogakure/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kogakure/subscriptions","organizations_url":"https://api.github.com/users/kogakure/orgs","repos_url":"https://api.github.com/users/kogakure/repos","events_url":"https://api.github.com/users/kogakure/events{/privacy}","received_events_url":"https://api.github.com/users/kogakure/received_events","type":"User"},"version":"a3ce60041fe20410fc55d141e77a25d26e1a562a","committed_at":"2009-07-17T11:37:43Z","change_status":{"total":22,"additions":22,"deletions":0},"url":"https://api.github.com/gists/149016/a3ce60041fe20410fc55d141e77a25d26e1a562a"}]} + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/git/blobs/681fb61f1761743a02f5c790f1c762cbfe8cfad1 +{'If-None-Match': '"01162d231bc8dfd76e35f833ecebaa0e"', 'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +304 +[('status', '304 Not Modified'), ('x-ratelimit-remaining', '4866'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', 'da1e9461-f849-4250-85c4-978c8e9e496d'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('x-ratelimit-limit', '5000'), ('etag', '"01162d231bc8dfd76e35f833ecebaa0e"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:11 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1378482241')] + + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/git/commits/be37b8a7f3a68631c32672dcd84d9eba27438ee6 +{'If-None-Match': '"b9013239d62338e81f6ec48bae78699e"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Thu, 22 Nov 2012 19:06:01 GMT'} +null +304 +[('status', '304 Not Modified'), ('x-ratelimit-remaining', '4866'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '05667811-3080-4fb5-a32a-de8debc918ba'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('last-modified', 'Thu, 22 Nov 2012 19:06:01 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"b9013239d62338e81f6ec48bae78699e"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:12 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1378482241')] + + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/git/refs/tags/v1.17.0 +{'If-None-Match': '"feb5059cac897bdd13fd1205785f865c"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Fri, 06 Sep 2013 12:41:05 GMT'} +null +304 +[('status', '304 Not Modified'), ('x-ratelimit-remaining', '4866'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', 'd852d843-7bb6-4ffc-a4fb-55621588f819'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:41:05 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"feb5059cac897bdd13fd1205785f865c"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:13 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1378482241')] + + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/git/trees/6f7c2d8c66d78863f7b91792deaead619799a1ce +{'If-None-Match': '"feb5059cac897bdd13fd1205785f865c"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Fri, 06 Sep 2013 12:41:05 GMT'} +null +304 +[('status', '304 Not Modified'), ('x-ratelimit-remaining', '4866'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '787d7bf1-e453-4694-87f6-bf3ed4855b87'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:41:05 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"feb5059cac897bdd13fd1205785f865c"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:14 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1378482241')] + + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/hooks/423574 +{'If-None-Match': '"f7b3dbaaca94c0219f23e9021e78506f"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Fri, 06 Sep 2013 12:41:06 GMT'} +null +304 +[('status', '304 Not Modified'), ('x-ratelimit-remaining', '4866'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '40b5c72c-2017-43d7-9b3a-9f2531db400c'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:41:06 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"f7b3dbaaca94c0219f23e9021e78506f"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:15 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1378482241')] + + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/hooks/423574 +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4865'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '409e8b85-37ed-4244-b316-1824ddee228c'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '462'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:41:06 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"f7b3dbaaca94c0219f23e9021e78506f"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:21 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"url":"https://api.github.com/repos/jacquev6/PyGithub/hooks/423574","test_url":"https://api.github.com/repos/jacquev6/PyGithub/hooks/423574/test","id":423574,"name":"travis","active":true,"events":["push","pull_request","issue_comment","public","member"],"config":{"domain":"","token":"pJdnhcDq3dQ9Cr1J1znQ","user":"jacquev6"},"last_response":{"code":200,"status":"active","message":"OK"},"updated_at":"2013-09-06T12:41:06Z","created_at":"2012-09-16T07:14:29Z"} + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/issues/188 +{'If-None-Match': '"654d1a29abe3a61b096e8bffbc61c162"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Fri, 06 Sep 2013 12:51:22 GMT'} +null +304 +[('status', '304 Not Modified'), ('x-ratelimit-remaining', '4865'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', 'e886b291-23e5-4d71-84d7-78bb6ce13206'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:51:22 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"654d1a29abe3a61b096e8bffbc61c162"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:22 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1378482241')] + + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/issues/comments/22686536 +{'If-None-Match': '"654d1a29abe3a61b096e8bffbc61c162"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Fri, 06 Sep 2013 12:51:22 GMT'} +null +304 +[('status', '304 Not Modified'), ('x-ratelimit-remaining', '4865'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', 'f9addbd4-bd0d-4978-8dae-6f91fd22763f'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:51:22 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"654d1a29abe3a61b096e8bffbc61c162"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:23 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1378482241')] + + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/issues/events/60946408 +{'If-None-Match': '"654d1a29abe3a61b096e8bffbc61c162"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Fri, 06 Sep 2013 12:51:22 GMT'} +null +304 +[('status', '304 Not Modified'), ('x-ratelimit-remaining', '4865'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', 'd0f0ed2b-5a02-4538-b7cb-79e35c27f985'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:51:22 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"654d1a29abe3a61b096e8bffbc61c162"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:24 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1378482241')] + + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/issues/events/60946408 +{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4864'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '92278efc-1781-4b40-9fe4-112cf30d3d3f'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept, Authorization, Cookie, Accept-Encoding'), ('content-length', '5613'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:51:22 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"654d1a29abe3a61b096e8bffbc61c162"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:25 GMT'), ('access-control-allow-origin', '*'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"id":60946408,"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/events/60946408","actor":{"login":"jacquev6","id":327146,"avatar_url":"https://2.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"event":"assigned","commit_id":null,"created_at":"2013-08-15T05:55:32Z","issue":{"url":"https://api.github.com/repos/jacquev6/PyGithub/issues/188","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/188/labels{/name}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/188/comments","events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/188/events","html_url":"https://github.com/jacquev6/PyGithub/issues/188","id":17736533,"number":188,"title":"Getting the status of GitHub","user":{"login":"ruxandraburtica","id":797922,"avatar_url":"https://0.gravatar.com/avatar/5703c5907fc67b679be40fd307b07733?d=https%3A%2F%2Fidenticons.github.com%2F470a720db37e19afad67c34e30ffcd85.png","gravatar_id":"5703c5907fc67b679be40fd307b07733","url":"https://api.github.com/users/ruxandraburtica","html_url":"https://github.com/ruxandraburtica","followers_url":"https://api.github.com/users/ruxandraburtica/followers","following_url":"https://api.github.com/users/ruxandraburtica/following{/other_user}","gists_url":"https://api.github.com/users/ruxandraburtica/gists{/gist_id}","starred_url":"https://api.github.com/users/ruxandraburtica/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ruxandraburtica/subscriptions","organizations_url":"https://api.github.com/users/ruxandraburtica/orgs","repos_url":"https://api.github.com/users/ruxandraburtica/repos","events_url":"https://api.github.com/users/ruxandraburtica/events{/privacy}","received_events_url":"https://api.github.com/users/ruxandraburtica/received_events","type":"User"},"labels":[{"url":"https://api.github.com/repos/jacquev6/PyGithub/labels/Functionalities","name":"Functionalities","color":"e102d8"},{"url":"https://api.github.com/repos/jacquev6/PyGithub/labels/Requested+by+user","name":"Requested by user","color":"e10c02"}],"state":"closed","assignee":{"login":"jacquev6","id":327146,"avatar_url":"https://2.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"milestone":{"url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/31","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/31/labels","id":402388,"number":31,"title":"Version 1.19.0","description":"","creator":{"login":"jacquev6","id":327146,"avatar_url":"https://2.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https%3A%2F%2Fidenticons.github.com%2Ffadfb5f7088ef66579d198a3c9a4935e.png","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","url":"https://api.github.com/users/jacquev6","html_url":"https://github.com/jacquev6","followers_url":"https://api.github.com/users/jacquev6/followers","following_url":"https://api.github.com/users/jacquev6/following{/other_user}","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","organizations_url":"https://api.github.com/users/jacquev6/orgs","repos_url":"https://api.github.com/users/jacquev6/repos","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","type":"User"},"open_issues":0,"closed_issues":3,"state":"open","created_at":"2013-08-15T05:54:47Z","updated_at":"2013-09-06T09:42:02Z","due_on":null},"comments":2,"created_at":"2013-08-07T08:57:49Z","updated_at":"2013-09-06T09:11:57Z","closed_at":"2013-09-06T09:11:57Z","pull_request":{"html_url":null,"diff_url":null,"patch_url":null},"body":"Maybe I haven't found it, but it would be very useful to have methods for checking the status of the GitHub API (https://status.github.com/api)"}} + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/labels/Bug +{'If-None-Match': '"a4af9b5fe3ebc7d9ec2ecd4a637a4863"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Sat, 20 Oct 2007 11:24:19 GMT'} +null +304 +[('status', '304 Not Modified'), ('x-ratelimit-remaining', '4864'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', 'd4b19adc-a9cc-4710-b146-93a5c3edb71f'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('last-modified', 'Sat, 20 Oct 2007 11:24:19 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"a4af9b5fe3ebc7d9ec2ecd4a637a4863"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:26 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1378482241')] + + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/milestones/17 +{'If-None-Match': '"654d1a29abe3a61b096e8bffbc61c162"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Fri, 06 Sep 2013 12:51:22 GMT'} +null +304 +[('status', '304 Not Modified'), ('x-ratelimit-remaining', '4864'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '21cfd2f1-595f-480a-bbf0-e9259d46277e'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:51:22 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"654d1a29abe3a61b096e8bffbc61c162"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:28 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1378482241')] + + +https +GET +api.github.com +None +/users/nvie +{'If-None-Match': '"ded215d39a497c6d2de00dd5e5a5deb6"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Fri, 06 Sep 2013 13:38:58 GMT'} +null +304 +[('status', '304 Not Modified'), ('x-ratelimit-remaining', '4864'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', 'd669c122-58f7-447d-8d21-b48c619cca41'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 13:38:58 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"ded215d39a497c6d2de00dd5e5a5deb6"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:29 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1378482241')] + + +https +GET +api.github.com +None +/notifications/threads/8406712 +{'If-None-Match': '"848b2905eeb475bca3c72fe17bedcc0c"', 'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4863'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '974ec572-54e3-4f64-bcff-c203fea238da'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('content-length', '4203'), ('server', 'GitHub.com'), ('x-ratelimit-limit', '5000'), ('etag', '"a1285606034653c336a6b673a35733c1"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:29 GMT'), ('access-control-allow-origin', '*'), ('x-poll-interval', '60'), ('content-type', 'application/json; charset=utf-8'), ('x-ratelimit-reset', '1378482241')] +{"id":"8406712","unread":null,"reason":"subscribed","updated_at":"2013-03-15T05:43:11Z","last_read_at":null,"subject":{"title":"Feature/coveralls","url":"https://api.github.com/repos/ZIMK/fwadmin/pulls/21","latest_comment_url":"https://api.github.com/repos/ZIMK/fwadmin/issues/comments/14944813","type":"PullRequest"},"repository":{"id":8432784,"name":"fwadmin","full_name":"ZIMK/fwadmin","owner":{"login":"ZIMK","id":1187008,"avatar_url":"https://2.gravatar.com/avatar/ce407a684dac7cf642606501244dd9f0?d=https%3A%2F%2Fidenticons.github.com%2Fa8b50d6bf21d85e47ce11e1d23087af2.png","gravatar_id":"ce407a684dac7cf642606501244dd9f0","url":"https://api.github.com/users/ZIMK","html_url":"https://github.com/ZIMK","followers_url":"https://api.github.com/users/ZIMK/followers","following_url":"https://api.github.com/users/ZIMK/following{/other_user}","gists_url":"https://api.github.com/users/ZIMK/gists{/gist_id}","starred_url":"https://api.github.com/users/ZIMK/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ZIMK/subscriptions","organizations_url":"https://api.github.com/users/ZIMK/orgs","repos_url":"https://api.github.com/users/ZIMK/repos","events_url":"https://api.github.com/users/ZIMK/events{/privacy}","received_events_url":"https://api.github.com/users/ZIMK/received_events","type":"Organization"},"private":false,"html_url":"https://github.com/ZIMK/fwadmin","description":"Django based self-service firewall config tool","fork":true,"url":"https://api.github.com/repos/ZIMK/fwadmin","forks_url":"https://api.github.com/repos/ZIMK/fwadmin/forks","keys_url":"https://api.github.com/repos/ZIMK/fwadmin/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ZIMK/fwadmin/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ZIMK/fwadmin/teams","hooks_url":"https://api.github.com/repos/ZIMK/fwadmin/hooks","issue_events_url":"https://api.github.com/repos/ZIMK/fwadmin/issues/events{/number}","events_url":"https://api.github.com/repos/ZIMK/fwadmin/events","assignees_url":"https://api.github.com/repos/ZIMK/fwadmin/assignees{/user}","branches_url":"https://api.github.com/repos/ZIMK/fwadmin/branches{/branch}","tags_url":"https://api.github.com/repos/ZIMK/fwadmin/tags","blobs_url":"https://api.github.com/repos/ZIMK/fwadmin/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ZIMK/fwadmin/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ZIMK/fwadmin/git/refs{/sha}","trees_url":"https://api.github.com/repos/ZIMK/fwadmin/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ZIMK/fwadmin/statuses/{sha}","languages_url":"https://api.github.com/repos/ZIMK/fwadmin/languages","stargazers_url":"https://api.github.com/repos/ZIMK/fwadmin/stargazers","contributors_url":"https://api.github.com/repos/ZIMK/fwadmin/contributors","subscribers_url":"https://api.github.com/repos/ZIMK/fwadmin/subscribers","subscription_url":"https://api.github.com/repos/ZIMK/fwadmin/subscription","commits_url":"https://api.github.com/repos/ZIMK/fwadmin/commits{/sha}","git_commits_url":"https://api.github.com/repos/ZIMK/fwadmin/git/commits{/sha}","comments_url":"https://api.github.com/repos/ZIMK/fwadmin/comments{/number}","issue_comment_url":"https://api.github.com/repos/ZIMK/fwadmin/issues/comments/{number}","contents_url":"https://api.github.com/repos/ZIMK/fwadmin/contents/{+path}","compare_url":"https://api.github.com/repos/ZIMK/fwadmin/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ZIMK/fwadmin/merges","archive_url":"https://api.github.com/repos/ZIMK/fwadmin/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ZIMK/fwadmin/downloads","issues_url":"https://api.github.com/repos/ZIMK/fwadmin/issues{/number}","pulls_url":"https://api.github.com/repos/ZIMK/fwadmin/pulls{/number}","milestones_url":"https://api.github.com/repos/ZIMK/fwadmin/milestones{/number}","notifications_url":"https://api.github.com/repos/ZIMK/fwadmin/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ZIMK/fwadmin/labels{/name}"},"url":"https://api.github.com/notifications/threads/8406712","subscription_url":"https://api.github.com/notifications/threads/8406712/subscription"} + +https +GET +api.github.com +None +/orgs/BeaverSoftware +{'If-None-Match': '"99d8ce990ccf1acbb3508bd20d9883e4"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Wed, 23 Jan 2013 12:15:22 GMT'} +null +304 +[('status', '304 Not Modified'), ('x-ratelimit-remaining', '4863'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '2941dffb-707a-40d0-b4e7-a66e923fa01e'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('last-modified', 'Wed, 23 Jan 2013 12:15:22 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"99d8ce990ccf1acbb3508bd20d9883e4"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:30 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1378482241')] + + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/pulls/31 +{'If-None-Match': '"654d1a29abe3a61b096e8bffbc61c162"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Fri, 06 Sep 2013 12:51:22 GMT'} +null +304 +[('status', '304 Not Modified'), ('x-ratelimit-remaining', '4863'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '70632470-ec82-4aed-9456-a63147919253'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:51:22 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"654d1a29abe3a61b096e8bffbc61c162"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:32 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1378482241')] + + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub/pulls/comments/1580134 +{'If-None-Match': '"654d1a29abe3a61b096e8bffbc61c162"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Fri, 06 Sep 2013 12:51:22 GMT'} +null +304 +[('status', '304 Not Modified'), ('x-ratelimit-remaining', '4863'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', '2ca3f96b-7771-41a5-9aba-d8dedc12e465'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:51:22 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"654d1a29abe3a61b096e8bffbc61c162"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:35 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1378482241')] + + +https +GET +api.github.com +None +/repos/jacquev6/PyGithub +{'If-None-Match': '"feb5059cac897bdd13fd1205785f865c"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Fri, 06 Sep 2013 12:41:05 GMT'} +null +304 +[('status', '304 Not Modified'), ('x-ratelimit-remaining', '4863'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', 'beb42a35-9e06-4b99-9abc-5b7e4e71fa85'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 06 Sep 2013 12:41:05 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"feb5059cac897bdd13fd1205785f865c"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:36 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1378482241')] + + +https +GET +api.github.com +None +/teams/141487 +{'If-None-Match': '"a4af9b5fe3ebc7d9ec2ecd4a637a4863"', 'User-Agent': 'PyGithub/Python', 'Authorization': 'Basic login_and_password_removed', 'If-Modified-Since': 'Sat, 20 Oct 2007 11:24:19 GMT'} +null +304 +[('status', '304 Not Modified'), ('x-ratelimit-remaining', '4863'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes'), ('x-github-request-id', 'd65865d1-e84d-418b-8465-54b9c8034ead'), ('access-control-allow-credentials', 'true'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('last-modified', 'Sat, 20 Oct 2007 11:24:19 GMT'), ('x-ratelimit-limit', '5000'), ('etag', '"a4af9b5fe3ebc7d9ec2ecd4a637a4863"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 06 Sep 2013 15:06:37 GMT'), ('access-control-allow-origin', '*'), ('x-ratelimit-reset', '1378482241')] + + diff --git a/scripts/add_attribute.py b/scripts/add_attribute.py new file mode 100644 index 00000000..af60a6ac --- /dev/null +++ b/scripts/add_attribute.py @@ -0,0 +1,119 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +############################ Copyrights and license ############################ +# # +# Copyright 2013 Vincent Jacques # +# # +# 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 . # +# # +################################################################################ + +import sys +import os.path + +# This script is unable to add an attribute after all the existing ones +# but, well, I'll do it manually in that case. + +className, attributeName, attributeType = sys.argv[1:] + + +types = { + "string": ("string", "(str, unicode)", "attributes[\"" + attributeName + "\"]"), + "int": ("integer", "(int, long)", "attributes[\"" + attributeName + "\"]"), + "bool": ("bool", "bool", "attributes[\"" + attributeName + "\"]"), + "datetime": ("datetime.datetime", "(str, unicode)", "self._parseDatetime(attributes[\"" + attributeName + "\"])"), +} + +attributeDocType, attributeAssertType, attributeValue = types[attributeType] + + +fileName = os.path.join("github", className + ".py") + +with open(fileName) as f: + lines = list(f) + +newLines = [] + +i = 0 + +added = False + +isProperty = False +while not added: + line = lines[i].rstrip() + i += 1 + if line == " @property": + isProperty = True + if line.startswith(" def "): + if isProperty: + attrName = line[8:-7] + if attrName != "_identity" and attrName > attributeName: + newLines.append(" def " + attributeName + "(self):") + newLines.append(" \"\"\"") + newLines.append(" :type: " + attributeDocType) + newLines.append(" \"\"\"") + newLines.append(" self._completeIfNotSet(self._" + attributeName + ")") + newLines.append(" return self._NoneIfNotSet(self._" + attributeName + ")") + newLines.append("") + newLines.append(" @property") + added = True + isProperty = False + newLines.append(line) + +added = False + +inInit = False +while not added: + line = lines[i].rstrip() + i += 1 + if line == " def _initAttributes(self):": + inInit = True + if inInit: + if line.endswith(" = github.GithubObject.NotSet"): + attrName = line[14:-29] + if attrName > attributeName: + newLines.append(" self._" + attributeName + " = github.GithubObject.NotSet") + added = True + newLines.append(line) + +added = False + +inUse = False +while not added: + line = lines[i].rstrip() + i += 1 + if line == " def _useAttributes(self, attributes):": + inUse = True + if inUse: + if line.endswith(" in attributes: # pragma no branch"): + attrName = line[12:-36] + if attrName > attributeName: + newLines.append(" if \"" + attributeName + "\" in attributes: # pragma no branch") + newLines.append(" assert attributes[\"" + attributeName + "\"] is None or isinstance(attributes[\"" + attributeName + "\"], " + attributeAssertType + "), attributes[\"" + attributeName + "\"]") + newLines.append(" self._" + attributeName + " = " + attributeValue) + added = True + newLines.append(line) + + +while i < len(lines): + line = lines[i].rstrip() + i += 1 + newLines.append(line) + +with open(fileName, "wb") as f: + for line in newLines: + f.write(line + "\n") From 4e8f36ba3984b26fcae3b96407552ab514a1af98 Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Fri, 6 Sep 2013 17:24:06 +0200 Subject: [PATCH 102/103] Small updates of doc --- github/MainClass.py | 2 +- github/NamedUser.py | 3 ++- scripts/compare_to_api_ref_doc.py | 7 +++++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/github/MainClass.py b/github/MainClass.py index c40b2dc1..eddfd84b 100644 --- a/github/MainClass.py +++ b/github/MainClass.py @@ -126,7 +126,7 @@ class Github(object): """ Don't forget you can access the rate limit returned in headers of last Github API v3 response, by :attr:`github.MainClass.Github.rate_limiting` and :attr:`github.MainClass.Github.rate_limiting_resettime`. - :calls: `GET /rate_limit `_ + :calls: `GET /rate_limit `_ :rtype: :class:`github.RateLimit.RateLimit` """ headers, attributes = self.__requester.requestJsonAndCheck( diff --git a/github/NamedUser.py b/github/NamedUser.py index aa7c5547..55bf65fd 100644 --- a/github/NamedUser.py +++ b/github/NamedUser.py @@ -329,6 +329,7 @@ class NamedUser(github.GithubObject.CompletableGithubObject): self._completeIfNotSet(self._url) return self._NoneIfNotSet(self._url) + # v2: Remove this method def create_gist(self, public, files, description=github.GithubObject.NotSet): """ :calls: `POST /users/:user/gists `_ @@ -529,7 +530,7 @@ class NamedUser(github.GithubObject.CompletableGithubObject): def has_in_following(self, following): """ - :calls: `GET /user/:user/following/:target_user `_ + :calls: `GET /users/:user/following/:target_user `_ :param following: :class:`github.NamedUser.NamedUser` :rtype: bool """ diff --git a/scripts/compare_to_api_ref_doc.py b/scripts/compare_to_api_ref_doc.py index a4c795c1..05c10448 100755 --- a/scripts/compare_to_api_ref_doc.py +++ b/scripts/compare_to_api_ref_doc.py @@ -41,6 +41,9 @@ def parseReference(): undocumentedUrls = [ ("/hooks", "GET"), # Mentioned somewhere ("/hub", "POST"), # Described in content/v3/repos/hooks.md + ("/api/status.json", "GET"), # https://status.github.com/api + ("/api/last-message.json", "GET"), # https://status.github.com/api + ("/api/messages.json", "GET"), # https://status.github.com/api ] uninterestingUrls = [ ("/markdown/raw", "POST"), # Job is done by /markdown => useless in PyGithub @@ -74,7 +77,7 @@ def parseReference(): urls[url] = docUrl for url in undocumentedUrls: - urls[url] = "http://developer.github.com/" + urls[url] = None for url in uninterestingUrls: del urls[url] @@ -112,7 +115,7 @@ def main(): printUrls("called by PyGithub but not existing in Github API v3", set(lib) - set(ref)) for key in set(lib) & set(ref): (url, verb) = key - if lib[key] != ref[key]: + if ref[key] is not None and lib[key] != ref[key] and not lib[key].startswith(ref[key] + "/#"): print "sed -i \"s@:calls: ." + verb + " " + url + " ." + lib[key] + ".._" + "@:calls: \\`" + verb + " " + url + " \\<" + ref[key] + "\\>\\`_@\" github/*.py" From 8a83de380b6b294e18707d86dcc0815144659ec4 Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Fri, 6 Sep 2013 17:32:00 +0200 Subject: [PATCH 103/103] Make Rate.reset an UTC datetime --- github/Rate.py | 2 +- github/tests/RateLimiting.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/github/Rate.py b/github/Rate.py index 18a61b76..aad4ef3f 100644 --- a/github/Rate.py +++ b/github/Rate.py @@ -65,4 +65,4 @@ class Rate(github.GithubObject.NonCompletableGithubObject): self._remaining = attributes["remaining"] if "reset" in attributes: # pragma no branch assert attributes["reset"] is None or isinstance(attributes["reset"], (int, long)), attributes["reset"] - self._reset = datetime.datetime.fromtimestamp(attributes["reset"]) + self._reset = datetime.datetime.utcfromtimestamp(attributes["reset"]) diff --git a/github/tests/RateLimiting.py b/github/tests/RateLimiting.py index 66daaef1..43d53c21 100644 --- a/github/tests/RateLimiting.py +++ b/github/tests/RateLimiting.py @@ -43,4 +43,4 @@ class RateLimiting(Framework.TestCase): rateLimit = self.g.get_rate_limit() self.assertEqual(rateLimit.rate.limit, 5000) self.assertEqual(rateLimit.rate.remaining, 5000) - self.assertEqual(rateLimit.rate.reset, datetime.datetime(2013, 9, 6, 12, 29, 57)) + self.assertEqual(rateLimit.rate.reset, datetime.datetime(2013, 9, 6, 10, 29, 57))