99from ..._compat import cached_property
1010from ..._resource import SyncAPIResource , AsyncAPIResource
1111from ..._response import (
12+ BinaryAPIResponse ,
13+ AsyncBinaryAPIResponse ,
14+ StreamedBinaryAPIResponse ,
15+ AsyncStreamedBinaryAPIResponse ,
1216 to_raw_response_wrapper ,
1317 to_streamed_response_wrapper ,
1418 async_to_raw_response_wrapper ,
19+ to_custom_raw_response_wrapper ,
1520 async_to_streamed_response_wrapper ,
21+ to_custom_streamed_response_wrapper ,
22+ async_to_custom_raw_response_wrapper ,
23+ async_to_custom_streamed_response_wrapper ,
1624)
1725from ...pagination import SyncBenchmarkRunsCursorIDPage , AsyncBenchmarkRunsCursorIDPage
1826from ..._base_client import AsyncPaginator , make_request_options
@@ -210,6 +218,48 @@ def complete(
210218 cast_to = ScenarioRunView ,
211219 )
212220
221+ def download_logs (
222+ self ,
223+ id : str ,
224+ * ,
225+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
226+ # The extra values given here take precedence over values defined on the client or passed to this method.
227+ extra_headers : Headers | None = None ,
228+ extra_query : Query | None = None ,
229+ extra_body : Body | None = None ,
230+ timeout : float | httpx .Timeout | None | NotGiven = NOT_GIVEN ,
231+ idempotency_key : str | None = None ,
232+ ) -> BinaryAPIResponse :
233+ """
234+ Download a zip file containing all logs for a Scenario run from the associated
235+ devbox.
236+
237+ Args:
238+ extra_headers: Send extra headers
239+
240+ extra_query: Add additional query parameters to the request
241+
242+ extra_body: Add additional JSON properties to the request
243+
244+ timeout: Override the client-level default timeout for this request, in seconds
245+
246+ idempotency_key: Specify a custom idempotency key for this request
247+ """
248+ if not id :
249+ raise ValueError (f"Expected a non-empty value for `id` but received { id !r} " )
250+ extra_headers = {"Accept" : "application/zip" , ** (extra_headers or {})}
251+ return self ._post (
252+ f"/v1/scenarios/runs/{ id } /download_logs" ,
253+ options = make_request_options (
254+ extra_headers = extra_headers ,
255+ extra_query = extra_query ,
256+ extra_body = extra_body ,
257+ timeout = timeout ,
258+ idempotency_key = idempotency_key ,
259+ ),
260+ cast_to = BinaryAPIResponse ,
261+ )
262+
213263 def score (
214264 self ,
215265 id : str ,
@@ -439,6 +489,48 @@ async def complete(
439489 cast_to = ScenarioRunView ,
440490 )
441491
492+ async def download_logs (
493+ self ,
494+ id : str ,
495+ * ,
496+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
497+ # The extra values given here take precedence over values defined on the client or passed to this method.
498+ extra_headers : Headers | None = None ,
499+ extra_query : Query | None = None ,
500+ extra_body : Body | None = None ,
501+ timeout : float | httpx .Timeout | None | NotGiven = NOT_GIVEN ,
502+ idempotency_key : str | None = None ,
503+ ) -> AsyncBinaryAPIResponse :
504+ """
505+ Download a zip file containing all logs for a Scenario run from the associated
506+ devbox.
507+
508+ Args:
509+ extra_headers: Send extra headers
510+
511+ extra_query: Add additional query parameters to the request
512+
513+ extra_body: Add additional JSON properties to the request
514+
515+ timeout: Override the client-level default timeout for this request, in seconds
516+
517+ idempotency_key: Specify a custom idempotency key for this request
518+ """
519+ if not id :
520+ raise ValueError (f"Expected a non-empty value for `id` but received { id !r} " )
521+ extra_headers = {"Accept" : "application/zip" , ** (extra_headers or {})}
522+ return await self ._post (
523+ f"/v1/scenarios/runs/{ id } /download_logs" ,
524+ options = make_request_options (
525+ extra_headers = extra_headers ,
526+ extra_query = extra_query ,
527+ extra_body = extra_body ,
528+ timeout = timeout ,
529+ idempotency_key = idempotency_key ,
530+ ),
531+ cast_to = AsyncBinaryAPIResponse ,
532+ )
533+
442534 async def score (
443535 self ,
444536 id : str ,
@@ -496,6 +588,10 @@ def __init__(self, runs: RunsResource) -> None:
496588 self .complete = to_raw_response_wrapper (
497589 runs .complete ,
498590 )
591+ self .download_logs = to_custom_raw_response_wrapper (
592+ runs .download_logs ,
593+ BinaryAPIResponse ,
594+ )
499595 self .score = to_raw_response_wrapper (
500596 runs .score ,
501597 )
@@ -517,6 +613,10 @@ def __init__(self, runs: AsyncRunsResource) -> None:
517613 self .complete = async_to_raw_response_wrapper (
518614 runs .complete ,
519615 )
616+ self .download_logs = async_to_custom_raw_response_wrapper (
617+ runs .download_logs ,
618+ AsyncBinaryAPIResponse ,
619+ )
520620 self .score = async_to_raw_response_wrapper (
521621 runs .score ,
522622 )
@@ -538,6 +638,10 @@ def __init__(self, runs: RunsResource) -> None:
538638 self .complete = to_streamed_response_wrapper (
539639 runs .complete ,
540640 )
641+ self .download_logs = to_custom_streamed_response_wrapper (
642+ runs .download_logs ,
643+ StreamedBinaryAPIResponse ,
644+ )
541645 self .score = to_streamed_response_wrapper (
542646 runs .score ,
543647 )
@@ -559,6 +663,10 @@ def __init__(self, runs: AsyncRunsResource) -> None:
559663 self .complete = async_to_streamed_response_wrapper (
560664 runs .complete ,
561665 )
666+ self .download_logs = async_to_custom_streamed_response_wrapper (
667+ runs .download_logs ,
668+ AsyncStreamedBinaryAPIResponse ,
669+ )
562670 self .score = async_to_streamed_response_wrapper (
563671 runs .score ,
564672 )
0 commit comments