From 4e4d87099d026f3ea9cd6a6cc84772a3da3c2fec Mon Sep 17 00:00:00 2001 From: James Chainey Date: Fri, 19 Jun 2026 14:31:35 -0700 Subject: [PATCH] fix: remove deprecated create_from_inspection endpoint Remove the broken `create_from_inspection` blueprint endpoint and its associated types (`BlueprintCreateFromInspectionParams`, `InspectionSourceParam`) which were part of the retired RepoConnect project. The upstream API no longer serves this route. Co-authored-by: Cursor --- .stats.yml | 2 +- api.md | 3 - .../resources/blueprints.py | 178 ------------------ src/runloop_api_client/types/__init__.py | 4 - ...blueprint_create_from_inspection_params.py | 53 ------ .../types/inspection_source_param.py | 18 -- tests/api_resources/test_blueprints.py | 170 ----------------- 7 files changed, 1 insertion(+), 427 deletions(-) delete mode 100644 src/runloop_api_client/types/blueprint_create_from_inspection_params.py delete mode 100644 src/runloop_api_client/types/inspection_source_param.py diff --git a/.stats.yml b/.stats.yml index ed9090410..7f606e231 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 120 +configured_endpoints: 119 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai/runloop-8f05915b107d49f4a50f2d83abfa1d7233a685f1d85e02465a218fa5acb55ddd.yml openapi_spec_hash: 905fa27970b4b7201184df9c63eba3b9 config_hash: ed1fdd7c9f0a25647e16b602bad4ff2e diff --git a/api.md b/api.md index fbd1bc6ab..2f3ddb2f8 100644 --- a/api.md +++ b/api.md @@ -174,14 +174,12 @@ Types: ```python from runloop_api_client.types import ( - BlueprintBuildFromInspectionParameters, BlueprintBuildLog, BlueprintBuildLogsListView, BlueprintBuildParameters, BlueprintListView, BlueprintPreviewView, BlueprintView, - InspectionSource, ) ``` @@ -192,7 +190,6 @@ Methods: - client.blueprints.retrieve(id) -> BlueprintView - client.blueprints.list(\*\*params) -> SyncBlueprintsCursorIDPage[BlueprintView] - client.blueprints.delete(id) -> object -- client.blueprints.create_from_inspection(\*\*params) -> BlueprintView - client.blueprints.list_public(\*\*params) -> SyncBlueprintsCursorIDPage[BlueprintView] - client.blueprints.logs(id) -> BlueprintBuildLogsListView - client.blueprints.preview(\*\*params) -> BlueprintPreviewView diff --git a/src/runloop_api_client/resources/blueprints.py b/src/runloop_api_client/resources/blueprints.py index 79ee985a3..66185645e 100644 --- a/src/runloop_api_client/resources/blueprints.py +++ b/src/runloop_api_client/resources/blueprints.py @@ -12,7 +12,6 @@ blueprint_create_params, blueprint_preview_params, blueprint_list_public_params, - blueprint_create_from_inspection_params, ) from .._types import NOT_GIVEN, Body, Omit, Query, Headers, NotGiven, SequenceNotStr, omit, not_given from .._utils import is_given, path_template, maybe_transform, async_maybe_transform @@ -33,7 +32,6 @@ from .._utils._validation import ValidationNotification from ..types.blueprint_view import BlueprintView from ..types.blueprint_preview_view import BlueprintPreviewView -from ..types.inspection_source_param import InspectionSourceParam from ..types.blueprint_build_logs_list_view import BlueprintBuildLogsListView from ..types.shared_params.launch_parameters import LaunchParameters from ..types.shared_params.code_mount_parameters import CodeMountParameters @@ -499,88 +497,6 @@ def delete( cast_to=object, ) - def create_from_inspection( - self, - *, - inspection_source: InspectionSourceParam, - name: str, - file_mounts: Optional[Dict[str, str]] | Omit = omit, - launch_parameters: Optional[LaunchParameters] | Omit = omit, - metadata: Optional[Dict[str, str]] | Omit = omit, - network_policy_id: Optional[str] | Omit = omit, - secrets: Optional[Dict[str, str]] | Omit = omit, - system_setup_commands: Optional[SequenceNotStr[str]] | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - idempotency_key: str | None = None, - ) -> BlueprintView: - """ - Starts build of custom defined container Blueprint using a RepositoryConnection - Inspection as a source container specification. - - Args: - inspection_source: (Optional) Use a RepositoryInspection a source of a Blueprint build. The - Dockerfile will be automatically created based on the RepositoryInspection - contents. - - name: Name of the Blueprint. - - file_mounts: (Optional) Map of paths and file contents to write before setup. - - launch_parameters: LaunchParameters enable you to customize the resources available to your Devbox - as well as the environment set up that should be completed before the Devbox is - marked as 'running'. - - metadata: (Optional) User defined metadata for the Blueprint. - - network_policy_id: (Optional) ID of the network policy to apply during blueprint build. This - restricts network access during the build process. - - secrets: (Optional) Map of mount IDs/environment variable names to secret names. Secrets - can be used as environment variables in system_setup_commands. Example: - {"GITHUB_TOKEN": "gh_secret"} makes 'gh_secret' available as GITHUB_TOKEN. - - system_setup_commands: A list of commands to run to set up your system. - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - - idempotency_key: Specify a custom idempotency key for this request - """ - return self._post( - "/v1/blueprints/create_from_inspection", - body=maybe_transform( - { - "inspection_source": inspection_source, - "name": name, - "file_mounts": file_mounts, - "launch_parameters": launch_parameters, - "metadata": metadata, - "network_policy_id": network_policy_id, - "secrets": secrets, - "system_setup_commands": system_setup_commands, - }, - blueprint_create_from_inspection_params.BlueprintCreateFromInspectionParams, - ), - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - idempotency_key=idempotency_key, - ), - cast_to=BlueprintView, - ) - def list_public( self, *, @@ -1186,88 +1102,6 @@ async def delete( cast_to=object, ) - async def create_from_inspection( - self, - *, - inspection_source: InspectionSourceParam, - name: str, - file_mounts: Optional[Dict[str, str]] | Omit = omit, - launch_parameters: Optional[LaunchParameters] | Omit = omit, - metadata: Optional[Dict[str, str]] | Omit = omit, - network_policy_id: Optional[str] | Omit = omit, - secrets: Optional[Dict[str, str]] | Omit = omit, - system_setup_commands: Optional[SequenceNotStr[str]] | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - idempotency_key: str | None = None, - ) -> BlueprintView: - """ - Starts build of custom defined container Blueprint using a RepositoryConnection - Inspection as a source container specification. - - Args: - inspection_source: (Optional) Use a RepositoryInspection a source of a Blueprint build. The - Dockerfile will be automatically created based on the RepositoryInspection - contents. - - name: Name of the Blueprint. - - file_mounts: (Optional) Map of paths and file contents to write before setup. - - launch_parameters: LaunchParameters enable you to customize the resources available to your Devbox - as well as the environment set up that should be completed before the Devbox is - marked as 'running'. - - metadata: (Optional) User defined metadata for the Blueprint. - - network_policy_id: (Optional) ID of the network policy to apply during blueprint build. This - restricts network access during the build process. - - secrets: (Optional) Map of mount IDs/environment variable names to secret names. Secrets - can be used as environment variables in system_setup_commands. Example: - {"GITHUB_TOKEN": "gh_secret"} makes 'gh_secret' available as GITHUB_TOKEN. - - system_setup_commands: A list of commands to run to set up your system. - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - - idempotency_key: Specify a custom idempotency key for this request - """ - return await self._post( - "/v1/blueprints/create_from_inspection", - body=await async_maybe_transform( - { - "inspection_source": inspection_source, - "name": name, - "file_mounts": file_mounts, - "launch_parameters": launch_parameters, - "metadata": metadata, - "network_policy_id": network_policy_id, - "secrets": secrets, - "system_setup_commands": system_setup_commands, - }, - blueprint_create_from_inspection_params.BlueprintCreateFromInspectionParams, - ), - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - idempotency_key=idempotency_key, - ), - cast_to=BlueprintView, - ) - def list_public( self, *, @@ -1494,9 +1328,6 @@ def __init__(self, blueprints: BlueprintsResource) -> None: self.delete = to_raw_response_wrapper( blueprints.delete, ) - self.create_from_inspection = to_raw_response_wrapper( - blueprints.create_from_inspection, - ) self.list_public = to_raw_response_wrapper( blueprints.list_public, ) @@ -1526,9 +1357,6 @@ def __init__(self, blueprints: AsyncBlueprintsResource) -> None: self.delete = async_to_raw_response_wrapper( blueprints.delete, ) - self.create_from_inspection = async_to_raw_response_wrapper( - blueprints.create_from_inspection, - ) self.list_public = async_to_raw_response_wrapper( blueprints.list_public, ) @@ -1558,9 +1386,6 @@ def __init__(self, blueprints: BlueprintsResource) -> None: self.delete = to_streamed_response_wrapper( blueprints.delete, ) - self.create_from_inspection = to_streamed_response_wrapper( - blueprints.create_from_inspection, - ) self.list_public = to_streamed_response_wrapper( blueprints.list_public, ) @@ -1590,9 +1415,6 @@ def __init__(self, blueprints: AsyncBlueprintsResource) -> None: self.delete = async_to_streamed_response_wrapper( blueprints.delete, ) - self.create_from_inspection = async_to_streamed_response_wrapper( - blueprints.create_from_inspection, - ) self.list_public = async_to_streamed_response_wrapper( blueprints.list_public, ) diff --git a/src/runloop_api_client/types/__init__.py b/src/runloop_api_client/types/__init__.py index 6d23d82f3..3f36e4cc2 100644 --- a/src/runloop_api_client/types/__init__.py +++ b/src/runloop_api_client/types/__init__.py @@ -87,7 +87,6 @@ from .benchmark_run_list_view import BenchmarkRunListView as BenchmarkRunListView from .benchmark_update_params import BenchmarkUpdateParams as BenchmarkUpdateParams from .blueprint_create_params import BlueprintCreateParams as BlueprintCreateParams -from .inspection_source_param import InspectionSourceParam as InspectionSourceParam from .pty_control_result_view import PtyControlResultView as PtyControlResultView from .agent_devbox_counts_view import AgentDevboxCountsView as AgentDevboxCountsView from .agent_list_public_params import AgentListPublicParams as AgentListPublicParams @@ -146,6 +145,3 @@ from .benchmark_run_list_scenario_runs_params import ( BenchmarkRunListScenarioRunsParams as BenchmarkRunListScenarioRunsParams, ) -from .blueprint_create_from_inspection_params import ( - BlueprintCreateFromInspectionParams as BlueprintCreateFromInspectionParams, -) diff --git a/src/runloop_api_client/types/blueprint_create_from_inspection_params.py b/src/runloop_api_client/types/blueprint_create_from_inspection_params.py deleted file mode 100644 index 21715b1b0..000000000 --- a/src/runloop_api_client/types/blueprint_create_from_inspection_params.py +++ /dev/null @@ -1,53 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing import Dict, Optional -from typing_extensions import Required, TypedDict - -from .._types import SequenceNotStr -from .inspection_source_param import InspectionSourceParam -from .shared_params.launch_parameters import LaunchParameters - -__all__ = ["BlueprintCreateFromInspectionParams"] - - -class BlueprintCreateFromInspectionParams(TypedDict, total=False): - inspection_source: Required[InspectionSourceParam] - """(Optional) Use a RepositoryInspection a source of a Blueprint build. - - The Dockerfile will be automatically created based on the RepositoryInspection - contents. - """ - - name: Required[str] - """Name of the Blueprint.""" - - file_mounts: Optional[Dict[str, str]] - """(Optional) Map of paths and file contents to write before setup.""" - - launch_parameters: Optional[LaunchParameters] - """ - LaunchParameters enable you to customize the resources available to your Devbox - as well as the environment set up that should be completed before the Devbox is - marked as 'running'. - """ - - metadata: Optional[Dict[str, str]] - """(Optional) User defined metadata for the Blueprint.""" - - network_policy_id: Optional[str] - """(Optional) ID of the network policy to apply during blueprint build. - - This restricts network access during the build process. - """ - - secrets: Optional[Dict[str, str]] - """(Optional) Map of mount IDs/environment variable names to secret names. - - Secrets can be used as environment variables in system_setup_commands. Example: - {"GITHUB_TOKEN": "gh_secret"} makes 'gh_secret' available as GITHUB_TOKEN. - """ - - system_setup_commands: Optional[SequenceNotStr[str]] - """A list of commands to run to set up your system.""" diff --git a/src/runloop_api_client/types/inspection_source_param.py b/src/runloop_api_client/types/inspection_source_param.py deleted file mode 100644 index 0d1308d8e..000000000 --- a/src/runloop_api_client/types/inspection_source_param.py +++ /dev/null @@ -1,18 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing import Optional -from typing_extensions import Required, TypedDict - -__all__ = ["InspectionSourceParam"] - - -class InspectionSourceParam(TypedDict, total=False): - """Use a RepositoryInspection a source of a Blueprint build.""" - - inspection_id: Required[str] - """The ID of a repository inspection.""" - - github_auth_token: Optional[str] - """GitHub authentication token for accessing private repositories.""" diff --git a/tests/api_resources/test_blueprints.py b/tests/api_resources/test_blueprints.py index eaa6d65c4..e3ff9b7eb 100644 --- a/tests/api_resources/test_blueprints.py +++ b/tests/api_resources/test_blueprints.py @@ -266,91 +266,6 @@ def test_path_params_delete(self, client: Runloop) -> None: "", ) - @parametrize - def test_method_create_from_inspection(self, client: Runloop) -> None: - blueprint = client.blueprints.create_from_inspection( - inspection_source={"inspection_id": "inspection_id"}, - name="name", - ) - assert_matches_type(BlueprintView, blueprint, path=["response"]) - - @parametrize - def test_method_create_from_inspection_with_all_params(self, client: Runloop) -> None: - blueprint = client.blueprints.create_from_inspection( - inspection_source={ - "inspection_id": "inspection_id", - "github_auth_token": "github_auth_token", - }, - name="name", - file_mounts={"foo": "string"}, - launch_parameters={ - "after_idle": { - "idle_time_seconds": 0, - "on_idle": "shutdown", - }, - "architecture": "x86_64", - "available_ports": [0], - "custom_cpu_cores": 0, - "custom_disk_size": 0, - "custom_gb_memory": 0, - "keep_alive_time_seconds": 0, - "launch_commands": ["string"], - "lifecycle": { - "after_idle": { - "idle_time_seconds": 0, - "on_idle": "shutdown", - }, - "lifecycle_hooks": { - "suspend_commands": ["string"], - "suspend_deadline_ms": 0, - }, - "resume_triggers": { - "axon_event": True, - "http": True, - }, - }, - "network_policy_id": "network_policy_id", - "provisioning_tier": "standard", - "required_services": ["string"], - "resource_size_request": "X_SMALL", - "user_parameters": { - "uid": 0, - "username": "username", - }, - }, - metadata={"foo": "string"}, - network_policy_id="network_policy_id", - secrets={"foo": "string"}, - system_setup_commands=["string"], - ) - assert_matches_type(BlueprintView, blueprint, path=["response"]) - - @parametrize - def test_raw_response_create_from_inspection(self, client: Runloop) -> None: - response = client.blueprints.with_raw_response.create_from_inspection( - inspection_source={"inspection_id": "inspection_id"}, - name="name", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - blueprint = response.parse() - assert_matches_type(BlueprintView, blueprint, path=["response"]) - - @parametrize - def test_streaming_response_create_from_inspection(self, client: Runloop) -> None: - with client.blueprints.with_streaming_response.create_from_inspection( - inspection_source={"inspection_id": "inspection_id"}, - name="name", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - blueprint = response.parse() - assert_matches_type(BlueprintView, blueprint, path=["response"]) - - assert cast(Any, response.is_closed) is True - @parametrize def test_method_list_public(self, client: Runloop) -> None: blueprint = client.blueprints.list_public() @@ -787,91 +702,6 @@ async def test_path_params_delete(self, async_client: AsyncRunloop) -> None: "", ) - @parametrize - async def test_method_create_from_inspection(self, async_client: AsyncRunloop) -> None: - blueprint = await async_client.blueprints.create_from_inspection( - inspection_source={"inspection_id": "inspection_id"}, - name="name", - ) - assert_matches_type(BlueprintView, blueprint, path=["response"]) - - @parametrize - async def test_method_create_from_inspection_with_all_params(self, async_client: AsyncRunloop) -> None: - blueprint = await async_client.blueprints.create_from_inspection( - inspection_source={ - "inspection_id": "inspection_id", - "github_auth_token": "github_auth_token", - }, - name="name", - file_mounts={"foo": "string"}, - launch_parameters={ - "after_idle": { - "idle_time_seconds": 0, - "on_idle": "shutdown", - }, - "architecture": "x86_64", - "available_ports": [0], - "custom_cpu_cores": 0, - "custom_disk_size": 0, - "custom_gb_memory": 0, - "keep_alive_time_seconds": 0, - "launch_commands": ["string"], - "lifecycle": { - "after_idle": { - "idle_time_seconds": 0, - "on_idle": "shutdown", - }, - "lifecycle_hooks": { - "suspend_commands": ["string"], - "suspend_deadline_ms": 0, - }, - "resume_triggers": { - "axon_event": True, - "http": True, - }, - }, - "network_policy_id": "network_policy_id", - "provisioning_tier": "standard", - "required_services": ["string"], - "resource_size_request": "X_SMALL", - "user_parameters": { - "uid": 0, - "username": "username", - }, - }, - metadata={"foo": "string"}, - network_policy_id="network_policy_id", - secrets={"foo": "string"}, - system_setup_commands=["string"], - ) - assert_matches_type(BlueprintView, blueprint, path=["response"]) - - @parametrize - async def test_raw_response_create_from_inspection(self, async_client: AsyncRunloop) -> None: - response = await async_client.blueprints.with_raw_response.create_from_inspection( - inspection_source={"inspection_id": "inspection_id"}, - name="name", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - blueprint = await response.parse() - assert_matches_type(BlueprintView, blueprint, path=["response"]) - - @parametrize - async def test_streaming_response_create_from_inspection(self, async_client: AsyncRunloop) -> None: - async with async_client.blueprints.with_streaming_response.create_from_inspection( - inspection_source={"inspection_id": "inspection_id"}, - name="name", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - blueprint = await response.parse() - assert_matches_type(BlueprintView, blueprint, path=["response"]) - - assert cast(Any, response.is_closed) is True - @parametrize async def test_method_list_public(self, async_client: AsyncRunloop) -> None: blueprint = await async_client.blueprints.list_public()