|
3 | 3 | from argparse import ArgumentParser |
4 | 4 | import fnmatch |
5 | 5 | from functools import cache |
| 6 | +from itertools import count |
6 | 7 | import json |
7 | 8 | import logging |
8 | 9 | import os |
@@ -72,13 +73,18 @@ def get_changed_files(pr_number: int, sha: t.Optional[str] = None) -> t.Set[str] |
72 | 73 | """ |
73 | 74 | rest_check_failed = False |
74 | 75 | if sha is None: |
| 76 | + files = set() |
75 | 77 | try: |
76 | | - url = f"https://api.github.com/repos/datadog/dd-trace-py/pulls/{pr_number}/files" |
77 | | - headers = {"Accept": "application/vnd.github+json"} |
78 | | - return {_["filename"] for _ in json.load(urlopen(Request(url, headers=headers)))} |
| 78 | + for page in count(1): |
| 79 | + url = f"https://api.github.com/repos/datadog/dd-trace-py/pulls/{pr_number}/files?page={page}" |
| 80 | + headers = {"Accept": "application/vnd.github+json"} |
| 81 | + result = {_["filename"] for _ in json.load(urlopen(Request(url, headers=headers)))} |
| 82 | + if not result: |
| 83 | + return files |
| 84 | + files |= result |
79 | 85 | except Exception: |
80 | 86 | rest_check_failed = True |
81 | | - LOGGER.warning("Failed to get changed files from GitHub API") |
| 87 | + LOGGER.warning("Failed to get changed files from GitHub API", exc_info=True) |
82 | 88 |
|
83 | 89 | if sha is not None or rest_check_failed: |
84 | 90 | diff_base = sha or get_merge_base(pr_number) |
@@ -175,7 +181,9 @@ def main() -> bool: |
175 | 181 |
|
176 | 182 | argp.add_argument("suite", help="The suite to use", type=str) |
177 | 183 | argp.add_argument("--pr", help="The PR number", type=int, default=_get_pr_number()) |
178 | | - argp.add_argument("--sha", help="Commit hash to use as diff base (defaults to PR merge root)", type=lambda v: v or None) |
| 184 | + argp.add_argument( |
| 185 | + "--sha", help="Commit hash to use as diff base (defaults to PR merge root)", type=lambda v: v or None |
| 186 | + ) |
179 | 187 | argp.add_argument("--verbose", "-v", action="store_true", help="Verbose output") |
180 | 188 |
|
181 | 189 | args = argp.parse_args() |
|
0 commit comments