Skip to content

Commit a0a12ba

Browse files
committed
unpack TypedDict params directly instead of explicitly declaring them
1 parent 662f212 commit a0a12ba

2 files changed

Lines changed: 54 additions & 195 deletions

File tree

src/runloop_api_client/sdk/_async.py

Lines changed: 21 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,27 @@
11
from __future__ import annotations
22

3-
from typing import Dict, Literal, Mapping, Iterable, Optional
3+
from typing import Dict, Mapping, Iterable, Optional
44
from pathlib import Path
5+
from typing_extensions import Unpack
56

67
import httpx
78

8-
from .._types import Body, Omit, Query, Headers, Timeout, NotGiven, SequenceNotStr, omit, not_given
9+
from .._types import Body, Omit, Query, Headers, Timeout, NotGiven, omit, not_given
910
from .._client import AsyncRunloop
1011
from ._helpers import ContentType, detect_content_type
1112
from ..lib.polling import PollingConfig
1213
from .async_devbox import AsyncDevbox
1314
from .async_snapshot import AsyncSnapshot
1415
from .async_blueprint import AsyncBlueprint
1516
from .async_storage_object import AsyncStorageObject
17+
from ..types.devbox_list_params import DevboxListParams
18+
from ..types.object_list_params import ObjectListParams
1619
from ..types.shared_params.mount import Mount
17-
from ..types.blueprint_create_params import Service
20+
from ..types.devbox_create_params import DevboxCreateParams
21+
from ..types.blueprint_list_params import BlueprintListParams
22+
from ..types.blueprint_create_params import BlueprintCreateParams
1823
from ..types.shared_params.launch_parameters import LaunchParameters
24+
from ..types.devboxes.disk_snapshot_list_params import DiskSnapshotListParams
1925
from ..types.shared_params.code_mount_parameters import CodeMountParameters
2026

2127

@@ -28,46 +34,22 @@ def __init__(self, client: AsyncRunloop) -> None:
2834
async def create(
2935
self,
3036
*,
31-
blueprint_id: Optional[str] | Omit = omit,
32-
blueprint_name: Optional[str] | Omit = omit,
33-
code_mounts: Optional[Iterable[CodeMountParameters]] | Omit = omit,
34-
entrypoint: Optional[str] | Omit = omit,
35-
environment_variables: Optional[Dict[str, str]] | Omit = omit,
36-
file_mounts: Optional[Dict[str, str]] | Omit = omit,
37-
launch_parameters: Optional[LaunchParameters] | Omit = omit,
38-
metadata: Optional[Dict[str, str]] | Omit = omit,
39-
mounts: Optional[Iterable[Mount]] | Omit = omit,
40-
name: Optional[str] | Omit = omit,
41-
repo_connection_id: Optional[str] | Omit = omit,
42-
secrets: Optional[Dict[str, str]] | Omit = omit,
43-
snapshot_id: Optional[str] | Omit = omit,
4437
polling_config: PollingConfig | None = None,
4538
extra_headers: Headers | None = None,
4639
extra_query: Query | None = None,
4740
extra_body: Body | None = None,
4841
timeout: float | Timeout | None | NotGiven = not_given,
4942
idempotency_key: str | None = None,
43+
**params: Unpack[DevboxCreateParams],
5044
) -> AsyncDevbox:
5145
devbox_view = await self._client.devboxes.create_and_await_running(
52-
blueprint_id=blueprint_id,
53-
blueprint_name=blueprint_name,
54-
code_mounts=code_mounts,
55-
entrypoint=entrypoint,
56-
environment_variables=environment_variables,
57-
file_mounts=file_mounts,
58-
launch_parameters=launch_parameters,
59-
metadata=metadata,
60-
mounts=mounts,
61-
name=name,
62-
repo_connection_id=repo_connection_id,
63-
secrets=secrets,
64-
snapshot_id=snapshot_id,
6546
polling_config=polling_config,
6647
extra_headers=extra_headers,
6748
extra_query=extra_query,
6849
extra_body=extra_body,
6950
timeout=timeout,
7051
idempotency_key=idempotency_key,
52+
**params,
7153
)
7254
return AsyncDevbox(self._client, devbox_view.id)
7355

@@ -203,25 +185,18 @@ def from_id(self, devbox_id: str) -> AsyncDevbox:
203185
async def list(
204186
self,
205187
*,
206-
limit: int | Omit = omit,
207-
starting_after: str | Omit = omit,
208-
status: Literal[
209-
"provisioning", "initializing", "running", "suspending", "suspended", "resuming", "failure", "shutdown"
210-
]
211-
| Omit = omit,
212188
extra_headers: Headers | None = None,
213189
extra_query: Query | None = None,
214190
extra_body: Body | None = None,
215191
timeout: float | Timeout | None | NotGiven = not_given,
192+
**params: Unpack[DevboxListParams],
216193
) -> list[AsyncDevbox]:
217194
page = await self._client.devboxes.list(
218-
limit=limit,
219-
starting_after=starting_after,
220-
status=status,
221195
extra_headers=extra_headers,
222196
extra_query=extra_query,
223197
extra_body=extra_body,
224198
timeout=timeout,
199+
**params,
225200
)
226201
return [AsyncDevbox(self._client, item.id) for item in page.devboxes]
227202

@@ -235,26 +210,18 @@ def __init__(self, client: AsyncRunloop) -> None:
235210
async def list(
236211
self,
237212
*,
238-
devbox_id: str | Omit = omit,
239-
limit: int | Omit = omit,
240-
metadata_key: str | Omit = omit,
241-
metadata_key_in: str | Omit = omit,
242-
starting_after: str | Omit = omit,
243213
extra_headers: Headers | None = None,
244214
extra_query: Query | None = None,
245215
extra_body: Body | None = None,
246216
timeout: float | Timeout | None | NotGiven = not_given,
217+
**params: Unpack[DiskSnapshotListParams],
247218
) -> list[AsyncSnapshot]:
248219
page = await self._client.devboxes.disk_snapshots.list(
249-
devbox_id=devbox_id,
250-
limit=limit,
251-
metadata_key=metadata_key,
252-
metadata_key_in=metadata_key_in,
253-
starting_after=starting_after,
254220
extra_headers=extra_headers,
255221
extra_query=extra_query,
256222
extra_body=extra_body,
257223
timeout=timeout,
224+
**params,
258225
)
259226
return [AsyncSnapshot(self._client, item.id) for item in page.snapshots]
260227

@@ -271,44 +238,22 @@ def __init__(self, client: AsyncRunloop) -> None:
271238
async def create(
272239
self,
273240
*,
274-
name: str,
275-
base_blueprint_id: Optional[str] | Omit = omit,
276-
base_blueprint_name: Optional[str] | Omit = omit,
277-
build_args: Optional[Dict[str, str]] | Omit = omit,
278-
code_mounts: Optional[Iterable[CodeMountParameters]] | Omit = omit,
279-
dockerfile: Optional[str] | Omit = omit,
280-
file_mounts: Optional[Dict[str, str]] | Omit = omit,
281-
launch_parameters: Optional[LaunchParameters] | Omit = omit,
282-
metadata: Optional[Dict[str, str]] | Omit = omit,
283-
secrets: Optional[Dict[str, str]] | Omit = omit,
284-
services: Optional[Iterable[Service]] | Omit = omit,
285-
system_setup_commands: Optional[SequenceNotStr[str]] | Omit = omit,
286241
polling_config: PollingConfig | None = None,
287242
extra_headers: Headers | None = None,
288243
extra_query: Query | None = None,
289244
extra_body: Body | None = None,
290245
timeout: float | Timeout | None | NotGiven = not_given,
291246
idempotency_key: str | None = None,
247+
**params: Unpack[BlueprintCreateParams],
292248
) -> AsyncBlueprint:
293249
blueprint = await self._client.blueprints.create_and_await_build_complete(
294-
name=name,
295-
base_blueprint_id=base_blueprint_id,
296-
base_blueprint_name=base_blueprint_name,
297-
build_args=build_args,
298-
code_mounts=code_mounts,
299-
dockerfile=dockerfile,
300-
file_mounts=file_mounts,
301-
launch_parameters=launch_parameters,
302-
metadata=metadata,
303-
secrets=secrets,
304-
services=services,
305-
system_setup_commands=system_setup_commands,
306250
polling_config=polling_config,
307251
extra_headers=extra_headers,
308252
extra_query=extra_query,
309253
extra_body=extra_body,
310254
timeout=timeout,
311255
idempotency_key=idempotency_key,
256+
**params,
312257
)
313258
return AsyncBlueprint(self._client, blueprint.id)
314259

@@ -318,22 +263,18 @@ def from_id(self, blueprint_id: str) -> AsyncBlueprint:
318263
async def list(
319264
self,
320265
*,
321-
limit: int | Omit = omit,
322-
name: str | Omit = omit,
323-
starting_after: str | Omit = omit,
324266
extra_headers: Headers | None = None,
325267
extra_query: Query | None = None,
326268
extra_body: Body | None = None,
327269
timeout: float | Timeout | None | NotGiven = not_given,
270+
**params: Unpack[BlueprintListParams],
328271
) -> list[AsyncBlueprint]:
329272
page = await self._client.blueprints.list(
330-
limit=limit,
331-
name=name,
332-
starting_after=starting_after,
333273
extra_headers=extra_headers,
334274
extra_query=extra_query,
335275
extra_body=extra_body,
336276
timeout=timeout,
277+
**params,
337278
)
338279
return [AsyncBlueprint(self._client, item.id) for item in page.blueprints]
339280

@@ -361,28 +302,18 @@ def from_id(self, object_id: str) -> AsyncStorageObject:
361302
async def list(
362303
self,
363304
*,
364-
content_type: str | Omit = omit,
365-
limit: int | Omit = omit,
366-
name: str | Omit = omit,
367-
search: str | Omit = omit,
368-
starting_after: str | Omit = omit,
369-
state: str | Omit = omit,
370305
extra_headers: Headers | None = None,
371306
extra_query: Query | None = None,
372307
extra_body: Body | None = None,
373308
timeout: float | Timeout | None | NotGiven = not_given,
309+
**params: Unpack[ObjectListParams],
374310
) -> list[AsyncStorageObject]:
375311
page = await self._client.objects.list(
376-
content_type=content_type,
377-
limit=limit,
378-
name=name,
379-
search=search,
380-
starting_after=starting_after,
381-
state=state,
382312
extra_headers=extra_headers,
383313
extra_query=extra_query,
384314
extra_body=extra_body,
385315
timeout=timeout,
316+
**params,
386317
)
387318
return [AsyncStorageObject(self._client, item.id, upload_url=item.upload_url) for item in page.objects]
388319

0 commit comments

Comments
 (0)