Skip to content

Commit f58b607

Browse files
committed
Merge branch 'tode/create_and_await_running-args-update' of github.com:runloopai/api-client-python into tode/create_and_await_running-args-update
2 parents 23e61b7 + 5cb4852 commit f58b607

2 files changed

Lines changed: 1210 additions & 1144 deletions

File tree

src/runloop_api_client/resources/devboxes/devboxes.py

Lines changed: 94 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,13 @@
4040
devbox_write_file_contents_params,
4141
)
4242
from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven, FileTypes
43-
from ..._utils import is_given, extract_files, maybe_transform, deepcopy_minimal, async_maybe_transform
43+
from ..._utils import (
44+
is_given,
45+
extract_files,
46+
maybe_transform,
47+
deepcopy_minimal,
48+
async_maybe_transform,
49+
)
4450
from .browsers import (
4551
BrowsersResource,
4652
AsyncBrowsersResource,
@@ -309,7 +315,10 @@ def retrieve(
309315
return self._get(
310316
f"/v1/devboxes/{id}",
311317
options=make_request_options(
312-
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
318+
extra_headers=extra_headers,
319+
extra_query=extra_query,
320+
extra_body=extra_body,
321+
timeout=timeout,
313322
),
314323
cast_to=DevboxView,
315324
)
@@ -416,10 +425,17 @@ def handle_timeout_error(error: Exception) -> DevboxView:
416425
def is_done_booting(devbox: DevboxView) -> bool:
417426
return devbox.status not in DEVBOX_BOOTING_STATES
418427

419-
devbox = poll_until(wait_for_devbox_status, is_done_booting, polling_config, handle_timeout_error)
428+
devbox = poll_until(
429+
wait_for_devbox_status,
430+
is_done_booting,
431+
polling_config,
432+
handle_timeout_error,
433+
)
420434

421435
if devbox.status != "running":
422-
raise RunloopError(f"Devbox entered non-running terminal state: {devbox.status}")
436+
raise RunloopError(
437+
f"Devbox entered non-running terminal state: {devbox.status}"
438+
)
423439

424440
return devbox
425441

@@ -520,10 +536,19 @@ def list(
520536
*,
521537
limit: int | NotGiven = NOT_GIVEN,
522538
starting_after: str | NotGiven = NOT_GIVEN,
523-
status: Literal[
524-
"provisioning", "initializing", "running", "suspending", "suspended", "resuming", "failure", "shutdown"
525-
]
526-
| NotGiven = NOT_GIVEN,
539+
status: (
540+
Literal[
541+
"provisioning",
542+
"initializing",
543+
"running",
544+
"suspending",
545+
"suspended",
546+
"resuming",
547+
"failure",
548+
"shutdown",
549+
]
550+
| NotGiven
551+
) = NOT_GIVEN,
527552
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
528553
# The extra values given here take precedence over values defined on the client or passed to this method.
529554
extra_headers: Headers | None = None,
@@ -642,7 +667,9 @@ def create_tunnel(
642667
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
643668
return self._post(
644669
f"/v1/devboxes/{id}/create_tunnel",
645-
body=maybe_transform({"port": port}, devbox_create_tunnel_params.DevboxCreateTunnelParams),
670+
body=maybe_transform(
671+
{"port": port}, devbox_create_tunnel_params.DevboxCreateTunnelParams
672+
),
646673
options=make_request_options(
647674
extra_headers=extra_headers,
648675
extra_query=extra_query,
@@ -731,7 +758,9 @@ def download_file(
731758
extra_headers = {"Accept": "application/octet-stream", **(extra_headers or {})}
732759
return self._post(
733760
f"/v1/devboxes/{id}/download_file",
734-
body=maybe_transform({"path": path}, devbox_download_file_params.DevboxDownloadFileParams),
761+
body=maybe_transform(
762+
{"path": path}, devbox_download_file_params.DevboxDownloadFileParams
763+
),
735764
options=make_request_options(
736765
extra_headers=extra_headers,
737766
extra_query=extra_query,
@@ -1005,7 +1034,8 @@ def read_file_contents(
10051034
return self._post(
10061035
f"/v1/devboxes/{id}/read_file_contents",
10071036
body=maybe_transform(
1008-
{"file_path": file_path}, devbox_read_file_contents_params.DevboxReadFileContentsParams
1037+
{"file_path": file_path},
1038+
devbox_read_file_contents_params.DevboxReadFileContentsParams,
10091039
),
10101040
options=make_request_options(
10111041
extra_headers=extra_headers,
@@ -1050,7 +1080,9 @@ def remove_tunnel(
10501080
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
10511081
return self._post(
10521082
f"/v1/devboxes/{id}/remove_tunnel",
1053-
body=maybe_transform({"port": port}, devbox_remove_tunnel_params.DevboxRemoveTunnelParams),
1083+
body=maybe_transform(
1084+
{"port": port}, devbox_remove_tunnel_params.DevboxRemoveTunnelParams
1085+
),
10541086
options=make_request_options(
10551087
extra_headers=extra_headers,
10561088
extra_query=extra_query,
@@ -1351,7 +1383,9 @@ def upload_file(
13511383
extra_headers = {"Content-Type": "multipart/form-data", **(extra_headers or {})}
13521384
return self._post(
13531385
f"/v1/devboxes/{id}/upload_file",
1354-
body=maybe_transform(body, devbox_upload_file_params.DevboxUploadFileParams),
1386+
body=maybe_transform(
1387+
body, devbox_upload_file_params.DevboxUploadFileParams
1388+
),
13551389
files=files,
13561390
options=make_request_options(
13571391
extra_headers=extra_headers,
@@ -1604,7 +1638,10 @@ async def retrieve(
16041638
return await self._get(
16051639
f"/v1/devboxes/{id}",
16061640
options=make_request_options(
1607-
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
1641+
extra_headers=extra_headers,
1642+
extra_query=extra_query,
1643+
extra_body=extra_body,
1644+
timeout=timeout,
16081645
),
16091646
cast_to=DevboxView,
16101647
)
@@ -1737,7 +1774,10 @@ async def wait_for_devbox_status() -> DevboxView:
17371774
)
17381775
except (APITimeoutError, APIStatusError) as error:
17391776
# Handle timeout errors by returning current devbox state to continue polling
1740-
if isinstance(error, APITimeoutError) or error.response.status_code == 408:
1777+
if (
1778+
isinstance(error, APITimeoutError)
1779+
or error.response.status_code == 408
1780+
):
17411781
# Return a placeholder result to continue polling
17421782
return placeholder_devbox_view(id)
17431783

@@ -1747,10 +1787,14 @@ async def wait_for_devbox_status() -> DevboxView:
17471787
def is_done_booting(devbox: DevboxView) -> bool:
17481788
return devbox.status not in DEVBOX_BOOTING_STATES
17491789

1750-
devbox = await async_poll_until(wait_for_devbox_status, is_done_booting, polling_config)
1790+
devbox = await async_poll_until(
1791+
wait_for_devbox_status, is_done_booting, polling_config
1792+
)
17511793

17521794
if devbox.status != "running":
1753-
raise RunloopError(f"Devbox entered non-running terminal state: {devbox.status}")
1795+
raise RunloopError(
1796+
f"Devbox entered non-running terminal state: {devbox.status}"
1797+
)
17541798

17551799
return devbox
17561800

@@ -1813,10 +1857,19 @@ def list(
18131857
*,
18141858
limit: int | NotGiven = NOT_GIVEN,
18151859
starting_after: str | NotGiven = NOT_GIVEN,
1816-
status: Literal[
1817-
"provisioning", "initializing", "running", "suspending", "suspended", "resuming", "failure", "shutdown"
1818-
]
1819-
| NotGiven = NOT_GIVEN,
1860+
status: (
1861+
Literal[
1862+
"provisioning",
1863+
"initializing",
1864+
"running",
1865+
"suspending",
1866+
"suspended",
1867+
"resuming",
1868+
"failure",
1869+
"shutdown",
1870+
]
1871+
| NotGiven
1872+
) = NOT_GIVEN,
18201873
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
18211874
# The extra values given here take precedence over values defined on the client or passed to this method.
18221875
extra_headers: Headers | None = None,
@@ -1935,7 +1988,9 @@ async def create_tunnel(
19351988
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
19361989
return await self._post(
19371990
f"/v1/devboxes/{id}/create_tunnel",
1938-
body=await async_maybe_transform({"port": port}, devbox_create_tunnel_params.DevboxCreateTunnelParams),
1991+
body=await async_maybe_transform(
1992+
{"port": port}, devbox_create_tunnel_params.DevboxCreateTunnelParams
1993+
),
19391994
options=make_request_options(
19401995
extra_headers=extra_headers,
19411996
extra_query=extra_query,
@@ -2024,7 +2079,9 @@ async def download_file(
20242079
extra_headers = {"Accept": "application/octet-stream", **(extra_headers or {})}
20252080
return await self._post(
20262081
f"/v1/devboxes/{id}/download_file",
2027-
body=await async_maybe_transform({"path": path}, devbox_download_file_params.DevboxDownloadFileParams),
2082+
body=await async_maybe_transform(
2083+
{"path": path}, devbox_download_file_params.DevboxDownloadFileParams
2084+
),
20282085
options=make_request_options(
20292086
extra_headers=extra_headers,
20302087
extra_query=extra_query,
@@ -2210,7 +2267,9 @@ def list_disk_snapshots(
22102267
extra_query: Query | None = None,
22112268
extra_body: Body | None = None,
22122269
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
2213-
) -> AsyncPaginator[DevboxSnapshotView, AsyncDiskSnapshotsCursorIDPage[DevboxSnapshotView]]:
2270+
) -> AsyncPaginator[
2271+
DevboxSnapshotView, AsyncDiskSnapshotsCursorIDPage[DevboxSnapshotView]
2272+
]:
22142273
"""
22152274
List all snapshots of a Devbox while optionally filtering by Devbox ID and
22162275
metadata.
@@ -2298,7 +2357,8 @@ async def read_file_contents(
22982357
return await self._post(
22992358
f"/v1/devboxes/{id}/read_file_contents",
23002359
body=await async_maybe_transform(
2301-
{"file_path": file_path}, devbox_read_file_contents_params.DevboxReadFileContentsParams
2360+
{"file_path": file_path},
2361+
devbox_read_file_contents_params.DevboxReadFileContentsParams,
23022362
),
23032363
options=make_request_options(
23042364
extra_headers=extra_headers,
@@ -2343,7 +2403,9 @@ async def remove_tunnel(
23432403
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
23442404
return await self._post(
23452405
f"/v1/devboxes/{id}/remove_tunnel",
2346-
body=await async_maybe_transform({"port": port}, devbox_remove_tunnel_params.DevboxRemoveTunnelParams),
2406+
body=await async_maybe_transform(
2407+
{"port": port}, devbox_remove_tunnel_params.DevboxRemoveTunnelParams
2408+
),
23472409
options=make_request_options(
23482410
extra_headers=extra_headers,
23492411
extra_query=extra_query,
@@ -2644,7 +2706,9 @@ async def upload_file(
26442706
extra_headers = {"Content-Type": "multipart/form-data", **(extra_headers or {})}
26452707
return await self._post(
26462708
f"/v1/devboxes/{id}/upload_file",
2647-
body=await async_maybe_transform(body, devbox_upload_file_params.DevboxUploadFileParams),
2709+
body=await async_maybe_transform(
2710+
body, devbox_upload_file_params.DevboxUploadFileParams
2711+
),
26482712
files=files,
26492713
options=make_request_options(
26502714
extra_headers=extra_headers,
@@ -3068,7 +3132,9 @@ def __init__(self, devboxes: AsyncDevboxesResource) -> None:
30683132

30693133
@cached_property
30703134
def disk_snapshots(self) -> AsyncDiskSnapshotsResourceWithStreamingResponse:
3071-
return AsyncDiskSnapshotsResourceWithStreamingResponse(self._devboxes.disk_snapshots)
3135+
return AsyncDiskSnapshotsResourceWithStreamingResponse(
3136+
self._devboxes.disk_snapshots
3137+
)
30723138

30733139
@cached_property
30743140
def browsers(self) -> AsyncBrowsersResourceWithStreamingResponse:

0 commit comments

Comments
 (0)