Skip to content

Commit 99b4484

Browse files
committed
feat: use keyset pagination by default for all=True
1 parent 7843ace commit 99b4484

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

docs/api-usage.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,11 @@ listing methods support the ``page`` and ``per_page`` parameters:
204204
By default GitLab does not return the complete list of items. Use the ``all``
205205
parameter to get all the items when using listing methods:
206206

207+
.. warning::
208+
209+
The all=True option uses keyset pagination by default, if order_by="id"
210+
or if order_by is not supplied.
211+
207212
.. code-block:: python
208213
209214
all_groups = gl.groups.list(all=True)

gitlab/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -640,6 +640,12 @@ def http_list(self, path, query_data=None, as_list=None, **kwargs):
640640
get_all = kwargs.pop("all", False)
641641
url = self._build_url(path)
642642

643+
# use keyset pagination automatically, if all=True
644+
order_by = kwargs.get("order_by")
645+
if get_all and (not order_by or order_by == "id"):
646+
kwargs["pagination"] = "keyset"
647+
kwargs["order_by"] = "id"
648+
643649
if get_all is True and as_list is True:
644650
return list(GitlabList(self, url, query_data, **kwargs))
645651

0 commit comments

Comments
 (0)