runloop_api_client 1.23.2__py3-none-any.whl → 1.23.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- runloop_api_client/_constants.py +10 -0
- runloop_api_client/_version.py +1 -1
- runloop_api_client/lib/wait_for_status.py +26 -9
- runloop_api_client/resources/blueprints.py +0 -178
- runloop_api_client/resources/devboxes/devboxes.py +26 -18
- runloop_api_client/resources/devboxes/executions.py +3 -1
- runloop_api_client/types/__init__.py +0 -4
- runloop_api_client/types/devbox_create_params.py +0 -3
- runloop_api_client/types/scope_entry_view.py +0 -1
- runloop_api_client/types/scope_entry_view_param.py +0 -1
- {runloop_api_client-1.23.2.dist-info → runloop_api_client-1.23.3.dist-info}/METADATA +1 -1
- {runloop_api_client-1.23.2.dist-info → runloop_api_client-1.23.3.dist-info}/RECORD +14 -16
- runloop_api_client/types/blueprint_create_from_inspection_params.py +0 -53
- runloop_api_client/types/inspection_source_param.py +0 -18
- {runloop_api_client-1.23.2.dist-info → runloop_api_client-1.23.3.dist-info}/WHEEL +0 -0
- {runloop_api_client-1.23.2.dist-info → runloop_api_client-1.23.3.dist-info}/licenses/LICENSE +0 -0
runloop_api_client/_constants.py
CHANGED
|
@@ -13,6 +13,16 @@ DEFAULT_CONNECTION_LIMITS = httpx.Limits(max_connections=20, max_keepalive_conne
|
|
|
13
13
|
INITIAL_RETRY_DELAY = 1.0
|
|
14
14
|
MAX_RETRY_DELAY = 60.0
|
|
15
15
|
|
|
16
|
+
# Long-poll endpoints tell the server how long to hold the connection and expect a
|
|
17
|
+
# graceful 408 when that hold elapses. The per-request client read timeout must
|
|
18
|
+
# exceed the server hold so the server returns 408 first instead of the client
|
|
19
|
+
# aborting the stream (RST_STREAM) and surfacing a connection error.
|
|
20
|
+
LONG_POLL_CLIENT_BUFFER_SECONDS = 5.0
|
|
21
|
+
|
|
22
|
+
# Authoritative server-side long-poll hold clamps, mirrored from the mux controllers.
|
|
23
|
+
STATUS_LONG_POLL_SERVER_MAX_SECONDS = 30.0
|
|
24
|
+
EXEC_LONG_POLL_SERVER_MAX_SECONDS = 25.0
|
|
25
|
+
|
|
16
26
|
# Maximum allowed size (in bytes) for individual entries in `file_mounts` when creating Blueprints
|
|
17
27
|
# NOTE: Empirically, ~131,000 is the maximum command length after
|
|
18
28
|
# base64 encoding; 98,250 is the pre-encoded limit that stays within that bound.
|
runloop_api_client/_version.py
CHANGED
|
@@ -13,8 +13,11 @@ from __future__ import annotations
|
|
|
13
13
|
import time
|
|
14
14
|
from typing import List, Type, TypeVar, Callable, Optional, Awaitable
|
|
15
15
|
|
|
16
|
+
import httpx
|
|
17
|
+
|
|
16
18
|
from .polling import PollingConfig, PollingTimeout
|
|
17
|
-
from ..
|
|
19
|
+
from .._constants import LONG_POLL_CLIENT_BUFFER_SECONDS, STATUS_LONG_POLL_SERVER_MAX_SECONDS
|
|
20
|
+
from .._exceptions import APIStatusError, APIConnectionError
|
|
18
21
|
|
|
19
22
|
T = TypeVar("T")
|
|
20
23
|
|
|
@@ -27,6 +30,7 @@ def wait_for_status(
|
|
|
27
30
|
placeholder: Callable[[], T],
|
|
28
31
|
is_terminal: Callable[[T], bool],
|
|
29
32
|
polling_config: Optional[PollingConfig] = None,
|
|
33
|
+
server_max_timeout_seconds: float = STATUS_LONG_POLL_SERVER_MAX_SECONDS,
|
|
30
34
|
) -> T:
|
|
31
35
|
"""Sync long-poll for a status change, retrying until *is_terminal* or timeout."""
|
|
32
36
|
config = polling_config or PollingConfig()
|
|
@@ -42,15 +46,21 @@ def wait_for_status(
|
|
|
42
46
|
if remaining <= 0:
|
|
43
47
|
raise PollingTimeout(f"Exceeded timeout of {timeout} seconds", last_result)
|
|
44
48
|
|
|
49
|
+
# Cap the server hold at what the server honors, and give the client read
|
|
50
|
+
# timeout a buffer beyond it so the server returns 408 first.
|
|
51
|
+
server_timeout = min(remaining, server_max_timeout_seconds)
|
|
45
52
|
try:
|
|
46
53
|
last_result = post_fn(
|
|
47
54
|
path,
|
|
48
|
-
body={"statuses": statuses, "timeout_seconds":
|
|
55
|
+
body={"statuses": statuses, "timeout_seconds": server_timeout},
|
|
49
56
|
cast_to=cast_to,
|
|
50
|
-
options={
|
|
57
|
+
options={
|
|
58
|
+
"max_retries": 0,
|
|
59
|
+
"timeout": httpx.Timeout(server_timeout + LONG_POLL_CLIENT_BUFFER_SECONDS, connect=5.0),
|
|
60
|
+
},
|
|
51
61
|
)
|
|
52
|
-
except (
|
|
53
|
-
if isinstance(error,
|
|
62
|
+
except (APIConnectionError, APIStatusError) as error:
|
|
63
|
+
if isinstance(error, APIConnectionError) or error.response.status_code == 408:
|
|
54
64
|
last_result = placeholder()
|
|
55
65
|
else:
|
|
56
66
|
raise
|
|
@@ -67,6 +77,7 @@ async def async_wait_for_status(
|
|
|
67
77
|
placeholder: Callable[[], T],
|
|
68
78
|
is_terminal: Callable[[T], bool],
|
|
69
79
|
polling_config: Optional[PollingConfig] = None,
|
|
80
|
+
server_max_timeout_seconds: float = STATUS_LONG_POLL_SERVER_MAX_SECONDS,
|
|
70
81
|
) -> T:
|
|
71
82
|
"""Async long-poll for a status change, retrying until *is_terminal* or timeout."""
|
|
72
83
|
config = polling_config or PollingConfig()
|
|
@@ -82,15 +93,21 @@ async def async_wait_for_status(
|
|
|
82
93
|
if remaining <= 0:
|
|
83
94
|
raise PollingTimeout(f"Exceeded timeout of {timeout} seconds", last_result)
|
|
84
95
|
|
|
96
|
+
# Cap the server hold at what the server honors, and give the client read
|
|
97
|
+
# timeout a buffer beyond it so the server returns 408 first.
|
|
98
|
+
server_timeout = min(remaining, server_max_timeout_seconds)
|
|
85
99
|
try:
|
|
86
100
|
last_result = await post_fn(
|
|
87
101
|
path,
|
|
88
|
-
body={"statuses": statuses, "timeout_seconds":
|
|
102
|
+
body={"statuses": statuses, "timeout_seconds": server_timeout},
|
|
89
103
|
cast_to=cast_to,
|
|
90
|
-
options={
|
|
104
|
+
options={
|
|
105
|
+
"max_retries": 0,
|
|
106
|
+
"timeout": httpx.Timeout(server_timeout + LONG_POLL_CLIENT_BUFFER_SECONDS, connect=5.0),
|
|
107
|
+
},
|
|
91
108
|
)
|
|
92
|
-
except (
|
|
93
|
-
if isinstance(error,
|
|
109
|
+
except (APIConnectionError, APIStatusError) as error:
|
|
110
|
+
if isinstance(error, APIConnectionError) or error.response.status_code == 408:
|
|
94
111
|
last_result = placeholder()
|
|
95
112
|
else:
|
|
96
113
|
raise
|
|
@@ -12,7 +12,6 @@ from ..types import (
|
|
|
12
12
|
blueprint_create_params,
|
|
13
13
|
blueprint_preview_params,
|
|
14
14
|
blueprint_list_public_params,
|
|
15
|
-
blueprint_create_from_inspection_params,
|
|
16
15
|
)
|
|
17
16
|
from .._types import NOT_GIVEN, Body, Omit, Query, Headers, NotGiven, SequenceNotStr, omit, not_given
|
|
18
17
|
from .._utils import is_given, path_template, maybe_transform, async_maybe_transform
|
|
@@ -33,7 +32,6 @@ from ..lib.polling_async import async_poll_until
|
|
|
33
32
|
from .._utils._validation import ValidationNotification
|
|
34
33
|
from ..types.blueprint_view import BlueprintView
|
|
35
34
|
from ..types.blueprint_preview_view import BlueprintPreviewView
|
|
36
|
-
from ..types.inspection_source_param import InspectionSourceParam
|
|
37
35
|
from ..types.blueprint_build_logs_list_view import BlueprintBuildLogsListView
|
|
38
36
|
from ..types.shared_params.launch_parameters import LaunchParameters
|
|
39
37
|
from ..types.shared_params.code_mount_parameters import CodeMountParameters
|
|
@@ -499,88 +497,6 @@ class BlueprintsResource(SyncAPIResource):
|
|
|
499
497
|
cast_to=object,
|
|
500
498
|
)
|
|
501
499
|
|
|
502
|
-
def create_from_inspection(
|
|
503
|
-
self,
|
|
504
|
-
*,
|
|
505
|
-
inspection_source: InspectionSourceParam,
|
|
506
|
-
name: str,
|
|
507
|
-
file_mounts: Optional[Dict[str, str]] | Omit = omit,
|
|
508
|
-
launch_parameters: Optional[LaunchParameters] | Omit = omit,
|
|
509
|
-
metadata: Optional[Dict[str, str]] | Omit = omit,
|
|
510
|
-
network_policy_id: Optional[str] | Omit = omit,
|
|
511
|
-
secrets: Optional[Dict[str, str]] | Omit = omit,
|
|
512
|
-
system_setup_commands: Optional[SequenceNotStr[str]] | Omit = omit,
|
|
513
|
-
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
514
|
-
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
515
|
-
extra_headers: Headers | None = None,
|
|
516
|
-
extra_query: Query | None = None,
|
|
517
|
-
extra_body: Body | None = None,
|
|
518
|
-
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
519
|
-
idempotency_key: str | None = None,
|
|
520
|
-
) -> BlueprintView:
|
|
521
|
-
"""
|
|
522
|
-
Starts build of custom defined container Blueprint using a RepositoryConnection
|
|
523
|
-
Inspection as a source container specification.
|
|
524
|
-
|
|
525
|
-
Args:
|
|
526
|
-
inspection_source: (Optional) Use a RepositoryInspection a source of a Blueprint build. The
|
|
527
|
-
Dockerfile will be automatically created based on the RepositoryInspection
|
|
528
|
-
contents.
|
|
529
|
-
|
|
530
|
-
name: Name of the Blueprint.
|
|
531
|
-
|
|
532
|
-
file_mounts: (Optional) Map of paths and file contents to write before setup.
|
|
533
|
-
|
|
534
|
-
launch_parameters: LaunchParameters enable you to customize the resources available to your Devbox
|
|
535
|
-
as well as the environment set up that should be completed before the Devbox is
|
|
536
|
-
marked as 'running'.
|
|
537
|
-
|
|
538
|
-
metadata: (Optional) User defined metadata for the Blueprint.
|
|
539
|
-
|
|
540
|
-
network_policy_id: (Optional) ID of the network policy to apply during blueprint build. This
|
|
541
|
-
restricts network access during the build process.
|
|
542
|
-
|
|
543
|
-
secrets: (Optional) Map of mount IDs/environment variable names to secret names. Secrets
|
|
544
|
-
can be used as environment variables in system_setup_commands. Example:
|
|
545
|
-
{"GITHUB_TOKEN": "gh_secret"} makes 'gh_secret' available as GITHUB_TOKEN.
|
|
546
|
-
|
|
547
|
-
system_setup_commands: A list of commands to run to set up your system.
|
|
548
|
-
|
|
549
|
-
extra_headers: Send extra headers
|
|
550
|
-
|
|
551
|
-
extra_query: Add additional query parameters to the request
|
|
552
|
-
|
|
553
|
-
extra_body: Add additional JSON properties to the request
|
|
554
|
-
|
|
555
|
-
timeout: Override the client-level default timeout for this request, in seconds
|
|
556
|
-
|
|
557
|
-
idempotency_key: Specify a custom idempotency key for this request
|
|
558
|
-
"""
|
|
559
|
-
return self._post(
|
|
560
|
-
"/v1/blueprints/create_from_inspection",
|
|
561
|
-
body=maybe_transform(
|
|
562
|
-
{
|
|
563
|
-
"inspection_source": inspection_source,
|
|
564
|
-
"name": name,
|
|
565
|
-
"file_mounts": file_mounts,
|
|
566
|
-
"launch_parameters": launch_parameters,
|
|
567
|
-
"metadata": metadata,
|
|
568
|
-
"network_policy_id": network_policy_id,
|
|
569
|
-
"secrets": secrets,
|
|
570
|
-
"system_setup_commands": system_setup_commands,
|
|
571
|
-
},
|
|
572
|
-
blueprint_create_from_inspection_params.BlueprintCreateFromInspectionParams,
|
|
573
|
-
),
|
|
574
|
-
options=make_request_options(
|
|
575
|
-
extra_headers=extra_headers,
|
|
576
|
-
extra_query=extra_query,
|
|
577
|
-
extra_body=extra_body,
|
|
578
|
-
timeout=timeout,
|
|
579
|
-
idempotency_key=idempotency_key,
|
|
580
|
-
),
|
|
581
|
-
cast_to=BlueprintView,
|
|
582
|
-
)
|
|
583
|
-
|
|
584
500
|
def list_public(
|
|
585
501
|
self,
|
|
586
502
|
*,
|
|
@@ -1186,88 +1102,6 @@ class AsyncBlueprintsResource(AsyncAPIResource):
|
|
|
1186
1102
|
cast_to=object,
|
|
1187
1103
|
)
|
|
1188
1104
|
|
|
1189
|
-
async def create_from_inspection(
|
|
1190
|
-
self,
|
|
1191
|
-
*,
|
|
1192
|
-
inspection_source: InspectionSourceParam,
|
|
1193
|
-
name: str,
|
|
1194
|
-
file_mounts: Optional[Dict[str, str]] | Omit = omit,
|
|
1195
|
-
launch_parameters: Optional[LaunchParameters] | Omit = omit,
|
|
1196
|
-
metadata: Optional[Dict[str, str]] | Omit = omit,
|
|
1197
|
-
network_policy_id: Optional[str] | Omit = omit,
|
|
1198
|
-
secrets: Optional[Dict[str, str]] | Omit = omit,
|
|
1199
|
-
system_setup_commands: Optional[SequenceNotStr[str]] | Omit = omit,
|
|
1200
|
-
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
1201
|
-
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
1202
|
-
extra_headers: Headers | None = None,
|
|
1203
|
-
extra_query: Query | None = None,
|
|
1204
|
-
extra_body: Body | None = None,
|
|
1205
|
-
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
1206
|
-
idempotency_key: str | None = None,
|
|
1207
|
-
) -> BlueprintView:
|
|
1208
|
-
"""
|
|
1209
|
-
Starts build of custom defined container Blueprint using a RepositoryConnection
|
|
1210
|
-
Inspection as a source container specification.
|
|
1211
|
-
|
|
1212
|
-
Args:
|
|
1213
|
-
inspection_source: (Optional) Use a RepositoryInspection a source of a Blueprint build. The
|
|
1214
|
-
Dockerfile will be automatically created based on the RepositoryInspection
|
|
1215
|
-
contents.
|
|
1216
|
-
|
|
1217
|
-
name: Name of the Blueprint.
|
|
1218
|
-
|
|
1219
|
-
file_mounts: (Optional) Map of paths and file contents to write before setup.
|
|
1220
|
-
|
|
1221
|
-
launch_parameters: LaunchParameters enable you to customize the resources available to your Devbox
|
|
1222
|
-
as well as the environment set up that should be completed before the Devbox is
|
|
1223
|
-
marked as 'running'.
|
|
1224
|
-
|
|
1225
|
-
metadata: (Optional) User defined metadata for the Blueprint.
|
|
1226
|
-
|
|
1227
|
-
network_policy_id: (Optional) ID of the network policy to apply during blueprint build. This
|
|
1228
|
-
restricts network access during the build process.
|
|
1229
|
-
|
|
1230
|
-
secrets: (Optional) Map of mount IDs/environment variable names to secret names. Secrets
|
|
1231
|
-
can be used as environment variables in system_setup_commands. Example:
|
|
1232
|
-
{"GITHUB_TOKEN": "gh_secret"} makes 'gh_secret' available as GITHUB_TOKEN.
|
|
1233
|
-
|
|
1234
|
-
system_setup_commands: A list of commands to run to set up your system.
|
|
1235
|
-
|
|
1236
|
-
extra_headers: Send extra headers
|
|
1237
|
-
|
|
1238
|
-
extra_query: Add additional query parameters to the request
|
|
1239
|
-
|
|
1240
|
-
extra_body: Add additional JSON properties to the request
|
|
1241
|
-
|
|
1242
|
-
timeout: Override the client-level default timeout for this request, in seconds
|
|
1243
|
-
|
|
1244
|
-
idempotency_key: Specify a custom idempotency key for this request
|
|
1245
|
-
"""
|
|
1246
|
-
return await self._post(
|
|
1247
|
-
"/v1/blueprints/create_from_inspection",
|
|
1248
|
-
body=await async_maybe_transform(
|
|
1249
|
-
{
|
|
1250
|
-
"inspection_source": inspection_source,
|
|
1251
|
-
"name": name,
|
|
1252
|
-
"file_mounts": file_mounts,
|
|
1253
|
-
"launch_parameters": launch_parameters,
|
|
1254
|
-
"metadata": metadata,
|
|
1255
|
-
"network_policy_id": network_policy_id,
|
|
1256
|
-
"secrets": secrets,
|
|
1257
|
-
"system_setup_commands": system_setup_commands,
|
|
1258
|
-
},
|
|
1259
|
-
blueprint_create_from_inspection_params.BlueprintCreateFromInspectionParams,
|
|
1260
|
-
),
|
|
1261
|
-
options=make_request_options(
|
|
1262
|
-
extra_headers=extra_headers,
|
|
1263
|
-
extra_query=extra_query,
|
|
1264
|
-
extra_body=extra_body,
|
|
1265
|
-
timeout=timeout,
|
|
1266
|
-
idempotency_key=idempotency_key,
|
|
1267
|
-
),
|
|
1268
|
-
cast_to=BlueprintView,
|
|
1269
|
-
)
|
|
1270
|
-
|
|
1271
1105
|
def list_public(
|
|
1272
1106
|
self,
|
|
1273
1107
|
*,
|
|
@@ -1494,9 +1328,6 @@ class BlueprintsResourceWithRawResponse:
|
|
|
1494
1328
|
self.delete = to_raw_response_wrapper(
|
|
1495
1329
|
blueprints.delete,
|
|
1496
1330
|
)
|
|
1497
|
-
self.create_from_inspection = to_raw_response_wrapper(
|
|
1498
|
-
blueprints.create_from_inspection,
|
|
1499
|
-
)
|
|
1500
1331
|
self.list_public = to_raw_response_wrapper(
|
|
1501
1332
|
blueprints.list_public,
|
|
1502
1333
|
)
|
|
@@ -1526,9 +1357,6 @@ class AsyncBlueprintsResourceWithRawResponse:
|
|
|
1526
1357
|
self.delete = async_to_raw_response_wrapper(
|
|
1527
1358
|
blueprints.delete,
|
|
1528
1359
|
)
|
|
1529
|
-
self.create_from_inspection = async_to_raw_response_wrapper(
|
|
1530
|
-
blueprints.create_from_inspection,
|
|
1531
|
-
)
|
|
1532
1360
|
self.list_public = async_to_raw_response_wrapper(
|
|
1533
1361
|
blueprints.list_public,
|
|
1534
1362
|
)
|
|
@@ -1558,9 +1386,6 @@ class BlueprintsResourceWithStreamingResponse:
|
|
|
1558
1386
|
self.delete = to_streamed_response_wrapper(
|
|
1559
1387
|
blueprints.delete,
|
|
1560
1388
|
)
|
|
1561
|
-
self.create_from_inspection = to_streamed_response_wrapper(
|
|
1562
|
-
blueprints.create_from_inspection,
|
|
1563
|
-
)
|
|
1564
1389
|
self.list_public = to_streamed_response_wrapper(
|
|
1565
1390
|
blueprints.list_public,
|
|
1566
1391
|
)
|
|
@@ -1590,9 +1415,6 @@ class AsyncBlueprintsResourceWithStreamingResponse:
|
|
|
1590
1415
|
self.delete = async_to_streamed_response_wrapper(
|
|
1591
1416
|
blueprints.delete,
|
|
1592
1417
|
)
|
|
1593
|
-
self.create_from_inspection = async_to_streamed_response_wrapper(
|
|
1594
|
-
blueprints.create_from_inspection,
|
|
1595
|
-
)
|
|
1596
1418
|
self.list_public = async_to_streamed_response_wrapper(
|
|
1597
1419
|
blueprints.list_public,
|
|
1598
1420
|
)
|
|
@@ -64,14 +64,18 @@ from ..._response import (
|
|
|
64
64
|
async_to_custom_raw_response_wrapper,
|
|
65
65
|
async_to_custom_streamed_response_wrapper,
|
|
66
66
|
)
|
|
67
|
-
from ..._constants import
|
|
67
|
+
from ..._constants import (
|
|
68
|
+
DEFAULT_TIMEOUT,
|
|
69
|
+
LONG_POLL_CLIENT_BUFFER_SECONDS,
|
|
70
|
+
EXEC_LONG_POLL_SERVER_MAX_SECONDS,
|
|
71
|
+
)
|
|
68
72
|
from ...pagination import (
|
|
69
73
|
SyncDevboxesCursorIDPage,
|
|
70
74
|
AsyncDevboxesCursorIDPage,
|
|
71
75
|
SyncDiskSnapshotsCursorIDPage,
|
|
72
76
|
AsyncDiskSnapshotsCursorIDPage,
|
|
73
77
|
)
|
|
74
|
-
from ..._exceptions import RunloopError, APIStatusError,
|
|
78
|
+
from ..._exceptions import RunloopError, APIStatusError, APIConnectionError
|
|
75
79
|
from ...lib.polling import PollingConfig, poll_until
|
|
76
80
|
from ..._base_client import AsyncPaginator, make_request_options
|
|
77
81
|
from .disk_snapshots import (
|
|
@@ -171,7 +175,6 @@ class DevboxesResource(SyncAPIResource):
|
|
|
171
175
|
metadata: Optional[Dict[str, str]] | Omit = omit,
|
|
172
176
|
mounts: Optional[Iterable[Mount]] | Omit = omit,
|
|
173
177
|
name: Optional[str] | Omit = omit,
|
|
174
|
-
repo_connection_id: Optional[str] | Omit = omit,
|
|
175
178
|
secrets: Optional[Dict[str, str]] | Omit = omit,
|
|
176
179
|
snapshot_id: Optional[str] | Omit = omit,
|
|
177
180
|
tunnel: Optional[devbox_create_params.Tunnel] | Omit = omit,
|
|
@@ -232,8 +235,6 @@ class DevboxesResource(SyncAPIResource):
|
|
|
232
235
|
|
|
233
236
|
name: (Optional) A user specified name to give the Devbox.
|
|
234
237
|
|
|
235
|
-
repo_connection_id: Repository connection id the devbox should source its base image from.
|
|
236
|
-
|
|
237
238
|
secrets: (Optional) Map of environment variable names to secret names. The secret values
|
|
238
239
|
will be securely injected as environment variables in the Devbox. Example:
|
|
239
240
|
{"DB_PASS": "DATABASE_PASSWORD"} sets environment variable 'DB_PASS' to the
|
|
@@ -271,7 +272,6 @@ class DevboxesResource(SyncAPIResource):
|
|
|
271
272
|
"metadata": metadata,
|
|
272
273
|
"mounts": mounts,
|
|
273
274
|
"name": name,
|
|
274
|
-
"repo_connection_id": repo_connection_id,
|
|
275
275
|
"secrets": secrets,
|
|
276
276
|
"snapshot_id": snapshot_id,
|
|
277
277
|
"tunnel": tunnel,
|
|
@@ -468,7 +468,6 @@ class DevboxesResource(SyncAPIResource):
|
|
|
468
468
|
mounts: Optional[Iterable[Mount]] | Omit = omit,
|
|
469
469
|
name: Optional[str] | Omit = omit,
|
|
470
470
|
polling_config: PollingConfig | None = None,
|
|
471
|
-
repo_connection_id: Optional[str] | Omit = omit,
|
|
472
471
|
secrets: Optional[Dict[str, str]] | Omit = omit,
|
|
473
472
|
snapshot_id: Optional[str] | Omit = omit,
|
|
474
473
|
tunnel: Optional[devbox_create_params.Tunnel] | Omit = omit,
|
|
@@ -509,7 +508,6 @@ class DevboxesResource(SyncAPIResource):
|
|
|
509
508
|
metadata=metadata,
|
|
510
509
|
mounts=mounts,
|
|
511
510
|
name=name,
|
|
512
|
-
repo_connection_id=repo_connection_id,
|
|
513
511
|
secrets=secrets,
|
|
514
512
|
snapshot_id=snapshot_id,
|
|
515
513
|
tunnel=tunnel,
|
|
@@ -957,7 +955,7 @@ class DevboxesResource(SyncAPIResource):
|
|
|
957
955
|
return execution
|
|
958
956
|
|
|
959
957
|
def handle_timeout_error(error: Exception) -> DevboxAsyncExecutionDetailView:
|
|
960
|
-
if isinstance(error,
|
|
958
|
+
if isinstance(error, APIConnectionError) or (
|
|
961
959
|
isinstance(error, APIStatusError) and error.response.status_code == 408
|
|
962
960
|
):
|
|
963
961
|
return execution
|
|
@@ -967,7 +965,15 @@ class DevboxesResource(SyncAPIResource):
|
|
|
967
965
|
return result.status == "completed"
|
|
968
966
|
|
|
969
967
|
return poll_until(
|
|
970
|
-
|
|
968
|
+
# Client read timeout must exceed the server long-poll hold so the server
|
|
969
|
+
# returns 408 first instead of the client aborting the stream.
|
|
970
|
+
lambda: self.wait_for_command(
|
|
971
|
+
execution.execution_id,
|
|
972
|
+
devbox_id=devbox_id,
|
|
973
|
+
statuses=["completed"],
|
|
974
|
+
timeout_seconds=int(EXEC_LONG_POLL_SERVER_MAX_SECONDS),
|
|
975
|
+
timeout=httpx.Timeout(EXEC_LONG_POLL_SERVER_MAX_SECONDS + LONG_POLL_CLIENT_BUFFER_SECONDS, connect=5.0),
|
|
976
|
+
),
|
|
971
977
|
is_done,
|
|
972
978
|
polling_config,
|
|
973
979
|
handle_timeout_error,
|
|
@@ -1841,7 +1847,6 @@ class AsyncDevboxesResource(AsyncAPIResource):
|
|
|
1841
1847
|
metadata: Optional[Dict[str, str]] | Omit = omit,
|
|
1842
1848
|
mounts: Optional[Iterable[Mount]] | Omit = omit,
|
|
1843
1849
|
name: Optional[str] | Omit = omit,
|
|
1844
|
-
repo_connection_id: Optional[str] | Omit = omit,
|
|
1845
1850
|
secrets: Optional[Dict[str, str]] | Omit = omit,
|
|
1846
1851
|
snapshot_id: Optional[str] | Omit = omit,
|
|
1847
1852
|
tunnel: Optional[devbox_create_params.Tunnel] | Omit = omit,
|
|
@@ -1902,8 +1907,6 @@ class AsyncDevboxesResource(AsyncAPIResource):
|
|
|
1902
1907
|
|
|
1903
1908
|
name: (Optional) A user specified name to give the Devbox.
|
|
1904
1909
|
|
|
1905
|
-
repo_connection_id: Repository connection id the devbox should source its base image from.
|
|
1906
|
-
|
|
1907
1910
|
secrets: (Optional) Map of environment variable names to secret names. The secret values
|
|
1908
1911
|
will be securely injected as environment variables in the Devbox. Example:
|
|
1909
1912
|
{"DB_PASS": "DATABASE_PASSWORD"} sets environment variable 'DB_PASS' to the
|
|
@@ -1941,7 +1944,6 @@ class AsyncDevboxesResource(AsyncAPIResource):
|
|
|
1941
1944
|
"metadata": metadata,
|
|
1942
1945
|
"mounts": mounts,
|
|
1943
1946
|
"name": name,
|
|
1944
|
-
"repo_connection_id": repo_connection_id,
|
|
1945
1947
|
"secrets": secrets,
|
|
1946
1948
|
"snapshot_id": snapshot_id,
|
|
1947
1949
|
"tunnel": tunnel,
|
|
@@ -2007,7 +2009,6 @@ class AsyncDevboxesResource(AsyncAPIResource):
|
|
|
2007
2009
|
mounts: Optional[Iterable[Mount]] | Omit = omit,
|
|
2008
2010
|
name: Optional[str] | Omit = omit,
|
|
2009
2011
|
polling_config: PollingConfig | None = None,
|
|
2010
|
-
repo_connection_id: Optional[str] | Omit = omit,
|
|
2011
2012
|
secrets: Optional[Dict[str, str]] | Omit = omit,
|
|
2012
2013
|
snapshot_id: Optional[str] | Omit = omit,
|
|
2013
2014
|
tunnel: Optional[devbox_create_params.Tunnel] | Omit = omit,
|
|
@@ -2049,7 +2050,6 @@ class AsyncDevboxesResource(AsyncAPIResource):
|
|
|
2049
2050
|
metadata=metadata,
|
|
2050
2051
|
mounts=mounts,
|
|
2051
2052
|
name=name,
|
|
2052
|
-
repo_connection_id=repo_connection_id,
|
|
2053
2053
|
secrets=secrets,
|
|
2054
2054
|
snapshot_id=snapshot_id,
|
|
2055
2055
|
tunnel=tunnel,
|
|
@@ -2627,7 +2627,7 @@ class AsyncDevboxesResource(AsyncAPIResource):
|
|
|
2627
2627
|
return execution
|
|
2628
2628
|
|
|
2629
2629
|
def handle_timeout_error(error: Exception) -> DevboxAsyncExecutionDetailView:
|
|
2630
|
-
if isinstance(error,
|
|
2630
|
+
if isinstance(error, APIConnectionError) or (
|
|
2631
2631
|
isinstance(error, APIStatusError) and error.response.status_code == 408
|
|
2632
2632
|
):
|
|
2633
2633
|
return execution
|
|
@@ -2637,7 +2637,15 @@ class AsyncDevboxesResource(AsyncAPIResource):
|
|
|
2637
2637
|
return result.status == "completed"
|
|
2638
2638
|
|
|
2639
2639
|
return await async_poll_until(
|
|
2640
|
-
|
|
2640
|
+
# Client read timeout must exceed the server long-poll hold so the server
|
|
2641
|
+
# returns 408 first instead of the client aborting the stream.
|
|
2642
|
+
lambda: self.wait_for_command(
|
|
2643
|
+
execution.execution_id,
|
|
2644
|
+
devbox_id=devbox_id,
|
|
2645
|
+
statuses=["completed"],
|
|
2646
|
+
timeout_seconds=int(EXEC_LONG_POLL_SERVER_MAX_SECONDS),
|
|
2647
|
+
timeout=httpx.Timeout(EXEC_LONG_POLL_SERVER_MAX_SECONDS + LONG_POLL_CLIENT_BUFFER_SECONDS, connect=5.0),
|
|
2648
|
+
),
|
|
2641
2649
|
is_done,
|
|
2642
2650
|
polling_config,
|
|
2643
2651
|
handle_timeout_error,
|
|
@@ -18,7 +18,7 @@ from ..._response import (
|
|
|
18
18
|
async_to_raw_response_wrapper,
|
|
19
19
|
async_to_streamed_response_wrapper,
|
|
20
20
|
)
|
|
21
|
-
from ..._constants import DEFAULT_TIMEOUT, RAW_RESPONSE_HEADER
|
|
21
|
+
from ..._constants import DEFAULT_TIMEOUT, RAW_RESPONSE_HEADER, EXEC_LONG_POLL_SERVER_MAX_SECONDS
|
|
22
22
|
from ..._streaming import Stream, AsyncStream, ReconnectingStream, AsyncReconnectingStream
|
|
23
23
|
from ...lib.polling import PollingConfig
|
|
24
24
|
from ..._base_client import make_request_options
|
|
@@ -149,6 +149,7 @@ class ExecutionsResource(SyncAPIResource):
|
|
|
149
149
|
lambda: placeholder_execution_detail_view(devbox_id, execution_id),
|
|
150
150
|
is_done,
|
|
151
151
|
polling_config,
|
|
152
|
+
EXEC_LONG_POLL_SERVER_MAX_SECONDS,
|
|
152
153
|
)
|
|
153
154
|
|
|
154
155
|
def execute_async(
|
|
@@ -680,6 +681,7 @@ class AsyncExecutionsResource(AsyncAPIResource):
|
|
|
680
681
|
lambda: placeholder_execution_detail_view(devbox_id, execution_id),
|
|
681
682
|
is_done,
|
|
682
683
|
polling_config,
|
|
684
|
+
EXEC_LONG_POLL_SERVER_MAX_SECONDS,
|
|
683
685
|
)
|
|
684
686
|
|
|
685
687
|
async def execute_async(
|
|
@@ -87,7 +87,6 @@ from .benchmark_job_list_view import BenchmarkJobListView as BenchmarkJobListVie
|
|
|
87
87
|
from .benchmark_run_list_view import BenchmarkRunListView as BenchmarkRunListView
|
|
88
88
|
from .benchmark_update_params import BenchmarkUpdateParams as BenchmarkUpdateParams
|
|
89
89
|
from .blueprint_create_params import BlueprintCreateParams as BlueprintCreateParams
|
|
90
|
-
from .inspection_source_param import InspectionSourceParam as InspectionSourceParam
|
|
91
90
|
from .pty_control_result_view import PtyControlResultView as PtyControlResultView
|
|
92
91
|
from .agent_devbox_counts_view import AgentDevboxCountsView as AgentDevboxCountsView
|
|
93
92
|
from .agent_list_public_params import AgentListPublicParams as AgentListPublicParams
|
|
@@ -146,6 +145,3 @@ from .devbox_read_file_contents_response import DevboxReadFileContentsResponse a
|
|
|
146
145
|
from .benchmark_run_list_scenario_runs_params import (
|
|
147
146
|
BenchmarkRunListScenarioRunsParams as BenchmarkRunListScenarioRunsParams,
|
|
148
147
|
)
|
|
149
|
-
from .blueprint_create_from_inspection_params import (
|
|
150
|
-
BlueprintCreateFromInspectionParams as BlueprintCreateFromInspectionParams,
|
|
151
|
-
)
|
|
@@ -71,9 +71,6 @@ class DevboxBaseCreateParams(TypedDict, total=False):
|
|
|
71
71
|
name: Optional[str]
|
|
72
72
|
"""(Optional) A user specified name to give the Devbox."""
|
|
73
73
|
|
|
74
|
-
repo_connection_id: Optional[str]
|
|
75
|
-
"""Repository connection id the devbox should source its base image from."""
|
|
76
|
-
|
|
77
74
|
secrets: Optional[Dict[str, str]]
|
|
78
75
|
"""(Optional) Map of environment variable names to secret names.
|
|
79
76
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: runloop_api_client
|
|
3
|
-
Version: 1.23.
|
|
3
|
+
Version: 1.23.3
|
|
4
4
|
Summary: The official Python library for the runloop API
|
|
5
5
|
Project-URL: Homepage, https://github.com/runloopai/api-client-python
|
|
6
6
|
Project-URL: Repository, https://github.com/runloopai/api-client-python
|
|
@@ -2,7 +2,7 @@ runloop_api_client/__init__.py,sha256=kkh0sybJLxq80pf6XOAvWfB7y6CRuzFS642S0YCVE7
|
|
|
2
2
|
runloop_api_client/_base_client.py,sha256=im_A6aie077qWC3nLAWCqv9TmxPjo64zAKoALFiA9fQ,80428
|
|
3
3
|
runloop_api_client/_client.py,sha256=HW1eBfJZPkSBELo9lLRWsqdTlOA4Cxo5Yqcs1xAYwvc,42671
|
|
4
4
|
runloop_api_client/_compat.py,sha256=_9guQfzYnL3DNtudX5W7T2cdSskx89B5AFfhPQDxMUk,6811
|
|
5
|
-
runloop_api_client/_constants.py,sha256
|
|
5
|
+
runloop_api_client/_constants.py,sha256=-La-M92mu153BZX8UPNyOI7JmEh0OsJTPN0zLz6FNmQ,1488
|
|
6
6
|
runloop_api_client/_exceptions.py,sha256=GMobfOe7O88zZkj_RS_4brzIFVJlQNTzAISYBmica4s,3222
|
|
7
7
|
runloop_api_client/_files.py,sha256=Q__kJewajxJyKis6MyciuV2zmO5TraS59EGCo8TZE30,5527
|
|
8
8
|
runloop_api_client/_models.py,sha256=CsUw_hHRdUCMIyzRHX4yDmbx-uX_X3RHtLCBDoqgu04,34871
|
|
@@ -11,7 +11,7 @@ runloop_api_client/_resource.py,sha256=hBNv5YJlD_7YGPjLda2pE5w9EE5lLecM6yD75FnGx
|
|
|
11
11
|
runloop_api_client/_response.py,sha256=9v8ESNhx4SWj1vQ_KotzvLPACjVVG8rc9UCBpWqh2O8,29005
|
|
12
12
|
runloop_api_client/_streaming.py,sha256=KsCY-h-SvLsqA231I6XdIqgic0b1R3p6ZHQGTNZitns,16880
|
|
13
13
|
runloop_api_client/_types.py,sha256=s9FTZgSYLxAzZqadexKr5-Ro-r1St34-hpT2xdxCi_g,7714
|
|
14
|
-
runloop_api_client/_version.py,sha256=
|
|
14
|
+
runloop_api_client/_version.py,sha256=Bc_oEMYNXunPbVh2TCla2spq7isQCmQ1def44-Gf-U0,171
|
|
15
15
|
runloop_api_client/pagination.py,sha256=PGu3Mi59PshbOifza-zllB2rubdql4hzcqGrUny22qU,30135
|
|
16
16
|
runloop_api_client/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
17
17
|
runloop_api_client/_utils/__init__.py,sha256=zsOZpiZrrk5OOKkdGoufsQTphYRU66Nakdb2D7m801s,2332
|
|
@@ -35,7 +35,7 @@ runloop_api_client/lib/_ignore.py,sha256=QjMDHhZb3etebIuG79-n-jEzs1Fl6AgfEIYKiJ6
|
|
|
35
35
|
runloop_api_client/lib/context_loader.py,sha256=LOJtfj3w1NSSq4osLut0g1dcoGR30AEGnRqLZMStpS0,2601
|
|
36
36
|
runloop_api_client/lib/polling.py,sha256=RL6v-xi5rmkcmrOwP7KMQyXKDEOxrL3-BJGwl8gTebQ,3621
|
|
37
37
|
runloop_api_client/lib/polling_async.py,sha256=g1e9fcST8kBbx9ZE5AghZabRkWTRGKiRkjUlWS5FjJk,3312
|
|
38
|
-
runloop_api_client/lib/wait_for_status.py,sha256=
|
|
38
|
+
runloop_api_client/lib/wait_for_status.py,sha256=qSOxzjM8UNFYjKoFc6oaW21CppPEfQ0rCyrFC-uOB7s,4485
|
|
39
39
|
runloop_api_client/resources/__init__.py,sha256=6kKZOerBefADP7U9-kVKoYrKG9plypwqdFW4IsrmoZE,8499
|
|
40
40
|
runloop_api_client/resources/accounts.py,sha256=uBz7WL6yyAHQ1YWNUGzrI72sKmr52gjrcA4dbkG67u8,5128
|
|
41
41
|
runloop_api_client/resources/agents.py,sha256=ukl-cmvbL4BR6Ur2XIUFjDCcoaXV_66hbbphr3TZCWw,27948
|
|
@@ -43,7 +43,7 @@ runloop_api_client/resources/apikeys.py,sha256=JCpMLzU7lO--c63gIjSUXsNr3m3Rly_mc
|
|
|
43
43
|
runloop_api_client/resources/benchmark_jobs.py,sha256=otgBs3ELPDi3ZAmaoKpu7nluAJL2iiWbuWq69AJDYzQ,15335
|
|
44
44
|
runloop_api_client/resources/benchmark_runs.py,sha256=eu6PueQy1H5pJ_EY7g-eOlOKb1heqAWXOqfXay7xUQ0,24713
|
|
45
45
|
runloop_api_client/resources/benchmarks.py,sha256=7q5XsMVU4faKR3T2tsZOsUY3ypyt3fRsEXgHVoTBYEU,44053
|
|
46
|
-
runloop_api_client/resources/blueprints.py,sha256=
|
|
46
|
+
runloop_api_client/resources/blueprints.py,sha256=A1TuIyh3QSUwtEYyDzHuUcTJorBkFYVTLVN_igehQlk,60767
|
|
47
47
|
runloop_api_client/resources/gateway_configs.py,sha256=Vct_me8d02mdK4hkS3F9KDfgPXsS1BPrXa4lX-81RHE,25938
|
|
48
48
|
runloop_api_client/resources/mcp_configs.py,sha256=Zor7FtY1yVi6vrH7-UVkdoOhWYrjc_guDkNTRakFFm8,25750
|
|
49
49
|
runloop_api_client/resources/network_policies.py,sha256=EugHxxxEIW1gROh11ay8nqwcJ1n7ue61rXEXFpQQ1UU,28950
|
|
@@ -56,9 +56,9 @@ runloop_api_client/resources/axons/axons.py,sha256=SYvfdG1N4RZJtUjx6EL6aLUpWf5JG
|
|
|
56
56
|
runloop_api_client/resources/axons/events.py,sha256=9F4daxcTU-83U2HuF3cTxL-H17vuN8A0P_Z1t_TbDiQ,7777
|
|
57
57
|
runloop_api_client/resources/axons/sql.py,sha256=IFTfiEjvqsFcnz3h6H1Sq1URQjNdHz_YAXMXzzrU0fI,11468
|
|
58
58
|
runloop_api_client/resources/devboxes/__init__.py,sha256=R2UC-OF809Nx5BNxAz1ct7fEWyC789BeORbo0W-NRR0,2046
|
|
59
|
-
runloop_api_client/resources/devboxes/devboxes.py,sha256=
|
|
59
|
+
runloop_api_client/resources/devboxes/devboxes.py,sha256=7JHb0sWpF9RWnVE-1qdZWAM1HFo5qY6Szdao7eQpAx8,157092
|
|
60
60
|
runloop_api_client/resources/devboxes/disk_snapshots.py,sha256=hGw90rKu2-cFRxZ8cU69JZhLSRv_sUJt_iUYfRhW_70,24051
|
|
61
|
-
runloop_api_client/resources/devboxes/executions.py,sha256=
|
|
61
|
+
runloop_api_client/resources/devboxes/executions.py,sha256=b5qHvXrzituZWsFIUy1kYmZ2U3Ltfqo0S2ta6Js0U1A,50935
|
|
62
62
|
runloop_api_client/resources/devboxes/logs.py,sha256=VO7uzupWEHpB-orkZcjFZ6tcxh3ZPweZE36n6FVcqsc,6947
|
|
63
63
|
runloop_api_client/resources/scenarios/__init__.py,sha256=MGW8NajgkSBHMjioHSjVOIkIMOms_PkrvHxQUmKXI60,1478
|
|
64
64
|
runloop_api_client/resources/scenarios/runs.py,sha256=FetgZtD8dG6ltga93J2ZKeg12U4Oh0s3pgWeuIw-2BY,37206
|
|
@@ -105,7 +105,7 @@ runloop_api_client/sdk/secret.py,sha256=ztL0m1WXR5fjtinYVYIMVjvw1AtyTNAHPP6NYmn2
|
|
|
105
105
|
runloop_api_client/sdk/snapshot.py,sha256=6SUHfMChmutt1XyruHkEjSGckdiNvyuyq9pnuVWXn2U,3588
|
|
106
106
|
runloop_api_client/sdk/storage_object.py,sha256=0LA6EI02T2dxIHDHl-lI1aMmllG0rBa1Aod78eq87JQ,6071
|
|
107
107
|
runloop_api_client/sdk/sync.py,sha256=zqUB70b2dTJvA1YQrQNgT6Mi-SgjOwDlCwrW1HoGet8,52551
|
|
108
|
-
runloop_api_client/types/__init__.py,sha256=
|
|
108
|
+
runloop_api_client/types/__init__.py,sha256=IPx0TTfVZlbdUtbm5frCeV0FvC4IzraRxdFGlUFWNpE,10825
|
|
109
109
|
runloop_api_client/types/account_view.py,sha256=1DIyDryAMpdBycvmtLIeQU0PgfBCOowg-HqAdI-eg2w,2714
|
|
110
110
|
runloop_api_client/types/agent_create_params.py,sha256=CwQFztSTfE_zo0vopu79bClKXn5m6hBPR5nal_USdi0,728
|
|
111
111
|
runloop_api_client/types/agent_devbox_counts_view.py,sha256=rx4Fr0KATsOysikdv6FsVnVxaW-S5baJr_WKrlqHJKQ,631
|
|
@@ -141,7 +141,6 @@ runloop_api_client/types/benchmark_view.py,sha256=rdFywZJ0_SI5HX8j_V9dK2AbsSgRmY
|
|
|
141
141
|
runloop_api_client/types/blueprint_build_log.py,sha256=XHtME5c1O01Y1szme_XsCgrGO2lLOo1wP0p69V3TkCI,362
|
|
142
142
|
runloop_api_client/types/blueprint_build_logs_list_view.py,sha256=pngkYKDE8roU7cPo772atV0Gv1Oge1Mzvny3Y3BEDNk,429
|
|
143
143
|
runloop_api_client/types/blueprint_build_parameters.py,sha256=J_TiFjuo1xrffvKZuzaF5LsMetPtDKGDwFxDqM8Ee8w,4111
|
|
144
|
-
runloop_api_client/types/blueprint_create_from_inspection_params.py,sha256=7gjauTCL9JaY4kuBhdY2WTq7UhqbXp5t4T6lP5REeLc,1850
|
|
145
144
|
runloop_api_client/types/blueprint_create_params.py,sha256=UgtX3KsykZWdA-aF2vAdwMwFLOPF-rN-tLAk8N7Ce60,4215
|
|
146
145
|
runloop_api_client/types/blueprint_list_params.py,sha256=QAMklxUF7Tx9Qc02YnnaCCL1eK3jiDy4ffXQcFTi210,773
|
|
147
146
|
runloop_api_client/types/blueprint_list_public_params.py,sha256=2NZCKs-zHy8E4teKpkwjlTDD2qum3xpDXXbZSWd4h7g,785
|
|
@@ -150,7 +149,7 @@ runloop_api_client/types/blueprint_preview_params.py,sha256=XVe51ETyj21_CE_Amj_C
|
|
|
150
149
|
runloop_api_client/types/blueprint_preview_view.py,sha256=q_QNLBTfxjzB0cqBs6iNvYnxmattv1qMq4UK-fjvHdo,267
|
|
151
150
|
runloop_api_client/types/blueprint_view.py,sha256=YMJ0w5XDRkvqE-T6QUmb6Ctu3haQBPgVBjNsmTcLfk8,3234
|
|
152
151
|
runloop_api_client/types/devbox_async_execution_detail_view.py,sha256=Nm9i1CZCXV9rKM2uVHS-t30Aha_0ykrHcl5bnXUU7TA,1283
|
|
153
|
-
runloop_api_client/types/devbox_create_params.py,sha256=
|
|
152
|
+
runloop_api_client/types/devbox_create_params.py,sha256=2NzndZ4b--L8V1WCIGqRxSvZnVEgziJWN4_YUM8lxXc,6311
|
|
154
153
|
runloop_api_client/types/devbox_create_ssh_key_response.py,sha256=i_MGH8qttJXNeo6KryrqwpdDnFRGd5UhYf4L4Bt4orA,488
|
|
155
154
|
runloop_api_client/types/devbox_download_file_params.py,sha256=k-Byk2A6YL7fyVcYFZbEr2JjQmry1Qv6r8Fn4cBDF5U,413
|
|
156
155
|
runloop_api_client/types/devbox_enable_tunnel_params.py,sha256=uE7Uemj9YPh-gNmciIX_doEv1pZxvSgb95yPQgkx4-8,986
|
|
@@ -183,7 +182,6 @@ runloop_api_client/types/gateway_config_view.py,sha256=aj6NZrnGPZkXcGzC_21DzkDyW
|
|
|
183
182
|
runloop_api_client/types/input_context.py,sha256=mZv4_bl6N2DqCz3hJ_j9XJ_rBPJC4iJcyIuLN7UzQao,507
|
|
184
183
|
runloop_api_client/types/input_context_param.py,sha256=ZRnJooe6SL4EtC5mR-zoTbm2uw2CqncjhOKh4y9_0EM,586
|
|
185
184
|
runloop_api_client/types/input_context_update_param.py,sha256=VAajcyVtwozP25zD8DQtmVQkGRsIcE1fMJnePAOaeZQ,468
|
|
186
|
-
runloop_api_client/types/inspection_source_param.py,sha256=6BTR2SA8baNiKRmhg3uYWF5j21Jd9AqxYIdJNPIO4ag,552
|
|
187
185
|
runloop_api_client/types/mcp_config_create_params.py,sha256=X54RxwKKuMNJsR1lV1u64Z8eCKPM-u5bBrvQ-CBK3BY,1031
|
|
188
186
|
runloop_api_client/types/mcp_config_list_params.py,sha256=QCfjrjA9-JyfwnmapJfQAe2h7e5eaIBpxnuON5bNjEw,729
|
|
189
187
|
runloop_api_client/types/mcp_config_list_view.py,sha256=Sq45eVOpTShJb8UgP9G55mzZ81hUzU8g_cznO5J7JVs,568
|
|
@@ -220,8 +218,8 @@ runloop_api_client/types/scenario_run_view.py,sha256=DM39z4iYqngqbL_4T3XadYtpXdF
|
|
|
220
218
|
runloop_api_client/types/scenario_start_run_params.py,sha256=CfX6P0QTjPEClWCj_pdLxF7YOq57zDNvsrBaxay2Xgs,928
|
|
221
219
|
runloop_api_client/types/scenario_update_params.py,sha256=wPX65mrV30JqsXpEO6MllVZeVW65uqttKdplSb7qbdY,1947
|
|
222
220
|
runloop_api_client/types/scenario_view.py,sha256=iCG_UHHX20q_qpCQ4yN9ZHcVjyZLwsHyON38zEGpEY8,2253
|
|
223
|
-
runloop_api_client/types/scope_entry_view.py,sha256=
|
|
224
|
-
runloop_api_client/types/scope_entry_view_param.py,sha256=
|
|
221
|
+
runloop_api_client/types/scope_entry_view.py,sha256=2Z5L3tBbeagXldZADDi1h5JfOhrdXr7PQfR9q7NGWSg,734
|
|
222
|
+
runloop_api_client/types/scope_entry_view_param.py,sha256=tqK4vs3ogWb33VDkciubK8qLqOY3TjHnYGVLuSNgL8k,659
|
|
225
223
|
runloop_api_client/types/scoring_contract.py,sha256=kLu6OseHbd95kUyiP3DyZoUc_4XQnVX7zWh2-CUh2pI,501
|
|
226
224
|
runloop_api_client/types/scoring_contract_param.py,sha256=4n0VHMg9Q59NCdlnptAbQlWwOyoyO6P4mqHbdTf_jGw,612
|
|
227
225
|
runloop_api_client/types/scoring_contract_result_view.py,sha256=6hn0T0DPkK_9T0goUkDCJggI9BZIMIZLCsUrNQ_bato,655
|
|
@@ -296,7 +294,7 @@ runloop_api_client/types/shared_params/mount.py,sha256=cNmcOqBXSf0QVPvHPgF5A8c6I
|
|
|
296
294
|
runloop_api_client/types/shared_params/object_mount.py,sha256=4KL3xch5OJHHozIpRgbi7rR74VFT-982nfrTFNOj1dI,572
|
|
297
295
|
runloop_api_client/types/shared_params/resume_triggers.py,sha256=hoaJ3eKpdJ2vfcwkN2Z20I3D7pSU2CBkRKwQUaqWapo,557
|
|
298
296
|
runloop_api_client/types/shared_params/run_profile.py,sha256=mI_uiys0j_ZZfTUlH1WQfxAmZhOEO2NvG7kLZElqu4w,1460
|
|
299
|
-
runloop_api_client-1.23.
|
|
300
|
-
runloop_api_client-1.23.
|
|
301
|
-
runloop_api_client-1.23.
|
|
302
|
-
runloop_api_client-1.23.
|
|
297
|
+
runloop_api_client-1.23.3.dist-info/METADATA,sha256=yl1TTe8oObukf70XOLpn3n_sgOG6_CZRghJFnKT8AO8,17927
|
|
298
|
+
runloop_api_client-1.23.3.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
|
|
299
|
+
runloop_api_client-1.23.3.dist-info/licenses/LICENSE,sha256=Iv7J6RlScOvirhvEck8XGg10APWW2F7EnMHf5VnLq5E,1047
|
|
300
|
+
runloop_api_client-1.23.3.dist-info/RECORD,,
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
from typing import Dict, Optional
|
|
6
|
-
from typing_extensions import Required, TypedDict
|
|
7
|
-
|
|
8
|
-
from .._types import SequenceNotStr
|
|
9
|
-
from .inspection_source_param import InspectionSourceParam
|
|
10
|
-
from .shared_params.launch_parameters import LaunchParameters
|
|
11
|
-
|
|
12
|
-
__all__ = ["BlueprintCreateFromInspectionParams"]
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
class BlueprintCreateFromInspectionParams(TypedDict, total=False):
|
|
16
|
-
inspection_source: Required[InspectionSourceParam]
|
|
17
|
-
"""(Optional) Use a RepositoryInspection a source of a Blueprint build.
|
|
18
|
-
|
|
19
|
-
The Dockerfile will be automatically created based on the RepositoryInspection
|
|
20
|
-
contents.
|
|
21
|
-
"""
|
|
22
|
-
|
|
23
|
-
name: Required[str]
|
|
24
|
-
"""Name of the Blueprint."""
|
|
25
|
-
|
|
26
|
-
file_mounts: Optional[Dict[str, str]]
|
|
27
|
-
"""(Optional) Map of paths and file contents to write before setup."""
|
|
28
|
-
|
|
29
|
-
launch_parameters: Optional[LaunchParameters]
|
|
30
|
-
"""
|
|
31
|
-
LaunchParameters enable you to customize the resources available to your Devbox
|
|
32
|
-
as well as the environment set up that should be completed before the Devbox is
|
|
33
|
-
marked as 'running'.
|
|
34
|
-
"""
|
|
35
|
-
|
|
36
|
-
metadata: Optional[Dict[str, str]]
|
|
37
|
-
"""(Optional) User defined metadata for the Blueprint."""
|
|
38
|
-
|
|
39
|
-
network_policy_id: Optional[str]
|
|
40
|
-
"""(Optional) ID of the network policy to apply during blueprint build.
|
|
41
|
-
|
|
42
|
-
This restricts network access during the build process.
|
|
43
|
-
"""
|
|
44
|
-
|
|
45
|
-
secrets: Optional[Dict[str, str]]
|
|
46
|
-
"""(Optional) Map of mount IDs/environment variable names to secret names.
|
|
47
|
-
|
|
48
|
-
Secrets can be used as environment variables in system_setup_commands. Example:
|
|
49
|
-
{"GITHUB_TOKEN": "gh_secret"} makes 'gh_secret' available as GITHUB_TOKEN.
|
|
50
|
-
"""
|
|
51
|
-
|
|
52
|
-
system_setup_commands: Optional[SequenceNotStr[str]]
|
|
53
|
-
"""A list of commands to run to set up your system."""
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
from typing import Optional
|
|
6
|
-
from typing_extensions import Required, TypedDict
|
|
7
|
-
|
|
8
|
-
__all__ = ["InspectionSourceParam"]
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class InspectionSourceParam(TypedDict, total=False):
|
|
12
|
-
"""Use a RepositoryInspection a source of a Blueprint build."""
|
|
13
|
-
|
|
14
|
-
inspection_id: Required[str]
|
|
15
|
-
"""The ID of a repository inspection."""
|
|
16
|
-
|
|
17
|
-
github_auth_token: Optional[str]
|
|
18
|
-
"""GitHub authentication token for accessing private repositories."""
|
|
File without changes
|
{runloop_api_client-1.23.2.dist-info → runloop_api_client-1.23.3.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|