mistralai 1.5.2__py3-none-any.whl → 1.6.0__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 (80) hide show
  1. mistralai/_hooks/types.py +15 -3
  2. mistralai/_version.py +3 -3
  3. mistralai/agents.py +44 -12
  4. mistralai/basesdk.py +8 -0
  5. mistralai/chat.py +44 -12
  6. mistralai/classifiers.py +36 -16
  7. mistralai/embeddings.py +16 -6
  8. mistralai/files.py +36 -0
  9. mistralai/fim.py +32 -12
  10. mistralai/httpclient.py +4 -2
  11. mistralai/jobs.py +30 -0
  12. mistralai/mistral_jobs.py +24 -0
  13. mistralai/models/agentscompletionrequest.py +4 -0
  14. mistralai/models/agentscompletionstreamrequest.py +4 -0
  15. mistralai/models/chatcompletionrequest.py +4 -0
  16. mistralai/models/chatcompletionstreamrequest.py +4 -0
  17. mistralai/models/function.py +2 -2
  18. mistralai/models/jsonschema.py +1 -1
  19. mistralai/models_.py +66 -18
  20. mistralai/ocr.py +16 -6
  21. mistralai/sdk.py +19 -3
  22. mistralai/sdkconfiguration.py +4 -2
  23. mistralai/utils/__init__.py +2 -0
  24. mistralai/utils/serializers.py +10 -6
  25. mistralai/utils/values.py +4 -1
  26. {mistralai-1.5.2.dist-info → mistralai-1.6.0.dist-info}/METADATA +63 -16
  27. {mistralai-1.5.2.dist-info → mistralai-1.6.0.dist-info}/RECORD +80 -72
  28. mistralai_azure/__init__.py +10 -1
  29. mistralai_azure/_hooks/types.py +15 -3
  30. mistralai_azure/_version.py +4 -1
  31. mistralai_azure/basesdk.py +8 -0
  32. mistralai_azure/chat.py +100 -20
  33. mistralai_azure/httpclient.py +52 -0
  34. mistralai_azure/models/__init__.py +22 -0
  35. mistralai_azure/models/assistantmessage.py +2 -0
  36. mistralai_azure/models/chatcompletionrequest.py +12 -10
  37. mistralai_azure/models/chatcompletionstreamrequest.py +12 -10
  38. mistralai_azure/models/contentchunk.py +6 -2
  39. mistralai_azure/models/function.py +4 -1
  40. mistralai_azure/models/imageurl.py +53 -0
  41. mistralai_azure/models/imageurlchunk.py +33 -0
  42. mistralai_azure/models/jsonschema.py +61 -0
  43. mistralai_azure/models/prediction.py +25 -0
  44. mistralai_azure/models/responseformat.py +42 -1
  45. mistralai_azure/models/responseformats.py +1 -1
  46. mistralai_azure/models/toolcall.py +3 -0
  47. mistralai_azure/sdk.py +56 -14
  48. mistralai_azure/sdkconfiguration.py +14 -6
  49. mistralai_azure/utils/__init__.py +2 -0
  50. mistralai_azure/utils/serializers.py +10 -6
  51. mistralai_azure/utils/values.py +4 -1
  52. mistralai_gcp/__init__.py +10 -1
  53. mistralai_gcp/_hooks/types.py +15 -3
  54. mistralai_gcp/_version.py +4 -1
  55. mistralai_gcp/basesdk.py +8 -0
  56. mistralai_gcp/chat.py +101 -21
  57. mistralai_gcp/fim.py +61 -21
  58. mistralai_gcp/httpclient.py +52 -0
  59. mistralai_gcp/models/__init__.py +22 -0
  60. mistralai_gcp/models/assistantmessage.py +2 -0
  61. mistralai_gcp/models/chatcompletionrequest.py +12 -10
  62. mistralai_gcp/models/chatcompletionstreamrequest.py +12 -10
  63. mistralai_gcp/models/contentchunk.py +6 -2
  64. mistralai_gcp/models/fimcompletionrequest.py +2 -3
  65. mistralai_gcp/models/fimcompletionstreamrequest.py +2 -3
  66. mistralai_gcp/models/function.py +4 -1
  67. mistralai_gcp/models/imageurl.py +53 -0
  68. mistralai_gcp/models/imageurlchunk.py +33 -0
  69. mistralai_gcp/models/jsonschema.py +61 -0
  70. mistralai_gcp/models/prediction.py +25 -0
  71. mistralai_gcp/models/responseformat.py +42 -1
  72. mistralai_gcp/models/responseformats.py +1 -1
  73. mistralai_gcp/models/toolcall.py +3 -0
  74. mistralai_gcp/sdk.py +63 -19
  75. mistralai_gcp/sdkconfiguration.py +14 -6
  76. mistralai_gcp/utils/__init__.py +2 -0
  77. mistralai_gcp/utils/serializers.py +10 -6
  78. mistralai_gcp/utils/values.py +4 -1
  79. {mistralai-1.5.2.dist-info → mistralai-1.6.0.dist-info}/LICENSE +0 -0
  80. {mistralai-1.5.2.dist-info → mistralai-1.6.0.dist-info}/WHEEL +0 -0
mistralai/classifiers.py CHANGED
@@ -40,6 +40,8 @@ class Classifiers(BaseSDK):
40
40
 
41
41
  if server_url is not None:
42
42
  base_url = server_url
43
+ else:
44
+ base_url = self._get_url(base_url, url_variables)
43
45
 
44
46
  request = models.ClassificationRequest(
45
47
  model=model,
@@ -75,6 +77,7 @@ class Classifiers(BaseSDK):
75
77
 
76
78
  http_res = self.do_request(
77
79
  hook_ctx=HookContext(
80
+ base_url=base_url or "",
78
81
  operation_id="moderations_v1_moderations_post",
79
82
  oauth2_scopes=[],
80
83
  security_source=get_security_from_env(
@@ -86,12 +89,14 @@ class Classifiers(BaseSDK):
86
89
  retry_config=retry_config,
87
90
  )
88
91
 
89
- data: Any = None
92
+ response_data: Any = None
90
93
  if utils.match_response(http_res, "200", "application/json"):
91
94
  return utils.unmarshal_json(http_res.text, models.ClassificationResponse)
92
95
  if utils.match_response(http_res, "422", "application/json"):
93
- data = utils.unmarshal_json(http_res.text, models.HTTPValidationErrorData)
94
- raise models.HTTPValidationError(data=data)
96
+ response_data = utils.unmarshal_json(
97
+ http_res.text, models.HTTPValidationErrorData
98
+ )
99
+ raise models.HTTPValidationError(data=response_data)
95
100
  if utils.match_response(http_res, "4XX", "*"):
96
101
  http_res_text = utils.stream_to_text(http_res)
97
102
  raise models.SDKError(
@@ -141,6 +146,8 @@ class Classifiers(BaseSDK):
141
146
 
142
147
  if server_url is not None:
143
148
  base_url = server_url
149
+ else:
150
+ base_url = self._get_url(base_url, url_variables)
144
151
 
145
152
  request = models.ClassificationRequest(
146
153
  model=model,
@@ -176,6 +183,7 @@ class Classifiers(BaseSDK):
176
183
 
177
184
  http_res = await self.do_request_async(
178
185
  hook_ctx=HookContext(
186
+ base_url=base_url or "",
179
187
  operation_id="moderations_v1_moderations_post",
180
188
  oauth2_scopes=[],
181
189
  security_source=get_security_from_env(
@@ -187,12 +195,14 @@ class Classifiers(BaseSDK):
187
195
  retry_config=retry_config,
188
196
  )
189
197
 
190
- data: Any = None
198
+ response_data: Any = None
191
199
  if utils.match_response(http_res, "200", "application/json"):
192
200
  return utils.unmarshal_json(http_res.text, models.ClassificationResponse)
193
201
  if utils.match_response(http_res, "422", "application/json"):
194
- data = utils.unmarshal_json(http_res.text, models.HTTPValidationErrorData)
195
- raise models.HTTPValidationError(data=data)
202
+ response_data = utils.unmarshal_json(
203
+ http_res.text, models.HTTPValidationErrorData
204
+ )
205
+ raise models.HTTPValidationError(data=response_data)
196
206
  if utils.match_response(http_res, "4XX", "*"):
197
207
  http_res_text = await utils.stream_to_text_async(http_res)
198
208
  raise models.SDKError(
@@ -227,7 +237,7 @@ class Classifiers(BaseSDK):
227
237
  timeout_ms: Optional[int] = None,
228
238
  http_headers: Optional[Mapping[str, str]] = None,
229
239
  ) -> models.ClassificationResponse:
230
- r"""Moderations Chat
240
+ r"""Chat Moderations
231
241
 
232
242
  :param model:
233
243
  :param inputs: Chat to classify
@@ -244,6 +254,8 @@ class Classifiers(BaseSDK):
244
254
 
245
255
  if server_url is not None:
246
256
  base_url = server_url
257
+ else:
258
+ base_url = self._get_url(base_url, url_variables)
247
259
 
248
260
  request = models.ChatModerationRequest(
249
261
  model=model,
@@ -280,7 +292,8 @@ class Classifiers(BaseSDK):
280
292
 
281
293
  http_res = self.do_request(
282
294
  hook_ctx=HookContext(
283
- operation_id="moderations_chat_v1_chat_moderations_post",
295
+ base_url=base_url or "",
296
+ operation_id="chat_moderations_v1_chat_moderations_post",
284
297
  oauth2_scopes=[],
285
298
  security_source=get_security_from_env(
286
299
  self.sdk_configuration.security, models.Security
@@ -291,12 +304,14 @@ class Classifiers(BaseSDK):
291
304
  retry_config=retry_config,
292
305
  )
293
306
 
294
- data: Any = None
307
+ response_data: Any = None
295
308
  if utils.match_response(http_res, "200", "application/json"):
296
309
  return utils.unmarshal_json(http_res.text, models.ClassificationResponse)
297
310
  if utils.match_response(http_res, "422", "application/json"):
298
- data = utils.unmarshal_json(http_res.text, models.HTTPValidationErrorData)
299
- raise models.HTTPValidationError(data=data)
311
+ response_data = utils.unmarshal_json(
312
+ http_res.text, models.HTTPValidationErrorData
313
+ )
314
+ raise models.HTTPValidationError(data=response_data)
300
315
  if utils.match_response(http_res, "4XX", "*"):
301
316
  http_res_text = utils.stream_to_text(http_res)
302
317
  raise models.SDKError(
@@ -331,7 +346,7 @@ class Classifiers(BaseSDK):
331
346
  timeout_ms: Optional[int] = None,
332
347
  http_headers: Optional[Mapping[str, str]] = None,
333
348
  ) -> models.ClassificationResponse:
334
- r"""Moderations Chat
349
+ r"""Chat Moderations
335
350
 
336
351
  :param model:
337
352
  :param inputs: Chat to classify
@@ -348,6 +363,8 @@ class Classifiers(BaseSDK):
348
363
 
349
364
  if server_url is not None:
350
365
  base_url = server_url
366
+ else:
367
+ base_url = self._get_url(base_url, url_variables)
351
368
 
352
369
  request = models.ChatModerationRequest(
353
370
  model=model,
@@ -384,7 +401,8 @@ class Classifiers(BaseSDK):
384
401
 
385
402
  http_res = await self.do_request_async(
386
403
  hook_ctx=HookContext(
387
- operation_id="moderations_chat_v1_chat_moderations_post",
404
+ base_url=base_url or "",
405
+ operation_id="chat_moderations_v1_chat_moderations_post",
388
406
  oauth2_scopes=[],
389
407
  security_source=get_security_from_env(
390
408
  self.sdk_configuration.security, models.Security
@@ -395,12 +413,14 @@ class Classifiers(BaseSDK):
395
413
  retry_config=retry_config,
396
414
  )
397
415
 
398
- data: Any = None
416
+ response_data: Any = None
399
417
  if utils.match_response(http_res, "200", "application/json"):
400
418
  return utils.unmarshal_json(http_res.text, models.ClassificationResponse)
401
419
  if utils.match_response(http_res, "422", "application/json"):
402
- data = utils.unmarshal_json(http_res.text, models.HTTPValidationErrorData)
403
- raise models.HTTPValidationError(data=data)
420
+ response_data = utils.unmarshal_json(
421
+ http_res.text, models.HTTPValidationErrorData
422
+ )
423
+ raise models.HTTPValidationError(data=response_data)
404
424
  if utils.match_response(http_res, "4XX", "*"):
405
425
  http_res_text = await utils.stream_to_text_async(http_res)
406
426
  raise models.SDKError(
mistralai/embeddings.py CHANGED
@@ -39,6 +39,8 @@ class Embeddings(BaseSDK):
39
39
 
40
40
  if server_url is not None:
41
41
  base_url = server_url
42
+ else:
43
+ base_url = self._get_url(base_url, url_variables)
42
44
 
43
45
  request = models.EmbeddingRequest(
44
46
  model=model,
@@ -74,6 +76,7 @@ class Embeddings(BaseSDK):
74
76
 
75
77
  http_res = self.do_request(
76
78
  hook_ctx=HookContext(
79
+ base_url=base_url or "",
77
80
  operation_id="embeddings_v1_embeddings_post",
78
81
  oauth2_scopes=[],
79
82
  security_source=get_security_from_env(
@@ -85,12 +88,14 @@ class Embeddings(BaseSDK):
85
88
  retry_config=retry_config,
86
89
  )
87
90
 
88
- data: Any = None
91
+ response_data: Any = None
89
92
  if utils.match_response(http_res, "200", "application/json"):
90
93
  return utils.unmarshal_json(http_res.text, models.EmbeddingResponse)
91
94
  if utils.match_response(http_res, "422", "application/json"):
92
- data = utils.unmarshal_json(http_res.text, models.HTTPValidationErrorData)
93
- raise models.HTTPValidationError(data=data)
95
+ response_data = utils.unmarshal_json(
96
+ http_res.text, models.HTTPValidationErrorData
97
+ )
98
+ raise models.HTTPValidationError(data=response_data)
94
99
  if utils.match_response(http_res, "4XX", "*"):
95
100
  http_res_text = utils.stream_to_text(http_res)
96
101
  raise models.SDKError(
@@ -139,6 +144,8 @@ class Embeddings(BaseSDK):
139
144
 
140
145
  if server_url is not None:
141
146
  base_url = server_url
147
+ else:
148
+ base_url = self._get_url(base_url, url_variables)
142
149
 
143
150
  request = models.EmbeddingRequest(
144
151
  model=model,
@@ -174,6 +181,7 @@ class Embeddings(BaseSDK):
174
181
 
175
182
  http_res = await self.do_request_async(
176
183
  hook_ctx=HookContext(
184
+ base_url=base_url or "",
177
185
  operation_id="embeddings_v1_embeddings_post",
178
186
  oauth2_scopes=[],
179
187
  security_source=get_security_from_env(
@@ -185,12 +193,14 @@ class Embeddings(BaseSDK):
185
193
  retry_config=retry_config,
186
194
  )
187
195
 
188
- data: Any = None
196
+ response_data: Any = None
189
197
  if utils.match_response(http_res, "200", "application/json"):
190
198
  return utils.unmarshal_json(http_res.text, models.EmbeddingResponse)
191
199
  if utils.match_response(http_res, "422", "application/json"):
192
- data = utils.unmarshal_json(http_res.text, models.HTTPValidationErrorData)
193
- raise models.HTTPValidationError(data=data)
200
+ response_data = utils.unmarshal_json(
201
+ http_res.text, models.HTTPValidationErrorData
202
+ )
203
+ raise models.HTTPValidationError(data=response_data)
194
204
  if utils.match_response(http_res, "4XX", "*"):
195
205
  http_res_text = await utils.stream_to_text_async(http_res)
196
206
  raise models.SDKError(
mistralai/files.py CHANGED
@@ -44,6 +44,8 @@ class Files(BaseSDK):
44
44
 
45
45
  if server_url is not None:
46
46
  base_url = server_url
47
+ else:
48
+ base_url = self._get_url(base_url, url_variables)
47
49
 
48
50
  request = models.FilesAPIRoutesUploadFileMultiPartBodyParams(
49
51
  file=utils.get_pydantic_model(file, models.File),
@@ -83,6 +85,7 @@ class Files(BaseSDK):
83
85
 
84
86
  http_res = self.do_request(
85
87
  hook_ctx=HookContext(
88
+ base_url=base_url or "",
86
89
  operation_id="files_api_routes_upload_file",
87
90
  oauth2_scopes=[],
88
91
  security_source=get_security_from_env(
@@ -148,6 +151,8 @@ class Files(BaseSDK):
148
151
 
149
152
  if server_url is not None:
150
153
  base_url = server_url
154
+ else:
155
+ base_url = self._get_url(base_url, url_variables)
151
156
 
152
157
  request = models.FilesAPIRoutesUploadFileMultiPartBodyParams(
153
158
  file=utils.get_pydantic_model(file, models.File),
@@ -187,6 +192,7 @@ class Files(BaseSDK):
187
192
 
188
193
  http_res = await self.do_request_async(
189
194
  hook_ctx=HookContext(
195
+ base_url=base_url or "",
190
196
  operation_id="files_api_routes_upload_file",
191
197
  oauth2_scopes=[],
192
198
  security_source=get_security_from_env(
@@ -256,6 +262,8 @@ class Files(BaseSDK):
256
262
 
257
263
  if server_url is not None:
258
264
  base_url = server_url
265
+ else:
266
+ base_url = self._get_url(base_url, url_variables)
259
267
 
260
268
  request = models.FilesAPIRoutesListFilesRequest(
261
269
  page=page,
@@ -292,6 +300,7 @@ class Files(BaseSDK):
292
300
 
293
301
  http_res = self.do_request(
294
302
  hook_ctx=HookContext(
303
+ base_url=base_url or "",
295
304
  operation_id="files_api_routes_list_files",
296
305
  oauth2_scopes=[],
297
306
  security_source=get_security_from_env(
@@ -361,6 +370,8 @@ class Files(BaseSDK):
361
370
 
362
371
  if server_url is not None:
363
372
  base_url = server_url
373
+ else:
374
+ base_url = self._get_url(base_url, url_variables)
364
375
 
365
376
  request = models.FilesAPIRoutesListFilesRequest(
366
377
  page=page,
@@ -397,6 +408,7 @@ class Files(BaseSDK):
397
408
 
398
409
  http_res = await self.do_request_async(
399
410
  hook_ctx=HookContext(
411
+ base_url=base_url or "",
400
412
  operation_id="files_api_routes_list_files",
401
413
  oauth2_scopes=[],
402
414
  security_source=get_security_from_env(
@@ -456,6 +468,8 @@ class Files(BaseSDK):
456
468
 
457
469
  if server_url is not None:
458
470
  base_url = server_url
471
+ else:
472
+ base_url = self._get_url(base_url, url_variables)
459
473
 
460
474
  request = models.FilesAPIRoutesRetrieveFileRequest(
461
475
  file_id=file_id,
@@ -487,6 +501,7 @@ class Files(BaseSDK):
487
501
 
488
502
  http_res = self.do_request(
489
503
  hook_ctx=HookContext(
504
+ base_url=base_url or "",
490
505
  operation_id="files_api_routes_retrieve_file",
491
506
  oauth2_scopes=[],
492
507
  security_source=get_security_from_env(
@@ -546,6 +561,8 @@ class Files(BaseSDK):
546
561
 
547
562
  if server_url is not None:
548
563
  base_url = server_url
564
+ else:
565
+ base_url = self._get_url(base_url, url_variables)
549
566
 
550
567
  request = models.FilesAPIRoutesRetrieveFileRequest(
551
568
  file_id=file_id,
@@ -577,6 +594,7 @@ class Files(BaseSDK):
577
594
 
578
595
  http_res = await self.do_request_async(
579
596
  hook_ctx=HookContext(
597
+ base_url=base_url or "",
580
598
  operation_id="files_api_routes_retrieve_file",
581
599
  oauth2_scopes=[],
582
600
  security_source=get_security_from_env(
@@ -636,6 +654,8 @@ class Files(BaseSDK):
636
654
 
637
655
  if server_url is not None:
638
656
  base_url = server_url
657
+ else:
658
+ base_url = self._get_url(base_url, url_variables)
639
659
 
640
660
  request = models.FilesAPIRoutesDeleteFileRequest(
641
661
  file_id=file_id,
@@ -667,6 +687,7 @@ class Files(BaseSDK):
667
687
 
668
688
  http_res = self.do_request(
669
689
  hook_ctx=HookContext(
690
+ base_url=base_url or "",
670
691
  operation_id="files_api_routes_delete_file",
671
692
  oauth2_scopes=[],
672
693
  security_source=get_security_from_env(
@@ -726,6 +747,8 @@ class Files(BaseSDK):
726
747
 
727
748
  if server_url is not None:
728
749
  base_url = server_url
750
+ else:
751
+ base_url = self._get_url(base_url, url_variables)
729
752
 
730
753
  request = models.FilesAPIRoutesDeleteFileRequest(
731
754
  file_id=file_id,
@@ -757,6 +780,7 @@ class Files(BaseSDK):
757
780
 
758
781
  http_res = await self.do_request_async(
759
782
  hook_ctx=HookContext(
783
+ base_url=base_url or "",
760
784
  operation_id="files_api_routes_delete_file",
761
785
  oauth2_scopes=[],
762
786
  security_source=get_security_from_env(
@@ -816,6 +840,8 @@ class Files(BaseSDK):
816
840
 
817
841
  if server_url is not None:
818
842
  base_url = server_url
843
+ else:
844
+ base_url = self._get_url(base_url, url_variables)
819
845
 
820
846
  request = models.FilesAPIRoutesDownloadFileRequest(
821
847
  file_id=file_id,
@@ -847,6 +873,7 @@ class Files(BaseSDK):
847
873
 
848
874
  http_res = self.do_request(
849
875
  hook_ctx=HookContext(
876
+ base_url=base_url or "",
850
877
  operation_id="files_api_routes_download_file",
851
878
  oauth2_scopes=[],
852
879
  security_source=get_security_from_env(
@@ -907,6 +934,8 @@ class Files(BaseSDK):
907
934
 
908
935
  if server_url is not None:
909
936
  base_url = server_url
937
+ else:
938
+ base_url = self._get_url(base_url, url_variables)
910
939
 
911
940
  request = models.FilesAPIRoutesDownloadFileRequest(
912
941
  file_id=file_id,
@@ -938,6 +967,7 @@ class Files(BaseSDK):
938
967
 
939
968
  http_res = await self.do_request_async(
940
969
  hook_ctx=HookContext(
970
+ base_url=base_url or "",
941
971
  operation_id="files_api_routes_download_file",
942
972
  oauth2_scopes=[],
943
973
  security_source=get_security_from_env(
@@ -998,6 +1028,8 @@ class Files(BaseSDK):
998
1028
 
999
1029
  if server_url is not None:
1000
1030
  base_url = server_url
1031
+ else:
1032
+ base_url = self._get_url(base_url, url_variables)
1001
1033
 
1002
1034
  request = models.FilesAPIRoutesGetSignedURLRequest(
1003
1035
  file_id=file_id,
@@ -1030,6 +1062,7 @@ class Files(BaseSDK):
1030
1062
 
1031
1063
  http_res = self.do_request(
1032
1064
  hook_ctx=HookContext(
1065
+ base_url=base_url or "",
1033
1066
  operation_id="files_api_routes_get_signed_url",
1034
1067
  oauth2_scopes=[],
1035
1068
  security_source=get_security_from_env(
@@ -1089,6 +1122,8 @@ class Files(BaseSDK):
1089
1122
 
1090
1123
  if server_url is not None:
1091
1124
  base_url = server_url
1125
+ else:
1126
+ base_url = self._get_url(base_url, url_variables)
1092
1127
 
1093
1128
  request = models.FilesAPIRoutesGetSignedURLRequest(
1094
1129
  file_id=file_id,
@@ -1121,6 +1156,7 @@ class Files(BaseSDK):
1121
1156
 
1122
1157
  http_res = await self.do_request_async(
1123
1158
  hook_ctx=HookContext(
1159
+ base_url=base_url or "",
1124
1160
  operation_id="files_api_routes_get_signed_url",
1125
1161
  oauth2_scopes=[],
1126
1162
  security_source=get_security_from_env(
mistralai/fim.py CHANGED
@@ -60,6 +60,8 @@ class Fim(BaseSDK):
60
60
 
61
61
  if server_url is not None:
62
62
  base_url = server_url
63
+ else:
64
+ base_url = self._get_url(base_url, url_variables)
63
65
 
64
66
  request = models.FIMCompletionRequest(
65
67
  model=model,
@@ -103,6 +105,7 @@ class Fim(BaseSDK):
103
105
 
104
106
  http_res = self.do_request(
105
107
  hook_ctx=HookContext(
108
+ base_url=base_url or "",
106
109
  operation_id="fim_completion_v1_fim_completions_post",
107
110
  oauth2_scopes=[],
108
111
  security_source=get_security_from_env(
@@ -114,12 +117,14 @@ class Fim(BaseSDK):
114
117
  retry_config=retry_config,
115
118
  )
116
119
 
117
- data: Any = None
120
+ response_data: Any = None
118
121
  if utils.match_response(http_res, "200", "application/json"):
119
122
  return utils.unmarshal_json(http_res.text, models.FIMCompletionResponse)
120
123
  if utils.match_response(http_res, "422", "application/json"):
121
- data = utils.unmarshal_json(http_res.text, models.HTTPValidationErrorData)
122
- raise models.HTTPValidationError(data=data)
124
+ response_data = utils.unmarshal_json(
125
+ http_res.text, models.HTTPValidationErrorData
126
+ )
127
+ raise models.HTTPValidationError(data=response_data)
123
128
  if utils.match_response(http_res, "4XX", "*"):
124
129
  http_res_text = utils.stream_to_text(http_res)
125
130
  raise models.SDKError(
@@ -189,6 +194,8 @@ class Fim(BaseSDK):
189
194
 
190
195
  if server_url is not None:
191
196
  base_url = server_url
197
+ else:
198
+ base_url = self._get_url(base_url, url_variables)
192
199
 
193
200
  request = models.FIMCompletionRequest(
194
201
  model=model,
@@ -232,6 +239,7 @@ class Fim(BaseSDK):
232
239
 
233
240
  http_res = await self.do_request_async(
234
241
  hook_ctx=HookContext(
242
+ base_url=base_url or "",
235
243
  operation_id="fim_completion_v1_fim_completions_post",
236
244
  oauth2_scopes=[],
237
245
  security_source=get_security_from_env(
@@ -243,12 +251,14 @@ class Fim(BaseSDK):
243
251
  retry_config=retry_config,
244
252
  )
245
253
 
246
- data: Any = None
254
+ response_data: Any = None
247
255
  if utils.match_response(http_res, "200", "application/json"):
248
256
  return utils.unmarshal_json(http_res.text, models.FIMCompletionResponse)
249
257
  if utils.match_response(http_res, "422", "application/json"):
250
- data = utils.unmarshal_json(http_res.text, models.HTTPValidationErrorData)
251
- raise models.HTTPValidationError(data=data)
258
+ response_data = utils.unmarshal_json(
259
+ http_res.text, models.HTTPValidationErrorData
260
+ )
261
+ raise models.HTTPValidationError(data=response_data)
252
262
  if utils.match_response(http_res, "4XX", "*"):
253
263
  http_res_text = await utils.stream_to_text_async(http_res)
254
264
  raise models.SDKError(
@@ -318,6 +328,8 @@ class Fim(BaseSDK):
318
328
 
319
329
  if server_url is not None:
320
330
  base_url = server_url
331
+ else:
332
+ base_url = self._get_url(base_url, url_variables)
321
333
 
322
334
  request = models.FIMCompletionStreamRequest(
323
335
  model=model,
@@ -361,6 +373,7 @@ class Fim(BaseSDK):
361
373
 
362
374
  http_res = self.do_request(
363
375
  hook_ctx=HookContext(
376
+ base_url=base_url or "",
364
377
  operation_id="stream_fim",
365
378
  oauth2_scopes=[],
366
379
  security_source=get_security_from_env(
@@ -373,7 +386,7 @@ class Fim(BaseSDK):
373
386
  retry_config=retry_config,
374
387
  )
375
388
 
376
- data: Any = None
389
+ response_data: Any = None
377
390
  if utils.match_response(http_res, "200", "text/event-stream"):
378
391
  return eventstreaming.EventStream(
379
392
  http_res,
@@ -382,8 +395,10 @@ class Fim(BaseSDK):
382
395
  )
383
396
  if utils.match_response(http_res, "422", "application/json"):
384
397
  http_res_text = utils.stream_to_text(http_res)
385
- data = utils.unmarshal_json(http_res_text, models.HTTPValidationErrorData)
386
- raise models.HTTPValidationError(data=data)
398
+ response_data = utils.unmarshal_json(
399
+ http_res_text, models.HTTPValidationErrorData
400
+ )
401
+ raise models.HTTPValidationError(data=response_data)
387
402
  if utils.match_response(http_res, "4XX", "*"):
388
403
  http_res_text = utils.stream_to_text(http_res)
389
404
  raise models.SDKError(
@@ -453,6 +468,8 @@ class Fim(BaseSDK):
453
468
 
454
469
  if server_url is not None:
455
470
  base_url = server_url
471
+ else:
472
+ base_url = self._get_url(base_url, url_variables)
456
473
 
457
474
  request = models.FIMCompletionStreamRequest(
458
475
  model=model,
@@ -496,6 +513,7 @@ class Fim(BaseSDK):
496
513
 
497
514
  http_res = await self.do_request_async(
498
515
  hook_ctx=HookContext(
516
+ base_url=base_url or "",
499
517
  operation_id="stream_fim",
500
518
  oauth2_scopes=[],
501
519
  security_source=get_security_from_env(
@@ -508,7 +526,7 @@ class Fim(BaseSDK):
508
526
  retry_config=retry_config,
509
527
  )
510
528
 
511
- data: Any = None
529
+ response_data: Any = None
512
530
  if utils.match_response(http_res, "200", "text/event-stream"):
513
531
  return eventstreaming.EventStreamAsync(
514
532
  http_res,
@@ -517,8 +535,10 @@ class Fim(BaseSDK):
517
535
  )
518
536
  if utils.match_response(http_res, "422", "application/json"):
519
537
  http_res_text = await utils.stream_to_text_async(http_res)
520
- data = utils.unmarshal_json(http_res_text, models.HTTPValidationErrorData)
521
- raise models.HTTPValidationError(data=data)
538
+ response_data = utils.unmarshal_json(
539
+ http_res_text, models.HTTPValidationErrorData
540
+ )
541
+ raise models.HTTPValidationError(data=response_data)
522
542
  if utils.match_response(http_res, "4XX", "*"):
523
543
  http_res_text = await utils.stream_to_text_async(http_res)
524
544
  raise models.SDKError(
mistralai/httpclient.py CHANGED
@@ -94,7 +94,9 @@ class ClientOwner(Protocol):
94
94
  def close_clients(
95
95
  owner: ClientOwner,
96
96
  sync_client: Union[HttpClient, None],
97
+ sync_client_supplied: bool,
97
98
  async_client: Union[AsyncHttpClient, None],
99
+ async_client_supplied: bool,
98
100
  ) -> None:
99
101
  """
100
102
  A finalizer function that is meant to be used with weakref.finalize to close
@@ -107,13 +109,13 @@ def close_clients(
107
109
  owner.client = None
108
110
  owner.async_client = None
109
111
 
110
- if sync_client is not None:
112
+ if sync_client is not None and not sync_client_supplied:
111
113
  try:
112
114
  sync_client.close()
113
115
  except Exception:
114
116
  pass
115
117
 
116
- if async_client is not None:
118
+ if async_client is not None and not async_client_supplied:
117
119
  is_async = False
118
120
  try:
119
121
  asyncio.get_running_loop()