diff --git a/.release-please-manifest.json b/.release-please-manifest.json index e72f11310..a780111df 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.14.0" + ".": "1.14.1" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index b1a5e6c48..8eb4b3559 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 124 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-f32de1991bef7651f9b0970b503e2986c7a88708c4a408d54abe6d089795e9f9.yml -openapi_spec_hash: d2005d48f75fba4a5368209cf49641dc -config_hash: 5ffcc19219880e7d9ce43c1e6860568c +configured_endpoints: 116 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-c33fa67077f6f9cc8cb6d82a71657693f7288e1eff48b7b94099f2f11966b67b.yml +openapi_spec_hash: 4329105152eb16bc5d2063038603ea61 +config_hash: 6649774d90af30c3559d6a242b6cb4b0 diff --git a/CHANGELOG.md b/CHANGELOG.md index 70c9db0e8..bbd58820a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## 1.14.1 (2026-04-01) + +Full Changelog: [v1.14.0...v1.14.1](https://github.com/runloopai/api-client-python/compare/v1.14.0...v1.14.1) + +### Bug Fixes + +* **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)) + + +### Chores + +* 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)) +* **tests:** bump steady to v0.20.1 ([c19d63d](https://github.com/runloopai/api-client-python/commit/c19d63d141ef2f60df570ebb2c21d8fcda2a98b9)) +* **tests:** bump steady to v0.20.2 ([3c0beeb](https://github.com/runloopai/api-client-python/commit/3c0beeb5b142e30c557aa6e85d407ecf65c78051)) + ## 1.14.0 (2026-03-31) Full Changelog: [v1.13.3...v1.14.0](https://github.com/runloopai/api-client-python/compare/v1.13.3...v1.14.0) diff --git a/api.md b/api.md index 14d010381..135eb6e8f 100644 --- a/api.md +++ b/api.md @@ -379,31 +379,6 @@ Methods: - client.objects.download(id, \*\*params) -> ObjectDownloadURLView - client.objects.list_public(\*\*params) -> SyncObjectsCursorIDPage[ObjectView] -# Repositories - -Types: - -```python -from runloop_api_client.types import ( - RepositoryConnectionListView, - RepositoryConnectionView, - RepositoryInspectionDetails, - RepositoryInspectionListView, - RepositoryManifestView, -) -``` - -Methods: - -- client.repositories.create(\*\*params) -> RepositoryConnectionView -- client.repositories.retrieve(id) -> RepositoryConnectionView -- client.repositories.list(\*\*params) -> SyncRepositoriesCursorIDPage[RepositoryConnectionView] -- client.repositories.delete(id) -> object -- client.repositories.inspect(id, \*\*params) -> RepositoryInspectionDetails -- client.repositories.list_inspections(id) -> RepositoryInspectionListView -- client.repositories.refresh(id, \*\*params) -> object -- client.repositories.retrieve_inspection(id) -> RepositoryInspectionDetails - # Secrets Types: diff --git a/pyproject.toml b/pyproject.toml index 93bd1ad77..6ca424c4e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "runloop_api_client" -version = "1.14.0" +version = "1.14.1" description = "The official Python library for the runloop API" dynamic = ["readme"] license = "MIT" diff --git a/scripts/mock b/scripts/mock index 290e21b9a..5cd7c157b 100755 --- a/scripts/mock +++ b/scripts/mock @@ -22,9 +22,9 @@ echo "==> Starting mock server with URL ${URL}" # Run steady mock on the given spec if [ "$1" == "--daemon" ]; then # Pre-install the package so the download doesn't eat into the startup timeout - npm exec --package=@stdy/cli@0.19.7 -- steady --version + npm exec --package=@stdy/cli@0.20.2 -- steady --version - 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 & + 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 & # Wait for server to come online via health endpoint (max 30s) echo -n "Waiting for server" @@ -48,5 +48,5 @@ if [ "$1" == "--daemon" ]; then echo else - 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" + 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" fi diff --git a/scripts/test b/scripts/test index a631738f5..5f30115cb 100755 --- a/scripts/test +++ b/scripts/test @@ -43,7 +43,7 @@ elif ! steady_is_running ; then echo -e "To run the server, pass in the path or url of your OpenAPI" echo -e "spec to the steady command:" echo - 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}" + 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}" echo exit 1 diff --git a/src/runloop_api_client/_client.py b/src/runloop_api_client/_client.py index 31ef26d72..28e1e6f94 100644 --- a/src/runloop_api_client/_client.py +++ b/src/runloop_api_client/_client.py @@ -41,7 +41,6 @@ benchmarks, blueprints, mcp_configs, - repositories, benchmark_jobs, benchmark_runs, gateway_configs, @@ -54,7 +53,6 @@ from .resources.blueprints import BlueprintsResource, AsyncBlueprintsResource from .resources.axons.axons import AxonsResource, AsyncAxonsResource from .resources.mcp_configs import McpConfigsResource, AsyncMcpConfigsResource - from .resources.repositories import RepositoriesResource, AsyncRepositoriesResource from .resources.benchmark_jobs import BenchmarkJobsResource, AsyncBenchmarkJobsResource from .resources.benchmark_runs import BenchmarkRunsResource, AsyncBenchmarkRunsResource from .resources.gateway_configs import GatewayConfigsResource, AsyncGatewayConfigsResource @@ -176,12 +174,6 @@ def objects(self) -> ObjectsResource: return ObjectsResource(self) - @cached_property - def repositories(self) -> RepositoriesResource: - from .resources.repositories import RepositoriesResource - - return RepositoriesResource(self) - @cached_property def secrets(self) -> SecretsResource: from .resources.secrets import SecretsResource @@ -430,12 +422,6 @@ def objects(self) -> AsyncObjectsResource: return AsyncObjectsResource(self) - @cached_property - def repositories(self) -> AsyncRepositoriesResource: - from .resources.repositories import AsyncRepositoriesResource - - return AsyncRepositoriesResource(self) - @cached_property def secrets(self) -> AsyncSecretsResource: from .resources.secrets import AsyncSecretsResource @@ -633,12 +619,6 @@ def objects(self) -> objects.ObjectsResourceWithRawResponse: return ObjectsResourceWithRawResponse(self._client.objects) - @cached_property - def repositories(self) -> repositories.RepositoriesResourceWithRawResponse: - from .resources.repositories import RepositoriesResourceWithRawResponse - - return RepositoriesResourceWithRawResponse(self._client.repositories) - @cached_property def secrets(self) -> secrets.SecretsResourceWithRawResponse: from .resources.secrets import SecretsResourceWithRawResponse @@ -724,12 +704,6 @@ def objects(self) -> objects.AsyncObjectsResourceWithRawResponse: return AsyncObjectsResourceWithRawResponse(self._client.objects) - @cached_property - def repositories(self) -> repositories.AsyncRepositoriesResourceWithRawResponse: - from .resources.repositories import AsyncRepositoriesResourceWithRawResponse - - return AsyncRepositoriesResourceWithRawResponse(self._client.repositories) - @cached_property def secrets(self) -> secrets.AsyncSecretsResourceWithRawResponse: from .resources.secrets import AsyncSecretsResourceWithRawResponse @@ -815,12 +789,6 @@ def objects(self) -> objects.ObjectsResourceWithStreamingResponse: return ObjectsResourceWithStreamingResponse(self._client.objects) - @cached_property - def repositories(self) -> repositories.RepositoriesResourceWithStreamingResponse: - from .resources.repositories import RepositoriesResourceWithStreamingResponse - - return RepositoriesResourceWithStreamingResponse(self._client.repositories) - @cached_property def secrets(self) -> secrets.SecretsResourceWithStreamingResponse: from .resources.secrets import SecretsResourceWithStreamingResponse @@ -906,12 +874,6 @@ def objects(self) -> objects.AsyncObjectsResourceWithStreamingResponse: return AsyncObjectsResourceWithStreamingResponse(self._client.objects) - @cached_property - def repositories(self) -> repositories.AsyncRepositoriesResourceWithStreamingResponse: - from .resources.repositories import AsyncRepositoriesResourceWithStreamingResponse - - return AsyncRepositoriesResourceWithStreamingResponse(self._client.repositories) - @cached_property def secrets(self) -> secrets.AsyncSecretsResourceWithStreamingResponse: from .resources.secrets import AsyncSecretsResourceWithStreamingResponse diff --git a/src/runloop_api_client/_version.py b/src/runloop_api_client/_version.py index 51ea16bb5..0640f31e8 100644 --- a/src/runloop_api_client/_version.py +++ b/src/runloop_api_client/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "runloop_api_client" -__version__ = "1.14.0" # x-release-please-version +__version__ = "1.14.1" # x-release-please-version diff --git a/src/runloop_api_client/pagination.py b/src/runloop_api_client/pagination.py index 9d1fd9491..e9804970c 100644 --- a/src/runloop_api_client/pagination.py +++ b/src/runloop_api_client/pagination.py @@ -10,8 +10,6 @@ "AsyncBlueprintsCursorIDPage", "SyncDevboxesCursorIDPage", "AsyncDevboxesCursorIDPage", - "SyncRepositoriesCursorIDPage", - "AsyncRepositoriesCursorIDPage", "SyncDiskSnapshotsCursorIDPage", "AsyncDiskSnapshotsCursorIDPage", "SyncBenchmarksCursorIDPage", @@ -51,11 +49,6 @@ class DevboxesCursorIDPageItem(Protocol): id: str -@runtime_checkable -class RepositoriesCursorIDPageItem(Protocol): - id: str - - @runtime_checkable class DiskSnapshotsCursorIDPageItem(Protocol): id: str @@ -252,74 +245,6 @@ def next_page_info(self) -> Optional[PageInfo]: return PageInfo(params={"starting_after": item.id}) -class SyncRepositoriesCursorIDPage(BaseSyncPage[_T], BasePage[_T], Generic[_T]): - repositories: List[_T] - has_more: Optional[bool] = None - total_count: Optional[int] = None - - @override - def _get_page_items(self) -> List[_T]: - repositories = self.repositories - if not repositories: - return [] - return repositories - - @override - def has_next_page(self) -> bool: - has_more = self.has_more - if has_more is not None and has_more is False: - return False - - return super().has_next_page() - - @override - def next_page_info(self) -> Optional[PageInfo]: - repositories = self.repositories - if not repositories: - return None - - item = cast(Any, repositories[-1]) - if not isinstance(item, RepositoriesCursorIDPageItem) or item.id is None: # pyright: ignore[reportUnnecessaryComparison] - # TODO emit warning log - return None - - return PageInfo(params={"starting_after": item.id}) - - -class AsyncRepositoriesCursorIDPage(BaseAsyncPage[_T], BasePage[_T], Generic[_T]): - repositories: List[_T] - has_more: Optional[bool] = None - total_count: Optional[int] = None - - @override - def _get_page_items(self) -> List[_T]: - repositories = self.repositories - if not repositories: - return [] - return repositories - - @override - def has_next_page(self) -> bool: - has_more = self.has_more - if has_more is not None and has_more is False: - return False - - return super().has_next_page() - - @override - def next_page_info(self) -> Optional[PageInfo]: - repositories = self.repositories - if not repositories: - return None - - item = cast(Any, repositories[-1]) - if not isinstance(item, RepositoriesCursorIDPageItem) or item.id is None: # pyright: ignore[reportUnnecessaryComparison] - # TODO emit warning log - return None - - return PageInfo(params={"starting_after": item.id}) - - class SyncDiskSnapshotsCursorIDPage(BaseSyncPage[_T], BasePage[_T], Generic[_T]): snapshots: List[_T] has_more: Optional[bool] = None diff --git a/src/runloop_api_client/resources/__init__.py b/src/runloop_api_client/resources/__init__.py index 58d7488f6..292f6d666 100644 --- a/src/runloop_api_client/resources/__init__.py +++ b/src/runloop_api_client/resources/__init__.py @@ -72,14 +72,6 @@ McpConfigsResourceWithStreamingResponse, AsyncMcpConfigsResourceWithStreamingResponse, ) -from .repositories import ( - RepositoriesResource, - AsyncRepositoriesResource, - RepositoriesResourceWithRawResponse, - AsyncRepositoriesResourceWithRawResponse, - RepositoriesResourceWithStreamingResponse, - AsyncRepositoriesResourceWithStreamingResponse, -) from .benchmark_jobs import ( BenchmarkJobsResource, AsyncBenchmarkJobsResource, @@ -168,12 +160,6 @@ "AsyncObjectsResourceWithRawResponse", "ObjectsResourceWithStreamingResponse", "AsyncObjectsResourceWithStreamingResponse", - "RepositoriesResource", - "AsyncRepositoriesResource", - "RepositoriesResourceWithRawResponse", - "AsyncRepositoriesResourceWithRawResponse", - "RepositoriesResourceWithStreamingResponse", - "AsyncRepositoriesResourceWithStreamingResponse", "SecretsResource", "AsyncSecretsResource", "SecretsResourceWithRawResponse", diff --git a/src/runloop_api_client/resources/repositories.py b/src/runloop_api_client/resources/repositories.py deleted file mode 100644 index 5b961cf64..000000000 --- a/src/runloop_api_client/resources/repositories.py +++ /dev/null @@ -1,928 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -import typing_extensions -from typing import Optional - -import httpx - -from ..types import ( - repository_list_params, - repository_create_params, - repository_inspect_params, - repository_refresh_params, -) -from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import path_template, maybe_transform, async_maybe_transform -from .._compat import cached_property -from .._resource import SyncAPIResource, AsyncAPIResource -from .._response import ( - to_raw_response_wrapper, - to_streamed_response_wrapper, - async_to_raw_response_wrapper, - async_to_streamed_response_wrapper, -) -from ..pagination import SyncRepositoriesCursorIDPage, AsyncRepositoriesCursorIDPage -from .._base_client import AsyncPaginator, make_request_options -from ..types.repository_connection_view import RepositoryConnectionView -from ..types.repository_inspection_details import RepositoryInspectionDetails -from ..types.repository_inspection_list_view import RepositoryInspectionListView - -__all__ = ["RepositoriesResource", "AsyncRepositoriesResource"] - - -class RepositoriesResource(SyncAPIResource): - @cached_property - def with_raw_response(self) -> RepositoriesResourceWithRawResponse: - """ - This property can be used as a prefix for any HTTP method call to return - the raw response object instead of the parsed content. - - For more information, see https://www.github.com/runloopai/api-client-python#accessing-raw-response-data-eg-headers - """ - return RepositoriesResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> RepositoriesResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/runloopai/api-client-python#with_streaming_response - """ - return RepositoriesResourceWithStreamingResponse(self) - - def create( - self, - *, - name: str, - owner: str, - blueprint_id: Optional[str] | Omit = omit, - github_auth_token: Optional[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, - ) -> RepositoryConnectionView: - """ - Create a connection to a Github Repository and trigger an initial inspection of - the repo's technical stack and developer environment requirements. - - Args: - name: Name of the repository. - - owner: Account owner of the repository. - - blueprint_id: ID of blueprint to use as base for resulting RepositoryVersion blueprint. - - github_auth_token: GitHub authentication token for accessing private repositories. - - 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/repositories", - body=maybe_transform( - { - "name": name, - "owner": owner, - "blueprint_id": blueprint_id, - "github_auth_token": github_auth_token, - }, - repository_create_params.RepositoryCreateParams, - ), - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - idempotency_key=idempotency_key, - ), - cast_to=RepositoryConnectionView, - ) - - def retrieve( - self, - id: str, - *, - # 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, - ) -> RepositoryConnectionView: - """ - Get Repository Connection details including latest inspection status and - generated repository insights. - - Args: - 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 - """ - if not id: - raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") - return self._get( - path_template("/v1/repositories/{id}", id=id), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=RepositoryConnectionView, - ) - - def list( - self, - *, - include_total_count: bool | Omit = omit, - limit: int | Omit = omit, - name: str | Omit = omit, - owner: str | Omit = omit, - starting_after: 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, - ) -> SyncRepositoriesCursorIDPage[RepositoryConnectionView]: - """ - List all available repository connections. - - Args: - include_total_count: If true (default), includes total_count in the response. Set to false to skip - the count query for better performance on large datasets. - - limit: The limit of items to return. Default is 20. Max is 5000. - - name: Filter by repository name - - owner: Filter by repository owner - - starting_after: Load the next page of data starting after the item with the given ID. - - 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 - """ - return self._get_api_list( - "/v1/repositories", - page=SyncRepositoriesCursorIDPage[RepositoryConnectionView], - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - query=maybe_transform( - { - "include_total_count": include_total_count, - "limit": limit, - "name": name, - "owner": owner, - "starting_after": starting_after, - }, - repository_list_params.RepositoryListParams, - ), - ), - model=RepositoryConnectionView, - ) - - def delete( - self, - id: str, - *, - # 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, - ) -> object: - """ - Permanently Delete a Repository Connection including any automatically generated - inspection insights. - - Args: - 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 - """ - if not id: - raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") - return self._post( - path_template("/v1/repositories/{id}/delete", id=id), - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - idempotency_key=idempotency_key, - ), - cast_to=object, - ) - - def inspect( - self, - id: str, - *, - github_auth_token: Optional[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, - ) -> RepositoryInspectionDetails: - """ - Inspect a repository connection by inspecting the specified version including - repo's technical stack and developer environment requirements. - - Args: - github_auth_token: GitHub authentication token for accessing private repositories. - - 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 - """ - if not id: - raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") - return self._post( - path_template("/v1/repositories/{id}/inspect", id=id), - body=maybe_transform( - {"github_auth_token": github_auth_token}, repository_inspect_params.RepositoryInspectParams - ), - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - idempotency_key=idempotency_key, - ), - cast_to=RepositoryInspectionDetails, - ) - - def list_inspections( - self, - id: str, - *, - # 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, - ) -> RepositoryInspectionListView: - """ - List all inspections of a repository connection including automatically - generated insights for each inspection. - - Args: - 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 - """ - if not id: - raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") - return self._get( - path_template("/v1/repositories/{id}/inspections", id=id), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=RepositoryInspectionListView, - ) - - @typing_extensions.deprecated("deprecated") - def refresh( - self, - id: str, - *, - blueprint_id: Optional[str] | Omit = omit, - github_auth_token: Optional[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, - ) -> object: - """ - Refresh a repository connection by inspecting the latest version including - repo's technical stack and developer environment requirements. - - Args: - blueprint_id: ID of blueprint to use as base for resulting RepositoryVersion blueprint. - - github_auth_token: GitHub authentication token for accessing private repositories. - - 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 - """ - if not id: - raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") - return self._post( - path_template("/v1/repositories/{id}/refresh", id=id), - body=maybe_transform( - { - "blueprint_id": blueprint_id, - "github_auth_token": github_auth_token, - }, - repository_refresh_params.RepositoryRefreshParams, - ), - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - idempotency_key=idempotency_key, - ), - cast_to=object, - ) - - def retrieve_inspection( - self, - id: str, - *, - # 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, - ) -> RepositoryInspectionDetails: - """ - Get a repository inspection by id. - - Args: - 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 - """ - if not id: - raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") - return self._get( - path_template("/v1/repositories/inspections/{id}", id=id), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=RepositoryInspectionDetails, - ) - - -class AsyncRepositoriesResource(AsyncAPIResource): - @cached_property - def with_raw_response(self) -> AsyncRepositoriesResourceWithRawResponse: - """ - This property can be used as a prefix for any HTTP method call to return - the raw response object instead of the parsed content. - - For more information, see https://www.github.com/runloopai/api-client-python#accessing-raw-response-data-eg-headers - """ - return AsyncRepositoriesResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> AsyncRepositoriesResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/runloopai/api-client-python#with_streaming_response - """ - return AsyncRepositoriesResourceWithStreamingResponse(self) - - async def create( - self, - *, - name: str, - owner: str, - blueprint_id: Optional[str] | Omit = omit, - github_auth_token: Optional[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, - ) -> RepositoryConnectionView: - """ - Create a connection to a Github Repository and trigger an initial inspection of - the repo's technical stack and developer environment requirements. - - Args: - name: Name of the repository. - - owner: Account owner of the repository. - - blueprint_id: ID of blueprint to use as base for resulting RepositoryVersion blueprint. - - github_auth_token: GitHub authentication token for accessing private repositories. - - 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/repositories", - body=await async_maybe_transform( - { - "name": name, - "owner": owner, - "blueprint_id": blueprint_id, - "github_auth_token": github_auth_token, - }, - repository_create_params.RepositoryCreateParams, - ), - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - idempotency_key=idempotency_key, - ), - cast_to=RepositoryConnectionView, - ) - - async def retrieve( - self, - id: str, - *, - # 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, - ) -> RepositoryConnectionView: - """ - Get Repository Connection details including latest inspection status and - generated repository insights. - - Args: - 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 - """ - if not id: - raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") - return await self._get( - path_template("/v1/repositories/{id}", id=id), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=RepositoryConnectionView, - ) - - def list( - self, - *, - include_total_count: bool | Omit = omit, - limit: int | Omit = omit, - name: str | Omit = omit, - owner: str | Omit = omit, - starting_after: 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, - ) -> AsyncPaginator[RepositoryConnectionView, AsyncRepositoriesCursorIDPage[RepositoryConnectionView]]: - """ - List all available repository connections. - - Args: - include_total_count: If true (default), includes total_count in the response. Set to false to skip - the count query for better performance on large datasets. - - limit: The limit of items to return. Default is 20. Max is 5000. - - name: Filter by repository name - - owner: Filter by repository owner - - starting_after: Load the next page of data starting after the item with the given ID. - - 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 - """ - return self._get_api_list( - "/v1/repositories", - page=AsyncRepositoriesCursorIDPage[RepositoryConnectionView], - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - query=maybe_transform( - { - "include_total_count": include_total_count, - "limit": limit, - "name": name, - "owner": owner, - "starting_after": starting_after, - }, - repository_list_params.RepositoryListParams, - ), - ), - model=RepositoryConnectionView, - ) - - async def delete( - self, - id: str, - *, - # 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, - ) -> object: - """ - Permanently Delete a Repository Connection including any automatically generated - inspection insights. - - Args: - 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 - """ - if not id: - raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") - return await self._post( - path_template("/v1/repositories/{id}/delete", id=id), - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - idempotency_key=idempotency_key, - ), - cast_to=object, - ) - - async def inspect( - self, - id: str, - *, - github_auth_token: Optional[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, - ) -> RepositoryInspectionDetails: - """ - Inspect a repository connection by inspecting the specified version including - repo's technical stack and developer environment requirements. - - Args: - github_auth_token: GitHub authentication token for accessing private repositories. - - 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 - """ - if not id: - raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") - return await self._post( - path_template("/v1/repositories/{id}/inspect", id=id), - body=await async_maybe_transform( - {"github_auth_token": github_auth_token}, repository_inspect_params.RepositoryInspectParams - ), - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - idempotency_key=idempotency_key, - ), - cast_to=RepositoryInspectionDetails, - ) - - async def list_inspections( - self, - id: str, - *, - # 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, - ) -> RepositoryInspectionListView: - """ - List all inspections of a repository connection including automatically - generated insights for each inspection. - - Args: - 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 - """ - if not id: - raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") - return await self._get( - path_template("/v1/repositories/{id}/inspections", id=id), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=RepositoryInspectionListView, - ) - - @typing_extensions.deprecated("deprecated") - async def refresh( - self, - id: str, - *, - blueprint_id: Optional[str] | Omit = omit, - github_auth_token: Optional[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, - ) -> object: - """ - Refresh a repository connection by inspecting the latest version including - repo's technical stack and developer environment requirements. - - Args: - blueprint_id: ID of blueprint to use as base for resulting RepositoryVersion blueprint. - - github_auth_token: GitHub authentication token for accessing private repositories. - - 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 - """ - if not id: - raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") - return await self._post( - path_template("/v1/repositories/{id}/refresh", id=id), - body=await async_maybe_transform( - { - "blueprint_id": blueprint_id, - "github_auth_token": github_auth_token, - }, - repository_refresh_params.RepositoryRefreshParams, - ), - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - idempotency_key=idempotency_key, - ), - cast_to=object, - ) - - async def retrieve_inspection( - self, - id: str, - *, - # 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, - ) -> RepositoryInspectionDetails: - """ - Get a repository inspection by id. - - Args: - 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 - """ - if not id: - raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") - return await self._get( - path_template("/v1/repositories/inspections/{id}", id=id), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=RepositoryInspectionDetails, - ) - - -class RepositoriesResourceWithRawResponse: - def __init__(self, repositories: RepositoriesResource) -> None: - self._repositories = repositories - - self.create = to_raw_response_wrapper( - repositories.create, - ) - self.retrieve = to_raw_response_wrapper( - repositories.retrieve, - ) - self.list = to_raw_response_wrapper( - repositories.list, - ) - self.delete = to_raw_response_wrapper( - repositories.delete, - ) - self.inspect = to_raw_response_wrapper( - repositories.inspect, - ) - self.list_inspections = to_raw_response_wrapper( - repositories.list_inspections, - ) - self.refresh = ( # pyright: ignore[reportDeprecated] - to_raw_response_wrapper( - repositories.refresh, # pyright: ignore[reportDeprecated], - ) - ) - self.retrieve_inspection = to_raw_response_wrapper( - repositories.retrieve_inspection, - ) - - -class AsyncRepositoriesResourceWithRawResponse: - def __init__(self, repositories: AsyncRepositoriesResource) -> None: - self._repositories = repositories - - self.create = async_to_raw_response_wrapper( - repositories.create, - ) - self.retrieve = async_to_raw_response_wrapper( - repositories.retrieve, - ) - self.list = async_to_raw_response_wrapper( - repositories.list, - ) - self.delete = async_to_raw_response_wrapper( - repositories.delete, - ) - self.inspect = async_to_raw_response_wrapper( - repositories.inspect, - ) - self.list_inspections = async_to_raw_response_wrapper( - repositories.list_inspections, - ) - self.refresh = ( # pyright: ignore[reportDeprecated] - async_to_raw_response_wrapper( - repositories.refresh, # pyright: ignore[reportDeprecated], - ) - ) - self.retrieve_inspection = async_to_raw_response_wrapper( - repositories.retrieve_inspection, - ) - - -class RepositoriesResourceWithStreamingResponse: - def __init__(self, repositories: RepositoriesResource) -> None: - self._repositories = repositories - - self.create = to_streamed_response_wrapper( - repositories.create, - ) - self.retrieve = to_streamed_response_wrapper( - repositories.retrieve, - ) - self.list = to_streamed_response_wrapper( - repositories.list, - ) - self.delete = to_streamed_response_wrapper( - repositories.delete, - ) - self.inspect = to_streamed_response_wrapper( - repositories.inspect, - ) - self.list_inspections = to_streamed_response_wrapper( - repositories.list_inspections, - ) - self.refresh = ( # pyright: ignore[reportDeprecated] - to_streamed_response_wrapper( - repositories.refresh, # pyright: ignore[reportDeprecated], - ) - ) - self.retrieve_inspection = to_streamed_response_wrapper( - repositories.retrieve_inspection, - ) - - -class AsyncRepositoriesResourceWithStreamingResponse: - def __init__(self, repositories: AsyncRepositoriesResource) -> None: - self._repositories = repositories - - self.create = async_to_streamed_response_wrapper( - repositories.create, - ) - self.retrieve = async_to_streamed_response_wrapper( - repositories.retrieve, - ) - self.list = async_to_streamed_response_wrapper( - repositories.list, - ) - self.delete = async_to_streamed_response_wrapper( - repositories.delete, - ) - self.inspect = async_to_streamed_response_wrapper( - repositories.inspect, - ) - self.list_inspections = async_to_streamed_response_wrapper( - repositories.list_inspections, - ) - self.refresh = ( # pyright: ignore[reportDeprecated] - async_to_streamed_response_wrapper( - repositories.refresh, # pyright: ignore[reportDeprecated], - ) - ) - self.retrieve_inspection = async_to_streamed_response_wrapper( - repositories.retrieve_inspection, - ) diff --git a/src/runloop_api_client/types/__init__.py b/src/runloop_api_client/types/__init__.py index bf5d8ef3f..185e66268 100644 --- a/src/runloop_api_client/types/__init__.py +++ b/src/runloop_api_client/types/__init__.py @@ -65,7 +65,6 @@ from .devbox_shutdown_params import DevboxShutdownParams as DevboxShutdownParams from .mcp_config_list_params import McpConfigListParams as McpConfigListParams from .object_download_params import ObjectDownloadParams as ObjectDownloadParams -from .repository_list_params import RepositoryListParams as RepositoryListParams from .scenario_create_params import ScenarioCreateParams as ScenarioCreateParams from .scenario_run_list_view import ScenarioRunListView as ScenarioRunListView from .scenario_update_params import ScenarioUpdateParams as ScenarioUpdateParams @@ -83,16 +82,12 @@ from .mcp_config_update_params import McpConfigUpdateParams as McpConfigUpdateParams from .network_policy_list_view import NetworkPolicyListView as NetworkPolicyListView from .object_download_url_view import ObjectDownloadURLView as ObjectDownloadURLView -from .repository_create_params import RepositoryCreateParams as RepositoryCreateParams -from .repository_manifest_view import RepositoryManifestView as RepositoryManifestView from .benchmark_job_list_params import BenchmarkJobListParams as BenchmarkJobListParams from .benchmark_run_list_params import BenchmarkRunListParams as BenchmarkRunListParams from .devbox_send_std_in_result import DevboxSendStdInResult as DevboxSendStdInResult from .devbox_snapshot_list_view import DevboxSnapshotListView as DevboxSnapshotListView from .devbox_upload_file_params import DevboxUploadFileParams as DevboxUploadFileParams from .object_list_public_params import ObjectListPublicParams as ObjectListPublicParams -from .repository_inspect_params import RepositoryInspectParams as RepositoryInspectParams -from .repository_refresh_params import RepositoryRefreshParams as RepositoryRefreshParams from .scenario_start_run_params import ScenarioStartRunParams as ScenarioStartRunParams from .benchmark_start_run_params import BenchmarkStartRunParams as BenchmarkStartRunParams from .blueprint_build_parameters import BlueprintBuildParameters as BlueprintBuildParameters @@ -101,7 +96,6 @@ from .gateway_config_list_params import GatewayConfigListParams as GatewayConfigListParams from .input_context_update_param import InputContextUpdateParam as InputContextUpdateParam from .network_policy_list_params import NetworkPolicyListParams as NetworkPolicyListParams -from .repository_connection_view import RepositoryConnectionView as RepositoryConnectionView from .scenario_environment_param import ScenarioEnvironmentParam as ScenarioEnvironmentParam from .benchmark_job_create_params import BenchmarkJobCreateParams as BenchmarkJobCreateParams from .devbox_download_file_params import DevboxDownloadFileParams as DevboxDownloadFileParams @@ -119,14 +113,11 @@ from .network_policy_update_params import NetworkPolicyUpdateParams as NetworkPolicyUpdateParams from .scoring_contract_result_view import ScoringContractResultView as ScoringContractResultView from .scoring_function_result_view import ScoringFunctionResultView as ScoringFunctionResultView -from .repository_inspection_details import RepositoryInspectionDetails as RepositoryInspectionDetails from .scenario_definition_list_view import ScenarioDefinitionListView as ScenarioDefinitionListView from .scoring_contract_update_param import ScoringContractUpdateParam as ScoringContractUpdateParam from .blueprint_build_logs_list_view import BlueprintBuildLogsListView as BlueprintBuildLogsListView from .devbox_create_ssh_key_response import DevboxCreateSSHKeyResponse as DevboxCreateSSHKeyResponse from .devbox_wait_for_command_params import DevboxWaitForCommandParams as DevboxWaitForCommandParams -from .repository_connection_list_view import RepositoryConnectionListView as RepositoryConnectionListView -from .repository_inspection_list_view import RepositoryInspectionListView as RepositoryInspectionListView from .devbox_read_file_contents_params import DevboxReadFileContentsParams as DevboxReadFileContentsParams from .benchmark_update_scenarios_params import BenchmarkUpdateScenariosParams as BenchmarkUpdateScenariosParams from .devbox_list_disk_snapshots_params import DevboxListDiskSnapshotsParams as DevboxListDiskSnapshotsParams diff --git a/src/runloop_api_client/types/repository_connection_list_view.py b/src/runloop_api_client/types/repository_connection_list_view.py deleted file mode 100644 index 3146f27fd..000000000 --- a/src/runloop_api_client/types/repository_connection_list_view.py +++ /dev/null @@ -1,17 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import List, Optional - -from .._models import BaseModel -from .repository_connection_view import RepositoryConnectionView - -__all__ = ["RepositoryConnectionListView"] - - -class RepositoryConnectionListView(BaseModel): - has_more: bool - - repositories: List[RepositoryConnectionView] - """List of repositories matching filter.""" - - total_count: Optional[int] = None diff --git a/src/runloop_api_client/types/repository_connection_view.py b/src/runloop_api_client/types/repository_connection_view.py deleted file mode 100644 index e126071e8..000000000 --- a/src/runloop_api_client/types/repository_connection_view.py +++ /dev/null @@ -1,18 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from .._models import BaseModel - -__all__ = ["RepositoryConnectionView"] - - -class RepositoryConnectionView(BaseModel): - """The ID of the Repository.""" - - id: str - """The ID of the Repository.""" - - name: str - """The name of the Repository.""" - - owner: str - """The account owner of the Repository.""" diff --git a/src/runloop_api_client/types/repository_create_params.py b/src/runloop_api_client/types/repository_create_params.py deleted file mode 100644 index fc241739e..000000000 --- a/src/runloop_api_client/types/repository_create_params.py +++ /dev/null @@ -1,22 +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__ = ["RepositoryCreateParams"] - - -class RepositoryCreateParams(TypedDict, total=False): - name: Required[str] - """Name of the repository.""" - - owner: Required[str] - """Account owner of the repository.""" - - blueprint_id: Optional[str] - """ID of blueprint to use as base for resulting RepositoryVersion blueprint.""" - - github_auth_token: Optional[str] - """GitHub authentication token for accessing private repositories.""" diff --git a/src/runloop_api_client/types/repository_inspect_params.py b/src/runloop_api_client/types/repository_inspect_params.py deleted file mode 100644 index c42103dab..000000000 --- a/src/runloop_api_client/types/repository_inspect_params.py +++ /dev/null @@ -1,13 +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 TypedDict - -__all__ = ["RepositoryInspectParams"] - - -class RepositoryInspectParams(TypedDict, total=False): - github_auth_token: Optional[str] - """GitHub authentication token for accessing private repositories.""" diff --git a/src/runloop_api_client/types/repository_inspection_details.py b/src/runloop_api_client/types/repository_inspection_details.py deleted file mode 100644 index 0870ce693..000000000 --- a/src/runloop_api_client/types/repository_inspection_details.py +++ /dev/null @@ -1,83 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import Dict, List, Optional -from typing_extensions import Literal - -from .._models import BaseModel -from .repository_manifest_view import RepositoryManifestView - -__all__ = ["RepositoryInspectionDetails", "WorkflowContexts", "WorkflowContextsActionsContext"] - - -class WorkflowContextsActionsContext(BaseModel): - """Details about actions processing for this workflow.""" - - actions_skipped_unnecessary: List[str] - """ - Actions that were skipped because they were unnecessary (e.g., upload - artifacts). - """ - - actions_taken: List[str] - """Actions that were translated into commands and executed.""" - - actions_unknown: List[str] - """ - Actions that were not understood and skipped because we did not know what to do. - """ - - -class WorkflowContexts(BaseModel): - """ - Workflow context containing file name and details about actions processing during inspection. - """ - - actions_context: WorkflowContextsActionsContext - """Details about actions processing for this workflow.""" - - file_name: str - """The file name of the workflow.""" - - -class RepositoryInspectionDetails(BaseModel): - id: str - """The ID of the inspection.""" - - commit_sha: str - """The sha of the inspected version of the Repository.""" - - inspected_at: int - """Inspection time of the Repository Version (Unix timestamp milliseconds).""" - - repository_manifest: RepositoryManifestView - """Repository manifest containing container config and workspace details.""" - - status: Literal[ - "invalid", - "repo_auth_pending", - "repo_authentication_failure", - "repo_access_failure", - "inspection_pending", - "inspection_failed", - "inspection_success", - "inspection_user_manifest_added", - ] - """The status of the repository inspection.""" - - blueprint_id: Optional[str] = None - """The blueprint ID associated with this inspection if successful.""" - - blueprint_name: Optional[str] = None - """The blueprint name associated with this inspection if successful.""" - - build_status: Optional[Literal["image_building", "image_build_success", "image_build_failure"]] = None - """The status of the linked Blueprint build.""" - - user_manifest: Optional[RepositoryManifestView] = None - """ - User uploaded repository manifest containing container config and workspace - details. - """ - - workflow_contexts: Optional[Dict[str, WorkflowContexts]] = None - """Workflow contexts mapping workflow names to their processing details.""" diff --git a/src/runloop_api_client/types/repository_inspection_list_view.py b/src/runloop_api_client/types/repository_inspection_list_view.py deleted file mode 100644 index e6a7108b7..000000000 --- a/src/runloop_api_client/types/repository_inspection_list_view.py +++ /dev/null @@ -1,13 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import List - -from .._models import BaseModel -from .repository_inspection_details import RepositoryInspectionDetails - -__all__ = ["RepositoryInspectionListView"] - - -class RepositoryInspectionListView(BaseModel): - inspections: List[RepositoryInspectionDetails] - """List of inspections for this repository.""" diff --git a/src/runloop_api_client/types/repository_list_params.py b/src/runloop_api_client/types/repository_list_params.py deleted file mode 100644 index 813842cab..000000000 --- a/src/runloop_api_client/types/repository_list_params.py +++ /dev/null @@ -1,27 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing_extensions import TypedDict - -__all__ = ["RepositoryListParams"] - - -class RepositoryListParams(TypedDict, total=False): - include_total_count: bool - """If true (default), includes total_count in the response. - - Set to false to skip the count query for better performance on large datasets. - """ - - limit: int - """The limit of items to return. Default is 20. Max is 5000.""" - - name: str - """Filter by repository name""" - - owner: str - """Filter by repository owner""" - - starting_after: str - """Load the next page of data starting after the item with the given ID.""" diff --git a/src/runloop_api_client/types/repository_manifest_view.py b/src/runloop_api_client/types/repository_manifest_view.py deleted file mode 100644 index acb862672..000000000 --- a/src/runloop_api_client/types/repository_manifest_view.py +++ /dev/null @@ -1,174 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import Dict, List, Optional -from typing_extensions import Literal - -from .._models import BaseModel - -__all__ = [ - "RepositoryManifestView", - "ContainerConfig", - "Language", - "Workspace", - "WorkspaceDevCommands", - "ContainerizedService", - "ContainerizedServiceCredentials", -] - - -class ContainerConfig(BaseModel): - """Container configuration specifying the base image and setup commands.""" - - base_image_name: str - """The name of the base image. - - Should be one of the GitHub public images like ubuntu-latest, ubuntu-24.04, - ubuntu-22.04, windows-latest, windows-2022, macos-latest etc. - """ - - architecture: Optional[Literal["x86_64", "arm64"]] = None - """The target architecture for the Repository Container.""" - - setup_commands: Optional[List[str]] = None - """ - Commands to run to setup the base container such as installing necessary - toolchains (e.g. apt install). - """ - - -class Language(BaseModel): - language: Optional[str] = None - - version: Optional[str] = None - - -class WorkspaceDevCommands(BaseModel): - """ - Extracted common commands important to the developer life cycle like linting, testing, building, etc. - """ - - build: Optional[List[str]] = None - """Build command (e.g. npm run build).""" - - install: Optional[List[str]] = None - """Installation command (e.g. pip install -r requirements.txt).""" - - lint: Optional[List[str]] = None - """Lint command (e.g. flake8).""" - - scripts: Optional[List[str]] = None - """Script commands.""" - - test: Optional[List[str]] = None - """Test command (e.g. pytest).""" - - -class Workspace(BaseModel): - """ - A workspace is a buildable unit of code within a repository and often represents a deployable unit of code like a backend service or a frontend app. - """ - - build_tool: List[str] - """Name of the build tool used (e.g. pip, npm).""" - - dev_commands: Optional[WorkspaceDevCommands] = None - """ - Extracted common commands important to the developer life cycle like linting, - testing, building, etc. - """ - - name: Optional[str] = None - """Name of the workspace. - - Can be empty if the workspace is the root of the repository. Only necessary for - monorepo style repositories. - """ - - path: Optional[str] = None - """Path to the workspace from the root of the repository. - - Can be empty if the workspace is the root of the repository. Only necessary for - monorepo style repositories. - """ - - workspace_refresh_commands: Optional[List[str]] = None - """ - Commands to run to refresh this workspace after pulling the latest changes to - the repository via git (e.g. npm install). - """ - - workspace_setup_commands: Optional[List[str]] = None - """ - Commands to run to setup this workspace after a fresh clone of the repository on - a new container such as installing necessary toolchains and dependencies (e.g. - npm install). - """ - - -class ContainerizedServiceCredentials(BaseModel): - """The credentials of the container service.""" - - password: str - """The password of the container service.""" - - username: str - """The username of the container service.""" - - -class ContainerizedService(BaseModel): - image: str - """The image of the container service.""" - - name: str - """The name of the container service.""" - - credentials: Optional[ContainerizedServiceCredentials] = None - """The credentials of the container service.""" - - env: Optional[Dict[str, str]] = None - """The environment variables of the container service.""" - - options: Optional[str] = None - """Additional Docker container create options.""" - - port_mappings: Optional[List[str]] = None - """The port mappings of the container service. - - Port mappings are in the format of :. - """ - - -class RepositoryManifestView(BaseModel): - """ - The repository manifest contains container configuration and workspace definitions for a repository. - """ - - container_config: ContainerConfig - """Container configuration specifying the base image and setup commands.""" - - languages: List[Language] - """List of required languages found in Repository.""" - - workspaces: List[Workspace] - """List of workspaces within the repository. - - Each workspace represents a buildable unit of code. - """ - - containerized_services: Optional[List[ContainerizedService]] = None - """List of discovered ContainerizedServices. - - Services can be explicitly started when creating a Devbox. - """ - - env_vars: Optional[Dict[str, str]] = None - """ - Qualified environment variables and values that should be set for this - repository to run correctly. - """ - - required_env_vars: Optional[List[str]] = None - """ - Missing environment variables that (may) be required for this repository to run - correctly. - """ diff --git a/src/runloop_api_client/types/repository_refresh_params.py b/src/runloop_api_client/types/repository_refresh_params.py deleted file mode 100644 index e0eeae3e1..000000000 --- a/src/runloop_api_client/types/repository_refresh_params.py +++ /dev/null @@ -1,16 +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 TypedDict - -__all__ = ["RepositoryRefreshParams"] - - -class RepositoryRefreshParams(TypedDict, total=False): - blueprint_id: Optional[str] - """ID of blueprint to use as base for resulting RepositoryVersion blueprint.""" - - github_auth_token: Optional[str] - """GitHub authentication token for accessing private repositories.""" diff --git a/tests/api_resources/test_repositories.py b/tests/api_resources/test_repositories.py deleted file mode 100644 index 20fa91e6d..000000000 --- a/tests/api_resources/test_repositories.py +++ /dev/null @@ -1,695 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -import os -from typing import Any, cast - -import pytest - -from tests.utils import assert_matches_type -from runloop_api_client import Runloop, AsyncRunloop -from runloop_api_client.types import ( - RepositoryConnectionView, - RepositoryInspectionDetails, - RepositoryInspectionListView, -) -from runloop_api_client.pagination import SyncRepositoriesCursorIDPage, AsyncRepositoriesCursorIDPage - -# pyright: reportDeprecated=false - -base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") - - -class TestRepositories: - parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"]) - - @parametrize - def test_method_create(self, client: Runloop) -> None: - repository = client.repositories.create( - name="name", - owner="owner", - ) - assert_matches_type(RepositoryConnectionView, repository, path=["response"]) - - @parametrize - def test_method_create_with_all_params(self, client: Runloop) -> None: - repository = client.repositories.create( - name="name", - owner="owner", - blueprint_id="blueprint_id", - github_auth_token="github_auth_token", - ) - assert_matches_type(RepositoryConnectionView, repository, path=["response"]) - - @parametrize - def test_raw_response_create(self, client: Runloop) -> None: - response = client.repositories.with_raw_response.create( - name="name", - owner="owner", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - repository = response.parse() - assert_matches_type(RepositoryConnectionView, repository, path=["response"]) - - @parametrize - def test_streaming_response_create(self, client: Runloop) -> None: - with client.repositories.with_streaming_response.create( - name="name", - owner="owner", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - repository = response.parse() - assert_matches_type(RepositoryConnectionView, repository, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - def test_method_retrieve(self, client: Runloop) -> None: - repository = client.repositories.retrieve( - "id", - ) - assert_matches_type(RepositoryConnectionView, repository, path=["response"]) - - @parametrize - def test_raw_response_retrieve(self, client: Runloop) -> None: - response = client.repositories.with_raw_response.retrieve( - "id", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - repository = response.parse() - assert_matches_type(RepositoryConnectionView, repository, path=["response"]) - - @parametrize - def test_streaming_response_retrieve(self, client: Runloop) -> None: - with client.repositories.with_streaming_response.retrieve( - "id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - repository = response.parse() - assert_matches_type(RepositoryConnectionView, repository, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - def test_path_params_retrieve(self, client: Runloop) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"): - client.repositories.with_raw_response.retrieve( - "", - ) - - @parametrize - def test_method_list(self, client: Runloop) -> None: - repository = client.repositories.list() - assert_matches_type(SyncRepositoriesCursorIDPage[RepositoryConnectionView], repository, path=["response"]) - - @parametrize - def test_method_list_with_all_params(self, client: Runloop) -> None: - repository = client.repositories.list( - include_total_count=True, - limit=0, - name="name", - owner="owner", - starting_after="starting_after", - ) - assert_matches_type(SyncRepositoriesCursorIDPage[RepositoryConnectionView], repository, path=["response"]) - - @parametrize - def test_raw_response_list(self, client: Runloop) -> None: - response = client.repositories.with_raw_response.list() - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - repository = response.parse() - assert_matches_type(SyncRepositoriesCursorIDPage[RepositoryConnectionView], repository, path=["response"]) - - @parametrize - def test_streaming_response_list(self, client: Runloop) -> None: - with client.repositories.with_streaming_response.list() as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - repository = response.parse() - assert_matches_type(SyncRepositoriesCursorIDPage[RepositoryConnectionView], repository, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - def test_method_delete(self, client: Runloop) -> None: - repository = client.repositories.delete( - "id", - ) - assert_matches_type(object, repository, path=["response"]) - - @parametrize - def test_raw_response_delete(self, client: Runloop) -> None: - response = client.repositories.with_raw_response.delete( - "id", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - repository = response.parse() - assert_matches_type(object, repository, path=["response"]) - - @parametrize - def test_streaming_response_delete(self, client: Runloop) -> None: - with client.repositories.with_streaming_response.delete( - "id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - repository = response.parse() - assert_matches_type(object, repository, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - def test_path_params_delete(self, client: Runloop) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"): - client.repositories.with_raw_response.delete( - "", - ) - - @parametrize - def test_method_inspect(self, client: Runloop) -> None: - repository = client.repositories.inspect( - id="id", - ) - assert_matches_type(RepositoryInspectionDetails, repository, path=["response"]) - - @parametrize - def test_method_inspect_with_all_params(self, client: Runloop) -> None: - repository = client.repositories.inspect( - id="id", - github_auth_token="github_auth_token", - ) - assert_matches_type(RepositoryInspectionDetails, repository, path=["response"]) - - @parametrize - def test_raw_response_inspect(self, client: Runloop) -> None: - response = client.repositories.with_raw_response.inspect( - id="id", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - repository = response.parse() - assert_matches_type(RepositoryInspectionDetails, repository, path=["response"]) - - @parametrize - def test_streaming_response_inspect(self, client: Runloop) -> None: - with client.repositories.with_streaming_response.inspect( - id="id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - repository = response.parse() - assert_matches_type(RepositoryInspectionDetails, repository, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - def test_path_params_inspect(self, client: Runloop) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"): - client.repositories.with_raw_response.inspect( - id="", - ) - - @parametrize - def test_method_list_inspections(self, client: Runloop) -> None: - repository = client.repositories.list_inspections( - "id", - ) - assert_matches_type(RepositoryInspectionListView, repository, path=["response"]) - - @parametrize - def test_raw_response_list_inspections(self, client: Runloop) -> None: - response = client.repositories.with_raw_response.list_inspections( - "id", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - repository = response.parse() - assert_matches_type(RepositoryInspectionListView, repository, path=["response"]) - - @parametrize - def test_streaming_response_list_inspections(self, client: Runloop) -> None: - with client.repositories.with_streaming_response.list_inspections( - "id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - repository = response.parse() - assert_matches_type(RepositoryInspectionListView, repository, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - def test_path_params_list_inspections(self, client: Runloop) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"): - client.repositories.with_raw_response.list_inspections( - "", - ) - - @parametrize - def test_method_refresh(self, client: Runloop) -> None: - with pytest.warns(DeprecationWarning): - repository = client.repositories.refresh( - id="id", - ) - - assert_matches_type(object, repository, path=["response"]) - - @parametrize - def test_method_refresh_with_all_params(self, client: Runloop) -> None: - with pytest.warns(DeprecationWarning): - repository = client.repositories.refresh( - id="id", - blueprint_id="blueprint_id", - github_auth_token="github_auth_token", - ) - - assert_matches_type(object, repository, path=["response"]) - - @parametrize - def test_raw_response_refresh(self, client: Runloop) -> None: - with pytest.warns(DeprecationWarning): - response = client.repositories.with_raw_response.refresh( - id="id", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - repository = response.parse() - assert_matches_type(object, repository, path=["response"]) - - @parametrize - def test_streaming_response_refresh(self, client: Runloop) -> None: - with pytest.warns(DeprecationWarning): - with client.repositories.with_streaming_response.refresh( - id="id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - repository = response.parse() - assert_matches_type(object, repository, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - def test_path_params_refresh(self, client: Runloop) -> None: - with pytest.warns(DeprecationWarning): - with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"): - client.repositories.with_raw_response.refresh( - id="", - ) - - @parametrize - def test_method_retrieve_inspection(self, client: Runloop) -> None: - repository = client.repositories.retrieve_inspection( - "id", - ) - assert_matches_type(RepositoryInspectionDetails, repository, path=["response"]) - - @parametrize - def test_raw_response_retrieve_inspection(self, client: Runloop) -> None: - response = client.repositories.with_raw_response.retrieve_inspection( - "id", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - repository = response.parse() - assert_matches_type(RepositoryInspectionDetails, repository, path=["response"]) - - @parametrize - def test_streaming_response_retrieve_inspection(self, client: Runloop) -> None: - with client.repositories.with_streaming_response.retrieve_inspection( - "id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - repository = response.parse() - assert_matches_type(RepositoryInspectionDetails, repository, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - def test_path_params_retrieve_inspection(self, client: Runloop) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"): - client.repositories.with_raw_response.retrieve_inspection( - "", - ) - - -class TestAsyncRepositories: - parametrize = pytest.mark.parametrize( - "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"] - ) - - @parametrize - async def test_method_create(self, async_client: AsyncRunloop) -> None: - repository = await async_client.repositories.create( - name="name", - owner="owner", - ) - assert_matches_type(RepositoryConnectionView, repository, path=["response"]) - - @parametrize - async def test_method_create_with_all_params(self, async_client: AsyncRunloop) -> None: - repository = await async_client.repositories.create( - name="name", - owner="owner", - blueprint_id="blueprint_id", - github_auth_token="github_auth_token", - ) - assert_matches_type(RepositoryConnectionView, repository, path=["response"]) - - @parametrize - async def test_raw_response_create(self, async_client: AsyncRunloop) -> None: - response = await async_client.repositories.with_raw_response.create( - name="name", - owner="owner", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - repository = await response.parse() - assert_matches_type(RepositoryConnectionView, repository, path=["response"]) - - @parametrize - async def test_streaming_response_create(self, async_client: AsyncRunloop) -> None: - async with async_client.repositories.with_streaming_response.create( - name="name", - owner="owner", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - repository = await response.parse() - assert_matches_type(RepositoryConnectionView, repository, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - async def test_method_retrieve(self, async_client: AsyncRunloop) -> None: - repository = await async_client.repositories.retrieve( - "id", - ) - assert_matches_type(RepositoryConnectionView, repository, path=["response"]) - - @parametrize - async def test_raw_response_retrieve(self, async_client: AsyncRunloop) -> None: - response = await async_client.repositories.with_raw_response.retrieve( - "id", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - repository = await response.parse() - assert_matches_type(RepositoryConnectionView, repository, path=["response"]) - - @parametrize - async def test_streaming_response_retrieve(self, async_client: AsyncRunloop) -> None: - async with async_client.repositories.with_streaming_response.retrieve( - "id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - repository = await response.parse() - assert_matches_type(RepositoryConnectionView, repository, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - async def test_path_params_retrieve(self, async_client: AsyncRunloop) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"): - await async_client.repositories.with_raw_response.retrieve( - "", - ) - - @parametrize - async def test_method_list(self, async_client: AsyncRunloop) -> None: - repository = await async_client.repositories.list() - assert_matches_type(AsyncRepositoriesCursorIDPage[RepositoryConnectionView], repository, path=["response"]) - - @parametrize - async def test_method_list_with_all_params(self, async_client: AsyncRunloop) -> None: - repository = await async_client.repositories.list( - include_total_count=True, - limit=0, - name="name", - owner="owner", - starting_after="starting_after", - ) - assert_matches_type(AsyncRepositoriesCursorIDPage[RepositoryConnectionView], repository, path=["response"]) - - @parametrize - async def test_raw_response_list(self, async_client: AsyncRunloop) -> None: - response = await async_client.repositories.with_raw_response.list() - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - repository = await response.parse() - assert_matches_type(AsyncRepositoriesCursorIDPage[RepositoryConnectionView], repository, path=["response"]) - - @parametrize - async def test_streaming_response_list(self, async_client: AsyncRunloop) -> None: - async with async_client.repositories.with_streaming_response.list() as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - repository = await response.parse() - assert_matches_type(AsyncRepositoriesCursorIDPage[RepositoryConnectionView], repository, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - async def test_method_delete(self, async_client: AsyncRunloop) -> None: - repository = await async_client.repositories.delete( - "id", - ) - assert_matches_type(object, repository, path=["response"]) - - @parametrize - async def test_raw_response_delete(self, async_client: AsyncRunloop) -> None: - response = await async_client.repositories.with_raw_response.delete( - "id", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - repository = await response.parse() - assert_matches_type(object, repository, path=["response"]) - - @parametrize - async def test_streaming_response_delete(self, async_client: AsyncRunloop) -> None: - async with async_client.repositories.with_streaming_response.delete( - "id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - repository = await response.parse() - assert_matches_type(object, repository, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - async def test_path_params_delete(self, async_client: AsyncRunloop) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"): - await async_client.repositories.with_raw_response.delete( - "", - ) - - @parametrize - async def test_method_inspect(self, async_client: AsyncRunloop) -> None: - repository = await async_client.repositories.inspect( - id="id", - ) - assert_matches_type(RepositoryInspectionDetails, repository, path=["response"]) - - @parametrize - async def test_method_inspect_with_all_params(self, async_client: AsyncRunloop) -> None: - repository = await async_client.repositories.inspect( - id="id", - github_auth_token="github_auth_token", - ) - assert_matches_type(RepositoryInspectionDetails, repository, path=["response"]) - - @parametrize - async def test_raw_response_inspect(self, async_client: AsyncRunloop) -> None: - response = await async_client.repositories.with_raw_response.inspect( - id="id", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - repository = await response.parse() - assert_matches_type(RepositoryInspectionDetails, repository, path=["response"]) - - @parametrize - async def test_streaming_response_inspect(self, async_client: AsyncRunloop) -> None: - async with async_client.repositories.with_streaming_response.inspect( - id="id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - repository = await response.parse() - assert_matches_type(RepositoryInspectionDetails, repository, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - async def test_path_params_inspect(self, async_client: AsyncRunloop) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"): - await async_client.repositories.with_raw_response.inspect( - id="", - ) - - @parametrize - async def test_method_list_inspections(self, async_client: AsyncRunloop) -> None: - repository = await async_client.repositories.list_inspections( - "id", - ) - assert_matches_type(RepositoryInspectionListView, repository, path=["response"]) - - @parametrize - async def test_raw_response_list_inspections(self, async_client: AsyncRunloop) -> None: - response = await async_client.repositories.with_raw_response.list_inspections( - "id", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - repository = await response.parse() - assert_matches_type(RepositoryInspectionListView, repository, path=["response"]) - - @parametrize - async def test_streaming_response_list_inspections(self, async_client: AsyncRunloop) -> None: - async with async_client.repositories.with_streaming_response.list_inspections( - "id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - repository = await response.parse() - assert_matches_type(RepositoryInspectionListView, repository, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - async def test_path_params_list_inspections(self, async_client: AsyncRunloop) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"): - await async_client.repositories.with_raw_response.list_inspections( - "", - ) - - @parametrize - async def test_method_refresh(self, async_client: AsyncRunloop) -> None: - with pytest.warns(DeprecationWarning): - repository = await async_client.repositories.refresh( - id="id", - ) - - assert_matches_type(object, repository, path=["response"]) - - @parametrize - async def test_method_refresh_with_all_params(self, async_client: AsyncRunloop) -> None: - with pytest.warns(DeprecationWarning): - repository = await async_client.repositories.refresh( - id="id", - blueprint_id="blueprint_id", - github_auth_token="github_auth_token", - ) - - assert_matches_type(object, repository, path=["response"]) - - @parametrize - async def test_raw_response_refresh(self, async_client: AsyncRunloop) -> None: - with pytest.warns(DeprecationWarning): - response = await async_client.repositories.with_raw_response.refresh( - id="id", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - repository = await response.parse() - assert_matches_type(object, repository, path=["response"]) - - @parametrize - async def test_streaming_response_refresh(self, async_client: AsyncRunloop) -> None: - with pytest.warns(DeprecationWarning): - async with async_client.repositories.with_streaming_response.refresh( - id="id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - repository = await response.parse() - assert_matches_type(object, repository, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - async def test_path_params_refresh(self, async_client: AsyncRunloop) -> None: - with pytest.warns(DeprecationWarning): - with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"): - await async_client.repositories.with_raw_response.refresh( - id="", - ) - - @parametrize - async def test_method_retrieve_inspection(self, async_client: AsyncRunloop) -> None: - repository = await async_client.repositories.retrieve_inspection( - "id", - ) - assert_matches_type(RepositoryInspectionDetails, repository, path=["response"]) - - @parametrize - async def test_raw_response_retrieve_inspection(self, async_client: AsyncRunloop) -> None: - response = await async_client.repositories.with_raw_response.retrieve_inspection( - "id", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - repository = await response.parse() - assert_matches_type(RepositoryInspectionDetails, repository, path=["response"]) - - @parametrize - async def test_streaming_response_retrieve_inspection(self, async_client: AsyncRunloop) -> None: - async with async_client.repositories.with_streaming_response.retrieve_inspection( - "id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - repository = await response.parse() - assert_matches_type(RepositoryInspectionDetails, repository, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - async def test_path_params_retrieve_inspection(self, async_client: AsyncRunloop) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"): - await async_client.repositories.with_raw_response.retrieve_inspection( - "", - )