aidial-client 0.12.0.dev2__tar.gz → 0.13.0.dev1__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 (71) hide show
  1. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/PKG-INFO +30 -3
  2. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/README.md +29 -2
  3. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/resources/files.py +18 -2
  4. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/resources/metadata.py +45 -6
  5. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/types/deployment.py +6 -0
  6. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/types/metadata.py +1 -0
  7. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/types/model.py +1 -0
  8. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/pyproject.toml +1 -1
  9. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/LICENSE +0 -0
  10. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/__init__.py +0 -0
  11. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/_auth.py +0 -0
  12. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/_client.py +0 -0
  13. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/_client_pool.py +0 -0
  14. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/_compatibility/__init__.py +0 -0
  15. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/_compatibility/openai.py +0 -0
  16. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/_compatibility/pydantic.py +0 -0
  17. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/_compatibility/pydantic_v1.py +0 -0
  18. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/_constants.py +0 -0
  19. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/_exception.py +0 -0
  20. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/_http_client/__init__.py +0 -0
  21. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/_http_client/_async.py +0 -0
  22. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/_http_client/_base.py +0 -0
  23. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/_http_client/_sse.py +0 -0
  24. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/_http_client/_sync.py +0 -0
  25. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/_internal_types/__init__.py +0 -0
  26. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/_internal_types/_defaults.py +0 -0
  27. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/_internal_types/_generic.py +0 -0
  28. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/_internal_types/_http_request.py +0 -0
  29. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/_internal_types/_json_rpc.py +0 -0
  30. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/_internal_types/_model.py +0 -0
  31. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/_log.py +0 -0
  32. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/_utils/__init__.py +0 -0
  33. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/_utils/_alias.py +0 -0
  34. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/_utils/_dict.py +0 -0
  35. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/_utils/_openai.py +0 -0
  36. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/_utils/_response_processing.py +0 -0
  37. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/_utils/_type_guard.py +0 -0
  38. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/helpers/__init__.py +0 -0
  39. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/helpers/_url.py +0 -0
  40. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/helpers/storage_resource.py +0 -0
  41. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/py.typed +0 -0
  42. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/resources/__init__.py +0 -0
  43. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/resources/application.py +0 -0
  44. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/resources/base.py +0 -0
  45. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/resources/bucket.py +0 -0
  46. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/resources/chat/__init__.py +0 -0
  47. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/resources/chat/completions.py +0 -0
  48. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/resources/client_channel.py +0 -0
  49. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/resources/deployments.py +0 -0
  50. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/resources/model.py +0 -0
  51. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/resources/prompts.py +0 -0
  52. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/resources/resource_permissions.py +0 -0
  53. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/resources/toolset.py +0 -0
  54. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/resources/user.py +0 -0
  55. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/types/__init__.py +0 -0
  56. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/types/application.py +0 -0
  57. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/types/bucket.py +0 -0
  58. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/types/chat/__init__.py +0 -0
  59. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/types/chat/function.py +0 -0
  60. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/types/chat/legacy/__init__.py +0 -0
  61. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/types/chat/legacy/application_request.py +0 -0
  62. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/types/chat/legacy/chat_completion.py +0 -0
  63. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/types/chat/request.py +0 -0
  64. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/types/chat/request_param.py +0 -0
  65. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/types/chat/response.py +0 -0
  66. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/types/chat/tool.py +0 -0
  67. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/types/client_channel.py +0 -0
  68. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/types/file.py +0 -0
  69. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/types/prompt.py +0 -0
  70. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/types/toolset.py +0 -0
  71. {aidial_client-0.12.0.dev2 → aidial_client-0.13.0.dev1}/aidial_client/types/user.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aidial-client
3
- Version: 0.12.0.dev2
3
+ Version: 0.13.0.dev1
4
4
  Summary: A Python client library for the AI DIAL API
5
5
  License-Expression: Apache-2.0
6
6
  License-File: LICENSE
@@ -271,6 +271,9 @@ Deployment(
271
271
  url_attachments=False,
272
272
  folder_attachments=False,
273
273
  allow_resume=True,
274
+ chat_completion=True,
275
+ responses_api=False,
276
+ reasoning_efforts=["low", "medium", "high"],
274
277
  ),
275
278
  defaults={},
276
279
  )
@@ -645,14 +648,32 @@ Both methods return `None` on success. `source` and `destination` must point to
645
648
 
646
649
  #### Accessing Metadata
647
650
 
648
- Use `metadata()` to access metadata of a file:
651
+ Use `get_metadata()` to access metadata of a file or folder:
649
652
 
650
653
  ```python
651
- metadata = await async_client.files.metadata(
654
+ # Sync client
655
+ metadata = sync_client.files.get_metadata(
656
+ url=sync_client.my_files_home() / "relative_folder/my-file.txt"
657
+ )
658
+
659
+ # Async client
660
+ metadata = await async_client.files.get_metadata(
652
661
  url=await async_client.my_files_home() / "relative_folder/my-file.txt"
653
662
  )
654
663
  ```
655
664
 
665
+ Folder metadata can be paginated with `limit` and `token`:
666
+
667
+ ```python
668
+ metadata = await async_client.files.get_metadata(
669
+ url=await async_client.my_files_home() / "relative_folder/",
670
+ limit=100,
671
+ token=next_token,
672
+ )
673
+ next_token = metadata.next_token
674
+ items = metadata.items
675
+ ```
676
+
656
677
  Example of metadata:
657
678
 
658
679
  ```python
@@ -665,6 +686,7 @@ FileMetadata(
665
686
  resource_type="FILE",
666
687
  content_length=12,
667
688
  content_type="application/octet-stream",
689
+ next_token=None,
668
690
  items=None,
669
691
  updatedAt=1724836248936,
670
692
  etag="9749fad13d6e7092a6337c4af9d83764",
@@ -809,6 +831,9 @@ As a result, you will receive a list of `Application` objects:
809
831
  url_attachments=False,
810
832
  folder_attachments=False,
811
833
  allow_resume=True,
834
+ chat_completion=True,
835
+ responses_api=False,
836
+ reasoning_efforts=[],
812
837
  ),
813
838
  input_attachment_types=["image/png", "text/txt", "image/jpeg"],
814
839
  defaults={},
@@ -880,6 +905,8 @@ ModelInfo(
880
905
  )
881
906
  ```
882
907
 
908
+ For embedding models, `ModelInfo` also includes `embedding_dimensions` — the size of the output vector (e.g. `embedding_dimensions=1536`). It is omitted for non-embedding models.
909
+
883
910
  ### User
884
911
 
885
912
  #### Get Authenticated User Info
@@ -249,6 +249,9 @@ Deployment(
249
249
  url_attachments=False,
250
250
  folder_attachments=False,
251
251
  allow_resume=True,
252
+ chat_completion=True,
253
+ responses_api=False,
254
+ reasoning_efforts=["low", "medium", "high"],
252
255
  ),
253
256
  defaults={},
254
257
  )
@@ -623,14 +626,32 @@ Both methods return `None` on success. `source` and `destination` must point to
623
626
 
624
627
  #### Accessing Metadata
625
628
 
626
- Use `metadata()` to access metadata of a file:
629
+ Use `get_metadata()` to access metadata of a file or folder:
627
630
 
628
631
  ```python
629
- metadata = await async_client.files.metadata(
632
+ # Sync client
633
+ metadata = sync_client.files.get_metadata(
634
+ url=sync_client.my_files_home() / "relative_folder/my-file.txt"
635
+ )
636
+
637
+ # Async client
638
+ metadata = await async_client.files.get_metadata(
630
639
  url=await async_client.my_files_home() / "relative_folder/my-file.txt"
631
640
  )
632
641
  ```
633
642
 
643
+ Folder metadata can be paginated with `limit` and `token`:
644
+
645
+ ```python
646
+ metadata = await async_client.files.get_metadata(
647
+ url=await async_client.my_files_home() / "relative_folder/",
648
+ limit=100,
649
+ token=next_token,
650
+ )
651
+ next_token = metadata.next_token
652
+ items = metadata.items
653
+ ```
654
+
634
655
  Example of metadata:
635
656
 
636
657
  ```python
@@ -643,6 +664,7 @@ FileMetadata(
643
664
  resource_type="FILE",
644
665
  content_length=12,
645
666
  content_type="application/octet-stream",
667
+ next_token=None,
646
668
  items=None,
647
669
  updatedAt=1724836248936,
648
670
  etag="9749fad13d6e7092a6337c4af9d83764",
@@ -787,6 +809,9 @@ As a result, you will receive a list of `Application` objects:
787
809
  url_attachments=False,
788
810
  folder_attachments=False,
789
811
  allow_resume=True,
812
+ chat_completion=True,
813
+ responses_api=False,
814
+ reasoning_efforts=[],
790
815
  ),
791
816
  input_attachment_types=["image/png", "text/txt", "image/jpeg"],
792
817
  defaults={},
@@ -858,6 +883,8 @@ ModelInfo(
858
883
  )
859
884
  ```
860
885
 
886
+ For embedding models, `ModelInfo` also includes `embedding_dimensions` — the size of the output vector (e.g. `embedding_dimensions=1536`). It is omitted for non-embedding models.
887
+
861
888
  ### User
862
889
 
863
890
  #### Get Authenticated User Info
@@ -138,10 +138,18 @@ class Files(Resource, DialStorageResourceMixin):
138
138
  on_http_error=_files_error_processor,
139
139
  )
140
140
 
141
- def get_metadata(self, url: str | PurePosixPath) -> FileMetadata:
141
+ def get_metadata(
142
+ self,
143
+ url: str | PurePosixPath,
144
+ *,
145
+ limit: int | None = None,
146
+ token: str | None = None,
147
+ ) -> FileMetadata:
142
148
  return self.metadata.get(
143
149
  resource="files",
144
150
  relative_url=self.get_api_path(str(url)),
151
+ limit=limit,
152
+ token=token,
145
153
  )
146
154
 
147
155
 
@@ -257,8 +265,16 @@ class AsyncFiles(AsyncResource, DialStorageResourceMixin):
257
265
  on_http_error=_files_error_processor,
258
266
  )
259
267
 
260
- async def get_metadata(self, url: str | PurePosixPath) -> FileMetadata:
268
+ async def get_metadata(
269
+ self,
270
+ url: str | PurePosixPath,
271
+ *,
272
+ limit: int | None = None,
273
+ token: str | None = None,
274
+ ) -> FileMetadata:
261
275
  return await self.metadata.get(
262
276
  resource="files",
263
277
  relative_url=self.get_api_path(str(url)),
278
+ limit=limit,
279
+ token=token,
264
280
  )
@@ -5,6 +5,7 @@ from typing_extensions import assert_never
5
5
 
6
6
  from aidial_client._constants import METADATA_PREFIX
7
7
  from aidial_client._internal_types._http_request import FinalRequestOptions
8
+ from aidial_client._utils._dict import remove_none
8
9
  from aidial_client.helpers.storage_resource import StorageResourceType
9
10
  from aidial_client.resources.base import AsyncResource, Resource
10
11
  from aidial_client.types.metadata import (
@@ -30,29 +31,48 @@ def _get_cast_to(
30
31
  class Metadata(Resource):
31
32
  @overload
32
33
  def get(
33
- self, resource: Literal["files"], relative_url: str
34
+ self,
35
+ resource: Literal["files"],
36
+ relative_url: str,
37
+ *,
38
+ limit: int | None = None,
39
+ token: str | None = None,
34
40
  ) -> FileMetadata: ...
35
41
 
36
42
  @overload
37
43
  def get(
38
- self, resource: Literal["conversations"], relative_url: str
44
+ self,
45
+ resource: Literal["conversations"],
46
+ relative_url: str,
47
+ *,
48
+ limit: int | None = None,
49
+ token: str | None = None,
39
50
  ) -> ConversationMetadata: ...
40
51
 
41
52
  @overload
42
53
  def get(
43
- self, resource: Literal["prompts"], relative_url: str
54
+ self,
55
+ resource: Literal["prompts"],
56
+ relative_url: str,
57
+ *,
58
+ limit: int | None = None,
59
+ token: str | None = None,
44
60
  ) -> PromptMetadata: ...
45
61
 
46
62
  def get(
47
63
  self,
48
64
  resource: StorageResourceType,
49
65
  relative_url: str,
66
+ *,
67
+ limit: int | None = None,
68
+ token: str | None = None,
50
69
  ) -> FileMetadata | ConversationMetadata | PromptMetadata:
51
70
  return self.http_client.request(
52
71
  cast_to=_get_cast_to(resource),
53
72
  options=FinalRequestOptions(
54
73
  method="GET",
55
74
  url=urljoin(METADATA_PREFIX, relative_url),
75
+ params=remove_none({"limit": limit, "token": token}),
56
76
  ),
57
77
  )
58
78
 
@@ -60,28 +80,47 @@ class Metadata(Resource):
60
80
  class AsyncMetadata(AsyncResource):
61
81
  @overload
62
82
  async def get(
63
- self, resource: Literal["files"], relative_url: str
83
+ self,
84
+ resource: Literal["files"],
85
+ relative_url: str,
86
+ *,
87
+ limit: int | None = None,
88
+ token: str | None = None,
64
89
  ) -> FileMetadata: ...
65
90
 
66
91
  @overload
67
92
  async def get(
68
- self, resource: Literal["conversations"], relative_url: str
93
+ self,
94
+ resource: Literal["conversations"],
95
+ relative_url: str,
96
+ *,
97
+ limit: int | None = None,
98
+ token: str | None = None,
69
99
  ) -> ConversationMetadata: ...
70
100
 
71
101
  @overload
72
102
  async def get(
73
- self, resource: Literal["prompts"], relative_url: str
103
+ self,
104
+ resource: Literal["prompts"],
105
+ relative_url: str,
106
+ *,
107
+ limit: int | None = None,
108
+ token: str | None = None,
74
109
  ) -> PromptMetadata: ...
75
110
 
76
111
  async def get(
77
112
  self,
78
113
  resource: StorageResourceType,
79
114
  relative_url: str,
115
+ *,
116
+ limit: int | None = None,
117
+ token: str | None = None,
80
118
  ) -> FileMetadata | ConversationMetadata | PromptMetadata:
81
119
  return await self.http_client.request(
82
120
  cast_to=_get_cast_to(resource),
83
121
  options=FinalRequestOptions(
84
122
  method="GET",
85
123
  url=urljoin(METADATA_PREFIX, relative_url),
124
+ params=remove_none({"limit": limit, "token": token}),
86
125
  ),
87
126
  )
@@ -26,6 +26,12 @@ class Features(ExtraAllowModel):
26
26
  auto_caching: bool | None = None
27
27
  assistant_attachments_in_request: bool | None = None
28
28
  mcp: bool | None = None
29
+ chat_completion: bool | None = None
30
+ responses_api: bool | None = None
31
+ max_tokens_supported: bool | None = None
32
+ max_completion_tokens_supported: bool | None = None
33
+ custom_temperature_supported: bool | None = None
34
+ reasoning_efforts: list[str] = []
29
35
 
30
36
 
31
37
  class DeploymentBase(ExtraAllowModel):
@@ -37,6 +37,7 @@ class FileMetadata(BaseMetadata):
37
37
  resource_type: Literal["FILE"]
38
38
  content_length: int | None = None
39
39
  content_type: str | None = None
40
+ next_token: str | None = None
40
41
  items: list[FileItem] | None = None
41
42
  etag: str | None = None
42
43
 
@@ -41,6 +41,7 @@ class ModelInfo(ExtraAllowModel):
41
41
  updated_at: int | None = None
42
42
  lifecycle_status: str | None = None
43
43
  tokenizer_model: str | None = None
44
+ embedding_dimensions: int | None = None
44
45
  capabilities: ModelCapabilities | None = None
45
46
  limits: ModelLimits | None = None
46
47
  pricing: ModelPricing | None = None
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "aidial-client"
3
- version = "0.12.0.dev2"
3
+ version = "0.13.0.dev1"
4
4
  description = "A Python client library for the AI DIAL API"
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"