Skip to content

Commit d6695c3

Browse files
stainless-app[bot]stainless-bot
authored andcommitted
feat(api): model groups (#49)
1 parent 83523f0 commit d6695c3

File tree

7 files changed

+144
-3
lines changed

7 files changed

+144
-3
lines changed

.stats.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
configured_endpoints: 81
1+
configured_endpoints: 82
22
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/datamini%2Fasktable-4bee800ad604492e6ee5776c10e1668037755aeaae6ff6faa2d09a0c3763eeee.yml

api.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,13 @@ from asktable.types import Policy
1111
Types:
1212

1313
```python
14-
from asktable.types.sys import APIKey, Project, ProjectDeleteResponse
14+
from asktable.types.sys import (
15+
APIKey,
16+
ModelGroup,
17+
Project,
18+
ProjectDeleteResponse,
19+
ProjectModelGroupsResponse,
20+
)
1521
```
1622

1723
Methods:
@@ -21,6 +27,7 @@ Methods:
2127
- <code title="patch /sys/projects/{project_id}">client.sys.projects.<a href="./src/asktable/resources/sys/projects/projects.py">update</a>(project_id, \*\*<a href="src/asktable/types/sys/project_update_params.py">params</a>) -> <a href="./src/asktable/types/sys/project.py">Project</a></code>
2228
- <code title="get /sys/projects">client.sys.projects.<a href="./src/asktable/resources/sys/projects/projects.py">list</a>(\*\*<a href="src/asktable/types/sys/project_list_params.py">params</a>) -> <a href="./src/asktable/types/sys/project.py">SyncPage[Project]</a></code>
2329
- <code title="delete /sys/projects/{project_id}">client.sys.projects.<a href="./src/asktable/resources/sys/projects/projects.py">delete</a>(project_id) -> <a href="./src/asktable/types/sys/project_delete_response.py">object</a></code>
30+
- <code title="get /sys/projects/model-groups">client.sys.projects.<a href="./src/asktable/resources/sys/projects/projects.py">model_groups</a>() -> <a href="./src/asktable/types/sys/project_model_groups_response.py">ProjectModelGroupsResponse</a></code>
2431

2532
### APIKeys
2633

src/asktable/resources/sys/projects/projects.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
from ....pagination import SyncPage, AsyncPage
3232
from ...._base_client import AsyncPaginator, make_request_options
3333
from ....types.sys.project import Project
34+
from ....types.sys.project_model_groups_response import ProjectModelGroupsResponse
3435

3536
__all__ = ["ProjectsResource", "AsyncProjectsResource"]
3637

@@ -260,6 +261,25 @@ def delete(
260261
cast_to=object,
261262
)
262263

264+
def model_groups(
265+
self,
266+
*,
267+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
268+
# The extra values given here take precedence over values defined on the client or passed to this method.
269+
extra_headers: Headers | None = None,
270+
extra_query: Query | None = None,
271+
extra_body: Body | None = None,
272+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
273+
) -> ProjectModelGroupsResponse:
274+
"""Get Llm Model Groups"""
275+
return self._get(
276+
"/sys/projects/model-groups",
277+
options=make_request_options(
278+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
279+
),
280+
cast_to=ProjectModelGroupsResponse,
281+
)
282+
263283

264284
class AsyncProjectsResource(AsyncAPIResource):
265285
@cached_property
@@ -486,6 +506,25 @@ async def delete(
486506
cast_to=object,
487507
)
488508

509+
async def model_groups(
510+
self,
511+
*,
512+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
513+
# The extra values given here take precedence over values defined on the client or passed to this method.
514+
extra_headers: Headers | None = None,
515+
extra_query: Query | None = None,
516+
extra_body: Body | None = None,
517+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
518+
) -> ProjectModelGroupsResponse:
519+
"""Get Llm Model Groups"""
520+
return await self._get(
521+
"/sys/projects/model-groups",
522+
options=make_request_options(
523+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
524+
),
525+
cast_to=ProjectModelGroupsResponse,
526+
)
527+
489528

490529
class ProjectsResourceWithRawResponse:
491530
def __init__(self, projects: ProjectsResource) -> None:
@@ -506,6 +545,9 @@ def __init__(self, projects: ProjectsResource) -> None:
506545
self.delete = to_raw_response_wrapper(
507546
projects.delete,
508547
)
548+
self.model_groups = to_raw_response_wrapper(
549+
projects.model_groups,
550+
)
509551

510552
@cached_property
511553
def api_keys(self) -> APIKeysResourceWithRawResponse:
@@ -531,6 +573,9 @@ def __init__(self, projects: AsyncProjectsResource) -> None:
531573
self.delete = async_to_raw_response_wrapper(
532574
projects.delete,
533575
)
576+
self.model_groups = async_to_raw_response_wrapper(
577+
projects.model_groups,
578+
)
534579

535580
@cached_property
536581
def api_keys(self) -> AsyncAPIKeysResourceWithRawResponse:
@@ -556,6 +601,9 @@ def __init__(self, projects: ProjectsResource) -> None:
556601
self.delete = to_streamed_response_wrapper(
557602
projects.delete,
558603
)
604+
self.model_groups = to_streamed_response_wrapper(
605+
projects.model_groups,
606+
)
559607

560608
@cached_property
561609
def api_keys(self) -> APIKeysResourceWithStreamingResponse:
@@ -581,6 +629,9 @@ def __init__(self, projects: AsyncProjectsResource) -> None:
581629
self.delete = async_to_streamed_response_wrapper(
582630
projects.delete,
583631
)
632+
self.model_groups = async_to_streamed_response_wrapper(
633+
projects.model_groups,
634+
)
584635

585636
@cached_property
586637
def api_keys(self) -> AsyncAPIKeysResourceWithStreamingResponse:

src/asktable/types/sys/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
from .api_key import APIKey as APIKey
66
from .project import Project as Project
7+
from .model_group import ModelGroup as ModelGroup
78
from .project_list_params import ProjectListParams as ProjectListParams
89
from .project_create_params import ProjectCreateParams as ProjectCreateParams
910
from .project_update_params import ProjectUpdateParams as ProjectUpdateParams
11+
from .project_model_groups_response import ProjectModelGroupsResponse as ProjectModelGroupsResponse
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
from typing import List
4+
5+
from ..._models import BaseModel
6+
7+
__all__ = ["ModelGroup"]
8+
9+
10+
class ModelGroup(BaseModel):
11+
image_models: List[str]
12+
"""图像模型列表"""
13+
14+
name: str
15+
"""模型组名称"""
16+
17+
text_models: List[str]
18+
"""文本模型列表"""
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
from typing import List
4+
from typing_extensions import TypeAlias
5+
6+
from .model_group import ModelGroup
7+
8+
__all__ = ["ProjectModelGroupsResponse"]
9+
10+
ProjectModelGroupsResponse: TypeAlias = List[ModelGroup]

tests/api_resources/sys/test_projects.py

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@
99

1010
from asktable import Asktable, AsyncAsktable
1111
from tests.utils import assert_matches_type
12-
from asktable.types.sys import Project
12+
from asktable.types.sys import (
13+
Project,
14+
ProjectModelGroupsResponse,
15+
)
1316
from asktable.pagination import SyncPage, AsyncPage
1417

1518
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
@@ -207,6 +210,31 @@ def test_path_params_delete(self, client: Asktable) -> None:
207210
"",
208211
)
209212

213+
@parametrize
214+
def test_method_model_groups(self, client: Asktable) -> None:
215+
project = client.sys.projects.model_groups()
216+
assert_matches_type(ProjectModelGroupsResponse, project, path=["response"])
217+
218+
@parametrize
219+
def test_raw_response_model_groups(self, client: Asktable) -> None:
220+
response = client.sys.projects.with_raw_response.model_groups()
221+
222+
assert response.is_closed is True
223+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
224+
project = response.parse()
225+
assert_matches_type(ProjectModelGroupsResponse, project, path=["response"])
226+
227+
@parametrize
228+
def test_streaming_response_model_groups(self, client: Asktable) -> None:
229+
with client.sys.projects.with_streaming_response.model_groups() as response:
230+
assert not response.is_closed
231+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
232+
233+
project = response.parse()
234+
assert_matches_type(ProjectModelGroupsResponse, project, path=["response"])
235+
236+
assert cast(Any, response.is_closed) is True
237+
210238

211239
class TestAsyncProjects:
212240
parametrize = pytest.mark.parametrize("async_client", [False, True], indirect=True, ids=["loose", "strict"])
@@ -399,3 +427,28 @@ async def test_path_params_delete(self, async_client: AsyncAsktable) -> None:
399427
await async_client.sys.projects.with_raw_response.delete(
400428
"",
401429
)
430+
431+
@parametrize
432+
async def test_method_model_groups(self, async_client: AsyncAsktable) -> None:
433+
project = await async_client.sys.projects.model_groups()
434+
assert_matches_type(ProjectModelGroupsResponse, project, path=["response"])
435+
436+
@parametrize
437+
async def test_raw_response_model_groups(self, async_client: AsyncAsktable) -> None:
438+
response = await async_client.sys.projects.with_raw_response.model_groups()
439+
440+
assert response.is_closed is True
441+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
442+
project = await response.parse()
443+
assert_matches_type(ProjectModelGroupsResponse, project, path=["response"])
444+
445+
@parametrize
446+
async def test_streaming_response_model_groups(self, async_client: AsyncAsktable) -> None:
447+
async with async_client.sys.projects.with_streaming_response.model_groups() as response:
448+
assert not response.is_closed
449+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
450+
451+
project = await response.parse()
452+
assert_matches_type(ProjectModelGroupsResponse, project, path=["response"])
453+
454+
assert cast(Any, response.is_closed) is True

0 commit comments

Comments
 (0)