Skip to content

Commit b73d962

Browse files
committed
Add support for deployments.delete endpoint
Signed-off-by: Mattt Zmuda <[email protected]>
1 parent b0bbc04 commit b73d962

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed

replicate/deployment.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,32 @@ async def async_update(
356356

357357
return _json_to_deployment(self._client, resp.json())
358358

359+
def delete(self, deployment_owner: str, deployment_name: str) -> None:
360+
"""
361+
Delete an existing deployment.
362+
363+
Args:
364+
deployment_owner: The owner of the deployment.
365+
deployment_name: The name of the deployment.
366+
"""
367+
self._client._request(
368+
"DELETE",
369+
f"/v1/deployments/{deployment_owner}/{deployment_name}",
370+
)
371+
372+
async def async_delete(self, deployment_owner: str, deployment_name: str) -> None:
373+
"""
374+
Delete an existing deployment asynchronously.
375+
376+
Args:
377+
deployment_owner: The owner of the deployment.
378+
deployment_name: The name of the deployment.
379+
"""
380+
await self._client._async_request(
381+
"DELETE",
382+
f"/v1/deployments/{deployment_owner}/{deployment_name}",
383+
)
384+
359385
@property
360386
def predictions(self) -> "DeploymentsPredictions":
361387
"""

tests/test_deployment.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,11 @@
178178
)
179179
)
180180

181+
router.route(
182+
method="DELETE",
183+
path="/deployments/acme/image-upscaler",
184+
name="deployments.delete",
185+
).mock(return_value=httpx.Response(204))
181186

182187
router.route(host="api.replicate.com").pass_through()
183188

@@ -399,3 +404,24 @@ async def test_update_deployment(async_flag):
399404
assert updated_deployment.current_release.configuration.hardware == "gpu-v100"
400405
assert updated_deployment.current_release.configuration.min_instances == 2
401406
assert updated_deployment.current_release.configuration.max_instances == 10
407+
408+
@respx.mock
409+
@pytest.mark.asyncio
410+
@pytest.mark.parametrize("async_flag", [True, False])
411+
async def test_delete_deployment(async_flag):
412+
client = Client(
413+
api_token="test-token", transport=httpx.MockTransport(router.handler)
414+
)
415+
416+
if async_flag:
417+
await client.deployments.async_delete(
418+
deployment_owner="acme", deployment_name="image-upscaler"
419+
)
420+
else:
421+
client.deployments.delete(
422+
deployment_owner="acme", deployment_name="image-upscaler"
423+
)
424+
425+
assert router["deployments.delete"].called
426+
assert router["deployments.delete"].calls[0].request.method == "DELETE"
427+
assert router["deployments.delete"].calls[0].request.url == "https://api.replicate.com/v1/deployments/acme/image-upscaler"

0 commit comments

Comments
 (0)