diff --git a/src/runloop_api_client/sdk/async_devbox.py b/src/runloop_api_client/sdk/async_devbox.py index 98f150e9a..bed785a7d 100644 --- a/src/runloop_api_client/sdk/async_devbox.py +++ b/src/runloop_api_client/sdk/async_devbox.py @@ -4,7 +4,6 @@ import asyncio import logging -import warnings from typing import TYPE_CHECKING, Any, Callable, Optional, Sequence, Awaitable, cast from typing_extensions import Unpack, override @@ -835,7 +834,7 @@ async def remove_tunnel( self, **params: Unpack[SDKDevboxRemoveTunnelParams], ) -> object: - """[Deprecated] V2 tunnels cannot be removed and close on devbox shutdown. + """Remove a tunnel from the devbox. :param params: See :typeddict:`~runloop_api_client.sdk._types.SDKDevboxRemoveTunnelParams` for available parameters :return: Response confirming the tunnel removal @@ -844,14 +843,7 @@ async def remove_tunnel( Example: >>> await devbox.net.remove_tunnel() """ - warnings.warn( - "remove_tunnel is deprecated; V2 tunnels cannot be removed and close on devbox shutdown.", - DeprecationWarning, - stacklevel=2, + return await self._devbox._client.devboxes.remove_tunnel( + self._devbox.id, + **params, ) - with warnings.catch_warnings(): - warnings.simplefilter("ignore", DeprecationWarning) - return await self._devbox._client.devboxes.remove_tunnel( # type: ignore[deprecated] - self._devbox.id, - **params, - ) diff --git a/src/runloop_api_client/sdk/devbox.py b/src/runloop_api_client/sdk/devbox.py index 3580d8167..c97ea2682 100644 --- a/src/runloop_api_client/sdk/devbox.py +++ b/src/runloop_api_client/sdk/devbox.py @@ -3,7 +3,6 @@ from __future__ import annotations import logging -import warnings import threading from typing import TYPE_CHECKING, Any, Callable, Optional, Sequence from typing_extensions import Unpack, override @@ -838,7 +837,7 @@ def remove_tunnel( self, **params: Unpack[SDKDevboxRemoveTunnelParams], ) -> object: - """[Deprecated] V2 tunnels cannot be removed and close on devbox shutdown. + """Remove a tunnel from the devbox. :param params: See :typeddict:`~runloop_api_client.sdk._types.SDKDevboxRemoveTunnelParams` for available parameters :return: Response confirming the tunnel removal @@ -847,14 +846,7 @@ def remove_tunnel( Example: >>> devbox.net.remove_tunnel() """ - warnings.warn( - "remove_tunnel is deprecated; V2 tunnels cannot be removed and close on devbox shutdown.", - DeprecationWarning, - stacklevel=2, + return self._devbox._client.devboxes.remove_tunnel( + self._devbox.id, + **params, ) - with warnings.catch_warnings(): - warnings.simplefilter("ignore", DeprecationWarning) - return self._devbox._client.devboxes.remove_tunnel( # type: ignore[deprecated] - self._devbox.id, - **params, - ) diff --git a/tests/sdk/async_devbox/test_interfaces.py b/tests/sdk/async_devbox/test_interfaces.py index 79376132e..06ac528ab 100644 --- a/tests/sdk/async_devbox/test_interfaces.py +++ b/tests/sdk/async_devbox/test_interfaces.py @@ -184,14 +184,13 @@ async def test_remove_tunnel(self, mock_async_client: AsyncMock) -> None: mock_async_client.devboxes.remove_tunnel = AsyncMock(return_value=object()) devbox = AsyncDevbox(mock_async_client, "dbx_123") - with pytest.warns(DeprecationWarning, match="remove_tunnel is deprecated"): - result = await devbox.net.remove_tunnel( - extra_headers={"X-Custom": "value"}, - extra_query={"param": "value"}, - extra_body={"key": "value"}, - timeout=30.0, - idempotency_key="key-123", - ) + result = await devbox.net.remove_tunnel( + extra_headers={"X-Custom": "value"}, + extra_query={"param": "value"}, + extra_body={"key": "value"}, + timeout=30.0, + idempotency_key="key-123", + ) assert result is not None # Verify return value is propagated mock_async_client.devboxes.remove_tunnel.assert_called_once() diff --git a/tests/sdk/devbox/test_interfaces.py b/tests/sdk/devbox/test_interfaces.py index 7d0c1d567..41ec46c3a 100644 --- a/tests/sdk/devbox/test_interfaces.py +++ b/tests/sdk/devbox/test_interfaces.py @@ -11,7 +11,6 @@ from unittest.mock import Mock import httpx -import pytest from tests.sdk.conftest import MockExecutionView from runloop_api_client.sdk import Devbox @@ -285,14 +284,13 @@ def test_remove_tunnel(self, mock_client: Mock) -> None: mock_client.devboxes.remove_tunnel.return_value = object() devbox = Devbox(mock_client, "dbx_123") - with pytest.warns(DeprecationWarning, match="remove_tunnel is deprecated"): - result = devbox.net.remove_tunnel( - extra_headers={"X-Custom": "value"}, - extra_query={"param": "value"}, - extra_body={"key": "value"}, - timeout=30.0, - idempotency_key="key-123", - ) + result = devbox.net.remove_tunnel( + extra_headers={"X-Custom": "value"}, + extra_query={"param": "value"}, + extra_body={"key": "value"}, + timeout=30.0, + idempotency_key="key-123", + ) assert result is not None # Verify return value is propagated mock_client.devboxes.remove_tunnel.assert_called_once_with( diff --git a/uv.lock b/uv.lock index 536ecad8e..e2e199a71 100644 --- a/uv.lock +++ b/uv.lock @@ -2386,7 +2386,7 @@ wheels = [ [[package]] name = "runloop-api-client" -version = "1.13.3" +version = "1.14.0" source = { editable = "." } dependencies = [ { name = "anyio" },