Skip to content

Commit 81c4975

Browse files
release: 1.9.0 (#741)
Co-authored-by: stainless-app[bot] <142633134+stainless-app[bot]@users.noreply.github.com> Co-authored-by: Albert Li <albert@runloop.ai>
1 parent 1033264 commit 81c4975

42 files changed

Lines changed: 497 additions & 83 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.release-please-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
".": "1.8.0"
2+
".": "1.9.0"
33
}

.stats.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 117
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-c8d61a0c8b88fa30666ba021d1239eb0d549902354513c4741e9216bcbfa8e6d.yml
3-
openapi_spec_hash: 433e6fb4ce076012b696f69ae7596c67
4-
config_hash: eb28692edd68a6ae95cf92af931c9976
1+
configured_endpoints: 118
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-dd0f43e15cb67179deaf86f83ae04c6fae4ff858ee33e82a3b89231566cdc5bb.yml
3+
openapi_spec_hash: 569176c1c4f48efd25a44fa526fad9d1
4+
config_hash: cbda3692cb48ab8582a0df1674b9e5c8

CHANGELOG.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,30 @@
11
# Changelog
22

3+
## 1.9.0 (2026-02-25)
4+
5+
Full Changelog: [v1.8.0...v1.9.0](https://github.com/runloopai/api-client-python/compare/v1.8.0...v1.9.0)
6+
7+
### Features
8+
9+
* Add AI gateway and MCP gateway flags to network policy create ([#7638](https://github.com/runloopai/api-client-python/issues/7638)) ([85f2146](https://github.com/runloopai/api-client-python/commit/85f2146d2f25085d19d5bf34096066b0ba18cb5d))
10+
11+
12+
### Chores
13+
14+
* Add archive method to stainless ([#7537](https://github.com/runloopai/api-client-python/issues/7537)) ([836f18d](https://github.com/runloopai/api-client-python/commit/836f18d52c20b4b43f9135a52571f8c7e87a0477))
15+
* **benchmarks:** removed scorer ([#740](https://github.com/runloopai/api-client-python/issues/740)) ([1033264](https://github.com/runloopai/api-client-python/commit/1033264b0ed34cc47e2e16cac3ae5986f2a4e381))
16+
* format all `api.md` files ([ee5d577](https://github.com/runloopai/api-client-python/commit/ee5d5773d408ac8e61101fd0187ec071709bebab))
17+
* **internal:** add request options to SSE classes ([e636aca](https://github.com/runloopai/api-client-python/commit/e636aca4eedb81b35d80bd6f5229cc71153ec545))
18+
* **internal:** make `test_proxy_environment_variables` more resilient ([564cd57](https://github.com/runloopai/api-client-python/commit/564cd5730fbf94b7014390ee71d7595cb7d6e71a))
19+
* **internal:** make `test_proxy_environment_variables` more resilient to env ([21d4ce8](https://github.com/runloopai/api-client-python/commit/21d4ce865094d9272841871eefde3cf15c183d19))
20+
* **scenarios:** make scenario status enum instead of string ([#7552](https://github.com/runloopai/api-client-python/issues/7552)) ([e6e5208](https://github.com/runloopai/api-client-python/commit/e6e5208c19360f24f10b3c0da84119f7eb356bb1))
21+
* update mock server docs ([273fb5e](https://github.com/runloopai/api-client-python/commit/273fb5ec761bcc5948571d9757780d86b6f0f50d))
22+
23+
24+
### Refactors
25+
26+
* deprecate and make Nullable total_count and remaining_count of ListViews ([#7533](https://github.com/runloopai/api-client-python/issues/7533)) ([8b16ebe](https://github.com/runloopai/api-client-python/commit/8b16ebe7aba9f96592f03ed2844211209b35d9e6))
27+
328
## 1.8.0 (2026-02-12)
429

530
Full Changelog: [v1.7.0...v1.8.0](https://github.com/runloopai/api-client-python/compare/v1.7.0...v1.8.0)

CONTRIBUTING.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,7 @@ $ pip install ./path-to-wheel-file.whl
8888
Most tests require you to [set up a mock server](https://github.com/stoplightio/prism) against the OpenAPI spec to run the tests.
8989

9090
```sh
91-
# you will need npm installed
92-
npx prism mock path/to/your/openapi.yml
91+
$ ./scripts/mock
9392
```
9493

9594
```sh

api.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ Methods:
160160
- <code title="post /v1/devboxes/{id}/remove_tunnel">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">remove_tunnel</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_remove_tunnel_params.py">params</a>) -> object</code>
161161
- <code title="post /v1/devboxes/{id}/resume">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">resume</a>(id) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
162162
- <code title="get /v1/devboxes/{id}/usage">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">retrieve_resource_usage</a>(id) -> <a href="./src/runloop_api_client/types/devbox_resource_usage_view.py">DevboxResourceUsageView</a></code>
163-
- <code title="post /v1/devboxes/{id}/shutdown">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">shutdown</a>(id) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
163+
- <code title="post /v1/devboxes/{id}/shutdown">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">shutdown</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_shutdown_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
164164
- <code title="post /v1/devboxes/{id}/snapshot_disk">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">snapshot_disk</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_snapshot_disk_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_snapshot_view.py">DevboxSnapshotView</a></code>
165165
- <code title="post /v1/devboxes/{id}/snapshot_disk_async">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">snapshot_disk_async</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_snapshot_disk_async_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_snapshot_view.py">DevboxSnapshotView</a></code>
166166
- <code title="post /v1/devboxes/{id}/suspend">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">suspend</a>(id) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
@@ -277,6 +277,7 @@ Methods:
277277
- <code title="get /v1/scenarios/{id}">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/scenario_view.py">ScenarioView</a></code>
278278
- <code title="post /v1/scenarios/{id}">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">update</a>(id, \*\*<a href="src/runloop_api_client/types/scenario_update_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenario_view.py">ScenarioView</a></code>
279279
- <code title="get /v1/scenarios">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">list</a>(\*\*<a href="src/runloop_api_client/types/scenario_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenario_view.py">SyncScenariosCursorIDPage[ScenarioView]</a></code>
280+
- <code title="post /v1/scenarios/{id}/archive">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">archive</a>(id) -> <a href="./src/runloop_api_client/types/scenario_view.py">ScenarioView</a></code>
280281
- <code title="get /v1/scenarios/list_public">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">list_public</a>(\*\*<a href="src/runloop_api_client/types/scenario_list_public_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenario_view.py">SyncScenariosCursorIDPage[ScenarioView]</a></code>
281282
- <code title="post /v1/scenarios/start_run">client.scenarios.<a href="./src/runloop_api_client/resources/scenarios/scenarios.py">start_run</a>(\*\*<a href="src/runloop_api_client/types/scenario_start_run_params.py">params</a>) -> <a href="./src/runloop_api_client/types/scenario_run_view.py">ScenarioRunView</a></code>
282283

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "runloop_api_client"
3-
version = "1.8.0"
3+
version = "1.9.0"
44
description = "The official Python library for the runloop API"
55
dynamic = ["readme"]
66
license = "MIT"

scripts/format

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@ uv run ruff check --fix .
1111
uv run ruff format
1212

1313
echo "==> Formatting docs"
14-
uv run python scripts/utils/ruffen-docs.py README.md api.md README-SDK.md
14+
uv run python scripts/utils/ruffen-docs.py README.md $(find . -type f -name api.md)

src/runloop_api_client/_response.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ def _parse(self, *, to: type[_T] | None = None) -> R | _T:
152152
),
153153
response=self.http_response,
154154
client=cast(Any, self._client),
155+
options=self._options,
155156
),
156157
)
157158

@@ -162,6 +163,7 @@ def _parse(self, *, to: type[_T] | None = None) -> R | _T:
162163
cast_to=extract_stream_chunk_type(self._stream_cls),
163164
response=self.http_response,
164165
client=cast(Any, self._client),
166+
options=self._options,
165167
),
166168
)
167169

@@ -175,6 +177,7 @@ def _parse(self, *, to: type[_T] | None = None) -> R | _T:
175177
cast_to=cast_to,
176178
response=self.http_response,
177179
client=cast(Any, self._client),
180+
options=self._options,
178181
),
179182
)
180183

src/runloop_api_client/_streaming.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232

3333
if TYPE_CHECKING:
3434
from ._client import Runloop, AsyncRunloop
35+
from ._models import FinalRequestOptions
3536

3637

3738
_T = TypeVar("_T")
@@ -41,7 +42,7 @@ class Stream(Generic[_T]):
4142
"""Provides the core interface to iterate over a synchronous stream response."""
4243

4344
response: httpx.Response
44-
45+
_options: Optional[FinalRequestOptions] = None
4546
_decoder: SSEBytesDecoder
4647

4748
def __init__(
@@ -50,10 +51,12 @@ def __init__(
5051
cast_to: type[_T],
5152
response: httpx.Response,
5253
client: Runloop,
54+
options: Optional[FinalRequestOptions] = None,
5355
) -> None:
5456
self.response = response
5557
self._cast_to = cast_to
5658
self._client = client
59+
self._options = options
5760
self._decoder = client._make_sse_decoder()
5861
self._iterator = self.__stream__()
5962

@@ -114,7 +117,7 @@ class AsyncStream(Generic[_T]):
114117
"""Provides the core interface to iterate over an asynchronous stream response."""
115118

116119
response: httpx.Response
117-
120+
_options: Optional[FinalRequestOptions] = None
118121
_decoder: SSEDecoder | SSEBytesDecoder
119122

120123
def __init__(
@@ -123,10 +126,12 @@ def __init__(
123126
cast_to: type[_T],
124127
response: httpx.Response,
125128
client: AsyncRunloop,
129+
options: Optional[FinalRequestOptions] = None,
126130
) -> None:
127131
self.response = response
128132
self._cast_to = cast_to
129133
self._client = client
134+
self._options = options
130135
self._decoder = client._make_sse_decoder()
131136
self._iterator = self.__stream__()
132137

src/runloop_api_client/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
22

33
__title__ = "runloop_api_client"
4-
__version__ = "1.8.0" # x-release-please-version
4+
__version__ = "1.9.0" # x-release-please-version

0 commit comments

Comments
 (0)