Skip to content

Commit f21de61

Browse files
authored
python(fix): expose page_size on resource list_ methods (#548)
1 parent 5bb4667 commit f21de61

12 files changed

Lines changed: 100 additions & 2 deletions

File tree

python/lib/sift_client/_internal/low_level_wrappers/calculated_channels.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,7 @@ async def list_all_calculated_channel_versions(
259259
query_filter: str | None = None,
260260
order_by: str | None = None,
261261
limit: int | None = None,
262+
page_size: int | None = DEFAULT_PAGE_SIZE,
262263
) -> list[CalculatedChannel]:
263264
"""List all versions of a calculated channel."""
264265
return await self._handle_pagination(
@@ -271,4 +272,5 @@ async def list_all_calculated_channel_versions(
271272
},
272273
order_by=order_by,
273274
max_results=limit,
275+
page_size=page_size,
274276
)

python/lib/sift_client/resources/assets.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ async def list_(
8989
filter_query: str | None = None,
9090
order_by: str | None = None,
9191
limit: int | None = None,
92+
page_size: int | None = None,
9293
) -> list[Asset]:
9394
"""List assets with optional filtering.
9495
@@ -111,6 +112,8 @@ async def list_(
111112
filter_query: Explicit CEL query to filter assets.
112113
order_by: Field and direction to order results by.
113114
limit: Maximum number of assets to return. If None, returns all matches.
115+
page_size: Number of results to fetch per request. Lower this if you hit gRPC
116+
message size limits on responses. If None, uses the server default.
114117
115118
Returns:
116119
A list of Asset objects that match the filter criteria.
@@ -142,6 +145,7 @@ async def list_(
142145
query_filter=filter_query or None,
143146
order_by=order_by,
144147
max_results=limit,
148+
**({"page_size": page_size} if page_size is not None else {}),
145149
)
146150
return self._apply_client_to_instances(assets)
147151

python/lib/sift_client/resources/calculated_channels.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ async def list_(
101101
filter_query: str | None = None,
102102
order_by: str | None = None,
103103
limit: int | None = None,
104+
page_size: int | None = None,
104105
) -> list[CalculatedChannel]:
105106
"""List calculated channels with optional filtering. This will return the latest version. To find all versions, use `list_versions`.
106107
@@ -127,6 +128,8 @@ async def list_(
127128
filter_query: Explicit CEL query to filter calculated channels.
128129
order_by: How to order the retrieved calculated channels.
129130
limit: How many calculated channels to retrieve. If None, retrieves all matches.
131+
page_size: Number of results to fetch per request. Lower this if you hit gRPC
132+
message size limits on responses. If None, uses the server default.
130133
131134
Returns:
132135
A list of CalculatedChannels that matches the filter.
@@ -169,6 +172,7 @@ async def list_(
169172
query_filter=query_filter or None,
170173
order_by=order_by,
171174
max_results=limit,
175+
**({"page_size": page_size} if page_size is not None else {}), # type: ignore[arg-type]
172176
)
173177
return self._apply_client_to_instances(calculated_channels)
174178

@@ -304,6 +308,7 @@ async def list_versions(
304308
filter_query: str | None = None,
305309
order_by: str | None = None,
306310
limit: int | None = None,
311+
page_size: int | None = None,
307312
) -> list[CalculatedChannel]:
308313
"""List versions of a calculated channel.
309314
@@ -327,6 +332,8 @@ async def list_versions(
327332
filter_query: Explicit CEL query to filter versions.
328333
order_by: How to order the retrieved versions.
329334
limit: Maximum number of versions to return. If None, returns all matches.
335+
page_size: Number of results to fetch per request. Lower this if you hit gRPC
336+
message size limits on responses. If None, uses the server default.
330337
331338
Returns:
332339
A list of CalculatedChannel versions that match the filter criteria.
@@ -360,6 +367,7 @@ async def list_versions(
360367
query_filter=query_filter or None,
361368
order_by=order_by,
362369
limit=limit,
370+
**({"page_size": page_size} if page_size is not None else {}), # type: ignore[arg-type]
363371
)
364372

365373
return self._apply_client_to_instances(versions)

python/lib/sift_client/resources/channels.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ async def list_(
103103
filter_query: str | None = None,
104104
order_by: str | None = None,
105105
limit: int | None = None,
106+
page_size: int | None = None,
106107
) -> list[Channel]:
107108
"""List channels with optional filtering.
108109
@@ -124,6 +125,8 @@ async def list_(
124125
filter_query: Explicit CEL query to filter channels.
125126
order_by: Field and direction to order results by.
126127
limit: Maximum number of channels to return. If None, returns all matches.
128+
page_size: Number of results to fetch per request. Lower this if you hit gRPC
129+
message size limits on responses. If None, uses the server default.
127130
128131
Returns:
129132
A list of Channels that matches the filter criteria.
@@ -167,6 +170,7 @@ async def list_(
167170
query_filter=query_filter or None,
168171
order_by=order_by,
169172
max_results=limit,
173+
**({"page_size": page_size} if page_size is not None else {}),
170174
)
171175
return self._apply_client_to_instances(channels)
172176

python/lib/sift_client/resources/file_attachments.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ async def list_(
104104
filter_query: str | None = None,
105105
order_by: str | None = None,
106106
limit: int | None = None,
107+
page_size: int | None = None,
107108
) -> list[FileAttachment]:
108109
"""List file attachments with optional filtering.
109110
@@ -120,6 +121,8 @@ async def list_(
120121
filter_query: Explicit CEL query to filter file attachments.
121122
order_by: Field and direction to order results by. Note: Not supported by the backend, but it is here for API consistency.
122123
limit: Maximum number of file attachments to return. If None, returns all matches.
124+
page_size: Number of results to fetch per request. Lower this if you hit gRPC
125+
message size limits on responses. If None, uses the server default.
123126
124127
Returns:
125128
A list of FileAttachment objects that match the filter criteria.
@@ -160,6 +163,7 @@ async def list_(
160163
file_attachments = await self._low_level_client.list_all_remote_files(
161164
query_filter=query_filter or None,
162165
max_results=limit,
166+
**({"page_size": page_size} if page_size is not None else {}), # type: ignore[arg-type]
163167
)
164168
return self._apply_client_to_instances(file_attachments)
165169

python/lib/sift_client/resources/jobs.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ async def list_(
7676
# Ordering and pagination
7777
order_by: str | None = None,
7878
limit: int | None = None,
79+
page_size: int | None = None,
7980
) -> list[Job]:
8081
"""List jobs with optional filtering.
8182
@@ -97,6 +98,8 @@ async def list_(
9798
filter_query: Explicit CEL query to filter jobs. If provided, other filter arguments are ignored.
9899
order_by: Field and direction to order results by.
99100
limit: Maximum number of jobs to return. If None, returns all matches.
101+
page_size: Number of results to fetch per request. Lower this if you hit gRPC
102+
message size limits on responses. If None, uses the server default.
100103
101104
Returns:
102105
A list of Job objects that match the filter criteria.
@@ -134,6 +137,7 @@ async def list_(
134137
organization_id=organization_id,
135138
order_by=order_by,
136139
max_results=limit,
140+
**({"page_size": page_size} if page_size is not None else {}),
137141
)
138142
return self._apply_client_to_instances(jobs)
139143

python/lib/sift_client/resources/reports.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ async def list_(
6666
modified_by: str | None = None,
6767
order_by: str | None = None,
6868
limit: int | None = None,
69+
page_size: int | None = None,
6970
include_archived: bool = False,
7071
filter_query: str | None = None,
7172
created_after: datetime | None = None,
@@ -91,6 +92,8 @@ async def list_(
9192
modified_by: The user ID of the last modifier of the reports.
9293
order_by: How to order the retrieved reports.
9394
limit: How many reports to retrieve. If None, retrieves all matches.
95+
page_size: Number of results to fetch per request. Lower this if you hit gRPC
96+
message size limits on responses. If None, uses the server default.
9497
include_archived: Whether to include archived reports.
9598
filter_query: Explicit CEL query to filter reports.
9699
created_after: Filter reports created after this datetime.
@@ -142,6 +145,7 @@ async def list_(
142145
organization_id=organization_id,
143146
order_by=order_by,
144147
max_results=limit,
148+
**({"page_size": page_size} if page_size is not None else {}),
145149
)
146150
return self._apply_client_to_instances(reports)
147151

python/lib/sift_client/resources/rules.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ async def list_(
8484
filter_query: str | None = None,
8585
order_by: str | None = None,
8686
limit: int | None = None,
87+
page_size: int | None = None,
8788
) -> list[Rule]:
8889
"""List rules with optional filtering.
8990
@@ -108,6 +109,8 @@ async def list_(
108109
filter_query: Explicit CEL query to filter rules.
109110
order_by: Field and direction to order results by.
110111
limit: Maximum number of rules to return. If None, returns all matches.
112+
page_size: Number of results to fetch per request. Lower this if you hit gRPC
113+
message size limits on responses. If None, defaults to `limit`.
111114
112115
Returns:
113116
A list of Rules that matches the filter.
@@ -146,7 +149,7 @@ async def list_(
146149
filter_query=query_filter,
147150
order_by=order_by,
148151
max_results=limit,
149-
page_size=limit,
152+
page_size=page_size if page_size is not None else limit,
150153
)
151154
return self._apply_client_to_instances(rules)
152155

@@ -338,6 +341,7 @@ async def list_rule_versions(
338341
rule_version_ids: list[str] | None = None,
339342
filter_query: str | None = None,
340343
limit: int | None = None,
344+
page_size: int | None = None,
341345
) -> list[RuleVersion]:
342346
"""List versions of a rule with optional filtering.
343347
@@ -348,6 +352,8 @@ async def list_rule_versions(
348352
rule_version_ids: Limit to these rule version IDs.
349353
filter_query: Raw CEL filter (fields: rule_version_id, user_notes, change_message).
350354
limit: Maximum number of versions to return. If None, returns all matches.
355+
page_size: Number of results to fetch per request. Lower this if you hit gRPC
356+
message size limits on responses. If None, defaults to `limit`.
351357
352358
Returns:
353359
A list of RuleVersion objects matching the filters, ordered by newest versions first.
@@ -372,7 +378,7 @@ async def list_rule_versions(
372378
rule_id=rule_id,
373379
filter_query=query_filter,
374380
max_results=limit,
375-
page_size=limit,
381+
page_size=page_size if page_size is not None else limit,
376382
)
377383

378384
async def get_rule_version(self, rule_version: RuleVersion | str) -> Rule:

python/lib/sift_client/resources/runs.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ async def list_(
9494
filter_query: str | None = None,
9595
order_by: str | None = None,
9696
limit: int | None = None,
97+
page_size: int | None = None,
9798
) -> list[Run]:
9899
"""List runs with optional filtering.
99100
@@ -126,6 +127,8 @@ async def list_(
126127
filter_query: Explicit CEL query to filter runs.
127128
order_by: Field and direction to order results by.
128129
limit: Maximum number of runs to return. If None, returns all matches.
130+
page_size: Number of results to fetch per request. Lower this if you hit gRPC
131+
message size limits on responses. If None, uses the server default.
129132
130133
Returns:
131134
A list of Run objects that match the filter criteria.
@@ -185,6 +188,7 @@ async def list_(
185188
query_filter=query_filter or None,
186189
order_by=order_by,
187190
max_results=limit,
191+
**({"page_size": page_size} if page_size is not None else {}),
188192
)
189193
return self._apply_client_to_instances(runs)
190194

0 commit comments

Comments
 (0)