Skip to content

Commit f063f2d

Browse files
authored
chore: Sync updates from stainless branch: main (#201)
# What does this PR do? - sync with llamastack/llama-stack#1627 [//]: # (If resolving an issue, uncomment and update the line below) [//]: # (Closes #[issue-number]) ## Test Plan ``` llama-stack-client providers list ``` cc @cdoern to fix `llama-stack-client provider get <provider_id>` CLI [//]: # (## Documentation) [//]: # (- [ ] Added a Changelog entry if the change is significant)
1 parent 6d18aae commit f063f2d

File tree

4 files changed

+139
-66
lines changed

4 files changed

+139
-66
lines changed

src/llama_stack_client/resources/providers.py

Lines changed: 60 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
)
1818
from .._wrappers import DataWrapper
1919
from .._base_client import make_request_options
20+
from ..types.provider_info import ProviderInfo
2021
from ..types.provider_list_response import ProviderListResponse
21-
from ..types.provider_get_response import GetProviderResponse
2222

2323
__all__ = ["ProvidersResource", "AsyncProvidersResource"]
2424

@@ -43,49 +43,57 @@ def with_streaming_response(self) -> ProvidersResourceWithStreamingResponse:
4343
"""
4444
return ProvidersResourceWithStreamingResponse(self)
4545

46-
def list(
46+
def retrieve(
4747
self,
48+
provider_id: str,
4849
*,
4950
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
5051
# The extra values given here take precedence over values defined on the client or passed to this method.
5152
extra_headers: Headers | None = None,
5253
extra_query: Query | None = None,
5354
extra_body: Body | None = None,
5455
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
55-
) -> ProviderListResponse:
56+
) -> ProviderInfo:
57+
"""
58+
Args:
59+
extra_headers: Send extra headers
60+
61+
extra_query: Add additional query parameters to the request
62+
63+
extra_body: Add additional JSON properties to the request
64+
65+
timeout: Override the client-level default timeout for this request, in seconds
66+
"""
67+
if not provider_id:
68+
raise ValueError(f"Expected a non-empty value for `provider_id` but received {provider_id!r}")
5669
return self._get(
57-
"/v1/providers",
70+
f"/v1/providers/{provider_id}",
5871
options=make_request_options(
59-
extra_headers=extra_headers,
60-
extra_query=extra_query,
61-
extra_body=extra_body,
62-
timeout=timeout,
63-
post_parser=DataWrapper[ProviderListResponse]._unwrapper,
72+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
6473
),
65-
cast_to=cast(Type[ProviderListResponse], DataWrapper[ProviderListResponse]),
74+
cast_to=ProviderInfo,
6675
)
6776

68-
def inspect(
77+
def list(
6978
self,
70-
provider_id,
7179
*,
7280
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
7381
# The extra values given here take precedence over values defined on the client or passed to this method.
7482
extra_headers: Headers | None = None,
7583
extra_query: Query | None = None,
7684
extra_body: Body | None = None,
7785
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
78-
) -> GetProviderResponse:
86+
) -> ProviderListResponse:
7987
return self._get(
80-
f"/v1/providers/{provider_id}",
88+
"/v1/providers",
8189
options=make_request_options(
8290
extra_headers=extra_headers,
8391
extra_query=extra_query,
8492
extra_body=extra_body,
8593
timeout=timeout,
86-
post_parser=DataWrapper[GetProviderResponse]._unwrapper,
94+
post_parser=DataWrapper[ProviderListResponse]._unwrapper,
8795
),
88-
cast_to=cast(Type[GetProviderResponse], DataWrapper[GetProviderResponse]),
96+
cast_to=cast(Type[ProviderListResponse], DataWrapper[ProviderListResponse]),
8997
)
9098

9199

@@ -109,98 +117,103 @@ def with_streaming_response(self) -> AsyncProvidersResourceWithStreamingResponse
109117
"""
110118
return AsyncProvidersResourceWithStreamingResponse(self)
111119

112-
async def list(
120+
async def retrieve(
113121
self,
122+
provider_id: str,
114123
*,
115124
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
116125
# The extra values given here take precedence over values defined on the client or passed to this method.
117126
extra_headers: Headers | None = None,
118127
extra_query: Query | None = None,
119128
extra_body: Body | None = None,
120129
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
121-
) -> ProviderListResponse:
130+
) -> ProviderInfo:
131+
"""
132+
Args:
133+
extra_headers: Send extra headers
134+
135+
extra_query: Add additional query parameters to the request
136+
137+
extra_body: Add additional JSON properties to the request
138+
139+
timeout: Override the client-level default timeout for this request, in seconds
140+
"""
141+
if not provider_id:
142+
raise ValueError(f"Expected a non-empty value for `provider_id` but received {provider_id!r}")
122143
return await self._get(
123-
"/v1/providers",
144+
f"/v1/providers/{provider_id}",
124145
options=make_request_options(
125-
extra_headers=extra_headers,
126-
extra_query=extra_query,
127-
extra_body=extra_body,
128-
timeout=timeout,
129-
post_parser=DataWrapper[ProviderListResponse]._unwrapper,
146+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
130147
),
131-
cast_to=cast(Type[ProviderListResponse], DataWrapper[ProviderListResponse]),
148+
cast_to=ProviderInfo,
132149
)
133-
134-
async def inspect(
150+
151+
async def list(
135152
self,
136-
provider_id,
137153
*,
138154
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
139155
# The extra values given here take precedence over values defined on the client or passed to this method.
140156
extra_headers: Headers | None = None,
141157
extra_query: Query | None = None,
142158
extra_body: Body | None = None,
143159
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
144-
) -> GetProviderResponse:
160+
) -> ProviderListResponse:
145161
return await self._get(
146-
f"/v1/providers/{provider_id}",
162+
"/v1/providers",
147163
options=make_request_options(
148164
extra_headers=extra_headers,
149165
extra_query=extra_query,
150166
extra_body=extra_body,
151167
timeout=timeout,
152-
post_parser=DataWrapper[GetProviderResponse]._unwrapper,
168+
post_parser=DataWrapper[ProviderListResponse]._unwrapper,
153169
),
154-
cast_to=cast(Type[GetProviderResponse], DataWrapper[GetProviderResponse]),
170+
cast_to=cast(Type[ProviderListResponse], DataWrapper[ProviderListResponse]),
155171
)
156172

157173

158174
class ProvidersResourceWithRawResponse:
159175
def __init__(self, providers: ProvidersResource) -> None:
160176
self._providers = providers
161177

178+
self.retrieve = to_raw_response_wrapper(
179+
providers.retrieve,
180+
)
162181
self.list = to_raw_response_wrapper(
163182
providers.list,
164183
)
165184

166-
self.inspect = to_raw_response_wrapper(
167-
providers.inspect,
168-
)
169185

170186
class AsyncProvidersResourceWithRawResponse:
171187
def __init__(self, providers: AsyncProvidersResource) -> None:
172188
self._providers = providers
173189

190+
self.retrieve = async_to_raw_response_wrapper(
191+
providers.retrieve,
192+
)
174193
self.list = async_to_raw_response_wrapper(
175194
providers.list,
176195
)
177196

178-
self.inspect = async_to_raw_response_wrapper(
179-
providers.inspect,
180-
)
181-
182-
183197

184198
class ProvidersResourceWithStreamingResponse:
185199
def __init__(self, providers: ProvidersResource) -> None:
186200
self._providers = providers
187201

202+
self.retrieve = to_streamed_response_wrapper(
203+
providers.retrieve,
204+
)
188205
self.list = to_streamed_response_wrapper(
189206
providers.list,
190207
)
191208

192-
self.inspect = to_streamed_response_wrapper(
193-
providers.inspect,
194-
)
195-
196209

197210
class AsyncProvidersResourceWithStreamingResponse:
198211
def __init__(self, providers: AsyncProvidersResource) -> None:
199212
self._providers = providers
200213

214+
self.retrieve = async_to_streamed_response_wrapper(
215+
providers.retrieve,
216+
)
201217
self.list = async_to_streamed_response_wrapper(
202218
providers.list,
203219
)
204-
self.inspect = async_to_streamed_response_wrapper(
205-
providers.inspect,
206-
)

src/llama_stack_client/types/provider_get_response.py

Lines changed: 0 additions & 9 deletions
This file was deleted.
Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,17 @@
11
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
22

3+
from typing import Dict, List, Union
34

45
from .._models import BaseModel
5-
from typing import Dict, Any
66

77
__all__ = ["ProviderInfo"]
88

99

1010
class ProviderInfo(BaseModel):
1111
api: str
1212

13-
provider_id: str
14-
15-
provider_type: str
16-
17-
class ProviderInfoWithConfig(BaseModel):
18-
api: str
13+
config: Dict[str, Union[bool, float, str, List[object], object, None]]
1914

2015
provider_id: str
2116

2217
provider_type: str
23-
24-
config: Dict[str, Any]

tests/api_resources/test_providers.py

Lines changed: 77 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,52 @@
99

1010
from tests.utils import assert_matches_type
1111
from llama_stack_client import LlamaStackClient, AsyncLlamaStackClient
12-
from llama_stack_client.types import ProviderListResponse
12+
from llama_stack_client.types import ProviderInfo, ProviderListResponse
1313

1414
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
1515

1616

1717
class TestProviders:
1818
parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"])
1919

20+
@parametrize
21+
def test_method_retrieve(self, client: LlamaStackClient) -> None:
22+
provider = client.providers.retrieve(
23+
"provider_id",
24+
)
25+
assert_matches_type(ProviderInfo, provider, path=["response"])
26+
27+
@parametrize
28+
def test_raw_response_retrieve(self, client: LlamaStackClient) -> None:
29+
response = client.providers.with_raw_response.retrieve(
30+
"provider_id",
31+
)
32+
33+
assert response.is_closed is True
34+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
35+
provider = response.parse()
36+
assert_matches_type(ProviderInfo, provider, path=["response"])
37+
38+
@parametrize
39+
def test_streaming_response_retrieve(self, client: LlamaStackClient) -> None:
40+
with client.providers.with_streaming_response.retrieve(
41+
"provider_id",
42+
) as response:
43+
assert not response.is_closed
44+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
45+
46+
provider = response.parse()
47+
assert_matches_type(ProviderInfo, provider, path=["response"])
48+
49+
assert cast(Any, response.is_closed) is True
50+
51+
@parametrize
52+
def test_path_params_retrieve(self, client: LlamaStackClient) -> None:
53+
with pytest.raises(ValueError, match=r"Expected a non-empty value for `provider_id` but received ''"):
54+
client.providers.with_raw_response.retrieve(
55+
"",
56+
)
57+
2058
@parametrize
2159
def test_method_list(self, client: LlamaStackClient) -> None:
2260
provider = client.providers.list()
@@ -46,6 +84,44 @@ def test_streaming_response_list(self, client: LlamaStackClient) -> None:
4684
class TestAsyncProviders:
4785
parametrize = pytest.mark.parametrize("async_client", [False, True], indirect=True, ids=["loose", "strict"])
4886

87+
@parametrize
88+
async def test_method_retrieve(self, async_client: AsyncLlamaStackClient) -> None:
89+
provider = await async_client.providers.retrieve(
90+
"provider_id",
91+
)
92+
assert_matches_type(ProviderInfo, provider, path=["response"])
93+
94+
@parametrize
95+
async def test_raw_response_retrieve(self, async_client: AsyncLlamaStackClient) -> None:
96+
response = await async_client.providers.with_raw_response.retrieve(
97+
"provider_id",
98+
)
99+
100+
assert response.is_closed is True
101+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
102+
provider = await response.parse()
103+
assert_matches_type(ProviderInfo, provider, path=["response"])
104+
105+
@parametrize
106+
async def test_streaming_response_retrieve(self, async_client: AsyncLlamaStackClient) -> None:
107+
async with async_client.providers.with_streaming_response.retrieve(
108+
"provider_id",
109+
) as response:
110+
assert not response.is_closed
111+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
112+
113+
provider = await response.parse()
114+
assert_matches_type(ProviderInfo, provider, path=["response"])
115+
116+
assert cast(Any, response.is_closed) is True
117+
118+
@parametrize
119+
async def test_path_params_retrieve(self, async_client: AsyncLlamaStackClient) -> None:
120+
with pytest.raises(ValueError, match=r"Expected a non-empty value for `provider_id` but received ''"):
121+
await async_client.providers.with_raw_response.retrieve(
122+
"",
123+
)
124+
49125
@parametrize
50126
async def test_method_list(self, async_client: AsyncLlamaStackClient) -> None:
51127
provider = await async_client.providers.list()

0 commit comments

Comments
 (0)