Skip to content

Commit d9ef583

Browse files
release: 1.14.1 (#776)
Co-authored-by: stainless-app[bot] <142633134+stainless-app[bot]@users.noreply.github.com>
1 parent 925c735 commit d9ef583

23 files changed

Lines changed: 26 additions & 2178 deletions

.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.14.0"
2+
".": "1.14.1"
33
}

.stats.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 124
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-f32de1991bef7651f9b0970b503e2986c7a88708c4a408d54abe6d089795e9f9.yml
3-
openapi_spec_hash: d2005d48f75fba4a5368209cf49641dc
4-
config_hash: 5ffcc19219880e7d9ce43c1e6860568c
1+
configured_endpoints: 116
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-c33fa67077f6f9cc8cb6d82a71657693f7288e1eff48b7b94099f2f11966b67b.yml
3+
openapi_spec_hash: 4329105152eb16bc5d2063038603ea61
4+
config_hash: 6649774d90af30c3559d6a242b6cb4b0

CHANGELOG.md

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

3+
## 1.14.1 (2026-04-01)
4+
5+
Full Changelog: [v1.14.0...v1.14.1](https://github.com/runloopai/api-client-python/compare/v1.14.0...v1.14.1)
6+
7+
### Bug Fixes
8+
9+
* **sdk:** remove incorrect remove_tunnel DeprecationWarning ([#775](https://github.com/runloopai/api-client-python/issues/775)) ([925c735](https://github.com/runloopai/api-client-python/commit/925c7353c5331df1f83052ab42793cc076e1a4ea))
10+
11+
12+
### Chores
13+
14+
* Hide repository connection APIs from public OpenAPI spec ([#8462](https://github.com/runloopai/api-client-python/issues/8462)) ([2eac1fc](https://github.com/runloopai/api-client-python/commit/2eac1fcf5c2d05bcbe7ba596b5f2789f98aae660))
15+
* **tests:** bump steady to v0.20.1 ([c19d63d](https://github.com/runloopai/api-client-python/commit/c19d63d141ef2f60df570ebb2c21d8fcda2a98b9))
16+
* **tests:** bump steady to v0.20.2 ([3c0beeb](https://github.com/runloopai/api-client-python/commit/3c0beeb5b142e30c557aa6e85d407ecf65c78051))
17+
318
## 1.14.0 (2026-03-31)
419

520
Full Changelog: [v1.13.3...v1.14.0](https://github.com/runloopai/api-client-python/compare/v1.13.3...v1.14.0)

api.md

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -379,31 +379,6 @@ Methods:
379379
- <code title="get /v1/objects/{id}/download">client.objects.<a href="./src/runloop_api_client/resources/objects.py">download</a>(id, \*\*<a href="src/runloop_api_client/types/object_download_params.py">params</a>) -> <a href="./src/runloop_api_client/types/object_download_url_view.py">ObjectDownloadURLView</a></code>
380380
- <code title="get /v1/objects/list_public">client.objects.<a href="./src/runloop_api_client/resources/objects.py">list_public</a>(\*\*<a href="src/runloop_api_client/types/object_list_public_params.py">params</a>) -> <a href="./src/runloop_api_client/types/object_view.py">SyncObjectsCursorIDPage[ObjectView]</a></code>
381381

382-
# Repositories
383-
384-
Types:
385-
386-
```python
387-
from runloop_api_client.types import (
388-
RepositoryConnectionListView,
389-
RepositoryConnectionView,
390-
RepositoryInspectionDetails,
391-
RepositoryInspectionListView,
392-
RepositoryManifestView,
393-
)
394-
```
395-
396-
Methods:
397-
398-
- <code title="post /v1/repositories">client.repositories.<a href="./src/runloop_api_client/resources/repositories.py">create</a>(\*\*<a href="src/runloop_api_client/types/repository_create_params.py">params</a>) -> <a href="./src/runloop_api_client/types/repository_connection_view.py">RepositoryConnectionView</a></code>
399-
- <code title="get /v1/repositories/{id}">client.repositories.<a href="./src/runloop_api_client/resources/repositories.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/repository_connection_view.py">RepositoryConnectionView</a></code>
400-
- <code title="get /v1/repositories">client.repositories.<a href="./src/runloop_api_client/resources/repositories.py">list</a>(\*\*<a href="src/runloop_api_client/types/repository_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/repository_connection_view.py">SyncRepositoriesCursorIDPage[RepositoryConnectionView]</a></code>
401-
- <code title="post /v1/repositories/{id}/delete">client.repositories.<a href="./src/runloop_api_client/resources/repositories.py">delete</a>(id) -> object</code>
402-
- <code title="post /v1/repositories/{id}/inspect">client.repositories.<a href="./src/runloop_api_client/resources/repositories.py">inspect</a>(id, \*\*<a href="src/runloop_api_client/types/repository_inspect_params.py">params</a>) -> <a href="./src/runloop_api_client/types/repository_inspection_details.py">RepositoryInspectionDetails</a></code>
403-
- <code title="get /v1/repositories/{id}/inspections">client.repositories.<a href="./src/runloop_api_client/resources/repositories.py">list_inspections</a>(id) -> <a href="./src/runloop_api_client/types/repository_inspection_list_view.py">RepositoryInspectionListView</a></code>
404-
- <code title="post /v1/repositories/{id}/refresh">client.repositories.<a href="./src/runloop_api_client/resources/repositories.py">refresh</a>(id, \*\*<a href="src/runloop_api_client/types/repository_refresh_params.py">params</a>) -> object</code>
405-
- <code title="get /v1/repositories/inspections/{id}">client.repositories.<a href="./src/runloop_api_client/resources/repositories.py">retrieve_inspection</a>(id) -> <a href="./src/runloop_api_client/types/repository_inspection_details.py">RepositoryInspectionDetails</a></code>
406-
407382
# Secrets
408383

409384
Types:

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.14.0"
3+
version = "1.14.1"
44
description = "The official Python library for the runloop API"
55
dynamic = ["readme"]
66
license = "MIT"

scripts/mock

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ echo "==> Starting mock server with URL ${URL}"
2222
# Run steady mock on the given spec
2323
if [ "$1" == "--daemon" ]; then
2424
# Pre-install the package so the download doesn't eat into the startup timeout
25-
npm exec --package=@stdy/cli@0.19.7 -- steady --version
25+
npm exec --package=@stdy/cli@0.20.2 -- steady --version
2626

27-
npm exec --package=@stdy/cli@0.19.7 -- steady --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets "$URL" &> .stdy.log &
27+
npm exec --package=@stdy/cli@0.20.2 -- steady --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets "$URL" &> .stdy.log &
2828

2929
# Wait for server to come online via health endpoint (max 30s)
3030
echo -n "Waiting for server"
@@ -48,5 +48,5 @@ if [ "$1" == "--daemon" ]; then
4848

4949
echo
5050
else
51-
npm exec --package=@stdy/cli@0.19.7 -- steady --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets "$URL"
51+
npm exec --package=@stdy/cli@0.20.2 -- steady --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets "$URL"
5252
fi

scripts/test

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ elif ! steady_is_running ; then
4343
echo -e "To run the server, pass in the path or url of your OpenAPI"
4444
echo -e "spec to the steady command:"
4545
echo
46-
echo -e " \$ ${YELLOW}npm exec --package=@stdy/cli@0.19.7 -- steady path/to/your.openapi.yml --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets${NC}"
46+
echo -e " \$ ${YELLOW}npm exec --package=@stdy/cli@0.20.2 -- steady path/to/your.openapi.yml --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets${NC}"
4747
echo
4848

4949
exit 1

src/runloop_api_client/_client.py

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
benchmarks,
4242
blueprints,
4343
mcp_configs,
44-
repositories,
4544
benchmark_jobs,
4645
benchmark_runs,
4746
gateway_configs,
@@ -54,7 +53,6 @@
5453
from .resources.blueprints import BlueprintsResource, AsyncBlueprintsResource
5554
from .resources.axons.axons import AxonsResource, AsyncAxonsResource
5655
from .resources.mcp_configs import McpConfigsResource, AsyncMcpConfigsResource
57-
from .resources.repositories import RepositoriesResource, AsyncRepositoriesResource
5856
from .resources.benchmark_jobs import BenchmarkJobsResource, AsyncBenchmarkJobsResource
5957
from .resources.benchmark_runs import BenchmarkRunsResource, AsyncBenchmarkRunsResource
6058
from .resources.gateway_configs import GatewayConfigsResource, AsyncGatewayConfigsResource
@@ -176,12 +174,6 @@ def objects(self) -> ObjectsResource:
176174

177175
return ObjectsResource(self)
178176

179-
@cached_property
180-
def repositories(self) -> RepositoriesResource:
181-
from .resources.repositories import RepositoriesResource
182-
183-
return RepositoriesResource(self)
184-
185177
@cached_property
186178
def secrets(self) -> SecretsResource:
187179
from .resources.secrets import SecretsResource
@@ -430,12 +422,6 @@ def objects(self) -> AsyncObjectsResource:
430422

431423
return AsyncObjectsResource(self)
432424

433-
@cached_property
434-
def repositories(self) -> AsyncRepositoriesResource:
435-
from .resources.repositories import AsyncRepositoriesResource
436-
437-
return AsyncRepositoriesResource(self)
438-
439425
@cached_property
440426
def secrets(self) -> AsyncSecretsResource:
441427
from .resources.secrets import AsyncSecretsResource
@@ -633,12 +619,6 @@ def objects(self) -> objects.ObjectsResourceWithRawResponse:
633619

634620
return ObjectsResourceWithRawResponse(self._client.objects)
635621

636-
@cached_property
637-
def repositories(self) -> repositories.RepositoriesResourceWithRawResponse:
638-
from .resources.repositories import RepositoriesResourceWithRawResponse
639-
640-
return RepositoriesResourceWithRawResponse(self._client.repositories)
641-
642622
@cached_property
643623
def secrets(self) -> secrets.SecretsResourceWithRawResponse:
644624
from .resources.secrets import SecretsResourceWithRawResponse
@@ -724,12 +704,6 @@ def objects(self) -> objects.AsyncObjectsResourceWithRawResponse:
724704

725705
return AsyncObjectsResourceWithRawResponse(self._client.objects)
726706

727-
@cached_property
728-
def repositories(self) -> repositories.AsyncRepositoriesResourceWithRawResponse:
729-
from .resources.repositories import AsyncRepositoriesResourceWithRawResponse
730-
731-
return AsyncRepositoriesResourceWithRawResponse(self._client.repositories)
732-
733707
@cached_property
734708
def secrets(self) -> secrets.AsyncSecretsResourceWithRawResponse:
735709
from .resources.secrets import AsyncSecretsResourceWithRawResponse
@@ -815,12 +789,6 @@ def objects(self) -> objects.ObjectsResourceWithStreamingResponse:
815789

816790
return ObjectsResourceWithStreamingResponse(self._client.objects)
817791

818-
@cached_property
819-
def repositories(self) -> repositories.RepositoriesResourceWithStreamingResponse:
820-
from .resources.repositories import RepositoriesResourceWithStreamingResponse
821-
822-
return RepositoriesResourceWithStreamingResponse(self._client.repositories)
823-
824792
@cached_property
825793
def secrets(self) -> secrets.SecretsResourceWithStreamingResponse:
826794
from .resources.secrets import SecretsResourceWithStreamingResponse
@@ -906,12 +874,6 @@ def objects(self) -> objects.AsyncObjectsResourceWithStreamingResponse:
906874

907875
return AsyncObjectsResourceWithStreamingResponse(self._client.objects)
908876

909-
@cached_property
910-
def repositories(self) -> repositories.AsyncRepositoriesResourceWithStreamingResponse:
911-
from .resources.repositories import AsyncRepositoriesResourceWithStreamingResponse
912-
913-
return AsyncRepositoriesResourceWithStreamingResponse(self._client.repositories)
914-
915877
@cached_property
916878
def secrets(self) -> secrets.AsyncSecretsResourceWithStreamingResponse:
917879
from .resources.secrets import AsyncSecretsResourceWithStreamingResponse

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.14.0" # x-release-please-version
4+
__version__ = "1.14.1" # x-release-please-version

src/runloop_api_client/pagination.py

Lines changed: 0 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@
1010
"AsyncBlueprintsCursorIDPage",
1111
"SyncDevboxesCursorIDPage",
1212
"AsyncDevboxesCursorIDPage",
13-
"SyncRepositoriesCursorIDPage",
14-
"AsyncRepositoriesCursorIDPage",
1513
"SyncDiskSnapshotsCursorIDPage",
1614
"AsyncDiskSnapshotsCursorIDPage",
1715
"SyncBenchmarksCursorIDPage",
@@ -51,11 +49,6 @@ class DevboxesCursorIDPageItem(Protocol):
5149
id: str
5250

5351

54-
@runtime_checkable
55-
class RepositoriesCursorIDPageItem(Protocol):
56-
id: str
57-
58-
5952
@runtime_checkable
6053
class DiskSnapshotsCursorIDPageItem(Protocol):
6154
id: str
@@ -252,74 +245,6 @@ def next_page_info(self) -> Optional[PageInfo]:
252245
return PageInfo(params={"starting_after": item.id})
253246

254247

255-
class SyncRepositoriesCursorIDPage(BaseSyncPage[_T], BasePage[_T], Generic[_T]):
256-
repositories: List[_T]
257-
has_more: Optional[bool] = None
258-
total_count: Optional[int] = None
259-
260-
@override
261-
def _get_page_items(self) -> List[_T]:
262-
repositories = self.repositories
263-
if not repositories:
264-
return []
265-
return repositories
266-
267-
@override
268-
def has_next_page(self) -> bool:
269-
has_more = self.has_more
270-
if has_more is not None and has_more is False:
271-
return False
272-
273-
return super().has_next_page()
274-
275-
@override
276-
def next_page_info(self) -> Optional[PageInfo]:
277-
repositories = self.repositories
278-
if not repositories:
279-
return None
280-
281-
item = cast(Any, repositories[-1])
282-
if not isinstance(item, RepositoriesCursorIDPageItem) or item.id is None: # pyright: ignore[reportUnnecessaryComparison]
283-
# TODO emit warning log
284-
return None
285-
286-
return PageInfo(params={"starting_after": item.id})
287-
288-
289-
class AsyncRepositoriesCursorIDPage(BaseAsyncPage[_T], BasePage[_T], Generic[_T]):
290-
repositories: List[_T]
291-
has_more: Optional[bool] = None
292-
total_count: Optional[int] = None
293-
294-
@override
295-
def _get_page_items(self) -> List[_T]:
296-
repositories = self.repositories
297-
if not repositories:
298-
return []
299-
return repositories
300-
301-
@override
302-
def has_next_page(self) -> bool:
303-
has_more = self.has_more
304-
if has_more is not None and has_more is False:
305-
return False
306-
307-
return super().has_next_page()
308-
309-
@override
310-
def next_page_info(self) -> Optional[PageInfo]:
311-
repositories = self.repositories
312-
if not repositories:
313-
return None
314-
315-
item = cast(Any, repositories[-1])
316-
if not isinstance(item, RepositoriesCursorIDPageItem) or item.id is None: # pyright: ignore[reportUnnecessaryComparison]
317-
# TODO emit warning log
318-
return None
319-
320-
return PageInfo(params={"starting_after": item.id})
321-
322-
323248
class SyncDiskSnapshotsCursorIDPage(BaseSyncPage[_T], BasePage[_T], Generic[_T]):
324249
snapshots: List[_T]
325250
has_more: Optional[bool] = None

0 commit comments

Comments
 (0)