@@ -917,14 +917,12 @@ def _query(
917
917
self ._next_url = next_url
918
918
except KeyError :
919
919
self ._next_url = None
920
- self ._current_page : Optional [Union [str , int ]] = result .headers .get ("X-Page" )
921
- self ._prev_page : Optional [Union [str , int ]] = result .headers .get ("X-Prev-Page" )
922
- self ._next_page : Optional [Union [str , int ]] = result .headers .get ("X-Next-Page" )
923
- self ._per_page : Optional [Union [str , int ]] = result .headers .get ("X-Per-Page" )
924
- self ._total_pages : Optional [Union [str , int ]] = result .headers .get (
925
- "X-Total-Pages"
926
- )
927
- self ._total : Optional [Union [str , int ]] = result .headers .get ("X-Total" )
920
+ self ._current_page : Optional [str ] = result .headers .get ("X-Page" )
921
+ self ._prev_page : Optional [str ] = result .headers .get ("X-Prev-Page" )
922
+ self ._next_page : Optional [str ] = result .headers .get ("X-Next-Page" )
923
+ self ._per_page : Optional [str ] = result .headers .get ("X-Per-Page" )
924
+ self ._total_pages : Optional [str ] = result .headers .get ("X-Total-Pages" )
925
+ self ._total : Optional [str ] = result .headers .get ("X-Total" )
928
926
929
927
try :
930
928
self ._data : List [Dict [str , Any ]] = result .json ()
@@ -965,19 +963,22 @@ def per_page(self) -> int:
965
963
assert self ._per_page is not None
966
964
return int (self ._per_page )
967
965
966
+ # NOTE(jlvillal): When a query returns more than 10,000 items, GitLab doesn't return
967
+ # the headers 'x-total-pages' and 'x-total'. In those cases we return None.
968
+ # https://docs.gitlab.com/ee/user/gitlab_com/index.html#pagination-response-headers
968
969
@property
969
- def total_pages (self ) -> int :
970
+ def total_pages (self ) -> Optional [ int ] :
970
971
"""The total number of pages."""
971
- if TYPE_CHECKING :
972
- assert self ._total_pages is not None
973
- return int ( self . _total_pages )
972
+ if self . _total_pages is not None :
973
+ return int ( self ._total_pages )
974
+ return None
974
975
975
976
@property
976
- def total (self ) -> int :
977
+ def total (self ) -> Optional [ int ] :
977
978
"""The total number of items."""
978
- if TYPE_CHECKING :
979
- assert self ._total is not None
980
- return int ( self . _total )
979
+ if self . _total is not None :
980
+ return int ( self ._total )
981
+ return None
981
982
982
983
def __iter__ (self ) -> "GitlabList" :
983
984
return self
0 commit comments