From 35127754371595b59a2575a15b9c3103f5391a63 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Mon, 2 Mar 2026 16:47:34 +0100 Subject: [PATCH] add layer parameters to app create and friends --- src/deno_sandbox/apps.py | 20 ++++++++++++++++++-- src/deno_sandbox/revisions.py | 13 ++++++++++++- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/deno_sandbox/apps.py b/src/deno_sandbox/apps.py index 5b6f138..5a1d844 100644 --- a/src/deno_sandbox/apps.py +++ b/src/deno_sandbox/apps.py @@ -224,6 +224,7 @@ async def create( self, *, slug: Optional[str] = None, + layers: Optional[List[str]] = None, env_vars: Optional[List[EnvVarInput]] = None, config: Optional[Config] = None, ) -> App: @@ -231,12 +232,15 @@ async def create( Args: slug: Human readable identifier for the app. + layers: Layer IDs or slugs to reference. env_vars: App-specific environment variables. config: Default build and runtime configuration. """ options: dict[str, Any] = {} if slug is not None: options["slug"] = slug + if layers is not None: + options["layers"] = layers if env_vars is not None: options["env_vars"] = env_vars if config is not None: @@ -250,6 +254,7 @@ async def update( app: str, *, slug: Optional[str] = None, + layers: Optional[List[str]] = None, env_vars: Optional[List[EnvVarUpdate]] = None, config: Optional[Config] = None, ) -> App: @@ -258,12 +263,15 @@ async def update( Args: app: The app ID or slug to update. slug: Human readable identifier for the app. + layers: Replace all layer references. env_vars: Deep merge with existing environment variables. config: Replace the entire deploy config. """ update: dict[str, Any] = {} if slug is not None: update["slug"] = slug + if layers is not None: + update["layers"] = layers if env_vars is not None: update["env_vars"] = env_vars if config is not None: @@ -346,6 +354,7 @@ def create( self, *, slug: Optional[str] = None, + layers: Optional[List[str]] = None, env_vars: Optional[List[EnvVarInput]] = None, config: Optional[Config] = None, ) -> App: @@ -353,11 +362,14 @@ def create( Args: slug: Human readable identifier for the app. + layers: Layer IDs or slugs to reference. env_vars: App-specific environment variables. config: Default build and runtime configuration. """ return self._bridge.run( - self._async.create(slug=slug, env_vars=env_vars, config=config) + self._async.create( + slug=slug, layers=layers, env_vars=env_vars, config=config + ) ) def update( @@ -365,6 +377,7 @@ def update( app: str, *, slug: Optional[str] = None, + layers: Optional[List[str]] = None, env_vars: Optional[List[EnvVarUpdate]] = None, config: Optional[Config] = None, ) -> App: @@ -373,11 +386,14 @@ def update( Args: app: The app ID or slug to update. slug: Human readable identifier for the app. + layers: Replace all layer references. env_vars: Deep merge with existing environment variables. config: Replace the entire deploy config. """ return self._bridge.run( - self._async.update(app, slug=slug, env_vars=env_vars, config=config) + self._async.update( + app, slug=slug, layers=layers, env_vars=env_vars, config=config + ) ) def delete(self, app: str) -> None: diff --git a/src/deno_sandbox/revisions.py b/src/deno_sandbox/revisions.py index 044302d..00b89f4 100644 --- a/src/deno_sandbox/revisions.py +++ b/src/deno_sandbox/revisions.py @@ -179,6 +179,7 @@ async def deploy( assets: Dict[str, Asset], *, config: Optional[Config] = None, + layers: Optional[List[str]] = None, env_vars: Optional[List[EnvVarInputForDeploy]] = None, labels: Optional[Dict[str, str]] = None, ) -> Revision: @@ -188,6 +189,7 @@ async def deploy( app: The app ID or slug. assets: Dict mapping file paths to Asset objects. config: Optional build/runtime configuration. + layers: Layer IDs or slugs to reference for this revision. env_vars: Optional environment variables for this revision. labels: Optional labels (e.g., git metadata). @@ -197,6 +199,8 @@ async def deploy( body: Dict[str, Any] = {"assets": assets} if config is not None: body["config"] = config + if layers is not None: + body["layers"] = layers if env_vars is not None: body["env_vars"] = env_vars if labels is not None: @@ -260,6 +264,7 @@ def deploy( assets: Dict[str, Asset], *, config: Optional[Config] = None, + layers: Optional[List[str]] = None, env_vars: Optional[List[EnvVarInputForDeploy]] = None, labels: Optional[Dict[str, str]] = None, ) -> Revision: @@ -269,6 +274,7 @@ def deploy( app: The app ID or slug. assets: Dict mapping file paths to Asset objects. config: Optional build/runtime configuration. + layers: Layer IDs or slugs to reference for this revision. env_vars: Optional environment variables for this revision. labels: Optional labels (e.g., git metadata). @@ -277,6 +283,11 @@ def deploy( """ return self._bridge.run( self._async.deploy( - app, assets, config=config, env_vars=env_vars, labels=labels + app, + assets, + config=config, + layers=layers, + env_vars=env_vars, + labels=labels, ) )