Skip to content

Commit d48832d

Browse files
chore(devbox): deprecate remove tunnel API (#7230)
1 parent 71620a1 commit d48832d

File tree

3 files changed

+80
-56
lines changed

3 files changed

+80
-56
lines changed

.stats.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
configured_endpoints: 111
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-debd1f9a9d599b009905cbaaea3095c025fe290493c8a836f54ece22265579c1.yml
3-
openapi_spec_hash: ee42d2c73aaad86888360147d9ed0766
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-84e997ca5716b9378a58a1bdf3d6616cf3be80156a6aaed1bed469fe93ba2c95.yml
3+
openapi_spec_hash: b44a4ba1c2c3cb775c14545f2bab05a8
44
config_hash: 22f65246be4646c23dde9f69f51252e7

src/runloop_api_client/resources/devboxes/devboxes.py

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1215,6 +1215,7 @@ def read_file_contents(
12151215
cast_to=str,
12161216
)
12171217

1218+
@typing_extensions.deprecated("deprecated")
12181219
def remove_tunnel(
12191220
self,
12201221
id: str,
@@ -1228,8 +1229,10 @@ def remove_tunnel(
12281229
timeout: float | httpx.Timeout | None | NotGiven = not_given,
12291230
idempotency_key: str | None = None,
12301231
) -> object:
1231-
"""
1232-
Remove a previously opened tunnel on the Devbox.
1232+
"""[Deprecated] Tunnels remain active until devbox is shutdown.
1233+
1234+
This endpoint
1235+
removes a legacy tunnel.
12331236
12341237
Args:
12351238
port: Devbox port that tunnel will expose.
@@ -2769,6 +2772,7 @@ async def read_file_contents(
27692772
cast_to=str,
27702773
)
27712774

2775+
@typing_extensions.deprecated("deprecated")
27722776
async def remove_tunnel(
27732777
self,
27742778
id: str,
@@ -2782,8 +2786,10 @@ async def remove_tunnel(
27822786
timeout: float | httpx.Timeout | None | NotGiven = not_given,
27832787
idempotency_key: str | None = None,
27842788
) -> object:
2785-
"""
2786-
Remove a previously opened tunnel on the Devbox.
2789+
"""[Deprecated] Tunnels remain active until devbox is shutdown.
2790+
2791+
This endpoint
2792+
removes a legacy tunnel.
27872793
27882794
Args:
27892795
port: Devbox port that tunnel will expose.
@@ -3299,8 +3305,10 @@ def __init__(self, devboxes: DevboxesResource) -> None:
32993305
self.read_file_contents = to_raw_response_wrapper(
33003306
devboxes.read_file_contents,
33013307
)
3302-
self.remove_tunnel = to_raw_response_wrapper(
3303-
devboxes.remove_tunnel,
3308+
self.remove_tunnel = ( # pyright: ignore[reportDeprecated]
3309+
to_raw_response_wrapper(
3310+
devboxes.remove_tunnel, # pyright: ignore[reportDeprecated],
3311+
)
33043312
)
33053313
self.resume = to_raw_response_wrapper(
33063314
devboxes.resume,
@@ -3399,8 +3407,10 @@ def __init__(self, devboxes: AsyncDevboxesResource) -> None:
33993407
self.read_file_contents = async_to_raw_response_wrapper(
34003408
devboxes.read_file_contents,
34013409
)
3402-
self.remove_tunnel = async_to_raw_response_wrapper(
3403-
devboxes.remove_tunnel,
3410+
self.remove_tunnel = ( # pyright: ignore[reportDeprecated]
3411+
async_to_raw_response_wrapper(
3412+
devboxes.remove_tunnel, # pyright: ignore[reportDeprecated],
3413+
)
34043414
)
34053415
self.resume = async_to_raw_response_wrapper(
34063416
devboxes.resume,
@@ -3499,8 +3509,10 @@ def __init__(self, devboxes: DevboxesResource) -> None:
34993509
self.read_file_contents = to_streamed_response_wrapper(
35003510
devboxes.read_file_contents,
35013511
)
3502-
self.remove_tunnel = to_streamed_response_wrapper(
3503-
devboxes.remove_tunnel,
3512+
self.remove_tunnel = ( # pyright: ignore[reportDeprecated]
3513+
to_streamed_response_wrapper(
3514+
devboxes.remove_tunnel, # pyright: ignore[reportDeprecated],
3515+
)
35043516
)
35053517
self.resume = to_streamed_response_wrapper(
35063518
devboxes.resume,
@@ -3599,8 +3611,10 @@ def __init__(self, devboxes: AsyncDevboxesResource) -> None:
35993611
self.read_file_contents = async_to_streamed_response_wrapper(
36003612
devboxes.read_file_contents,
36013613
)
3602-
self.remove_tunnel = async_to_streamed_response_wrapper(
3603-
devboxes.remove_tunnel,
3614+
self.remove_tunnel = ( # pyright: ignore[reportDeprecated]
3615+
async_to_streamed_response_wrapper(
3616+
devboxes.remove_tunnel, # pyright: ignore[reportDeprecated],
3617+
)
36043618
)
36053619
self.resume = async_to_streamed_response_wrapper(
36063620
devboxes.resume,

tests/api_resources/test_devboxes.py

Lines changed: 52 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -715,18 +715,21 @@ def test_path_params_read_file_contents(self, client: Runloop) -> None:
715715

716716
@parametrize
717717
def test_method_remove_tunnel(self, client: Runloop) -> None:
718-
devbox = client.devboxes.remove_tunnel(
719-
id="id",
720-
port=0,
721-
)
718+
with pytest.warns(DeprecationWarning):
719+
devbox = client.devboxes.remove_tunnel(
720+
id="id",
721+
port=0,
722+
)
723+
722724
assert_matches_type(object, devbox, path=["response"])
723725

724726
@parametrize
725727
def test_raw_response_remove_tunnel(self, client: Runloop) -> None:
726-
response = client.devboxes.with_raw_response.remove_tunnel(
727-
id="id",
728-
port=0,
729-
)
728+
with pytest.warns(DeprecationWarning):
729+
response = client.devboxes.with_raw_response.remove_tunnel(
730+
id="id",
731+
port=0,
732+
)
730733

731734
assert response.is_closed is True
732735
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
@@ -735,25 +738,27 @@ def test_raw_response_remove_tunnel(self, client: Runloop) -> None:
735738

736739
@parametrize
737740
def test_streaming_response_remove_tunnel(self, client: Runloop) -> None:
738-
with client.devboxes.with_streaming_response.remove_tunnel(
739-
id="id",
740-
port=0,
741-
) as response:
742-
assert not response.is_closed
743-
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
741+
with pytest.warns(DeprecationWarning):
742+
with client.devboxes.with_streaming_response.remove_tunnel(
743+
id="id",
744+
port=0,
745+
) as response:
746+
assert not response.is_closed
747+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
744748

745-
devbox = response.parse()
746-
assert_matches_type(object, devbox, path=["response"])
749+
devbox = response.parse()
750+
assert_matches_type(object, devbox, path=["response"])
747751

748752
assert cast(Any, response.is_closed) is True
749753

750754
@parametrize
751755
def test_path_params_remove_tunnel(self, client: Runloop) -> None:
752-
with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"):
753-
client.devboxes.with_raw_response.remove_tunnel(
754-
id="",
755-
port=0,
756-
)
756+
with pytest.warns(DeprecationWarning):
757+
with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"):
758+
client.devboxes.with_raw_response.remove_tunnel(
759+
id="",
760+
port=0,
761+
)
757762

758763
@parametrize
759764
def test_method_resume(self, client: Runloop) -> None:
@@ -2276,18 +2281,21 @@ async def test_path_params_read_file_contents(self, async_client: AsyncRunloop)
22762281

22772282
@parametrize
22782283
async def test_method_remove_tunnel(self, async_client: AsyncRunloop) -> None:
2279-
devbox = await async_client.devboxes.remove_tunnel(
2280-
id="id",
2281-
port=0,
2282-
)
2284+
with pytest.warns(DeprecationWarning):
2285+
devbox = await async_client.devboxes.remove_tunnel(
2286+
id="id",
2287+
port=0,
2288+
)
2289+
22832290
assert_matches_type(object, devbox, path=["response"])
22842291

22852292
@parametrize
22862293
async def test_raw_response_remove_tunnel(self, async_client: AsyncRunloop) -> None:
2287-
response = await async_client.devboxes.with_raw_response.remove_tunnel(
2288-
id="id",
2289-
port=0,
2290-
)
2294+
with pytest.warns(DeprecationWarning):
2295+
response = await async_client.devboxes.with_raw_response.remove_tunnel(
2296+
id="id",
2297+
port=0,
2298+
)
22912299

22922300
assert response.is_closed is True
22932301
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
@@ -2296,25 +2304,27 @@ async def test_raw_response_remove_tunnel(self, async_client: AsyncRunloop) -> N
22962304

22972305
@parametrize
22982306
async def test_streaming_response_remove_tunnel(self, async_client: AsyncRunloop) -> None:
2299-
async with async_client.devboxes.with_streaming_response.remove_tunnel(
2300-
id="id",
2301-
port=0,
2302-
) as response:
2303-
assert not response.is_closed
2304-
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
2307+
with pytest.warns(DeprecationWarning):
2308+
async with async_client.devboxes.with_streaming_response.remove_tunnel(
2309+
id="id",
2310+
port=0,
2311+
) as response:
2312+
assert not response.is_closed
2313+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
23052314

2306-
devbox = await response.parse()
2307-
assert_matches_type(object, devbox, path=["response"])
2315+
devbox = await response.parse()
2316+
assert_matches_type(object, devbox, path=["response"])
23082317

23092318
assert cast(Any, response.is_closed) is True
23102319

23112320
@parametrize
23122321
async def test_path_params_remove_tunnel(self, async_client: AsyncRunloop) -> None:
2313-
with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"):
2314-
await async_client.devboxes.with_raw_response.remove_tunnel(
2315-
id="",
2316-
port=0,
2317-
)
2322+
with pytest.warns(DeprecationWarning):
2323+
with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"):
2324+
await async_client.devboxes.with_raw_response.remove_tunnel(
2325+
id="",
2326+
port=0,
2327+
)
23182328

23192329
@parametrize
23202330
async def test_method_resume(self, async_client: AsyncRunloop) -> None:

0 commit comments

Comments
 (0)