commit: 0397b96aa7679bbfa64bdd0e4715a741c800bc11 Author: Thomas Bracht Laumann Jespersen <t <AT> laumann <DOT> xyz> AuthorDate: Sat Mar 7 07:28:07 2026 +0000 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> CommitDate: Sat Mar 7 10:39:36 2026 +0000 URL: https://gitweb.gentoo.org/proj/repo-mirror-ci.git/commit/?id=0397b96a
Properly support paginated GET endpoints Signed-off-by: Thomas Bracht Laumann Jespersen <t <AT> laumann.xyz> Part-of: https://github.com/gentoo/repo-mirror-ci/pull/18 Closes: https://github.com/gentoo/repo-mirror-ci/pull/18 Signed-off-by: Michał Górny <mgorny <AT> gentoo.org> pull-request/codebergapi.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/pull-request/codebergapi.py b/pull-request/codebergapi.py index 3c591e4..0bc296a 100644 --- a/pull-request/codebergapi.py +++ b/pull-request/codebergapi.py @@ -63,16 +63,16 @@ class CodebergAPI: f"{self.repos_baseurl}/pulls/{pr_id}", json=({"labels": labels}) ) - def labels(self) -> list[dict]: - return self.session.get(f"{self.repos_baseurl}/labels").json() + def labels(self) -> Generator[None, dict, None]: + return self._get_paginated(f"{self.repos_baseurl}/labels") - def commits(self, pr_id: int) -> list[dict]: + def commits(self, pr_id: int) -> Generator[None, dict, None]: # https://codeberg.org/api/swagger#/repository/repoGetPullRequestCommits - return self.session.get(f"{self.repos_baseurl}/pulls/{pr_id}/commits").json() + return self._get_paginated(f"{self.repos_baseurl}/pulls/{pr_id}/commits") - def commit_statuses(self, sha): + def commit_statuses(self, sha) -> Generator[None, dict, None]: # /repos/{owner}/{repo}/statuses/{sha} - return self.session.get(f"{self.repos_baseurl}/statuses/{sha}").json() + return self._get_paginated(f"{self.repos_baseurl}/statuses/{sha}") def commit_set_status( self, sha, state, description=None, target_url=None, context=None @@ -86,10 +86,10 @@ class CodebergAPI: } self.session.post(f"{self.repos_baseurl}/statuses/{sha}", json=body) - def files(self, pr_id: int) -> list[dict]: - return self.session.get(f"{self.repos_baseurl}/pulls/{pr_id}/files").json() + def files(self, pr_id: int) -> Generator[None, dict, None]: + return self._get_paginated(f"{self.repos_baseurl}/pulls/{pr_id}/files") - def get_comments(self, pr_id: int) -> list[dict]: + def get_comments(self, pr_id: int) -> Generator[None, dict, None]: return self._get_paginated(f"{self.repos_baseurl}/issues/{pr_id}/comments") def create_comment(self, pr_id: int, comment: str) -> None:
