From 4157bd99c1e4ce9a9888dbaf1647716f72097d50 Mon Sep 17 00:00:00 2001 From: Alexander Artemenko Date: Wed, 8 Dec 2010 22:39:49 +0300 Subject: [PATCH 1/3] Paging support for commit list using optional 'page' argument. --- github2/commits.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/github2/commits.py b/github2/commits.py index 3d4a700..c373620 100644 --- a/github2/commits.py +++ b/github2/commits.py @@ -26,9 +26,13 @@ def __repr__(self): class Commits(GithubCommand): domain = "commits" - def list(self, project, branch="master", file=None): + def list(self, project, branch="master", file=None, page = None): + post_data = {} + if page is not None: + post_data['page'] = page return self.get_values("list", project, branch, file, - filter="commits", datatype=Commit) + filter="commits", datatype=Commit, + post_data=post_data) def show(self, project, sha): return self.get_value("show", project, sha, From 94e25da7dc72ace91b75cf708d8e0d5851302b39 Mon Sep 17 00:00:00 2001 From: Alexander Artemenko Date: Wed, 8 Dec 2010 22:39:49 +0300 Subject: [PATCH 2/3] Paging support for commit list using optional 'page' argument. --- github2/commits.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/github2/commits.py b/github2/commits.py index f584c0a..93d1e03 100644 --- a/github2/commits.py +++ b/github2/commits.py @@ -26,9 +26,13 @@ def __repr__(self): class Commits(GithubCommand): domain = "commits" - def list(self, project, branch="master", file=None): + def list(self, project, branch="master", file=None, page = None): + post_data = {} + if page is not None: + post_data['page'] = page return self.get_values("list", project, branch, file, - filter="commits", datatype=Commit) + filter="commits", datatype=Commit, + post_data=post_data) def show(self, project, sha): return self.get_value("show", project, sha, From f337f3c7b48e85dda72744f7696c693fe8d5fee0 Mon Sep 17 00:00:00 2001 From: Alexander Artemenko Date: Wed, 5 Jan 2011 03:32:17 +0300 Subject: [PATCH 3/3] Added method 'iter' for commits. It uses pagerator library to iterate over pages. --- github2/commits.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/github2/commits.py b/github2/commits.py index 93d1e03..db98851 100644 --- a/github2/commits.py +++ b/github2/commits.py @@ -1,3 +1,4 @@ +import pagerator from github2.core import BaseData, GithubCommand, Attribute, DateAttribute @@ -34,6 +35,16 @@ def list(self, project, branch="master", file=None, page = None): filter="commits", datatype=Commit, post_data=post_data) + def iter(self, project, branch="master", file=None): + return pagerator.IterableQuery( + lambda page: self.get_values( + "list", project, branch, file, + filter="commits", datatype=Commit, + post_data=dict(page=page+1) + ), + 35 # page_size hardcoded in the GitHub + ) + def show(self, project, sha): return self.get_value("show", project, sha, filter="commit", datatype=Commit)