aidial-client 0.18.0.dev4__tar.gz → 0.19.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/PKG-INFO +27 -4
  2. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/README.md +25 -1
  3. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/_http_client/_async.py +3 -0
  4. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/helpers/storage_resource.py +1 -2
  5. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/resources/deployments.py +46 -1
  6. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/resources/metadata.py +1 -3
  7. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/resources/skills.py +1 -1
  8. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/types/chat/function.py +3 -1
  9. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/types/chat/request_param.py +2 -2
  10. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/types/chat/tool.py +2 -2
  11. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/types/deployment.py +8 -0
  12. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/pyproject.toml +3 -3
  13. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/LICENSE +0 -0
  14. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/__init__.py +0 -0
  15. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/_auth.py +0 -0
  16. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/_client.py +0 -0
  17. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/_client_pool.py +0 -0
  18. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/_compatibility/__init__.py +0 -0
  19. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/_compatibility/openai.py +0 -0
  20. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/_compatibility/pydantic.py +0 -0
  21. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/_compatibility/pydantic_v1.py +0 -0
  22. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/_constants.py +0 -0
  23. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/_exception.py +0 -0
  24. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/_http_client/__init__.py +0 -0
  25. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/_http_client/_base.py +0 -0
  26. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/_http_client/_sse.py +0 -0
  27. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/_http_client/_sync.py +0 -0
  28. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/_internal_types/__init__.py +0 -0
  29. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/_internal_types/_defaults.py +0 -0
  30. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/_internal_types/_generic.py +0 -0
  31. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/_internal_types/_http_request.py +0 -0
  32. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/_internal_types/_json_rpc.py +0 -0
  33. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/_internal_types/_model.py +0 -0
  34. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/_log.py +0 -0
  35. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/_utils/__init__.py +0 -0
  36. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/_utils/_alias.py +0 -0
  37. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/_utils/_dict.py +0 -0
  38. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/_utils/_openai.py +0 -0
  39. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/_utils/_response_processing.py +0 -0
  40. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/_utils/_type_guard.py +0 -0
  41. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/helpers/__init__.py +0 -0
  42. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/helpers/_url.py +0 -0
  43. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/py.typed +0 -0
  44. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/resources/__init__.py +0 -0
  45. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/resources/application.py +0 -0
  46. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/resources/base.py +0 -0
  47. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/resources/bucket.py +0 -0
  48. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/resources/chat/__init__.py +0 -0
  49. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/resources/chat/completions.py +0 -0
  50. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/resources/client_channel.py +0 -0
  51. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/resources/files.py +0 -0
  52. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/resources/model.py +0 -0
  53. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/resources/prompts.py +0 -0
  54. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/resources/resource_permissions.py +0 -0
  55. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/resources/toolset.py +0 -0
  56. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/resources/user.py +0 -0
  57. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/types/__init__.py +0 -0
  58. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/types/application.py +0 -0
  59. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/types/bucket.py +0 -0
  60. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/types/chat/__init__.py +0 -0
  61. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/types/chat/cache.py +0 -0
  62. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/types/chat/legacy/__init__.py +0 -0
  63. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/types/chat/legacy/application_request.py +0 -0
  64. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/types/chat/legacy/chat_completion.py +0 -0
  65. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/types/chat/request.py +0 -0
  66. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/types/chat/response.py +0 -0
  67. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/types/client_channel.py +0 -0
  68. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/types/file.py +0 -0
  69. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/types/metadata.py +0 -0
  70. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/types/model.py +0 -0
  71. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/types/prompt.py +0 -0
  72. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/types/toolset.py +0 -0
  73. {aidial_client-0.18.0.dev4 → aidial_client-0.19.0}/aidial_client/types/user.py +0 -0
@@ -1,14 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aidial-client
3
- Version: 0.18.0.dev4
3
+ Version: 0.19.0
4
4
  Summary: A Python client library for the AI DIAL API
5
5
  License-Expression: Apache-2.0
6
6
  License-File: LICENSE
7
7
  Author: DIALX
8
8
  Author-email: SpecialEPM-DIALDevTeam@epam.com
9
- Requires-Python: >=3.10,<3.14
9
+ Requires-Python: >=3.11,<3.14
10
10
  Classifier: Programming Language :: Python :: 3
11
- Classifier: Programming Language :: Python :: 3.10
12
11
  Classifier: Programming Language :: Python :: 3.11
13
12
  Classifier: Programming Language :: Python :: 3.12
14
13
  Classifier: Programming Language :: Python :: 3.13
@@ -42,6 +41,7 @@ Description-Content-Type: text/markdown
42
41
  - [Lifecycle Management](#lifecycle-management)
43
42
  - [Deployments](#deployments)
44
43
  - [List Deployments](#list-deployments)
44
+ - [List Deployment Names](#list-deployment-names)
45
45
  - [Get Deployment by Id](#get-deployment-by-id)
46
46
  - [Get Deployment Configuration](#get-deployment-configuration)
47
47
  - [Make Chat Completions Requests](#make-chat-completions-requests)
@@ -246,6 +246,29 @@ deployments = await async_client.deployments.list()
246
246
  ]
247
247
  ```
248
248
 
249
+ #### List Deployment Names
250
+
251
+ To get a lightweight list of the names and kinds of all deployments available to the caller (models, applications and toolsets), without loading their full definitions:
252
+
253
+ ```python
254
+ # Sync
255
+ names = client.deployments.list_names()
256
+ # Async
257
+ names = await async_client.deployments.list_names()
258
+
259
+ # Only some kinds: "model", "application", "toolset"
260
+ names = client.deployments.list_names(types=["model", "toolset"])
261
+ ```
262
+
263
+ ```pycon
264
+ >>> client.deployments.list_names()
265
+ [
266
+ DeploymentName(id='gpt-35-turbo', object='model'),
267
+ DeploymentName(id='my-app', object='application'),
268
+ DeploymentName(id='git', object='toolset'),
269
+ ]
270
+ ```
271
+
249
272
  #### Get Deployment by Id
250
273
 
251
274
  To fetch a single deployment by its identifier:
@@ -1355,7 +1378,7 @@ To set up the development environment and run the project, follow the instructio
1355
1378
  The following tools are required to work with the project:
1356
1379
 
1357
1380
  1. `Make`
1358
- 2. `Python 3.10`
1381
+ 2. `Python 3.11`
1359
1382
  3. `Poetry 2.*`. See the [Poetry installation guide](https://python-poetry.org/docs/#installation)
1360
1383
 
1361
1384
  ### Setup
@@ -20,6 +20,7 @@
20
20
  - [Lifecycle Management](#lifecycle-management)
21
21
  - [Deployments](#deployments)
22
22
  - [List Deployments](#list-deployments)
23
+ - [List Deployment Names](#list-deployment-names)
23
24
  - [Get Deployment by Id](#get-deployment-by-id)
24
25
  - [Get Deployment Configuration](#get-deployment-configuration)
25
26
  - [Make Chat Completions Requests](#make-chat-completions-requests)
@@ -224,6 +225,29 @@ deployments = await async_client.deployments.list()
224
225
  ]
225
226
  ```
226
227
 
228
+ #### List Deployment Names
229
+
230
+ To get a lightweight list of the names and kinds of all deployments available to the caller (models, applications and toolsets), without loading their full definitions:
231
+
232
+ ```python
233
+ # Sync
234
+ names = client.deployments.list_names()
235
+ # Async
236
+ names = await async_client.deployments.list_names()
237
+
238
+ # Only some kinds: "model", "application", "toolset"
239
+ names = client.deployments.list_names(types=["model", "toolset"])
240
+ ```
241
+
242
+ ```pycon
243
+ >>> client.deployments.list_names()
244
+ [
245
+ DeploymentName(id='gpt-35-turbo', object='model'),
246
+ DeploymentName(id='my-app', object='application'),
247
+ DeploymentName(id='git', object='toolset'),
248
+ ]
249
+ ```
250
+
227
251
  #### Get Deployment by Id
228
252
 
229
253
  To fetch a single deployment by its identifier:
@@ -1333,7 +1357,7 @@ To set up the development environment and run the project, follow the instructio
1333
1357
  The following tools are required to work with the project:
1334
1358
 
1335
1359
  1. `Make`
1336
- 2. `Python 3.10`
1360
+ 2. `Python 3.11`
1337
1361
  3. `Poetry 2.*`. See the [Poetry installation guide](https://python-poetry.org/docs/#installation)
1338
1362
 
1339
1363
  ### Setup
@@ -126,6 +126,9 @@ class AsyncHTTPClient(BaseHTTPClient[httpx.AsyncClient, AsyncAuthValue]):
126
126
  raise DialException(message=f"Request failed: {err}") from err
127
127
 
128
128
  try:
129
+ if response.is_error:
130
+ with suppress(httpx.HTTPError):
131
+ await response.aread()
129
132
  self._raise_for_status(response, on_http_error)
130
133
  yield response
131
134
  finally:
@@ -1,9 +1,8 @@
1
1
  from pathlib import PurePosixPath
2
- from typing import Literal, cast, get_args
2
+ from typing import Literal, assert_never, cast, get_args
3
3
  from urllib.parse import quote, unquote, urljoin, urlparse, urlsplit
4
4
 
5
5
  import httpx
6
- from typing_extensions import assert_never
7
6
 
8
7
  from aidial_client._compatibility.pydantic_v1 import BaseModel
9
8
  from aidial_client._constants import API_PREFIX_V1, API_PREFIX_V2
@@ -1,8 +1,37 @@
1
+ import builtins
2
+ from collections.abc import Sequence
1
3
  from typing import Any
2
4
 
5
+ import httpx
6
+
7
+ from aidial_client._exception import ParsingDataError
3
8
  from aidial_client._internal_types._http_request import FinalRequestOptions
4
9
  from aidial_client.resources.base import AsyncResource, Resource
5
- from aidial_client.types.deployment import Deployment, DeploymentsResponse
10
+ from aidial_client.types.deployment import (
11
+ Deployment,
12
+ DeploymentKind,
13
+ DeploymentName,
14
+ DeploymentsResponse,
15
+ )
16
+
17
+
18
+ def _names_options(
19
+ types: Sequence[DeploymentKind] | None,
20
+ ) -> FinalRequestOptions:
21
+ return FinalRequestOptions(
22
+ method="GET",
23
+ url="v1/deployment-names",
24
+ params={"type": ",".join(types)} if types else None,
25
+ )
26
+
27
+
28
+ def _parse_names(response: httpx.Response) -> list[DeploymentName]:
29
+ try:
30
+ return [DeploymentName(**item) for item in response.json()]
31
+ except Exception as e:
32
+ raise ParsingDataError(
33
+ message=f"Error during parsing of response data: {str(e)}"
34
+ )
6
35
 
7
36
 
8
37
  class Deployments(Resource):
@@ -15,6 +44,14 @@ class Deployments(Resource):
15
44
  def list(self) -> list[Deployment]:
16
45
  return self._list_raw().data
17
46
 
47
+ def list_names(
48
+ self, types: Sequence[DeploymentKind] | None = None
49
+ ) -> builtins.list[DeploymentName]:
50
+ response = self.http_client.request(
51
+ cast_to=httpx.Response, options=_names_options(types)
52
+ )
53
+ return _parse_names(response)
54
+
18
55
  def get(self, deployment_id: str) -> Deployment:
19
56
  return self.http_client.request(
20
57
  cast_to=Deployment,
@@ -43,6 +80,14 @@ class AsyncDeployments(AsyncResource):
43
80
  async def list(self) -> list[Deployment]:
44
81
  return (await self._list_raw()).data
45
82
 
83
+ async def list_names(
84
+ self, types: Sequence[DeploymentKind] | None = None
85
+ ) -> builtins.list[DeploymentName]:
86
+ response = await self.http_client.request(
87
+ cast_to=httpx.Response, options=_names_options(types)
88
+ )
89
+ return _parse_names(response)
90
+
46
91
  async def get(self, deployment_id: str) -> Deployment:
47
92
  return await self.http_client.request(
48
93
  cast_to=Deployment,
@@ -1,8 +1,6 @@
1
- from typing import Literal, overload
1
+ from typing import Literal, assert_never, overload
2
2
  from urllib.parse import urljoin
3
3
 
4
- from typing_extensions import assert_never
5
-
6
4
  from aidial_client._constants import METADATA_PREFIX_V1
7
5
  from aidial_client._internal_types._http_request import FinalRequestOptions
8
6
  from aidial_client._utils._dict import remove_none
@@ -18,10 +18,10 @@ enough path for its route.**
18
18
 
19
19
  from collections.abc import AsyncIterator, Awaitable, Callable, Sequence
20
20
  from contextlib import asynccontextmanager
21
+ from typing import Self, overload
21
22
  from urllib.parse import unquote
22
23
 
23
24
  import httpx
24
- from typing_extensions import Self, overload
25
25
 
26
26
  from aidial_client._constants import API_PREFIX_V2, METADATA_PREFIX_V2
27
27
  from aidial_client._exception import InvalidDialURLError
@@ -1,4 +1,6 @@
1
- from typing_extensions import Required, TypedDict
1
+ from typing import Required
2
+
3
+ from typing_extensions import TypedDict
2
4
 
3
5
 
4
6
  class FunctionParam(TypedDict, total=False):
@@ -1,6 +1,6 @@
1
- from typing import Any, Literal
1
+ from typing import Any, Literal, Required
2
2
 
3
- from typing_extensions import Required, TypedDict
3
+ from typing_extensions import TypedDict
4
4
 
5
5
  from aidial_client.types.chat.cache import (
6
6
  CacheBreakpointParam,
@@ -1,6 +1,6 @@
1
- from typing import Any, Literal
1
+ from typing import Any, Literal, Required
2
2
 
3
- from typing_extensions import Required, TypedDict
3
+ from typing_extensions import TypedDict
4
4
 
5
5
  from aidial_client.types.chat.cache import CacheBreakpointParam
6
6
  from aidial_client.types.chat.function import (
@@ -60,3 +60,11 @@ class Deployment(DeploymentBase):
60
60
  class DeploymentsResponse(ExtraAllowModel):
61
61
  data: list[Deployment]
62
62
  object: Literal["list"]
63
+
64
+
65
+ DeploymentKind = Literal["model", "application", "toolset"]
66
+
67
+
68
+ class DeploymentName(ExtraAllowModel):
69
+ id: str
70
+ object: str
@@ -1,10 +1,10 @@
1
1
  [project]
2
2
  name = "aidial-client"
3
- version = "0.18.0.dev4"
3
+ version = "0.19.0"
4
4
  description = "A Python client library for the AI DIAL API"
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
7
- requires-python = ">=3.10,<3.14"
7
+ requires-python = ">=3.11,<3.14"
8
8
  authors = [{ name = "DIALX", email = "SpecialEPM-DIALDevTeam@epam.com" }]
9
9
  dependencies = [
10
10
  "openai>=1.1.0,<3",
@@ -49,7 +49,7 @@ exclude = ["**/node_modules", "**/__pycache__", "**/.*", ".venv"]
49
49
 
50
50
  [tool.ruff]
51
51
  line-length = 80
52
- target-version = "py310"
52
+ target-version = "py311"
53
53
 
54
54
  [tool.ruff.lint]
55
55
  select = [