diff --git a/github2/commits.py b/github2/commits.py index a671901..25da151 100644 --- a/github2/commits.py +++ b/github2/commits.py @@ -27,7 +27,7 @@ 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): """List commits on a project .. warning:: @@ -38,9 +38,10 @@ def list(self, project, branch="master", file=None): :param str project: project name :param str branch: branch name, or ``master`` if not given :param str file: optional file filter + :param int page: optional page number (page length=100, raise 404 if too high) """ return self.get_values("list", project, branch, file, - filter="commits", datatype=Commit) + filter="commits", datatype=Commit, page=page) def show(self, project, sha): """Get a specific commit diff --git a/github2/core.py b/github2/core.py index 4a1b619..79658eb 100644 --- a/github2/core.py +++ b/github2/core.py @@ -163,6 +163,11 @@ def get_value(self, *args, **kwargs): def get_values(self, *args, **kwargs): datatype = kwargs.pop("datatype", None) + page = kwargs.pop("page", None) + if page: + if "post_data" not in kwargs: + kwargs["post_data"] = {} + kwargs["post_data"].update({"page": page}) values = self.make_request(*args, **kwargs) if datatype: # Same as above, unicode keys will blow up in **args, so we need to diff --git a/github2/pull_requests.py b/github2/pull_requests.py index c90872e..b7f2f21 100644 --- a/github2/pull_requests.py +++ b/github2/pull_requests.py @@ -84,11 +84,12 @@ def show(self, project, number): return self.get_value(project, str(number), filter="pull", datatype=PullRequest) - def list(self, project, state="open"): + def list(self, project, state="open", page=None): """List all pull requests for a project :param str project: Github project :param str state: can be either ``open`` or ``closed`` + :param int page: optional page number (page length=100, empty result list if too high """ return self.get_values(project, state, filter="pulls", - datatype=PullRequest) + datatype=PullRequest, page=page) diff --git a/github2/repositories.py b/github2/repositories.py index 11ded7a..49078f0 100644 --- a/github2/repositories.py +++ b/github2/repositories.py @@ -39,6 +39,9 @@ class Repositories(GithubCommand): def search(self, query): """Get all repositories that match term. + .. warning: + Return at max 100 repositories + :param str query: term to search issues for """ return self.get_values("search", query, filter="repositories", @@ -62,7 +65,7 @@ def pushable(self): datatype=Repository) - def list(self, user=None): + def list(self, user=None, page=None): """Return a list of all repositories for a user. .. deprecated: 0.4.0 @@ -71,10 +74,11 @@ def list(self, user=None): brittle and will be removed in a future release! :param str user: Github user name to list repositories for + :param int page: optional page number (page length=100, empty result list if too high """ user = user or self.request.username return self.get_values("show", user, filter="repositories", - datatype=Repository) + datatype=Repository, page=page) @requires_auth def watch(self, project): @@ -208,14 +212,15 @@ def watchers(self, project): """ return self.get_values("show", project, "watchers", filter="watchers") - def watching(self, for_user=None): + def watching(self, for_user=None, page=None): """Lists all the repos a user is watching :param str for_user: optional Github user name to list repositories for + :param int page: optional page number (page length=100, empty result list if too high """ for_user = for_user or self.request.username return self.get_values("watched", for_user, filter="repositories", - datatype=Repository) + datatype=Repository, page=page) def list_contributors(self, project): """Lists all the contributors in a project diff --git a/github2/users.py b/github2/users.py index 19efcca..15522bc 100644 --- a/github2/users.py +++ b/github2/users.py @@ -43,6 +43,9 @@ class Users(GithubCommand): def search(self, query): """Search for users + .. warning: + Return at max 100 users + :param str query: term to search for """ return self.get_values("search", urllib.quote_plus(query),