unitycatalog-client 0.2.1__py3-none-any.whl

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 (82) hide show
  1. unitycatalog/client/__init__.py +102 -0
  2. unitycatalog/client/api/__init__.py +13 -0
  3. unitycatalog/client/api/catalogs_api.py +1404 -0
  4. unitycatalog/client/api/functions_api.py +1135 -0
  5. unitycatalog/client/api/grants_api.py +630 -0
  6. unitycatalog/client/api/model_versions_api.py +1748 -0
  7. unitycatalog/client/api/registered_models_api.py +1438 -0
  8. unitycatalog/client/api/schemas_api.py +1421 -0
  9. unitycatalog/client/api/tables_api.py +1135 -0
  10. unitycatalog/client/api/temporary_credentials_api.py +1109 -0
  11. unitycatalog/client/api/volumes_api.py +1421 -0
  12. unitycatalog/client/api_client.py +773 -0
  13. unitycatalog/client/api_response.py +21 -0
  14. unitycatalog/client/configuration.py +432 -0
  15. unitycatalog/client/exceptions.py +199 -0
  16. unitycatalog/client/models/__init__.py +77 -0
  17. unitycatalog/client/models/aws_credentials.py +91 -0
  18. unitycatalog/client/models/azure_user_delegation_sas.py +87 -0
  19. unitycatalog/client/models/catalog_info.py +103 -0
  20. unitycatalog/client/models/column_info.py +108 -0
  21. unitycatalog/client/models/column_type_name.py +56 -0
  22. unitycatalog/client/models/create_catalog.py +91 -0
  23. unitycatalog/client/models/create_function.py +163 -0
  24. unitycatalog/client/models/create_function_request.py +91 -0
  25. unitycatalog/client/models/create_model_version.py +97 -0
  26. unitycatalog/client/models/create_registered_model.py +93 -0
  27. unitycatalog/client/models/create_schema.py +93 -0
  28. unitycatalog/client/models/create_table.py +113 -0
  29. unitycatalog/client/models/create_volume_request_content.py +99 -0
  30. unitycatalog/client/models/data_source_format.py +42 -0
  31. unitycatalog/client/models/dependency.py +97 -0
  32. unitycatalog/client/models/dependency_list.py +95 -0
  33. unitycatalog/client/models/finalize_model_version.py +89 -0
  34. unitycatalog/client/models/function_dependency.py +87 -0
  35. unitycatalog/client/models/function_info.py +189 -0
  36. unitycatalog/client/models/function_parameter_info.py +112 -0
  37. unitycatalog/client/models/function_parameter_infos.py +95 -0
  38. unitycatalog/client/models/function_parameter_mode.py +36 -0
  39. unitycatalog/client/models/function_parameter_type.py +37 -0
  40. unitycatalog/client/models/gcp_oauth_token.py +87 -0
  41. unitycatalog/client/models/generate_temporary_model_version_credential.py +96 -0
  42. unitycatalog/client/models/generate_temporary_path_credential.py +90 -0
  43. unitycatalog/client/models/generate_temporary_table_credential.py +90 -0
  44. unitycatalog/client/models/generate_temporary_volume_credential.py +90 -0
  45. unitycatalog/client/models/list_catalogs_response.py +97 -0
  46. unitycatalog/client/models/list_functions_response.py +97 -0
  47. unitycatalog/client/models/list_model_versions_response.py +97 -0
  48. unitycatalog/client/models/list_registered_models_response.py +97 -0
  49. unitycatalog/client/models/list_schemas_response.py +97 -0
  50. unitycatalog/client/models/list_tables_response.py +97 -0
  51. unitycatalog/client/models/list_volumes_response_content.py +97 -0
  52. unitycatalog/client/models/model_version_info.py +114 -0
  53. unitycatalog/client/models/model_version_operation.py +38 -0
  54. unitycatalog/client/models/model_version_status.py +39 -0
  55. unitycatalog/client/models/path_operation.py +39 -0
  56. unitycatalog/client/models/permissions_change.py +92 -0
  57. unitycatalog/client/models/permissions_list.py +95 -0
  58. unitycatalog/client/models/principal_type.py +37 -0
  59. unitycatalog/client/models/privilege.py +47 -0
  60. unitycatalog/client/models/privilege_assignment.py +90 -0
  61. unitycatalog/client/models/registered_model_info.py +109 -0
  62. unitycatalog/client/models/schema_info.py +107 -0
  63. unitycatalog/client/models/securable_type.py +42 -0
  64. unitycatalog/client/models/table_dependency.py +87 -0
  65. unitycatalog/client/models/table_info.py +125 -0
  66. unitycatalog/client/models/table_operation.py +38 -0
  67. unitycatalog/client/models/table_type.py +37 -0
  68. unitycatalog/client/models/temporary_credentials.py +105 -0
  69. unitycatalog/client/models/update_catalog.py +91 -0
  70. unitycatalog/client/models/update_model_version.py +87 -0
  71. unitycatalog/client/models/update_permissions.py +95 -0
  72. unitycatalog/client/models/update_registered_model.py +89 -0
  73. unitycatalog/client/models/update_schema.py +91 -0
  74. unitycatalog/client/models/update_volume_request_content.py +90 -0
  75. unitycatalog/client/models/volume_info.py +113 -0
  76. unitycatalog/client/models/volume_operation.py +38 -0
  77. unitycatalog/client/models/volume_type.py +37 -0
  78. unitycatalog/client/py.typed +0 -0
  79. unitycatalog/client/rest.py +215 -0
  80. unitycatalog_client-0.2.1.dist-info/METADATA +199 -0
  81. unitycatalog_client-0.2.1.dist-info/RECORD +82 -0
  82. unitycatalog_client-0.2.1.dist-info/WHEEL +4 -0
@@ -0,0 +1,1748 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Unity Catalog API
5
+
6
+ No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
7
+
8
+ The version of the OpenAPI document: 0.1
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+ import warnings
15
+ from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
16
+ from typing import Any, Dict, List, Optional, Tuple, Union
17
+ from typing_extensions import Annotated
18
+
19
+ from pydantic import Field, StrictInt, StrictStr
20
+ from typing import Any, Optional
21
+ from typing_extensions import Annotated
22
+ from unitycatalog.client.models.create_model_version import CreateModelVersion
23
+ from unitycatalog.client.models.finalize_model_version import FinalizeModelVersion
24
+ from unitycatalog.client.models.list_model_versions_response import ListModelVersionsResponse
25
+ from unitycatalog.client.models.model_version_info import ModelVersionInfo
26
+ from unitycatalog.client.models.update_model_version import UpdateModelVersion
27
+
28
+ from unitycatalog.client.api_client import ApiClient, RequestSerialized
29
+ from unitycatalog.client.api_response import ApiResponse
30
+ from unitycatalog.client.rest import RESTResponseType
31
+
32
+
33
+ class ModelVersionsApi:
34
+ """NOTE: This class is auto generated by OpenAPI Generator
35
+ Ref: https://openapi-generator.tech
36
+
37
+ Do not edit the class manually.
38
+ """
39
+
40
+ def __init__(self, api_client=None) -> None:
41
+ if api_client is None:
42
+ api_client = ApiClient.get_default()
43
+ self.api_client = api_client
44
+
45
+
46
+ @validate_call
47
+ async def create_model_version(
48
+ self,
49
+ create_model_version: Optional[CreateModelVersion] = None,
50
+ _request_timeout: Union[
51
+ None,
52
+ Annotated[StrictFloat, Field(gt=0)],
53
+ Tuple[
54
+ Annotated[StrictFloat, Field(gt=0)],
55
+ Annotated[StrictFloat, Field(gt=0)]
56
+ ]
57
+ ] = None,
58
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
59
+ _content_type: Optional[StrictStr] = None,
60
+ _headers: Optional[Dict[StrictStr, Any]] = None,
61
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
62
+ ) -> ModelVersionInfo:
63
+ """Create a model version.
64
+
65
+ Creates a new model version instance.
66
+
67
+ :param create_model_version:
68
+ :type create_model_version: CreateModelVersion
69
+ :param _request_timeout: timeout setting for this request. If one
70
+ number provided, it will be total request
71
+ timeout. It can also be a pair (tuple) of
72
+ (connection, read) timeouts.
73
+ :type _request_timeout: int, tuple(int, int), optional
74
+ :param _request_auth: set to override the auth_settings for an a single
75
+ request; this effectively ignores the
76
+ authentication in the spec for a single request.
77
+ :type _request_auth: dict, optional
78
+ :param _content_type: force content-type for the request.
79
+ :type _content_type: str, Optional
80
+ :param _headers: set to override the headers for a single
81
+ request; this effectively ignores the headers
82
+ in the spec for a single request.
83
+ :type _headers: dict, optional
84
+ :param _host_index: set to override the host_index for a single
85
+ request; this effectively ignores the host_index
86
+ in the spec for a single request.
87
+ :type _host_index: int, optional
88
+ :return: Returns the result object.
89
+ """ # noqa: E501
90
+
91
+ _param = self._create_model_version_serialize(
92
+ create_model_version=create_model_version,
93
+ _request_auth=_request_auth,
94
+ _content_type=_content_type,
95
+ _headers=_headers,
96
+ _host_index=_host_index
97
+ )
98
+
99
+ _response_types_map: Dict[str, Optional[str]] = {
100
+ '200': "ModelVersionInfo",
101
+ }
102
+ response_data = await self.api_client.call_api(
103
+ *_param,
104
+ _request_timeout=_request_timeout
105
+ )
106
+ await response_data.read()
107
+ return self.api_client.response_deserialize(
108
+ response_data=response_data,
109
+ response_types_map=_response_types_map,
110
+ ).data
111
+
112
+
113
+ @validate_call
114
+ async def create_model_version_with_http_info(
115
+ self,
116
+ create_model_version: Optional[CreateModelVersion] = None,
117
+ _request_timeout: Union[
118
+ None,
119
+ Annotated[StrictFloat, Field(gt=0)],
120
+ Tuple[
121
+ Annotated[StrictFloat, Field(gt=0)],
122
+ Annotated[StrictFloat, Field(gt=0)]
123
+ ]
124
+ ] = None,
125
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
126
+ _content_type: Optional[StrictStr] = None,
127
+ _headers: Optional[Dict[StrictStr, Any]] = None,
128
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
129
+ ) -> ApiResponse[ModelVersionInfo]:
130
+ """Create a model version.
131
+
132
+ Creates a new model version instance.
133
+
134
+ :param create_model_version:
135
+ :type create_model_version: CreateModelVersion
136
+ :param _request_timeout: timeout setting for this request. If one
137
+ number provided, it will be total request
138
+ timeout. It can also be a pair (tuple) of
139
+ (connection, read) timeouts.
140
+ :type _request_timeout: int, tuple(int, int), optional
141
+ :param _request_auth: set to override the auth_settings for an a single
142
+ request; this effectively ignores the
143
+ authentication in the spec for a single request.
144
+ :type _request_auth: dict, optional
145
+ :param _content_type: force content-type for the request.
146
+ :type _content_type: str, Optional
147
+ :param _headers: set to override the headers for a single
148
+ request; this effectively ignores the headers
149
+ in the spec for a single request.
150
+ :type _headers: dict, optional
151
+ :param _host_index: set to override the host_index for a single
152
+ request; this effectively ignores the host_index
153
+ in the spec for a single request.
154
+ :type _host_index: int, optional
155
+ :return: Returns the result object.
156
+ """ # noqa: E501
157
+
158
+ _param = self._create_model_version_serialize(
159
+ create_model_version=create_model_version,
160
+ _request_auth=_request_auth,
161
+ _content_type=_content_type,
162
+ _headers=_headers,
163
+ _host_index=_host_index
164
+ )
165
+
166
+ _response_types_map: Dict[str, Optional[str]] = {
167
+ '200': "ModelVersionInfo",
168
+ }
169
+ response_data = await self.api_client.call_api(
170
+ *_param,
171
+ _request_timeout=_request_timeout
172
+ )
173
+ await response_data.read()
174
+ return self.api_client.response_deserialize(
175
+ response_data=response_data,
176
+ response_types_map=_response_types_map,
177
+ )
178
+
179
+
180
+ @validate_call
181
+ async def create_model_version_without_preload_content(
182
+ self,
183
+ create_model_version: Optional[CreateModelVersion] = None,
184
+ _request_timeout: Union[
185
+ None,
186
+ Annotated[StrictFloat, Field(gt=0)],
187
+ Tuple[
188
+ Annotated[StrictFloat, Field(gt=0)],
189
+ Annotated[StrictFloat, Field(gt=0)]
190
+ ]
191
+ ] = None,
192
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
193
+ _content_type: Optional[StrictStr] = None,
194
+ _headers: Optional[Dict[StrictStr, Any]] = None,
195
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
196
+ ) -> RESTResponseType:
197
+ """Create a model version.
198
+
199
+ Creates a new model version instance.
200
+
201
+ :param create_model_version:
202
+ :type create_model_version: CreateModelVersion
203
+ :param _request_timeout: timeout setting for this request. If one
204
+ number provided, it will be total request
205
+ timeout. It can also be a pair (tuple) of
206
+ (connection, read) timeouts.
207
+ :type _request_timeout: int, tuple(int, int), optional
208
+ :param _request_auth: set to override the auth_settings for an a single
209
+ request; this effectively ignores the
210
+ authentication in the spec for a single request.
211
+ :type _request_auth: dict, optional
212
+ :param _content_type: force content-type for the request.
213
+ :type _content_type: str, Optional
214
+ :param _headers: set to override the headers for a single
215
+ request; this effectively ignores the headers
216
+ in the spec for a single request.
217
+ :type _headers: dict, optional
218
+ :param _host_index: set to override the host_index for a single
219
+ request; this effectively ignores the host_index
220
+ in the spec for a single request.
221
+ :type _host_index: int, optional
222
+ :return: Returns the result object.
223
+ """ # noqa: E501
224
+
225
+ _param = self._create_model_version_serialize(
226
+ create_model_version=create_model_version,
227
+ _request_auth=_request_auth,
228
+ _content_type=_content_type,
229
+ _headers=_headers,
230
+ _host_index=_host_index
231
+ )
232
+
233
+ _response_types_map: Dict[str, Optional[str]] = {
234
+ '200': "ModelVersionInfo",
235
+ }
236
+ response_data = await self.api_client.call_api(
237
+ *_param,
238
+ _request_timeout=_request_timeout
239
+ )
240
+ return response_data.response
241
+
242
+
243
+ def _create_model_version_serialize(
244
+ self,
245
+ create_model_version,
246
+ _request_auth,
247
+ _content_type,
248
+ _headers,
249
+ _host_index,
250
+ ) -> RequestSerialized:
251
+
252
+ _host = None
253
+
254
+ _collection_formats: Dict[str, str] = {
255
+ }
256
+
257
+ _path_params: Dict[str, str] = {}
258
+ _query_params: List[Tuple[str, str]] = []
259
+ _header_params: Dict[str, Optional[str]] = _headers or {}
260
+ _form_params: List[Tuple[str, str]] = []
261
+ _files: Dict[str, Union[str, bytes]] = {}
262
+ _body_params: Optional[bytes] = None
263
+
264
+ # process the path parameters
265
+ # process the query parameters
266
+ # process the header parameters
267
+ # process the form parameters
268
+ # process the body parameter
269
+ if create_model_version is not None:
270
+ _body_params = create_model_version
271
+
272
+
273
+ # set the HTTP header `Accept`
274
+ _header_params['Accept'] = self.api_client.select_header_accept(
275
+ [
276
+ 'application/json'
277
+ ]
278
+ )
279
+
280
+ # set the HTTP header `Content-Type`
281
+ if _content_type:
282
+ _header_params['Content-Type'] = _content_type
283
+ else:
284
+ _default_content_type = (
285
+ self.api_client.select_header_content_type(
286
+ [
287
+ 'application/json'
288
+ ]
289
+ )
290
+ )
291
+ if _default_content_type is not None:
292
+ _header_params['Content-Type'] = _default_content_type
293
+
294
+ # authentication setting
295
+ _auth_settings: List[str] = [
296
+ ]
297
+
298
+ return self.api_client.param_serialize(
299
+ method='POST',
300
+ resource_path='/models/versions',
301
+ path_params=_path_params,
302
+ query_params=_query_params,
303
+ header_params=_header_params,
304
+ body=_body_params,
305
+ post_params=_form_params,
306
+ files=_files,
307
+ auth_settings=_auth_settings,
308
+ collection_formats=_collection_formats,
309
+ _host=_host,
310
+ _request_auth=_request_auth
311
+ )
312
+
313
+
314
+
315
+
316
+ @validate_call
317
+ async def delete_model_version(
318
+ self,
319
+ full_name: Annotated[StrictStr, Field(description="Full name of the model.")],
320
+ version: Annotated[StrictInt, Field(description="Version number of the model version.")],
321
+ _request_timeout: Union[
322
+ None,
323
+ Annotated[StrictFloat, Field(gt=0)],
324
+ Tuple[
325
+ Annotated[StrictFloat, Field(gt=0)],
326
+ Annotated[StrictFloat, Field(gt=0)]
327
+ ]
328
+ ] = None,
329
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
330
+ _content_type: Optional[StrictStr] = None,
331
+ _headers: Optional[Dict[StrictStr, Any]] = None,
332
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
333
+ ) -> object:
334
+ """Delete a model version
335
+
336
+ Deletes the specified model version.
337
+
338
+ :param full_name: Full name of the model. (required)
339
+ :type full_name: str
340
+ :param version: Version number of the model version. (required)
341
+ :type version: int
342
+ :param _request_timeout: timeout setting for this request. If one
343
+ number provided, it will be total request
344
+ timeout. It can also be a pair (tuple) of
345
+ (connection, read) timeouts.
346
+ :type _request_timeout: int, tuple(int, int), optional
347
+ :param _request_auth: set to override the auth_settings for an a single
348
+ request; this effectively ignores the
349
+ authentication in the spec for a single request.
350
+ :type _request_auth: dict, optional
351
+ :param _content_type: force content-type for the request.
352
+ :type _content_type: str, Optional
353
+ :param _headers: set to override the headers for a single
354
+ request; this effectively ignores the headers
355
+ in the spec for a single request.
356
+ :type _headers: dict, optional
357
+ :param _host_index: set to override the host_index for a single
358
+ request; this effectively ignores the host_index
359
+ in the spec for a single request.
360
+ :type _host_index: int, optional
361
+ :return: Returns the result object.
362
+ """ # noqa: E501
363
+
364
+ _param = self._delete_model_version_serialize(
365
+ full_name=full_name,
366
+ version=version,
367
+ _request_auth=_request_auth,
368
+ _content_type=_content_type,
369
+ _headers=_headers,
370
+ _host_index=_host_index
371
+ )
372
+
373
+ _response_types_map: Dict[str, Optional[str]] = {
374
+ '200': "object",
375
+ }
376
+ response_data = await self.api_client.call_api(
377
+ *_param,
378
+ _request_timeout=_request_timeout
379
+ )
380
+ await response_data.read()
381
+ return self.api_client.response_deserialize(
382
+ response_data=response_data,
383
+ response_types_map=_response_types_map,
384
+ ).data
385
+
386
+
387
+ @validate_call
388
+ async def delete_model_version_with_http_info(
389
+ self,
390
+ full_name: Annotated[StrictStr, Field(description="Full name of the model.")],
391
+ version: Annotated[StrictInt, Field(description="Version number of the model version.")],
392
+ _request_timeout: Union[
393
+ None,
394
+ Annotated[StrictFloat, Field(gt=0)],
395
+ Tuple[
396
+ Annotated[StrictFloat, Field(gt=0)],
397
+ Annotated[StrictFloat, Field(gt=0)]
398
+ ]
399
+ ] = None,
400
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
401
+ _content_type: Optional[StrictStr] = None,
402
+ _headers: Optional[Dict[StrictStr, Any]] = None,
403
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
404
+ ) -> ApiResponse[object]:
405
+ """Delete a model version
406
+
407
+ Deletes the specified model version.
408
+
409
+ :param full_name: Full name of the model. (required)
410
+ :type full_name: str
411
+ :param version: Version number of the model version. (required)
412
+ :type version: int
413
+ :param _request_timeout: timeout setting for this request. If one
414
+ number provided, it will be total request
415
+ timeout. It can also be a pair (tuple) of
416
+ (connection, read) timeouts.
417
+ :type _request_timeout: int, tuple(int, int), optional
418
+ :param _request_auth: set to override the auth_settings for an a single
419
+ request; this effectively ignores the
420
+ authentication in the spec for a single request.
421
+ :type _request_auth: dict, optional
422
+ :param _content_type: force content-type for the request.
423
+ :type _content_type: str, Optional
424
+ :param _headers: set to override the headers for a single
425
+ request; this effectively ignores the headers
426
+ in the spec for a single request.
427
+ :type _headers: dict, optional
428
+ :param _host_index: set to override the host_index for a single
429
+ request; this effectively ignores the host_index
430
+ in the spec for a single request.
431
+ :type _host_index: int, optional
432
+ :return: Returns the result object.
433
+ """ # noqa: E501
434
+
435
+ _param = self._delete_model_version_serialize(
436
+ full_name=full_name,
437
+ version=version,
438
+ _request_auth=_request_auth,
439
+ _content_type=_content_type,
440
+ _headers=_headers,
441
+ _host_index=_host_index
442
+ )
443
+
444
+ _response_types_map: Dict[str, Optional[str]] = {
445
+ '200': "object",
446
+ }
447
+ response_data = await self.api_client.call_api(
448
+ *_param,
449
+ _request_timeout=_request_timeout
450
+ )
451
+ await response_data.read()
452
+ return self.api_client.response_deserialize(
453
+ response_data=response_data,
454
+ response_types_map=_response_types_map,
455
+ )
456
+
457
+
458
+ @validate_call
459
+ async def delete_model_version_without_preload_content(
460
+ self,
461
+ full_name: Annotated[StrictStr, Field(description="Full name of the model.")],
462
+ version: Annotated[StrictInt, Field(description="Version number of the model version.")],
463
+ _request_timeout: Union[
464
+ None,
465
+ Annotated[StrictFloat, Field(gt=0)],
466
+ Tuple[
467
+ Annotated[StrictFloat, Field(gt=0)],
468
+ Annotated[StrictFloat, Field(gt=0)]
469
+ ]
470
+ ] = None,
471
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
472
+ _content_type: Optional[StrictStr] = None,
473
+ _headers: Optional[Dict[StrictStr, Any]] = None,
474
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
475
+ ) -> RESTResponseType:
476
+ """Delete a model version
477
+
478
+ Deletes the specified model version.
479
+
480
+ :param full_name: Full name of the model. (required)
481
+ :type full_name: str
482
+ :param version: Version number of the model version. (required)
483
+ :type version: int
484
+ :param _request_timeout: timeout setting for this request. If one
485
+ number provided, it will be total request
486
+ timeout. It can also be a pair (tuple) of
487
+ (connection, read) timeouts.
488
+ :type _request_timeout: int, tuple(int, int), optional
489
+ :param _request_auth: set to override the auth_settings for an a single
490
+ request; this effectively ignores the
491
+ authentication in the spec for a single request.
492
+ :type _request_auth: dict, optional
493
+ :param _content_type: force content-type for the request.
494
+ :type _content_type: str, Optional
495
+ :param _headers: set to override the headers for a single
496
+ request; this effectively ignores the headers
497
+ in the spec for a single request.
498
+ :type _headers: dict, optional
499
+ :param _host_index: set to override the host_index for a single
500
+ request; this effectively ignores the host_index
501
+ in the spec for a single request.
502
+ :type _host_index: int, optional
503
+ :return: Returns the result object.
504
+ """ # noqa: E501
505
+
506
+ _param = self._delete_model_version_serialize(
507
+ full_name=full_name,
508
+ version=version,
509
+ _request_auth=_request_auth,
510
+ _content_type=_content_type,
511
+ _headers=_headers,
512
+ _host_index=_host_index
513
+ )
514
+
515
+ _response_types_map: Dict[str, Optional[str]] = {
516
+ '200': "object",
517
+ }
518
+ response_data = await self.api_client.call_api(
519
+ *_param,
520
+ _request_timeout=_request_timeout
521
+ )
522
+ return response_data.response
523
+
524
+
525
+ def _delete_model_version_serialize(
526
+ self,
527
+ full_name,
528
+ version,
529
+ _request_auth,
530
+ _content_type,
531
+ _headers,
532
+ _host_index,
533
+ ) -> RequestSerialized:
534
+
535
+ _host = None
536
+
537
+ _collection_formats: Dict[str, str] = {
538
+ }
539
+
540
+ _path_params: Dict[str, str] = {}
541
+ _query_params: List[Tuple[str, str]] = []
542
+ _header_params: Dict[str, Optional[str]] = _headers or {}
543
+ _form_params: List[Tuple[str, str]] = []
544
+ _files: Dict[str, Union[str, bytes]] = {}
545
+ _body_params: Optional[bytes] = None
546
+
547
+ # process the path parameters
548
+ if full_name is not None:
549
+ _path_params['full_name'] = full_name
550
+ if version is not None:
551
+ _path_params['version'] = version
552
+ # process the query parameters
553
+ # process the header parameters
554
+ # process the form parameters
555
+ # process the body parameter
556
+
557
+
558
+ # set the HTTP header `Accept`
559
+ _header_params['Accept'] = self.api_client.select_header_accept(
560
+ [
561
+ 'application/json'
562
+ ]
563
+ )
564
+
565
+
566
+ # authentication setting
567
+ _auth_settings: List[str] = [
568
+ ]
569
+
570
+ return self.api_client.param_serialize(
571
+ method='DELETE',
572
+ resource_path='/models/{full_name}/versions/{version}',
573
+ path_params=_path_params,
574
+ query_params=_query_params,
575
+ header_params=_header_params,
576
+ body=_body_params,
577
+ post_params=_form_params,
578
+ files=_files,
579
+ auth_settings=_auth_settings,
580
+ collection_formats=_collection_formats,
581
+ _host=_host,
582
+ _request_auth=_request_auth
583
+ )
584
+
585
+
586
+
587
+
588
+ @validate_call
589
+ async def finalize_model_version(
590
+ self,
591
+ full_name: Annotated[StrictStr, Field(description="Full name of the model.")],
592
+ version: Annotated[StrictInt, Field(description="Version number of the model version.")],
593
+ finalize_model_version: Optional[FinalizeModelVersion] = None,
594
+ _request_timeout: Union[
595
+ None,
596
+ Annotated[StrictFloat, Field(gt=0)],
597
+ Tuple[
598
+ Annotated[StrictFloat, Field(gt=0)],
599
+ Annotated[StrictFloat, Field(gt=0)]
600
+ ]
601
+ ] = None,
602
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
603
+ _content_type: Optional[StrictStr] = None,
604
+ _headers: Optional[Dict[StrictStr, Any]] = None,
605
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
606
+ ) -> ModelVersionInfo:
607
+ """Finalize a model version
608
+
609
+ Finalizes the status of the specified model version.
610
+
611
+ :param full_name: Full name of the model. (required)
612
+ :type full_name: str
613
+ :param version: Version number of the model version. (required)
614
+ :type version: int
615
+ :param finalize_model_version:
616
+ :type finalize_model_version: FinalizeModelVersion
617
+ :param _request_timeout: timeout setting for this request. If one
618
+ number provided, it will be total request
619
+ timeout. It can also be a pair (tuple) of
620
+ (connection, read) timeouts.
621
+ :type _request_timeout: int, tuple(int, int), optional
622
+ :param _request_auth: set to override the auth_settings for an a single
623
+ request; this effectively ignores the
624
+ authentication in the spec for a single request.
625
+ :type _request_auth: dict, optional
626
+ :param _content_type: force content-type for the request.
627
+ :type _content_type: str, Optional
628
+ :param _headers: set to override the headers for a single
629
+ request; this effectively ignores the headers
630
+ in the spec for a single request.
631
+ :type _headers: dict, optional
632
+ :param _host_index: set to override the host_index for a single
633
+ request; this effectively ignores the host_index
634
+ in the spec for a single request.
635
+ :type _host_index: int, optional
636
+ :return: Returns the result object.
637
+ """ # noqa: E501
638
+
639
+ _param = self._finalize_model_version_serialize(
640
+ full_name=full_name,
641
+ version=version,
642
+ finalize_model_version=finalize_model_version,
643
+ _request_auth=_request_auth,
644
+ _content_type=_content_type,
645
+ _headers=_headers,
646
+ _host_index=_host_index
647
+ )
648
+
649
+ _response_types_map: Dict[str, Optional[str]] = {
650
+ '200': "ModelVersionInfo",
651
+ }
652
+ response_data = await self.api_client.call_api(
653
+ *_param,
654
+ _request_timeout=_request_timeout
655
+ )
656
+ await response_data.read()
657
+ return self.api_client.response_deserialize(
658
+ response_data=response_data,
659
+ response_types_map=_response_types_map,
660
+ ).data
661
+
662
+
663
+ @validate_call
664
+ async def finalize_model_version_with_http_info(
665
+ self,
666
+ full_name: Annotated[StrictStr, Field(description="Full name of the model.")],
667
+ version: Annotated[StrictInt, Field(description="Version number of the model version.")],
668
+ finalize_model_version: Optional[FinalizeModelVersion] = None,
669
+ _request_timeout: Union[
670
+ None,
671
+ Annotated[StrictFloat, Field(gt=0)],
672
+ Tuple[
673
+ Annotated[StrictFloat, Field(gt=0)],
674
+ Annotated[StrictFloat, Field(gt=0)]
675
+ ]
676
+ ] = None,
677
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
678
+ _content_type: Optional[StrictStr] = None,
679
+ _headers: Optional[Dict[StrictStr, Any]] = None,
680
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
681
+ ) -> ApiResponse[ModelVersionInfo]:
682
+ """Finalize a model version
683
+
684
+ Finalizes the status of the specified model version.
685
+
686
+ :param full_name: Full name of the model. (required)
687
+ :type full_name: str
688
+ :param version: Version number of the model version. (required)
689
+ :type version: int
690
+ :param finalize_model_version:
691
+ :type finalize_model_version: FinalizeModelVersion
692
+ :param _request_timeout: timeout setting for this request. If one
693
+ number provided, it will be total request
694
+ timeout. It can also be a pair (tuple) of
695
+ (connection, read) timeouts.
696
+ :type _request_timeout: int, tuple(int, int), optional
697
+ :param _request_auth: set to override the auth_settings for an a single
698
+ request; this effectively ignores the
699
+ authentication in the spec for a single request.
700
+ :type _request_auth: dict, optional
701
+ :param _content_type: force content-type for the request.
702
+ :type _content_type: str, Optional
703
+ :param _headers: set to override the headers for a single
704
+ request; this effectively ignores the headers
705
+ in the spec for a single request.
706
+ :type _headers: dict, optional
707
+ :param _host_index: set to override the host_index for a single
708
+ request; this effectively ignores the host_index
709
+ in the spec for a single request.
710
+ :type _host_index: int, optional
711
+ :return: Returns the result object.
712
+ """ # noqa: E501
713
+
714
+ _param = self._finalize_model_version_serialize(
715
+ full_name=full_name,
716
+ version=version,
717
+ finalize_model_version=finalize_model_version,
718
+ _request_auth=_request_auth,
719
+ _content_type=_content_type,
720
+ _headers=_headers,
721
+ _host_index=_host_index
722
+ )
723
+
724
+ _response_types_map: Dict[str, Optional[str]] = {
725
+ '200': "ModelVersionInfo",
726
+ }
727
+ response_data = await self.api_client.call_api(
728
+ *_param,
729
+ _request_timeout=_request_timeout
730
+ )
731
+ await response_data.read()
732
+ return self.api_client.response_deserialize(
733
+ response_data=response_data,
734
+ response_types_map=_response_types_map,
735
+ )
736
+
737
+
738
+ @validate_call
739
+ async def finalize_model_version_without_preload_content(
740
+ self,
741
+ full_name: Annotated[StrictStr, Field(description="Full name of the model.")],
742
+ version: Annotated[StrictInt, Field(description="Version number of the model version.")],
743
+ finalize_model_version: Optional[FinalizeModelVersion] = None,
744
+ _request_timeout: Union[
745
+ None,
746
+ Annotated[StrictFloat, Field(gt=0)],
747
+ Tuple[
748
+ Annotated[StrictFloat, Field(gt=0)],
749
+ Annotated[StrictFloat, Field(gt=0)]
750
+ ]
751
+ ] = None,
752
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
753
+ _content_type: Optional[StrictStr] = None,
754
+ _headers: Optional[Dict[StrictStr, Any]] = None,
755
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
756
+ ) -> RESTResponseType:
757
+ """Finalize a model version
758
+
759
+ Finalizes the status of the specified model version.
760
+
761
+ :param full_name: Full name of the model. (required)
762
+ :type full_name: str
763
+ :param version: Version number of the model version. (required)
764
+ :type version: int
765
+ :param finalize_model_version:
766
+ :type finalize_model_version: FinalizeModelVersion
767
+ :param _request_timeout: timeout setting for this request. If one
768
+ number provided, it will be total request
769
+ timeout. It can also be a pair (tuple) of
770
+ (connection, read) timeouts.
771
+ :type _request_timeout: int, tuple(int, int), optional
772
+ :param _request_auth: set to override the auth_settings for an a single
773
+ request; this effectively ignores the
774
+ authentication in the spec for a single request.
775
+ :type _request_auth: dict, optional
776
+ :param _content_type: force content-type for the request.
777
+ :type _content_type: str, Optional
778
+ :param _headers: set to override the headers for a single
779
+ request; this effectively ignores the headers
780
+ in the spec for a single request.
781
+ :type _headers: dict, optional
782
+ :param _host_index: set to override the host_index for a single
783
+ request; this effectively ignores the host_index
784
+ in the spec for a single request.
785
+ :type _host_index: int, optional
786
+ :return: Returns the result object.
787
+ """ # noqa: E501
788
+
789
+ _param = self._finalize_model_version_serialize(
790
+ full_name=full_name,
791
+ version=version,
792
+ finalize_model_version=finalize_model_version,
793
+ _request_auth=_request_auth,
794
+ _content_type=_content_type,
795
+ _headers=_headers,
796
+ _host_index=_host_index
797
+ )
798
+
799
+ _response_types_map: Dict[str, Optional[str]] = {
800
+ '200': "ModelVersionInfo",
801
+ }
802
+ response_data = await self.api_client.call_api(
803
+ *_param,
804
+ _request_timeout=_request_timeout
805
+ )
806
+ return response_data.response
807
+
808
+
809
+ def _finalize_model_version_serialize(
810
+ self,
811
+ full_name,
812
+ version,
813
+ finalize_model_version,
814
+ _request_auth,
815
+ _content_type,
816
+ _headers,
817
+ _host_index,
818
+ ) -> RequestSerialized:
819
+
820
+ _host = None
821
+
822
+ _collection_formats: Dict[str, str] = {
823
+ }
824
+
825
+ _path_params: Dict[str, str] = {}
826
+ _query_params: List[Tuple[str, str]] = []
827
+ _header_params: Dict[str, Optional[str]] = _headers or {}
828
+ _form_params: List[Tuple[str, str]] = []
829
+ _files: Dict[str, Union[str, bytes]] = {}
830
+ _body_params: Optional[bytes] = None
831
+
832
+ # process the path parameters
833
+ if full_name is not None:
834
+ _path_params['full_name'] = full_name
835
+ if version is not None:
836
+ _path_params['version'] = version
837
+ # process the query parameters
838
+ # process the header parameters
839
+ # process the form parameters
840
+ # process the body parameter
841
+ if finalize_model_version is not None:
842
+ _body_params = finalize_model_version
843
+
844
+
845
+ # set the HTTP header `Accept`
846
+ _header_params['Accept'] = self.api_client.select_header_accept(
847
+ [
848
+ 'application/json'
849
+ ]
850
+ )
851
+
852
+ # set the HTTP header `Content-Type`
853
+ if _content_type:
854
+ _header_params['Content-Type'] = _content_type
855
+ else:
856
+ _default_content_type = (
857
+ self.api_client.select_header_content_type(
858
+ [
859
+ 'application/json'
860
+ ]
861
+ )
862
+ )
863
+ if _default_content_type is not None:
864
+ _header_params['Content-Type'] = _default_content_type
865
+
866
+ # authentication setting
867
+ _auth_settings: List[str] = [
868
+ ]
869
+
870
+ return self.api_client.param_serialize(
871
+ method='PATCH',
872
+ resource_path='/models/{full_name}/versions/{version}/finalize',
873
+ path_params=_path_params,
874
+ query_params=_query_params,
875
+ header_params=_header_params,
876
+ body=_body_params,
877
+ post_params=_form_params,
878
+ files=_files,
879
+ auth_settings=_auth_settings,
880
+ collection_formats=_collection_formats,
881
+ _host=_host,
882
+ _request_auth=_request_auth
883
+ )
884
+
885
+
886
+
887
+
888
+ @validate_call
889
+ async def get_model_version(
890
+ self,
891
+ full_name: Annotated[StrictStr, Field(description="Full name of the model.")],
892
+ version: Annotated[StrictInt, Field(description="Version number of the model version.")],
893
+ _request_timeout: Union[
894
+ None,
895
+ Annotated[StrictFloat, Field(gt=0)],
896
+ Tuple[
897
+ Annotated[StrictFloat, Field(gt=0)],
898
+ Annotated[StrictFloat, Field(gt=0)]
899
+ ]
900
+ ] = None,
901
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
902
+ _content_type: Optional[StrictStr] = None,
903
+ _headers: Optional[Dict[StrictStr, Any]] = None,
904
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
905
+ ) -> ModelVersionInfo:
906
+ """Get a model version
907
+
908
+ Gets a specific model version for a specific model.
909
+
910
+ :param full_name: Full name of the model. (required)
911
+ :type full_name: str
912
+ :param version: Version number of the model version. (required)
913
+ :type version: int
914
+ :param _request_timeout: timeout setting for this request. If one
915
+ number provided, it will be total request
916
+ timeout. It can also be a pair (tuple) of
917
+ (connection, read) timeouts.
918
+ :type _request_timeout: int, tuple(int, int), optional
919
+ :param _request_auth: set to override the auth_settings for an a single
920
+ request; this effectively ignores the
921
+ authentication in the spec for a single request.
922
+ :type _request_auth: dict, optional
923
+ :param _content_type: force content-type for the request.
924
+ :type _content_type: str, Optional
925
+ :param _headers: set to override the headers for a single
926
+ request; this effectively ignores the headers
927
+ in the spec for a single request.
928
+ :type _headers: dict, optional
929
+ :param _host_index: set to override the host_index for a single
930
+ request; this effectively ignores the host_index
931
+ in the spec for a single request.
932
+ :type _host_index: int, optional
933
+ :return: Returns the result object.
934
+ """ # noqa: E501
935
+
936
+ _param = self._get_model_version_serialize(
937
+ full_name=full_name,
938
+ version=version,
939
+ _request_auth=_request_auth,
940
+ _content_type=_content_type,
941
+ _headers=_headers,
942
+ _host_index=_host_index
943
+ )
944
+
945
+ _response_types_map: Dict[str, Optional[str]] = {
946
+ '200': "ModelVersionInfo",
947
+ }
948
+ response_data = await self.api_client.call_api(
949
+ *_param,
950
+ _request_timeout=_request_timeout
951
+ )
952
+ await response_data.read()
953
+ return self.api_client.response_deserialize(
954
+ response_data=response_data,
955
+ response_types_map=_response_types_map,
956
+ ).data
957
+
958
+
959
+ @validate_call
960
+ async def get_model_version_with_http_info(
961
+ self,
962
+ full_name: Annotated[StrictStr, Field(description="Full name of the model.")],
963
+ version: Annotated[StrictInt, Field(description="Version number of the model version.")],
964
+ _request_timeout: Union[
965
+ None,
966
+ Annotated[StrictFloat, Field(gt=0)],
967
+ Tuple[
968
+ Annotated[StrictFloat, Field(gt=0)],
969
+ Annotated[StrictFloat, Field(gt=0)]
970
+ ]
971
+ ] = None,
972
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
973
+ _content_type: Optional[StrictStr] = None,
974
+ _headers: Optional[Dict[StrictStr, Any]] = None,
975
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
976
+ ) -> ApiResponse[ModelVersionInfo]:
977
+ """Get a model version
978
+
979
+ Gets a specific model version for a specific model.
980
+
981
+ :param full_name: Full name of the model. (required)
982
+ :type full_name: str
983
+ :param version: Version number of the model version. (required)
984
+ :type version: int
985
+ :param _request_timeout: timeout setting for this request. If one
986
+ number provided, it will be total request
987
+ timeout. It can also be a pair (tuple) of
988
+ (connection, read) timeouts.
989
+ :type _request_timeout: int, tuple(int, int), optional
990
+ :param _request_auth: set to override the auth_settings for an a single
991
+ request; this effectively ignores the
992
+ authentication in the spec for a single request.
993
+ :type _request_auth: dict, optional
994
+ :param _content_type: force content-type for the request.
995
+ :type _content_type: str, Optional
996
+ :param _headers: set to override the headers for a single
997
+ request; this effectively ignores the headers
998
+ in the spec for a single request.
999
+ :type _headers: dict, optional
1000
+ :param _host_index: set to override the host_index for a single
1001
+ request; this effectively ignores the host_index
1002
+ in the spec for a single request.
1003
+ :type _host_index: int, optional
1004
+ :return: Returns the result object.
1005
+ """ # noqa: E501
1006
+
1007
+ _param = self._get_model_version_serialize(
1008
+ full_name=full_name,
1009
+ version=version,
1010
+ _request_auth=_request_auth,
1011
+ _content_type=_content_type,
1012
+ _headers=_headers,
1013
+ _host_index=_host_index
1014
+ )
1015
+
1016
+ _response_types_map: Dict[str, Optional[str]] = {
1017
+ '200': "ModelVersionInfo",
1018
+ }
1019
+ response_data = await self.api_client.call_api(
1020
+ *_param,
1021
+ _request_timeout=_request_timeout
1022
+ )
1023
+ await response_data.read()
1024
+ return self.api_client.response_deserialize(
1025
+ response_data=response_data,
1026
+ response_types_map=_response_types_map,
1027
+ )
1028
+
1029
+
1030
+ @validate_call
1031
+ async def get_model_version_without_preload_content(
1032
+ self,
1033
+ full_name: Annotated[StrictStr, Field(description="Full name of the model.")],
1034
+ version: Annotated[StrictInt, Field(description="Version number of the model version.")],
1035
+ _request_timeout: Union[
1036
+ None,
1037
+ Annotated[StrictFloat, Field(gt=0)],
1038
+ Tuple[
1039
+ Annotated[StrictFloat, Field(gt=0)],
1040
+ Annotated[StrictFloat, Field(gt=0)]
1041
+ ]
1042
+ ] = None,
1043
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1044
+ _content_type: Optional[StrictStr] = None,
1045
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1046
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1047
+ ) -> RESTResponseType:
1048
+ """Get a model version
1049
+
1050
+ Gets a specific model version for a specific model.
1051
+
1052
+ :param full_name: Full name of the model. (required)
1053
+ :type full_name: str
1054
+ :param version: Version number of the model version. (required)
1055
+ :type version: int
1056
+ :param _request_timeout: timeout setting for this request. If one
1057
+ number provided, it will be total request
1058
+ timeout. It can also be a pair (tuple) of
1059
+ (connection, read) timeouts.
1060
+ :type _request_timeout: int, tuple(int, int), optional
1061
+ :param _request_auth: set to override the auth_settings for an a single
1062
+ request; this effectively ignores the
1063
+ authentication in the spec for a single request.
1064
+ :type _request_auth: dict, optional
1065
+ :param _content_type: force content-type for the request.
1066
+ :type _content_type: str, Optional
1067
+ :param _headers: set to override the headers for a single
1068
+ request; this effectively ignores the headers
1069
+ in the spec for a single request.
1070
+ :type _headers: dict, optional
1071
+ :param _host_index: set to override the host_index for a single
1072
+ request; this effectively ignores the host_index
1073
+ in the spec for a single request.
1074
+ :type _host_index: int, optional
1075
+ :return: Returns the result object.
1076
+ """ # noqa: E501
1077
+
1078
+ _param = self._get_model_version_serialize(
1079
+ full_name=full_name,
1080
+ version=version,
1081
+ _request_auth=_request_auth,
1082
+ _content_type=_content_type,
1083
+ _headers=_headers,
1084
+ _host_index=_host_index
1085
+ )
1086
+
1087
+ _response_types_map: Dict[str, Optional[str]] = {
1088
+ '200': "ModelVersionInfo",
1089
+ }
1090
+ response_data = await self.api_client.call_api(
1091
+ *_param,
1092
+ _request_timeout=_request_timeout
1093
+ )
1094
+ return response_data.response
1095
+
1096
+
1097
+ def _get_model_version_serialize(
1098
+ self,
1099
+ full_name,
1100
+ version,
1101
+ _request_auth,
1102
+ _content_type,
1103
+ _headers,
1104
+ _host_index,
1105
+ ) -> RequestSerialized:
1106
+
1107
+ _host = None
1108
+
1109
+ _collection_formats: Dict[str, str] = {
1110
+ }
1111
+
1112
+ _path_params: Dict[str, str] = {}
1113
+ _query_params: List[Tuple[str, str]] = []
1114
+ _header_params: Dict[str, Optional[str]] = _headers or {}
1115
+ _form_params: List[Tuple[str, str]] = []
1116
+ _files: Dict[str, Union[str, bytes]] = {}
1117
+ _body_params: Optional[bytes] = None
1118
+
1119
+ # process the path parameters
1120
+ if full_name is not None:
1121
+ _path_params['full_name'] = full_name
1122
+ if version is not None:
1123
+ _path_params['version'] = version
1124
+ # process the query parameters
1125
+ # process the header parameters
1126
+ # process the form parameters
1127
+ # process the body parameter
1128
+
1129
+
1130
+ # set the HTTP header `Accept`
1131
+ _header_params['Accept'] = self.api_client.select_header_accept(
1132
+ [
1133
+ 'application/json'
1134
+ ]
1135
+ )
1136
+
1137
+
1138
+ # authentication setting
1139
+ _auth_settings: List[str] = [
1140
+ ]
1141
+
1142
+ return self.api_client.param_serialize(
1143
+ method='GET',
1144
+ resource_path='/models/{full_name}/versions/{version}',
1145
+ path_params=_path_params,
1146
+ query_params=_query_params,
1147
+ header_params=_header_params,
1148
+ body=_body_params,
1149
+ post_params=_form_params,
1150
+ files=_files,
1151
+ auth_settings=_auth_settings,
1152
+ collection_formats=_collection_formats,
1153
+ _host=_host,
1154
+ _request_auth=_request_auth
1155
+ )
1156
+
1157
+
1158
+
1159
+
1160
+ @validate_call
1161
+ async def list_model_versions(
1162
+ self,
1163
+ full_name: Annotated[StrictStr, Field(description="Full name of the registered model.")],
1164
+ max_results: Annotated[Optional[Annotated[int, Field(le=50, strict=True)]], Field(description="Maximum number of model versions to return. - when set to a value greater than 0, the page length is the minimum of this value and a server configured value; - when set to 0, the page length is set to a server configured value; - when set to a value less than 0, an invalid parameter error is returned; ")] = None,
1165
+ page_token: Annotated[Optional[StrictStr], Field(description="Opaque token to send for the next page of results (pagination).")] = None,
1166
+ _request_timeout: Union[
1167
+ None,
1168
+ Annotated[StrictFloat, Field(gt=0)],
1169
+ Tuple[
1170
+ Annotated[StrictFloat, Field(gt=0)],
1171
+ Annotated[StrictFloat, Field(gt=0)]
1172
+ ]
1173
+ ] = None,
1174
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1175
+ _content_type: Optional[StrictStr] = None,
1176
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1177
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1178
+ ) -> ListModelVersionsResponse:
1179
+ """List model versions of the specified registered model.
1180
+
1181
+ Gets the paginated list of all available model versions under the specified registered model. There is no guarantee of a specific ordering of the elements in the array.
1182
+
1183
+ :param full_name: Full name of the registered model. (required)
1184
+ :type full_name: str
1185
+ :param max_results: Maximum number of model versions to return. - when set to a value greater than 0, the page length is the minimum of this value and a server configured value; - when set to 0, the page length is set to a server configured value; - when set to a value less than 0, an invalid parameter error is returned;
1186
+ :type max_results: int
1187
+ :param page_token: Opaque token to send for the next page of results (pagination).
1188
+ :type page_token: str
1189
+ :param _request_timeout: timeout setting for this request. If one
1190
+ number provided, it will be total request
1191
+ timeout. It can also be a pair (tuple) of
1192
+ (connection, read) timeouts.
1193
+ :type _request_timeout: int, tuple(int, int), optional
1194
+ :param _request_auth: set to override the auth_settings for an a single
1195
+ request; this effectively ignores the
1196
+ authentication in the spec for a single request.
1197
+ :type _request_auth: dict, optional
1198
+ :param _content_type: force content-type for the request.
1199
+ :type _content_type: str, Optional
1200
+ :param _headers: set to override the headers for a single
1201
+ request; this effectively ignores the headers
1202
+ in the spec for a single request.
1203
+ :type _headers: dict, optional
1204
+ :param _host_index: set to override the host_index for a single
1205
+ request; this effectively ignores the host_index
1206
+ in the spec for a single request.
1207
+ :type _host_index: int, optional
1208
+ :return: Returns the result object.
1209
+ """ # noqa: E501
1210
+
1211
+ _param = self._list_model_versions_serialize(
1212
+ full_name=full_name,
1213
+ max_results=max_results,
1214
+ page_token=page_token,
1215
+ _request_auth=_request_auth,
1216
+ _content_type=_content_type,
1217
+ _headers=_headers,
1218
+ _host_index=_host_index
1219
+ )
1220
+
1221
+ _response_types_map: Dict[str, Optional[str]] = {
1222
+ '200': "ListModelVersionsResponse",
1223
+ }
1224
+ response_data = await self.api_client.call_api(
1225
+ *_param,
1226
+ _request_timeout=_request_timeout
1227
+ )
1228
+ await response_data.read()
1229
+ return self.api_client.response_deserialize(
1230
+ response_data=response_data,
1231
+ response_types_map=_response_types_map,
1232
+ ).data
1233
+
1234
+
1235
+ @validate_call
1236
+ async def list_model_versions_with_http_info(
1237
+ self,
1238
+ full_name: Annotated[StrictStr, Field(description="Full name of the registered model.")],
1239
+ max_results: Annotated[Optional[Annotated[int, Field(le=50, strict=True)]], Field(description="Maximum number of model versions to return. - when set to a value greater than 0, the page length is the minimum of this value and a server configured value; - when set to 0, the page length is set to a server configured value; - when set to a value less than 0, an invalid parameter error is returned; ")] = None,
1240
+ page_token: Annotated[Optional[StrictStr], Field(description="Opaque token to send for the next page of results (pagination).")] = None,
1241
+ _request_timeout: Union[
1242
+ None,
1243
+ Annotated[StrictFloat, Field(gt=0)],
1244
+ Tuple[
1245
+ Annotated[StrictFloat, Field(gt=0)],
1246
+ Annotated[StrictFloat, Field(gt=0)]
1247
+ ]
1248
+ ] = None,
1249
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1250
+ _content_type: Optional[StrictStr] = None,
1251
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1252
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1253
+ ) -> ApiResponse[ListModelVersionsResponse]:
1254
+ """List model versions of the specified registered model.
1255
+
1256
+ Gets the paginated list of all available model versions under the specified registered model. There is no guarantee of a specific ordering of the elements in the array.
1257
+
1258
+ :param full_name: Full name of the registered model. (required)
1259
+ :type full_name: str
1260
+ :param max_results: Maximum number of model versions to return. - when set to a value greater than 0, the page length is the minimum of this value and a server configured value; - when set to 0, the page length is set to a server configured value; - when set to a value less than 0, an invalid parameter error is returned;
1261
+ :type max_results: int
1262
+ :param page_token: Opaque token to send for the next page of results (pagination).
1263
+ :type page_token: str
1264
+ :param _request_timeout: timeout setting for this request. If one
1265
+ number provided, it will be total request
1266
+ timeout. It can also be a pair (tuple) of
1267
+ (connection, read) timeouts.
1268
+ :type _request_timeout: int, tuple(int, int), optional
1269
+ :param _request_auth: set to override the auth_settings for an a single
1270
+ request; this effectively ignores the
1271
+ authentication in the spec for a single request.
1272
+ :type _request_auth: dict, optional
1273
+ :param _content_type: force content-type for the request.
1274
+ :type _content_type: str, Optional
1275
+ :param _headers: set to override the headers for a single
1276
+ request; this effectively ignores the headers
1277
+ in the spec for a single request.
1278
+ :type _headers: dict, optional
1279
+ :param _host_index: set to override the host_index for a single
1280
+ request; this effectively ignores the host_index
1281
+ in the spec for a single request.
1282
+ :type _host_index: int, optional
1283
+ :return: Returns the result object.
1284
+ """ # noqa: E501
1285
+
1286
+ _param = self._list_model_versions_serialize(
1287
+ full_name=full_name,
1288
+ max_results=max_results,
1289
+ page_token=page_token,
1290
+ _request_auth=_request_auth,
1291
+ _content_type=_content_type,
1292
+ _headers=_headers,
1293
+ _host_index=_host_index
1294
+ )
1295
+
1296
+ _response_types_map: Dict[str, Optional[str]] = {
1297
+ '200': "ListModelVersionsResponse",
1298
+ }
1299
+ response_data = await self.api_client.call_api(
1300
+ *_param,
1301
+ _request_timeout=_request_timeout
1302
+ )
1303
+ await response_data.read()
1304
+ return self.api_client.response_deserialize(
1305
+ response_data=response_data,
1306
+ response_types_map=_response_types_map,
1307
+ )
1308
+
1309
+
1310
+ @validate_call
1311
+ async def list_model_versions_without_preload_content(
1312
+ self,
1313
+ full_name: Annotated[StrictStr, Field(description="Full name of the registered model.")],
1314
+ max_results: Annotated[Optional[Annotated[int, Field(le=50, strict=True)]], Field(description="Maximum number of model versions to return. - when set to a value greater than 0, the page length is the minimum of this value and a server configured value; - when set to 0, the page length is set to a server configured value; - when set to a value less than 0, an invalid parameter error is returned; ")] = None,
1315
+ page_token: Annotated[Optional[StrictStr], Field(description="Opaque token to send for the next page of results (pagination).")] = None,
1316
+ _request_timeout: Union[
1317
+ None,
1318
+ Annotated[StrictFloat, Field(gt=0)],
1319
+ Tuple[
1320
+ Annotated[StrictFloat, Field(gt=0)],
1321
+ Annotated[StrictFloat, Field(gt=0)]
1322
+ ]
1323
+ ] = None,
1324
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1325
+ _content_type: Optional[StrictStr] = None,
1326
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1327
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1328
+ ) -> RESTResponseType:
1329
+ """List model versions of the specified registered model.
1330
+
1331
+ Gets the paginated list of all available model versions under the specified registered model. There is no guarantee of a specific ordering of the elements in the array.
1332
+
1333
+ :param full_name: Full name of the registered model. (required)
1334
+ :type full_name: str
1335
+ :param max_results: Maximum number of model versions to return. - when set to a value greater than 0, the page length is the minimum of this value and a server configured value; - when set to 0, the page length is set to a server configured value; - when set to a value less than 0, an invalid parameter error is returned;
1336
+ :type max_results: int
1337
+ :param page_token: Opaque token to send for the next page of results (pagination).
1338
+ :type page_token: str
1339
+ :param _request_timeout: timeout setting for this request. If one
1340
+ number provided, it will be total request
1341
+ timeout. It can also be a pair (tuple) of
1342
+ (connection, read) timeouts.
1343
+ :type _request_timeout: int, tuple(int, int), optional
1344
+ :param _request_auth: set to override the auth_settings for an a single
1345
+ request; this effectively ignores the
1346
+ authentication in the spec for a single request.
1347
+ :type _request_auth: dict, optional
1348
+ :param _content_type: force content-type for the request.
1349
+ :type _content_type: str, Optional
1350
+ :param _headers: set to override the headers for a single
1351
+ request; this effectively ignores the headers
1352
+ in the spec for a single request.
1353
+ :type _headers: dict, optional
1354
+ :param _host_index: set to override the host_index for a single
1355
+ request; this effectively ignores the host_index
1356
+ in the spec for a single request.
1357
+ :type _host_index: int, optional
1358
+ :return: Returns the result object.
1359
+ """ # noqa: E501
1360
+
1361
+ _param = self._list_model_versions_serialize(
1362
+ full_name=full_name,
1363
+ max_results=max_results,
1364
+ page_token=page_token,
1365
+ _request_auth=_request_auth,
1366
+ _content_type=_content_type,
1367
+ _headers=_headers,
1368
+ _host_index=_host_index
1369
+ )
1370
+
1371
+ _response_types_map: Dict[str, Optional[str]] = {
1372
+ '200': "ListModelVersionsResponse",
1373
+ }
1374
+ response_data = await self.api_client.call_api(
1375
+ *_param,
1376
+ _request_timeout=_request_timeout
1377
+ )
1378
+ return response_data.response
1379
+
1380
+
1381
+ def _list_model_versions_serialize(
1382
+ self,
1383
+ full_name,
1384
+ max_results,
1385
+ page_token,
1386
+ _request_auth,
1387
+ _content_type,
1388
+ _headers,
1389
+ _host_index,
1390
+ ) -> RequestSerialized:
1391
+
1392
+ _host = None
1393
+
1394
+ _collection_formats: Dict[str, str] = {
1395
+ }
1396
+
1397
+ _path_params: Dict[str, str] = {}
1398
+ _query_params: List[Tuple[str, str]] = []
1399
+ _header_params: Dict[str, Optional[str]] = _headers or {}
1400
+ _form_params: List[Tuple[str, str]] = []
1401
+ _files: Dict[str, Union[str, bytes]] = {}
1402
+ _body_params: Optional[bytes] = None
1403
+
1404
+ # process the path parameters
1405
+ if full_name is not None:
1406
+ _path_params['full_name'] = full_name
1407
+ # process the query parameters
1408
+ if max_results is not None:
1409
+
1410
+ _query_params.append(('max_results', max_results))
1411
+
1412
+ if page_token is not None:
1413
+
1414
+ _query_params.append(('page_token', page_token))
1415
+
1416
+ # process the header parameters
1417
+ # process the form parameters
1418
+ # process the body parameter
1419
+
1420
+
1421
+ # set the HTTP header `Accept`
1422
+ _header_params['Accept'] = self.api_client.select_header_accept(
1423
+ [
1424
+ 'application/json'
1425
+ ]
1426
+ )
1427
+
1428
+
1429
+ # authentication setting
1430
+ _auth_settings: List[str] = [
1431
+ ]
1432
+
1433
+ return self.api_client.param_serialize(
1434
+ method='GET',
1435
+ resource_path='/models/{full_name}/versions',
1436
+ path_params=_path_params,
1437
+ query_params=_query_params,
1438
+ header_params=_header_params,
1439
+ body=_body_params,
1440
+ post_params=_form_params,
1441
+ files=_files,
1442
+ auth_settings=_auth_settings,
1443
+ collection_formats=_collection_formats,
1444
+ _host=_host,
1445
+ _request_auth=_request_auth
1446
+ )
1447
+
1448
+
1449
+
1450
+
1451
+ @validate_call
1452
+ async def update_model_version(
1453
+ self,
1454
+ full_name: Annotated[StrictStr, Field(description="Full name of the model.")],
1455
+ version: Annotated[StrictInt, Field(description="Version number of the model version.")],
1456
+ update_model_version: Optional[UpdateModelVersion] = None,
1457
+ _request_timeout: Union[
1458
+ None,
1459
+ Annotated[StrictFloat, Field(gt=0)],
1460
+ Tuple[
1461
+ Annotated[StrictFloat, Field(gt=0)],
1462
+ Annotated[StrictFloat, Field(gt=0)]
1463
+ ]
1464
+ ] = None,
1465
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1466
+ _content_type: Optional[StrictStr] = None,
1467
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1468
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1469
+ ) -> ModelVersionInfo:
1470
+ """Update a model version
1471
+
1472
+ Updates the specified model version.
1473
+
1474
+ :param full_name: Full name of the model. (required)
1475
+ :type full_name: str
1476
+ :param version: Version number of the model version. (required)
1477
+ :type version: int
1478
+ :param update_model_version:
1479
+ :type update_model_version: UpdateModelVersion
1480
+ :param _request_timeout: timeout setting for this request. If one
1481
+ number provided, it will be total request
1482
+ timeout. It can also be a pair (tuple) of
1483
+ (connection, read) timeouts.
1484
+ :type _request_timeout: int, tuple(int, int), optional
1485
+ :param _request_auth: set to override the auth_settings for an a single
1486
+ request; this effectively ignores the
1487
+ authentication in the spec for a single request.
1488
+ :type _request_auth: dict, optional
1489
+ :param _content_type: force content-type for the request.
1490
+ :type _content_type: str, Optional
1491
+ :param _headers: set to override the headers for a single
1492
+ request; this effectively ignores the headers
1493
+ in the spec for a single request.
1494
+ :type _headers: dict, optional
1495
+ :param _host_index: set to override the host_index for a single
1496
+ request; this effectively ignores the host_index
1497
+ in the spec for a single request.
1498
+ :type _host_index: int, optional
1499
+ :return: Returns the result object.
1500
+ """ # noqa: E501
1501
+
1502
+ _param = self._update_model_version_serialize(
1503
+ full_name=full_name,
1504
+ version=version,
1505
+ update_model_version=update_model_version,
1506
+ _request_auth=_request_auth,
1507
+ _content_type=_content_type,
1508
+ _headers=_headers,
1509
+ _host_index=_host_index
1510
+ )
1511
+
1512
+ _response_types_map: Dict[str, Optional[str]] = {
1513
+ '200': "ModelVersionInfo",
1514
+ }
1515
+ response_data = await self.api_client.call_api(
1516
+ *_param,
1517
+ _request_timeout=_request_timeout
1518
+ )
1519
+ await response_data.read()
1520
+ return self.api_client.response_deserialize(
1521
+ response_data=response_data,
1522
+ response_types_map=_response_types_map,
1523
+ ).data
1524
+
1525
+
1526
+ @validate_call
1527
+ async def update_model_version_with_http_info(
1528
+ self,
1529
+ full_name: Annotated[StrictStr, Field(description="Full name of the model.")],
1530
+ version: Annotated[StrictInt, Field(description="Version number of the model version.")],
1531
+ update_model_version: Optional[UpdateModelVersion] = None,
1532
+ _request_timeout: Union[
1533
+ None,
1534
+ Annotated[StrictFloat, Field(gt=0)],
1535
+ Tuple[
1536
+ Annotated[StrictFloat, Field(gt=0)],
1537
+ Annotated[StrictFloat, Field(gt=0)]
1538
+ ]
1539
+ ] = None,
1540
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1541
+ _content_type: Optional[StrictStr] = None,
1542
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1543
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1544
+ ) -> ApiResponse[ModelVersionInfo]:
1545
+ """Update a model version
1546
+
1547
+ Updates the specified model version.
1548
+
1549
+ :param full_name: Full name of the model. (required)
1550
+ :type full_name: str
1551
+ :param version: Version number of the model version. (required)
1552
+ :type version: int
1553
+ :param update_model_version:
1554
+ :type update_model_version: UpdateModelVersion
1555
+ :param _request_timeout: timeout setting for this request. If one
1556
+ number provided, it will be total request
1557
+ timeout. It can also be a pair (tuple) of
1558
+ (connection, read) timeouts.
1559
+ :type _request_timeout: int, tuple(int, int), optional
1560
+ :param _request_auth: set to override the auth_settings for an a single
1561
+ request; this effectively ignores the
1562
+ authentication in the spec for a single request.
1563
+ :type _request_auth: dict, optional
1564
+ :param _content_type: force content-type for the request.
1565
+ :type _content_type: str, Optional
1566
+ :param _headers: set to override the headers for a single
1567
+ request; this effectively ignores the headers
1568
+ in the spec for a single request.
1569
+ :type _headers: dict, optional
1570
+ :param _host_index: set to override the host_index for a single
1571
+ request; this effectively ignores the host_index
1572
+ in the spec for a single request.
1573
+ :type _host_index: int, optional
1574
+ :return: Returns the result object.
1575
+ """ # noqa: E501
1576
+
1577
+ _param = self._update_model_version_serialize(
1578
+ full_name=full_name,
1579
+ version=version,
1580
+ update_model_version=update_model_version,
1581
+ _request_auth=_request_auth,
1582
+ _content_type=_content_type,
1583
+ _headers=_headers,
1584
+ _host_index=_host_index
1585
+ )
1586
+
1587
+ _response_types_map: Dict[str, Optional[str]] = {
1588
+ '200': "ModelVersionInfo",
1589
+ }
1590
+ response_data = await self.api_client.call_api(
1591
+ *_param,
1592
+ _request_timeout=_request_timeout
1593
+ )
1594
+ await response_data.read()
1595
+ return self.api_client.response_deserialize(
1596
+ response_data=response_data,
1597
+ response_types_map=_response_types_map,
1598
+ )
1599
+
1600
+
1601
+ @validate_call
1602
+ async def update_model_version_without_preload_content(
1603
+ self,
1604
+ full_name: Annotated[StrictStr, Field(description="Full name of the model.")],
1605
+ version: Annotated[StrictInt, Field(description="Version number of the model version.")],
1606
+ update_model_version: Optional[UpdateModelVersion] = None,
1607
+ _request_timeout: Union[
1608
+ None,
1609
+ Annotated[StrictFloat, Field(gt=0)],
1610
+ Tuple[
1611
+ Annotated[StrictFloat, Field(gt=0)],
1612
+ Annotated[StrictFloat, Field(gt=0)]
1613
+ ]
1614
+ ] = None,
1615
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1616
+ _content_type: Optional[StrictStr] = None,
1617
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1618
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1619
+ ) -> RESTResponseType:
1620
+ """Update a model version
1621
+
1622
+ Updates the specified model version.
1623
+
1624
+ :param full_name: Full name of the model. (required)
1625
+ :type full_name: str
1626
+ :param version: Version number of the model version. (required)
1627
+ :type version: int
1628
+ :param update_model_version:
1629
+ :type update_model_version: UpdateModelVersion
1630
+ :param _request_timeout: timeout setting for this request. If one
1631
+ number provided, it will be total request
1632
+ timeout. It can also be a pair (tuple) of
1633
+ (connection, read) timeouts.
1634
+ :type _request_timeout: int, tuple(int, int), optional
1635
+ :param _request_auth: set to override the auth_settings for an a single
1636
+ request; this effectively ignores the
1637
+ authentication in the spec for a single request.
1638
+ :type _request_auth: dict, optional
1639
+ :param _content_type: force content-type for the request.
1640
+ :type _content_type: str, Optional
1641
+ :param _headers: set to override the headers for a single
1642
+ request; this effectively ignores the headers
1643
+ in the spec for a single request.
1644
+ :type _headers: dict, optional
1645
+ :param _host_index: set to override the host_index for a single
1646
+ request; this effectively ignores the host_index
1647
+ in the spec for a single request.
1648
+ :type _host_index: int, optional
1649
+ :return: Returns the result object.
1650
+ """ # noqa: E501
1651
+
1652
+ _param = self._update_model_version_serialize(
1653
+ full_name=full_name,
1654
+ version=version,
1655
+ update_model_version=update_model_version,
1656
+ _request_auth=_request_auth,
1657
+ _content_type=_content_type,
1658
+ _headers=_headers,
1659
+ _host_index=_host_index
1660
+ )
1661
+
1662
+ _response_types_map: Dict[str, Optional[str]] = {
1663
+ '200': "ModelVersionInfo",
1664
+ }
1665
+ response_data = await self.api_client.call_api(
1666
+ *_param,
1667
+ _request_timeout=_request_timeout
1668
+ )
1669
+ return response_data.response
1670
+
1671
+
1672
+ def _update_model_version_serialize(
1673
+ self,
1674
+ full_name,
1675
+ version,
1676
+ update_model_version,
1677
+ _request_auth,
1678
+ _content_type,
1679
+ _headers,
1680
+ _host_index,
1681
+ ) -> RequestSerialized:
1682
+
1683
+ _host = None
1684
+
1685
+ _collection_formats: Dict[str, str] = {
1686
+ }
1687
+
1688
+ _path_params: Dict[str, str] = {}
1689
+ _query_params: List[Tuple[str, str]] = []
1690
+ _header_params: Dict[str, Optional[str]] = _headers or {}
1691
+ _form_params: List[Tuple[str, str]] = []
1692
+ _files: Dict[str, Union[str, bytes]] = {}
1693
+ _body_params: Optional[bytes] = None
1694
+
1695
+ # process the path parameters
1696
+ if full_name is not None:
1697
+ _path_params['full_name'] = full_name
1698
+ if version is not None:
1699
+ _path_params['version'] = version
1700
+ # process the query parameters
1701
+ # process the header parameters
1702
+ # process the form parameters
1703
+ # process the body parameter
1704
+ if update_model_version is not None:
1705
+ _body_params = update_model_version
1706
+
1707
+
1708
+ # set the HTTP header `Accept`
1709
+ _header_params['Accept'] = self.api_client.select_header_accept(
1710
+ [
1711
+ 'application/json'
1712
+ ]
1713
+ )
1714
+
1715
+ # set the HTTP header `Content-Type`
1716
+ if _content_type:
1717
+ _header_params['Content-Type'] = _content_type
1718
+ else:
1719
+ _default_content_type = (
1720
+ self.api_client.select_header_content_type(
1721
+ [
1722
+ 'application/json'
1723
+ ]
1724
+ )
1725
+ )
1726
+ if _default_content_type is not None:
1727
+ _header_params['Content-Type'] = _default_content_type
1728
+
1729
+ # authentication setting
1730
+ _auth_settings: List[str] = [
1731
+ ]
1732
+
1733
+ return self.api_client.param_serialize(
1734
+ method='PATCH',
1735
+ resource_path='/models/{full_name}/versions/{version}',
1736
+ path_params=_path_params,
1737
+ query_params=_query_params,
1738
+ header_params=_header_params,
1739
+ body=_body_params,
1740
+ post_params=_form_params,
1741
+ files=_files,
1742
+ auth_settings=_auth_settings,
1743
+ collection_formats=_collection_formats,
1744
+ _host=_host,
1745
+ _request_auth=_request_auth
1746
+ )
1747
+
1748
+