@@ -917,14 +917,12 @@ def _query(
917917 self ._next_url = next_url
918918 except KeyError :
919919 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" )
928926
929927 try :
930928 self ._data : List [Dict [str , Any ]] = result .json ()
@@ -965,19 +963,22 @@ def per_page(self) -> int:
965963 assert self ._per_page is not None
966964 return int (self ._per_page )
967965
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
968969 @property
969- def total_pages (self ) -> int :
970+ def total_pages (self ) -> Optional [ int ] :
970971 """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
974975
975976 @property
976- def total (self ) -> int :
977+ def total (self ) -> Optional [ int ] :
977978 """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
981982
982983 def __iter__ (self ) -> "GitlabList" :
983984 return self
0 commit comments