aidial-client 0.8.0.dev4__tar.gz → 0.9.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 (66) hide show
  1. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/PKG-INFO +31 -1
  2. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/README.md +30 -0
  3. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/_http_client/_base.py +1 -1
  4. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/resources/files.py +80 -0
  5. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/pyproject.toml +1 -1
  6. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/LICENSE +0 -0
  7. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/__init__.py +0 -0
  8. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/_auth.py +0 -0
  9. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/_client.py +0 -0
  10. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/_client_pool.py +0 -0
  11. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/_compatibility/__init__.py +0 -0
  12. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/_compatibility/openai.py +0 -0
  13. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/_compatibility/pydantic.py +0 -0
  14. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/_compatibility/pydantic_v1.py +0 -0
  15. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/_constants.py +0 -0
  16. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/_exception.py +0 -0
  17. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/_http_client/__init__.py +0 -0
  18. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/_http_client/_async.py +0 -0
  19. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/_http_client/_sync.py +0 -0
  20. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/_internal_types/__init__.py +0 -0
  21. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/_internal_types/_defaults.py +0 -0
  22. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/_internal_types/_generic.py +0 -0
  23. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/_internal_types/_http_request.py +0 -0
  24. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/_internal_types/_model.py +0 -0
  25. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/_log.py +0 -0
  26. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/_utils/__init__.py +0 -0
  27. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/_utils/_alias.py +0 -0
  28. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/_utils/_dict.py +0 -0
  29. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/_utils/_openai.py +0 -0
  30. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/_utils/_response_processing.py +0 -0
  31. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/_utils/_type_guard.py +0 -0
  32. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/helpers/__init__.py +0 -0
  33. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/helpers/_url.py +0 -0
  34. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/helpers/storage_resource.py +0 -0
  35. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/py.typed +0 -0
  36. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/resources/__init__.py +0 -0
  37. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/resources/application.py +0 -0
  38. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/resources/base.py +0 -0
  39. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/resources/bucket.py +0 -0
  40. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/resources/chat/__init__.py +0 -0
  41. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/resources/chat/completions.py +0 -0
  42. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/resources/deployments.py +0 -0
  43. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/resources/metadata.py +0 -0
  44. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/resources/model.py +0 -0
  45. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/resources/prompts.py +0 -0
  46. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/resources/resource_permissions.py +0 -0
  47. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/resources/toolset.py +0 -0
  48. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/types/__init__.py +0 -0
  49. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/types/application.py +0 -0
  50. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/types/bucket.py +0 -0
  51. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/types/chat/__init__.py +0 -0
  52. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/types/chat/addon.py +0 -0
  53. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/types/chat/function.py +0 -0
  54. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/types/chat/legacy/__init__.py +0 -0
  55. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/types/chat/legacy/application_request.py +0 -0
  56. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/types/chat/legacy/chat_completion.py +0 -0
  57. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/types/chat/request.py +0 -0
  58. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/types/chat/request_param.py +0 -0
  59. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/types/chat/response.py +0 -0
  60. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/types/chat/tool.py +0 -0
  61. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/types/deployment.py +0 -0
  62. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/types/file.py +0 -0
  63. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/types/metadata.py +0 -0
  64. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/types/model.py +0 -0
  65. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/types/prompt.py +0 -0
  66. {aidial_client-0.8.0.dev4 → aidial_client-0.9.0.dev1}/aidial_client/types/toolset.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aidial-client
3
- Version: 0.8.0.dev4
3
+ Version: 0.9.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
@@ -552,6 +552,36 @@ await async_client.files.delete(
552
552
  )
553
553
  ```
554
554
 
555
+ #### Moving and Copying Files
556
+
557
+ Use `move_to()` to relocate a file within DIAL storage and `copy_to()` to duplicate it. Both accept the same `source` / `destination` URLs (relative, absolute, or `PurePosixPath`) and an optional `overwrite` flag (default `False`):
558
+
559
+ ```python
560
+ # Sync client
561
+ sync_client.files.move_to(
562
+ source=sync_client.my_files_home() / "draft/my-file.txt",
563
+ destination=sync_client.my_files_home() / "final/my-file.txt",
564
+ )
565
+ sync_client.files.copy_to(
566
+ source=sync_client.my_files_home() / "final/my-file.txt",
567
+ destination=sync_client.my_files_home() / "backup/my-file.txt",
568
+ overwrite=True,
569
+ )
570
+
571
+ # Async client
572
+ await async_client.files.move_to(
573
+ source=await async_client.my_files_home() / "draft/my-file.txt",
574
+ destination=await async_client.my_files_home() / "final/my-file.txt",
575
+ )
576
+ await async_client.files.copy_to(
577
+ source=await async_client.my_files_home() / "final/my-file.txt",
578
+ destination=await async_client.my_files_home() / "backup/my-file.txt",
579
+ overwrite=True,
580
+ )
581
+ ```
582
+
583
+ Both methods return `None` on success. `source` and `destination` must point to files in the same DIAL storage (passing a `prompts/...` URL raises `InvalidDialURLError`).
584
+
555
585
  #### Accessing Metadata
556
586
 
557
587
  Use `metadata()` to access metadata of a file:
@@ -530,6 +530,36 @@ await async_client.files.delete(
530
530
  )
531
531
  ```
532
532
 
533
+ #### Moving and Copying Files
534
+
535
+ Use `move_to()` to relocate a file within DIAL storage and `copy_to()` to duplicate it. Both accept the same `source` / `destination` URLs (relative, absolute, or `PurePosixPath`) and an optional `overwrite` flag (default `False`):
536
+
537
+ ```python
538
+ # Sync client
539
+ sync_client.files.move_to(
540
+ source=sync_client.my_files_home() / "draft/my-file.txt",
541
+ destination=sync_client.my_files_home() / "final/my-file.txt",
542
+ )
543
+ sync_client.files.copy_to(
544
+ source=sync_client.my_files_home() / "final/my-file.txt",
545
+ destination=sync_client.my_files_home() / "backup/my-file.txt",
546
+ overwrite=True,
547
+ )
548
+
549
+ # Async client
550
+ await async_client.files.move_to(
551
+ source=await async_client.my_files_home() / "draft/my-file.txt",
552
+ destination=await async_client.my_files_home() / "final/my-file.txt",
553
+ )
554
+ await async_client.files.copy_to(
555
+ source=await async_client.my_files_home() / "final/my-file.txt",
556
+ destination=await async_client.my_files_home() / "backup/my-file.txt",
557
+ overwrite=True,
558
+ )
559
+ ```
560
+
561
+ Both methods return `None` on success. `source` and `destination` must point to files in the same DIAL storage (passing a `prompts/...` URL raises `InvalidDialURLError`).
562
+
533
563
  #### Accessing Metadata
534
564
 
535
565
  Use `metadata()` to access metadata of a file:
@@ -51,7 +51,7 @@ class BaseHTTPClient(ABC, Generic[_HttpInternalClientT, AuthValueT]):
51
51
  merge_raw_path = (
52
52
  self.base_url.raw_path + parsed_url.raw_path.lstrip(b"/")
53
53
  )
54
- return self.base_url.copy_with(raw_path=merge_raw_path.rstrip(b"/"))
54
+ return self.base_url.copy_with(raw_path=merge_raw_path)
55
55
  return parsed_url
56
56
 
57
57
  def _build_request(
@@ -109,6 +109,46 @@ class Files(Resource, DialStorageResourceMixin):
109
109
  on_http_error=_files_error_processor,
110
110
  )
111
111
 
112
+ def move_to(
113
+ self,
114
+ source: Union[str, PurePosixPath],
115
+ destination: Union[str, PurePosixPath],
116
+ overwrite: bool = False,
117
+ ) -> None:
118
+ return self.http_client.request(
119
+ cast_to=NoneType,
120
+ options=FinalRequestOptions(
121
+ method="POST",
122
+ url=urljoin(API_PREFIX, "ops/resource/move"),
123
+ json_data={
124
+ "sourceUrl": self.get_api_path(str(source)),
125
+ "destinationUrl": self.get_api_path(str(destination)),
126
+ "overwrite": overwrite,
127
+ },
128
+ ),
129
+ on_http_error=_files_error_processor,
130
+ )
131
+
132
+ def copy_to(
133
+ self,
134
+ source: Union[str, PurePosixPath],
135
+ destination: Union[str, PurePosixPath],
136
+ overwrite: bool = False,
137
+ ) -> None:
138
+ return self.http_client.request(
139
+ cast_to=NoneType,
140
+ options=FinalRequestOptions(
141
+ method="POST",
142
+ url=urljoin(API_PREFIX, "ops/resource/copy"),
143
+ json_data={
144
+ "sourceUrl": self.get_api_path(str(source)),
145
+ "destinationUrl": self.get_api_path(str(destination)),
146
+ "overwrite": overwrite,
147
+ },
148
+ ),
149
+ on_http_error=_files_error_processor,
150
+ )
151
+
112
152
  def get_metadata(self, url: Union[str, PurePosixPath]) -> FileMetadata:
113
153
  return self.metadata.get(
114
154
  resource="files",
@@ -188,6 +228,46 @@ class AsyncFiles(AsyncResource, DialStorageResourceMixin):
188
228
  on_http_error=_files_error_processor,
189
229
  )
190
230
 
231
+ async def move_to(
232
+ self,
233
+ source: Union[str, PurePosixPath],
234
+ destination: Union[str, PurePosixPath],
235
+ overwrite: bool = False,
236
+ ) -> None:
237
+ return await self.http_client.request(
238
+ cast_to=NoneType,
239
+ options=FinalRequestOptions(
240
+ method="POST",
241
+ url=urljoin(API_PREFIX, "ops/resource/move"),
242
+ json_data={
243
+ "sourceUrl": self.get_api_path(str(source)),
244
+ "destinationUrl": self.get_api_path(str(destination)),
245
+ "overwrite": overwrite,
246
+ },
247
+ ),
248
+ on_http_error=_files_error_processor,
249
+ )
250
+
251
+ async def copy_to(
252
+ self,
253
+ source: Union[str, PurePosixPath],
254
+ destination: Union[str, PurePosixPath],
255
+ overwrite: bool = False,
256
+ ) -> None:
257
+ return await self.http_client.request(
258
+ cast_to=NoneType,
259
+ options=FinalRequestOptions(
260
+ method="POST",
261
+ url=urljoin(API_PREFIX, "ops/resource/copy"),
262
+ json_data={
263
+ "sourceUrl": self.get_api_path(str(source)),
264
+ "destinationUrl": self.get_api_path(str(destination)),
265
+ "overwrite": overwrite,
266
+ },
267
+ ),
268
+ on_http_error=_files_error_processor,
269
+ )
270
+
191
271
  async def get_metadata(
192
272
  self, url: Union[str, PurePosixPath]
193
273
  ) -> FileMetadata:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "aidial-client"
3
- version = "0.8.0.dev4"
3
+ version = "0.9.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"