14
14
"AsyncRepositoriesCursorIDPage" ,
15
15
"SyncDiskSnapshotsCursorIDPage" ,
16
16
"AsyncDiskSnapshotsCursorIDPage" ,
17
+ "SyncBenchmarksCursorIDPage" ,
18
+ "AsyncBenchmarksCursorIDPage" ,
19
+ "SyncBenchmarkRunsCursorIDPage" ,
20
+ "AsyncBenchmarkRunsCursorIDPage" ,
21
+ "SyncScenariosCursorIDPage" ,
22
+ "AsyncScenariosCursorIDPage" ,
23
+ "SyncScenarioRunsCursorIDPage" ,
24
+ "AsyncScenarioRunsCursorIDPage" ,
17
25
]
18
26
19
27
_T = TypeVar ("_T" )
@@ -39,6 +47,26 @@ class DiskSnapshotsCursorIDPageItem(Protocol):
39
47
id : str
40
48
41
49
50
+ @runtime_checkable
51
+ class BenchmarksCursorIDPageItem (Protocol ):
52
+ id : str
53
+
54
+
55
+ @runtime_checkable
56
+ class BenchmarkRunsCursorIDPageItem (Protocol ):
57
+ id : str
58
+
59
+
60
+ @runtime_checkable
61
+ class ScenariosCursorIDPageItem (Protocol ):
62
+ id : str
63
+
64
+
65
+ @runtime_checkable
66
+ class ScenarioRunsCursorIDPageItem (Protocol ):
67
+ id : str
68
+
69
+
42
70
class SyncBlueprintsCursorIDPage (BaseSyncPage [_T ], BasePage [_T ], Generic [_T ]):
43
71
blueprints : List [_T ]
44
72
has_more : Optional [bool ] = None
@@ -245,3 +273,211 @@ def next_page_info(self) -> Optional[PageInfo]:
245
273
return None
246
274
247
275
return PageInfo (params = {"starting_after" : item .id })
276
+
277
+
278
+ class SyncBenchmarksCursorIDPage (BaseSyncPage [_T ], BasePage [_T ], Generic [_T ]):
279
+ benchmarks : List [_T ]
280
+ has_more : Optional [bool ] = None
281
+ total_count : Optional [int ] = None
282
+
283
+ @override
284
+ def _get_page_items (self ) -> List [_T ]:
285
+ benchmarks = self .benchmarks
286
+ if not benchmarks :
287
+ return []
288
+ return benchmarks
289
+
290
+ @override
291
+ def next_page_info (self ) -> Optional [PageInfo ]:
292
+ benchmarks = self .benchmarks
293
+ if not benchmarks :
294
+ return None
295
+
296
+ item = cast (Any , benchmarks [- 1 ])
297
+ if not isinstance (item , BenchmarksCursorIDPageItem ) or item .id is None : # pyright: ignore[reportUnnecessaryComparison]
298
+ # TODO emit warning log
299
+ return None
300
+
301
+ return PageInfo (params = {"starting_after" : item .id })
302
+
303
+
304
+ class AsyncBenchmarksCursorIDPage (BaseAsyncPage [_T ], BasePage [_T ], Generic [_T ]):
305
+ benchmarks : List [_T ]
306
+ has_more : Optional [bool ] = None
307
+ total_count : Optional [int ] = None
308
+
309
+ @override
310
+ def _get_page_items (self ) -> List [_T ]:
311
+ benchmarks = self .benchmarks
312
+ if not benchmarks :
313
+ return []
314
+ return benchmarks
315
+
316
+ @override
317
+ def next_page_info (self ) -> Optional [PageInfo ]:
318
+ benchmarks = self .benchmarks
319
+ if not benchmarks :
320
+ return None
321
+
322
+ item = cast (Any , benchmarks [- 1 ])
323
+ if not isinstance (item , BenchmarksCursorIDPageItem ) or item .id is None : # pyright: ignore[reportUnnecessaryComparison]
324
+ # TODO emit warning log
325
+ return None
326
+
327
+ return PageInfo (params = {"starting_after" : item .id })
328
+
329
+
330
+ class SyncBenchmarkRunsCursorIDPage (BaseSyncPage [_T ], BasePage [_T ], Generic [_T ]):
331
+ runs : List [_T ]
332
+ has_more : Optional [bool ] = None
333
+ total_count : Optional [int ] = None
334
+
335
+ @override
336
+ def _get_page_items (self ) -> List [_T ]:
337
+ runs = self .runs
338
+ if not runs :
339
+ return []
340
+ return runs
341
+
342
+ @override
343
+ def next_page_info (self ) -> Optional [PageInfo ]:
344
+ runs = self .runs
345
+ if not runs :
346
+ return None
347
+
348
+ item = cast (Any , runs [- 1 ])
349
+ if not isinstance (item , BenchmarkRunsCursorIDPageItem ) or item .id is None : # pyright: ignore[reportUnnecessaryComparison]
350
+ # TODO emit warning log
351
+ return None
352
+
353
+ return PageInfo (params = {"starting_after" : item .id })
354
+
355
+
356
+ class AsyncBenchmarkRunsCursorIDPage (BaseAsyncPage [_T ], BasePage [_T ], Generic [_T ]):
357
+ runs : List [_T ]
358
+ has_more : Optional [bool ] = None
359
+ total_count : Optional [int ] = None
360
+
361
+ @override
362
+ def _get_page_items (self ) -> List [_T ]:
363
+ runs = self .runs
364
+ if not runs :
365
+ return []
366
+ return runs
367
+
368
+ @override
369
+ def next_page_info (self ) -> Optional [PageInfo ]:
370
+ runs = self .runs
371
+ if not runs :
372
+ return None
373
+
374
+ item = cast (Any , runs [- 1 ])
375
+ if not isinstance (item , BenchmarkRunsCursorIDPageItem ) or item .id is None : # pyright: ignore[reportUnnecessaryComparison]
376
+ # TODO emit warning log
377
+ return None
378
+
379
+ return PageInfo (params = {"starting_after" : item .id })
380
+
381
+
382
+ class SyncScenariosCursorIDPage (BaseSyncPage [_T ], BasePage [_T ], Generic [_T ]):
383
+ scenarios : List [_T ]
384
+ has_more : Optional [bool ] = None
385
+ total_count : Optional [int ] = None
386
+
387
+ @override
388
+ def _get_page_items (self ) -> List [_T ]:
389
+ scenarios = self .scenarios
390
+ if not scenarios :
391
+ return []
392
+ return scenarios
393
+
394
+ @override
395
+ def next_page_info (self ) -> Optional [PageInfo ]:
396
+ scenarios = self .scenarios
397
+ if not scenarios :
398
+ return None
399
+
400
+ item = cast (Any , scenarios [- 1 ])
401
+ if not isinstance (item , ScenariosCursorIDPageItem ) or item .id is None : # pyright: ignore[reportUnnecessaryComparison]
402
+ # TODO emit warning log
403
+ return None
404
+
405
+ return PageInfo (params = {"starting_after" : item .id })
406
+
407
+
408
+ class AsyncScenariosCursorIDPage (BaseAsyncPage [_T ], BasePage [_T ], Generic [_T ]):
409
+ scenarios : List [_T ]
410
+ has_more : Optional [bool ] = None
411
+ total_count : Optional [int ] = None
412
+
413
+ @override
414
+ def _get_page_items (self ) -> List [_T ]:
415
+ scenarios = self .scenarios
416
+ if not scenarios :
417
+ return []
418
+ return scenarios
419
+
420
+ @override
421
+ def next_page_info (self ) -> Optional [PageInfo ]:
422
+ scenarios = self .scenarios
423
+ if not scenarios :
424
+ return None
425
+
426
+ item = cast (Any , scenarios [- 1 ])
427
+ if not isinstance (item , ScenariosCursorIDPageItem ) or item .id is None : # pyright: ignore[reportUnnecessaryComparison]
428
+ # TODO emit warning log
429
+ return None
430
+
431
+ return PageInfo (params = {"starting_after" : item .id })
432
+
433
+
434
+ class SyncScenarioRunsCursorIDPage (BaseSyncPage [_T ], BasePage [_T ], Generic [_T ]):
435
+ runs : List [_T ]
436
+ has_more : Optional [bool ] = None
437
+ total_count : Optional [int ] = None
438
+
439
+ @override
440
+ def _get_page_items (self ) -> List [_T ]:
441
+ runs = self .runs
442
+ if not runs :
443
+ return []
444
+ return runs
445
+
446
+ @override
447
+ def next_page_info (self ) -> Optional [PageInfo ]:
448
+ runs = self .runs
449
+ if not runs :
450
+ return None
451
+
452
+ item = cast (Any , runs [- 1 ])
453
+ if not isinstance (item , ScenarioRunsCursorIDPageItem ) or item .id is None : # pyright: ignore[reportUnnecessaryComparison]
454
+ # TODO emit warning log
455
+ return None
456
+
457
+ return PageInfo (params = {"starting_after" : item .id })
458
+
459
+
460
+ class AsyncScenarioRunsCursorIDPage (BaseAsyncPage [_T ], BasePage [_T ], Generic [_T ]):
461
+ runs : List [_T ]
462
+ has_more : Optional [bool ] = None
463
+ total_count : Optional [int ] = None
464
+
465
+ @override
466
+ def _get_page_items (self ) -> List [_T ]:
467
+ runs = self .runs
468
+ if not runs :
469
+ return []
470
+ return runs
471
+
472
+ @override
473
+ def next_page_info (self ) -> Optional [PageInfo ]:
474
+ runs = self .runs
475
+ if not runs :
476
+ return None
477
+
478
+ item = cast (Any , runs [- 1 ])
479
+ if not isinstance (item , ScenarioRunsCursorIDPageItem ) or item .id is None : # pyright: ignore[reportUnnecessaryComparison]
480
+ # TODO emit warning log
481
+ return None
482
+
483
+ return PageInfo (params = {"starting_after" : item .id })
0 commit comments