diff options
Diffstat (limited to 'gitlab/client.py')
-rw-r--r-- | gitlab/client.py | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/gitlab/client.py b/gitlab/client.py index 84fd40f..c1e0825 100644 --- a/gitlab/client.py +++ b/gitlab/client.py @@ -917,14 +917,12 @@ class GitlabList(object): self._next_url = next_url except KeyError: self._next_url = None - self._current_page: Optional[Union[str, int]] = result.headers.get("X-Page") - self._prev_page: Optional[Union[str, int]] = result.headers.get("X-Prev-Page") - self._next_page: Optional[Union[str, int]] = result.headers.get("X-Next-Page") - self._per_page: Optional[Union[str, int]] = result.headers.get("X-Per-Page") - self._total_pages: Optional[Union[str, int]] = result.headers.get( - "X-Total-Pages" - ) - self._total: Optional[Union[str, int]] = result.headers.get("X-Total") + self._current_page: Optional[str] = result.headers.get("X-Page") + self._prev_page: Optional[str] = result.headers.get("X-Prev-Page") + self._next_page: Optional[str] = result.headers.get("X-Next-Page") + self._per_page: Optional[str] = result.headers.get("X-Per-Page") + self._total_pages: Optional[str] = result.headers.get("X-Total-Pages") + self._total: Optional[str] = result.headers.get("X-Total") try: self._data: List[Dict[str, Any]] = result.json() @@ -965,19 +963,22 @@ class GitlabList(object): assert self._per_page is not None return int(self._per_page) + # NOTE(jlvillal): When a query returns more than 10,000 items, GitLab doesn't return + # the headers 'x-total-pages' and 'x-total'. In those cases we return None. + # https://docs.gitlab.com/ee/user/gitlab_com/index.html#pagination-response-headers @property - def total_pages(self) -> int: + def total_pages(self) -> Optional[int]: """The total number of pages.""" - if TYPE_CHECKING: - assert self._total_pages is not None - return int(self._total_pages) + if self._total_pages is not None: + return int(self._total_pages) + return None @property - def total(self) -> int: + def total(self) -> Optional[int]: """The total number of items.""" - if TYPE_CHECKING: - assert self._total is not None - return int(self._total) + if self._total is not None: + return int(self._total) + return None def __iter__(self) -> "GitlabList": return self |