Skip to content

Commit edb14b6

Browse files
feat(api): api update
1 parent d331b72 commit edb14b6

File tree

6 files changed

+74
-30
lines changed

6 files changed

+74
-30
lines changed

.stats.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
configured_endpoints: 35
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/replicate%2Freplicate-client-12e7ef40109b6b34f1471a638d09b79f005c8dbf7e1a8aeca9db7e37a334e8eb.yml
3-
openapi_spec_hash: 10b0fc9094dac5d51f46bbdd5fe3de32
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/replicate%2Freplicate-client-661f1eceefb9f933f9834ee8fc503ed35473904eceb2467852157fae379b3641.yml
3+
openapi_spec_hash: 73a5fc50881bce84daef22ba4620c499
44
config_hash: 12536d2bf978a995771d076a4647c17d

api.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,16 +61,16 @@ Methods:
6161
Types:
6262

6363
```python
64-
from replicate.types import ModelListResponse
64+
from replicate.types import ModelListResponse, ModelGetResponse
6565
```
6666

6767
Methods:
6868

6969
- <code title="post /models">replicate.models.<a href="./src/replicate/resources/models/models.py">create</a>(\*\*<a href="src/replicate/types/model_create_params.py">params</a>) -> None</code>
7070
- <code title="get /models">replicate.models.<a href="./src/replicate/resources/models/models.py">list</a>() -> <a href="./src/replicate/types/model_list_response.py">SyncCursorURLPage[ModelListResponse]</a></code>
7171
- <code title="delete /models/{model_owner}/{model_name}">replicate.models.<a href="./src/replicate/resources/models/models.py">delete</a>(\*, model_owner, model_name) -> None</code>
72-
- <code title="get /models/{model_owner}/{model_name}">replicate.models.<a href="./src/replicate/resources/models/models.py">get</a>(\*, model_owner, model_name) -> None</code>
73-
- <code title="query /models">replicate.models.<a href="./src/replicate/resources/models/models.py">search</a>(\*\*<a href="src/replicate/types/model_search_params.py">params</a>) -> None</code>
72+
- <code title="get /models/{model_owner}/{model_name}">replicate.models.<a href="./src/replicate/resources/models/models.py">get</a>(\*, model_owner, model_name) -> <a href="./src/replicate/types/model_get_response.py">ModelGetResponse</a></code>
73+
- <code title="query /models">replicate.models.<a href="./src/replicate/resources/models/models.py">search</a>(\*\*<a href="src/replicate/types/model_search_params.py">params</a>) -> object</code>
7474

7575
## Examples
7676

src/replicate/resources/models/models.py

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
)
5252
from ...pagination import SyncCursorURLPage, AsyncCursorURLPage
5353
from ..._base_client import AsyncPaginator, make_request_options
54+
from ...types.model_get_response import ModelGetResponse
5455
from ...types.model_list_response import ModelListResponse
5556

5657
__all__ = ["ModelsResource", "AsyncModelsResource"]
@@ -306,7 +307,7 @@ def get(
306307
extra_query: Query | None = None,
307308
extra_body: Body | None = None,
308309
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
309-
) -> None:
310+
) -> ModelGetResponse:
310311
"""
311312
Example cURL request:
312313
@@ -395,13 +396,12 @@ def get(
395396
raise ValueError(f"Expected a non-empty value for `model_owner` but received {model_owner!r}")
396397
if not model_name:
397398
raise ValueError(f"Expected a non-empty value for `model_name` but received {model_name!r}")
398-
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
399399
return self._get(
400400
f"/models/{model_owner}/{model_name}",
401401
options=make_request_options(
402402
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
403403
),
404-
cast_to=NoneType,
404+
cast_to=ModelGetResponse,
405405
)
406406

407407
def search(
@@ -414,7 +414,7 @@ def search(
414414
extra_query: Query | None = None,
415415
extra_body: Body | None = None,
416416
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
417-
) -> None:
417+
) -> object:
418418
"""
419419
Get a list of public models matching a search query.
420420
@@ -445,14 +445,13 @@ def search(
445445
446446
timeout: Override the client-level default timeout for this request, in seconds
447447
"""
448-
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
449448
return self._query(
450449
"/models",
451450
body=maybe_transform(body, model_search_params.ModelSearchParams),
452451
options=make_request_options(
453452
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
454453
),
455-
cast_to=NoneType,
454+
cast_to=object,
456455
)
457456

458457

@@ -706,7 +705,7 @@ async def get(
706705
extra_query: Query | None = None,
707706
extra_body: Body | None = None,
708707
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
709-
) -> None:
708+
) -> ModelGetResponse:
710709
"""
711710
Example cURL request:
712711
@@ -795,13 +794,12 @@ async def get(
795794
raise ValueError(f"Expected a non-empty value for `model_owner` but received {model_owner!r}")
796795
if not model_name:
797796
raise ValueError(f"Expected a non-empty value for `model_name` but received {model_name!r}")
798-
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
799797
return await self._get(
800798
f"/models/{model_owner}/{model_name}",
801799
options=make_request_options(
802800
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
803801
),
804-
cast_to=NoneType,
802+
cast_to=ModelGetResponse,
805803
)
806804

807805
async def search(
@@ -814,7 +812,7 @@ async def search(
814812
extra_query: Query | None = None,
815813
extra_body: Body | None = None,
816814
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
817-
) -> None:
815+
) -> object:
818816
"""
819817
Get a list of public models matching a search query.
820818
@@ -845,14 +843,13 @@ async def search(
845843
846844
timeout: Override the client-level default timeout for this request, in seconds
847845
"""
848-
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
849846
return await self._query(
850847
"/models",
851848
body=await async_maybe_transform(body, model_search_params.ModelSearchParams),
852849
options=make_request_options(
853850
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
854851
),
855-
cast_to=NoneType,
852+
cast_to=object,
856853
)
857854

858855

src/replicate/types/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from .file_get_response import FileGetResponse as FileGetResponse
77
from .file_create_params import FileCreateParams as FileCreateParams
88
from .file_list_response import FileListResponse as FileListResponse
9+
from .model_get_response import ModelGetResponse as ModelGetResponse
910
from .model_create_params import ModelCreateParams as ModelCreateParams
1011
from .model_list_response import ModelListResponse as ModelListResponse
1112
from .model_search_params import ModelSearchParams as ModelSearchParams
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
from typing import Optional
4+
from typing_extensions import Literal
5+
6+
from .._models import BaseModel
7+
8+
__all__ = ["ModelGetResponse"]
9+
10+
11+
class ModelGetResponse(BaseModel):
12+
cover_image_url: Optional[str] = None
13+
"""A URL for the model's cover image"""
14+
15+
default_example: Optional[object] = None
16+
"""The model's default example prediction"""
17+
18+
description: Optional[str] = None
19+
"""A description of the model"""
20+
21+
github_url: Optional[str] = None
22+
"""A URL for the model's source code on GitHub"""
23+
24+
latest_version: Optional[object] = None
25+
"""The model's latest version"""
26+
27+
license_url: Optional[str] = None
28+
"""A URL for the model's license"""
29+
30+
name: Optional[str] = None
31+
"""The name of the model"""
32+
33+
owner: Optional[str] = None
34+
"""The name of the user or organization that owns the model"""
35+
36+
paper_url: Optional[str] = None
37+
"""A URL for the model's paper"""
38+
39+
run_count: Optional[int] = None
40+
"""The number of times the model has been run"""
41+
42+
url: Optional[str] = None
43+
"""The URL of the model on Replicate"""
44+
45+
visibility: Optional[Literal["public", "private"]] = None
46+
"""Whether the model is public or private"""

tests/api_resources/test_models.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
from replicate import Replicate, AsyncReplicate
1111
from tests.utils import assert_matches_type
12-
from replicate.types import ModelListResponse
12+
from replicate.types import ModelGetResponse, ModelListResponse
1313
from replicate.pagination import SyncCursorURLPage, AsyncCursorURLPage
1414

1515
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
@@ -164,7 +164,7 @@ def test_method_get(self, client: Replicate) -> None:
164164
model_owner="model_owner",
165165
model_name="model_name",
166166
)
167-
assert model is None
167+
assert_matches_type(ModelGetResponse, model, path=["response"])
168168

169169
@pytest.mark.skip()
170170
@parametrize
@@ -177,7 +177,7 @@ def test_raw_response_get(self, client: Replicate) -> None:
177177
assert response.is_closed is True
178178
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
179179
model = response.parse()
180-
assert model is None
180+
assert_matches_type(ModelGetResponse, model, path=["response"])
181181

182182
@pytest.mark.skip()
183183
@parametrize
@@ -190,7 +190,7 @@ def test_streaming_response_get(self, client: Replicate) -> None:
190190
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
191191

192192
model = response.parse()
193-
assert model is None
193+
assert_matches_type(ModelGetResponse, model, path=["response"])
194194

195195
assert cast(Any, response.is_closed) is True
196196

@@ -215,7 +215,7 @@ def test_method_search(self, client: Replicate) -> None:
215215
model = client.models.search(
216216
body="body",
217217
)
218-
assert model is None
218+
assert_matches_type(object, model, path=["response"])
219219

220220
@pytest.mark.skip(reason="Prism doesn't support query methods yet")
221221
@parametrize
@@ -227,7 +227,7 @@ def test_raw_response_search(self, client: Replicate) -> None:
227227
assert response.is_closed is True
228228
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
229229
model = response.parse()
230-
assert model is None
230+
assert_matches_type(object, model, path=["response"])
231231

232232
@pytest.mark.skip(reason="Prism doesn't support query methods yet")
233233
@parametrize
@@ -239,7 +239,7 @@ def test_streaming_response_search(self, client: Replicate) -> None:
239239
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
240240

241241
model = response.parse()
242-
assert model is None
242+
assert_matches_type(object, model, path=["response"])
243243

244244
assert cast(Any, response.is_closed) is True
245245

@@ -395,7 +395,7 @@ async def test_method_get(self, async_client: AsyncReplicate) -> None:
395395
model_owner="model_owner",
396396
model_name="model_name",
397397
)
398-
assert model is None
398+
assert_matches_type(ModelGetResponse, model, path=["response"])
399399

400400
@pytest.mark.skip()
401401
@parametrize
@@ -408,7 +408,7 @@ async def test_raw_response_get(self, async_client: AsyncReplicate) -> None:
408408
assert response.is_closed is True
409409
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
410410
model = await response.parse()
411-
assert model is None
411+
assert_matches_type(ModelGetResponse, model, path=["response"])
412412

413413
@pytest.mark.skip()
414414
@parametrize
@@ -421,7 +421,7 @@ async def test_streaming_response_get(self, async_client: AsyncReplicate) -> Non
421421
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
422422

423423
model = await response.parse()
424-
assert model is None
424+
assert_matches_type(ModelGetResponse, model, path=["response"])
425425

426426
assert cast(Any, response.is_closed) is True
427427

@@ -446,7 +446,7 @@ async def test_method_search(self, async_client: AsyncReplicate) -> None:
446446
model = await async_client.models.search(
447447
body="body",
448448
)
449-
assert model is None
449+
assert_matches_type(object, model, path=["response"])
450450

451451
@pytest.mark.skip(reason="Prism doesn't support query methods yet")
452452
@parametrize
@@ -458,7 +458,7 @@ async def test_raw_response_search(self, async_client: AsyncReplicate) -> None:
458458
assert response.is_closed is True
459459
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
460460
model = await response.parse()
461-
assert model is None
461+
assert_matches_type(object, model, path=["response"])
462462

463463
@pytest.mark.skip(reason="Prism doesn't support query methods yet")
464464
@parametrize
@@ -470,6 +470,6 @@ async def test_streaming_response_search(self, async_client: AsyncReplicate) ->
470470
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
471471

472472
model = await response.parse()
473-
assert model is None
473+
assert_matches_type(object, model, path=["response"])
474474

475475
assert cast(Any, response.is_closed) is True

0 commit comments

Comments
 (0)