Skip to content

Commit adb133d

Browse files
authored
Merge pull request #785 from Labelbox/AL-4334-add-get-one-method-to-sdk-paginator
add get_one and get_many methods to paginated collection
2 parents 9a16b0c + 34c864a commit adb133d

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

labelbox/pagination.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,32 @@ def __next__(self):
7979
self._data_ind += 1
8080
return rval
8181

82+
def get_one(self):
83+
"""Iterates over self and returns first value
84+
This method is idempotent
85+
"""
86+
for value in self:
87+
return value
88+
89+
def get_many(self, n: int):
90+
"""Iterates over self and returns first n results
91+
This method is idempotent
92+
93+
Args:
94+
n (int): Number of elements to retrieve
95+
"""
96+
results = []
97+
i = 0
98+
99+
for value in self:
100+
if i >= n:
101+
break
102+
103+
results.append(value)
104+
i += 1
105+
106+
return results
107+
82108

83109
class _Pagination(ABC):
84110

tests/integration/test_dataset.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,14 @@ def test_dataset(client, rand_gen):
2121
assert len(after) == len(before) + 1
2222
assert dataset in after
2323

24+
# confirm get_one returns first dataset
25+
get_one_dataset = client.get_datasets().get_one()
26+
assert get_one_dataset.uid == after[0].uid
27+
28+
# confirm get_many(1) returns first dataset
29+
get_many_datasets = client.get_datasets().get_many(1)
30+
assert get_many_datasets[0].uid == after[0].uid
31+
2432
dataset = client.get_dataset(dataset.uid)
2533
assert dataset.name == name
2634

0 commit comments

Comments
 (0)