44 < meta name ="viewport " content ="width=device-width,initial-scale=1 ">
55 < meta name ="color-scheme " content ="light dark "> < link rel ="index " title ="Index " href ="../../../genindex.html "> < link rel ="search " title ="Search " href ="../../../search.html ">
66
7- <!-- Generated with Sphinx 7.4.7 and Furo 2025.09.25 -->
7+ < link rel =" shortcut icon " href =" ../../../_static/favicon.png " > < !-- Generated with Sphinx 7.4.7 and Furo 2025.12.19 -->
88 < title > runloop_api_client.lib.polling - Runloop Python SDK documentation</ title >
99 < link rel ="stylesheet " type ="text/css " href ="../../../_static/pygments.css?v=d111a655 " />
10- < link rel ="stylesheet " type ="text/css " href ="../../../_static/styles/furo.css?v=580074bf " />
10+ < link rel ="stylesheet " type ="text/css " href ="../../../_static/styles/furo.css?v=7bdb33bb " />
11+ < link rel ="stylesheet " type ="text/css " href ="../../../_static/tabs.css?v=a5c4661c " />
1112 < link rel ="stylesheet " type ="text/css " href ="../../../_static/styles/furo-extensions.css?v=8dab3a3b " />
1213
1314
189190 < input type ="hidden " name ="area " value ="default ">
190191</ form >
191192< div id ="searchbox "> </ div > < div class ="sidebar-scroll "> < div class ="sidebar-tree ">
192- < p class ="caption " role ="heading "> < span class ="caption-text "> Contents: </ span > </ p >
193+ < p class ="caption " role ="heading "> < span class ="caption-text "> API Reference </ span > </ p >
193194< ul >
194- < li class ="toctree-l1 has-children "> < a class ="reference internal " href ="../../../sdk/index.html "> SDK Reference</ a > < input aria-label ="Toggle navigation of SDK Reference " class ="toctree-checkbox " id ="toctree-checkbox-1 " name ="toctree-checkbox-1 " role ="switch " type ="checkbox "/> < label for ="toctree-checkbox-1 "> < span class ="icon "> < svg > < use href ="#svg-arrow-right "> </ use > </ svg > </ span > </ label > < ul >
195- < li class ="toctree-l2 has-children "> < a class ="reference internal " href ="../../../sdk/sync/index.html "> Synchronous SDK</ a > < input aria-label ="Toggle navigation of Synchronous SDK " class ="toctree-checkbox " id ="toctree-checkbox-2 " name ="toctree-checkbox-2 " role ="switch " type ="checkbox "/> < label for ="toctree-checkbox-2 "> < span class ="icon "> < svg > < use href ="#svg-arrow-right "> </ use > </ svg > </ span > </ label > < ul >
196- < li class ="toctree-l3 "> < a class ="reference internal " href ="../../../sdk/sync/devbox.html "> Devbox</ a > </ li >
197- < li class ="toctree-l3 "> < a class ="reference internal " href ="../../../sdk/sync/execution.html "> Execution</ a > </ li >
198- < li class ="toctree-l3 "> < a class ="reference internal " href ="../../../sdk/sync/execution_result.html "> Execution Result</ a > </ li >
199- < li class ="toctree-l3 "> < a class ="reference internal " href ="../../../sdk/sync/blueprint.html "> Blueprint</ a > </ li >
200- < li class ="toctree-l3 "> < a class ="reference internal " href ="../../../sdk/sync/snapshot.html "> Snapshot</ a > </ li >
201- < li class ="toctree-l3 "> < a class ="reference internal " href ="../../../sdk/sync/storage_object.html "> Storage Object</ a > </ li >
202- </ ul >
203- </ li >
204- < li class ="toctree-l2 has-children "> < a class ="reference internal " href ="../../../sdk/async/index.html "> Asynchronous SDK</ a > < input aria-label ="Toggle navigation of Asynchronous SDK " class ="toctree-checkbox " id ="toctree-checkbox-3 " name ="toctree-checkbox-3 " role ="switch " type ="checkbox "/> < label for ="toctree-checkbox-3 "> < span class ="icon "> < svg > < use href ="#svg-arrow-right "> </ use > </ svg > </ span > </ label > < ul >
205- < li class ="toctree-l3 "> < a class ="reference internal " href ="../../../sdk/async/devbox.html "> Devbox</ a > </ li >
206- < li class ="toctree-l3 "> < a class ="reference internal " href ="../../../sdk/async/execution.html "> Execution</ a > </ li >
207- < li class ="toctree-l3 "> < a class ="reference internal " href ="../../../sdk/async/execution_result.html "> Execution Result</ a > </ li >
208- < li class ="toctree-l3 "> < a class ="reference internal " href ="../../../sdk/async/blueprint.html "> Blueprint</ a > </ li >
209- < li class ="toctree-l3 "> < a class ="reference internal " href ="../../../sdk/async/snapshot.html "> Snapshot</ a > </ li >
210- < li class ="toctree-l3 "> < a class ="reference internal " href ="../../../sdk/async/storage_object.html "> Storage Object</ a > </ li >
211- </ ul >
212- </ li >
213- < li class ="toctree-l2 "> < a class ="reference internal " href ="../../../sdk/types.html "> Type Reference</ a > </ li >
195+ < li class ="toctree-l1 has-children "> < a class ="reference internal " href ="../../../api/index.html "> API Reference</ a > < input aria-label ="Toggle navigation of API Reference " class ="toctree-checkbox " id ="toctree-checkbox-1 " name ="toctree-checkbox-1 " role ="switch " type ="checkbox "/> < label for ="toctree-checkbox-1 "> < span class ="icon "> < svg > < use href ="#svg-arrow-right "> </ use > </ svg > </ span > </ label > < ul >
196+ < li class ="toctree-l2 "> < a class ="reference internal " href ="../../../api/core.html "> Core Module</ a > </ li >
197+ < li class ="toctree-l2 "> < a class ="reference internal " href ="../../../api/devbox.html "> Devbox</ a > </ li >
198+ < li class ="toctree-l2 "> < a class ="reference internal " href ="../../../api/execution.html "> Execution</ a > </ li >
199+ < li class ="toctree-l2 "> < a class ="reference internal " href ="../../../api/execution_result.html "> Execution Result</ a > </ li >
200+ < li class ="toctree-l2 "> < a class ="reference internal " href ="../../../api/blueprint.html "> Blueprint</ a > </ li >
201+ < li class ="toctree-l2 "> < a class ="reference internal " href ="../../../api/snapshot.html "> Snapshot</ a > </ li >
202+ < li class ="toctree-l2 "> < a class ="reference internal " href ="../../../api/storage_object.html "> Storage Object</ a > </ li >
203+ < li class ="toctree-l2 "> < a class ="reference internal " href ="../../../api/agent.html "> Agent</ a > </ li >
204+ < li class ="toctree-l2 "> < a class ="reference internal " href ="../../../api/scorer.html "> Scorer</ a > </ li >
205+ < li class ="toctree-l2 "> < a class ="reference internal " href ="../../../api/scenario.html "> Scenario</ a > </ li >
206+ < li class ="toctree-l2 "> < a class ="reference internal " href ="../../../api/scenario_builder.html "> Scenario Builder</ a > </ li >
207+ < li class ="toctree-l2 "> < a class ="reference internal " href ="../../../api/scenario_run.html "> Scenario Run</ a > </ li >
208+ < li class ="toctree-l2 "> < a class ="reference internal " href ="../../../api/benchmark.html "> Benchmark</ a > </ li >
209+ < li class ="toctree-l2 "> < a class ="reference internal " href ="../../../api/benchmark_run.html "> Benchmark Run</ a > </ li >
210+ < li class ="toctree-l2 "> < a class ="reference internal " href ="../../../api/axon.html "> Axon</ a > </ li >
211+ < li class ="toctree-l2 "> < a class ="reference internal " href ="../../../api/secret.html "> Secret</ a > </ li >
212+ < li class ="toctree-l2 "> < a class ="reference internal " href ="../../../api/mcp_config.html "> MCP Config</ a > </ li >
213+ < li class ="toctree-l2 "> < a class ="reference internal " href ="../../../api/gateway_config.html "> Gateway Config</ a > </ li >
214+ < li class ="toctree-l2 "> < a class ="reference internal " href ="../../../api/network_policy.html "> Network Policy</ a > </ li >
215+ < li class ="toctree-l2 "> < a class ="reference internal " href ="../../../api/types.html "> Type Reference</ a > </ li >
214216</ ul >
215217</ li >
216218</ ul >
247249 < article role ="main " id ="furo-main-content ">
248250 < h1 > Source code for runloop_api_client.lib.polling</ h1 > < div class ="highlight "> < pre >
249251< span > </ span > < span class ="kn "> import</ span > < span class ="w "> </ span > < span class ="nn "> time</ span >
250- < span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> typing</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> Any</ span > < span class ="p "> ,</ span > < span class ="n "> TypeVar</ span > < span class ="p "> ,</ span > < span class ="n "> Callable</ span > < span class ="p "> ,</ span > < span class ="n "> Optional</ span >
252+ < span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> typing</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> Any</ span > < span class ="p "> ,</ span > < span class ="n "> Union </ span > < span class =" p " > , </ span > < span class =" n " > TypeVar</ span > < span class ="p "> ,</ span > < span class ="n "> Callable</ span > < span class ="p "> ,</ span > < span class ="n "> Optional</ span >
251253< span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> dataclasses</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> dataclass</ span >
252254
253255< span class ="n "> T</ span > < span class ="o "> =</ span > < span class ="n "> TypeVar</ span > < span class ="p "> (</ span > < span class ="s2 "> "T"</ span > < span class ="p "> )</ span >
254256
255257
256258< div class ="viewcode-block " id ="PollingConfig ">
257- < a class ="viewcode-back " href ="../../../sdk /types.html#runloop_api_client.sdk._types.PollingConfig "> [docs]</ a >
259+ < a class ="viewcode-back " href ="../../../api /types.html#runloop_api_client.sdk._types.PollingConfig "> [docs]</ a >
258260< span class ="nd "> @dataclass</ span >
259261< span class ="k "> class</ span > < span class ="w "> </ span > < span class ="nc "> PollingConfig</ span > < span class ="p "> :</ span >
260262< span class ="w "> </ span > < span class ="sd "> """Configuration for polling behavior"""</ span >
@@ -324,6 +326,49 @@ <h1>Source code for runloop_api_client.lib.polling</h1><div class="highlight"><p
324326 < span class ="k "> raise</ span > < span class ="n "> PollingTimeout</ span > < span class ="p "> (</ span > < span class ="sa "> f</ span > < span class ="s2 "> "Exceeded timeout of </ span > < span class ="si "> {</ span > < span class ="n "> config</ span > < span class ="o "> .</ span > < span class ="n "> timeout_seconds</ span > < span class ="si "> }</ span > < span class ="s2 "> seconds"</ span > < span class ="p "> ,</ span > < span class ="n "> last_result</ span > < span class ="p "> )</ span >
325327
326328 < span class ="n "> time</ span > < span class ="o "> .</ span > < span class ="n "> sleep</ span > < span class ="p "> (</ span > < span class ="n "> config</ span > < span class ="o "> .</ span > < span class ="n "> interval_seconds</ span > < span class ="p "> )</ span >
329+
330+
331+ < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="nf "> retry_server_poll_until</ span > < span class ="p "> (</ span >
332+ < span class ="n "> retriever</ span > < span class ="p "> :</ span > < span class ="n "> Callable</ span > < span class ="p "> [[</ span > < span class ="nb "> float</ span > < span class ="p "> ],</ span > < span class ="n "> T</ span > < span class ="p "> ],</ span >
333+ < span class ="n "> is_terminal</ span > < span class ="p "> :</ span > < span class ="n "> Callable</ span > < span class ="p "> [[</ span > < span class ="n "> T</ span > < span class ="p "> ],</ span > < span class ="nb "> bool</ span > < span class ="p "> ],</ span >
334+ < span class ="n "> timeout_seconds</ span > < span class ="p "> :</ span > < span class ="nb "> float</ span > < span class ="o "> =</ span > < span class ="mf "> 30.0</ span > < span class ="p "> ,</ span >
335+ < span class ="n "> on_error</ span > < span class ="p "> :</ span > < span class ="n "> Optional</ span > < span class ="p "> [</ span > < span class ="n "> Callable</ span > < span class ="p "> [[</ span > < span class ="ne "> Exception</ span > < span class ="p "> ],</ span > < span class ="n "> T</ span > < span class ="p "> ]]</ span > < span class ="o "> =</ span > < span class ="kc "> None</ span > < span class ="p "> ,</ span >
336+ < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="n "> T</ span > < span class ="p "> :</ span >
337+ < span class ="w "> </ span > < span class ="sd "> """</ span >
338+ < span class ="sd "> Retry a server-side long-poll until a condition is met or max timeout is reached.</ span >
339+
340+ < span class ="sd "> Args:</ span >
341+ < span class ="sd "> retriever: Callable that takes the remaining timeout (seconds) and</ span >
342+ < span class ="sd "> returns the object to check.</ span >
343+ < span class ="sd "> is_terminal: Callable that returns True when polling should stop</ span >
344+ < span class ="sd "> timeout_seconds: Total time to wait. Must be > 0</ span >
345+ < span class ="sd "> on_error: Optional error handler that can return a value to continue polling</ span >
346+ < span class ="sd "> or re-raise the exception to stop polling</ span >
347+
348+ < span class ="sd "> Returns:</ span >
349+ < span class ="sd "> The final state of the polled object</ span >
350+
351+ < span class ="sd "> Raises:</ span >
352+ < span class ="sd "> PollingTimeout: When max attempts or timeout is reached</ span >
353+ < span class ="sd "> """</ span >
354+ < span class ="n "> last_result</ span > < span class ="p "> :</ span > < span class ="n "> Union</ span > < span class ="p "> [</ span > < span class ="n "> T</ span > < span class ="p "> ,</ span > < span class ="kc "> None</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="kc "> None</ span >
355+ < span class ="n "> start_time</ span > < span class ="o "> =</ span > < span class ="n "> time</ span > < span class ="o "> .</ span > < span class ="n "> time</ span > < span class ="p "> ()</ span >
356+
357+ < span class ="k "> while</ span > < span class ="kc "> True</ span > < span class ="p "> :</ span >
358+ < span class ="n "> remaining_time</ span > < span class ="o "> =</ span > < span class ="n "> timeout_seconds</ span > < span class ="o "> -</ span > < span class ="p "> (</ span > < span class ="n "> time</ span > < span class ="o "> .</ span > < span class ="n "> time</ span > < span class ="p "> ()</ span > < span class ="o "> -</ span > < span class ="n "> start_time</ span > < span class ="p "> )</ span >
359+ < span class ="k "> if</ span > < span class ="n "> remaining_time</ span > < span class ="o "> <=</ span > < span class ="mi "> 0</ span > < span class ="p "> :</ span >
360+ < span class ="k "> raise</ span > < span class ="n "> PollingTimeout</ span > < span class ="p "> (</ span > < span class ="sa "> f</ span > < span class ="s2 "> "Exceeded timeout of </ span > < span class ="si "> {</ span > < span class ="n "> timeout_seconds</ span > < span class ="si "> }</ span > < span class ="s2 "> seconds"</ span > < span class ="p "> ,</ span > < span class ="n "> last_result</ span > < span class ="p "> )</ span >
361+
362+ < span class ="k "> try</ span > < span class ="p "> :</ span >
363+ < span class ="n "> last_result</ span > < span class ="o "> =</ span > < span class ="n "> retriever</ span > < span class ="p "> (</ span > < span class ="n "> remaining_time</ span > < span class ="p "> )</ span >
364+ < span class ="k "> except</ span > < span class ="ne "> Exception</ span > < span class ="k "> as</ span > < span class ="n "> e</ span > < span class ="p "> :</ span >
365+ < span class ="k "> if</ span > < span class ="n "> on_error</ span > < span class ="ow "> is</ span > < span class ="ow "> not</ span > < span class ="kc "> None</ span > < span class ="p "> :</ span >
366+ < span class ="n "> last_result</ span > < span class ="o "> =</ span > < span class ="n "> on_error</ span > < span class ="p "> (</ span > < span class ="n "> e</ span > < span class ="p "> )</ span >
367+ < span class ="k "> else</ span > < span class ="p "> :</ span >
368+ < span class ="k "> raise</ span >
369+
370+ < span class ="k "> if</ span > < span class ="n "> is_terminal</ span > < span class ="p "> (</ span > < span class ="n "> last_result</ span > < span class ="p "> ):</ span >
371+ < span class ="k "> return</ span > < span class ="n "> last_result</ span >
327372</ pre > </ div >
328373 </ article >
329374 </ div >
@@ -356,9 +401,10 @@ <h1>Source code for runloop_api_client.lib.polling</h1><div class="highlight"><p
356401
357402 </ aside >
358403 </ div >
359- </ div > < script src ="../../../_static/documentation_options.js?v=5929fcd5 "> </ script >
404+ </ div > < script src ="../../../_static/documentation_options.js?v=8a448e45 "> </ script >
360405 < script src ="../../../_static/doctools.js?v=9a2dae69 "> </ script >
361406 < script src ="../../../_static/sphinx_highlight.js?v=dc90522c "> </ script >
362407 < script src ="../../../_static/scripts/furo.js?v=46bd48cc "> </ script >
408+ < script src ="../../../_static/tabs.js?v=3030b3cb "> </ script >
363409 </ body >
364410</ html >
0 commit comments