mixpeek 0.6.8__py3-none-any.whl → 0.6.10__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 (85) hide show
  1. mixpeek/__init__.py +1 -106
  2. mixpeek/client.py +21 -65
  3. mixpeek/endpoints/connections.py +16 -0
  4. mixpeek/endpoints/embed.py +50 -0
  5. mixpeek/endpoints/extract.py +16 -0
  6. mixpeek/endpoints/generate.py +17 -0
  7. mixpeek/endpoints/tools.py +23 -0
  8. mixpeek/exceptions.py +13 -0
  9. mixpeek-0.6.10.dist-info/METADATA +68 -0
  10. mixpeek-0.6.10.dist-info/RECORD +13 -0
  11. {mixpeek-0.6.8.dist-info → mixpeek-0.6.10.dist-info}/WHEEL +2 -1
  12. mixpeek-0.6.10.dist-info/top_level.txt +1 -0
  13. mixpeek/base_client.py +0 -1015
  14. mixpeek/core/__init__.py +0 -27
  15. mixpeek/core/api_error.py +0 -15
  16. mixpeek/core/client_wrapper.py +0 -83
  17. mixpeek/core/datetime_utils.py +0 -28
  18. mixpeek/core/file.py +0 -38
  19. mixpeek/core/http_client.py +0 -130
  20. mixpeek/core/jsonable_encoder.py +0 -99
  21. mixpeek/core/pydantic_utilities.py +0 -12
  22. mixpeek/core/remove_none_from_dict.py +0 -11
  23. mixpeek/core/request_options.py +0 -32
  24. mixpeek/environment.py +0 -7
  25. mixpeek/errors/__init__.py +0 -17
  26. mixpeek/errors/bad_request_error.py +0 -9
  27. mixpeek/errors/forbidden_error.py +0 -9
  28. mixpeek/errors/internal_server_error.py +0 -9
  29. mixpeek/errors/not_found_error.py +0 -9
  30. mixpeek/errors/unauthorized_error.py +0 -9
  31. mixpeek/errors/unprocessable_entity_error.py +0 -9
  32. mixpeek/pipeline/__init__.py +0 -2
  33. mixpeek/pipeline/client.py +0 -482
  34. mixpeek/storage/__init__.py +0 -5
  35. mixpeek/storage/client.py +0 -145
  36. mixpeek/storage/sample/__init__.py +0 -2
  37. mixpeek/storage/sample/client.py +0 -286
  38. mixpeek/types/__init__.py +0 -81
  39. mixpeek/types/api_key.py +0 -27
  40. mixpeek/types/audio_params.py +0 -25
  41. mixpeek/types/configs_response.py +0 -38
  42. mixpeek/types/connection.py +0 -32
  43. mixpeek/types/connection_engine.py +0 -5
  44. mixpeek/types/csv_params.py +0 -25
  45. mixpeek/types/destination.py +0 -38
  46. mixpeek/types/embedding_response.py +0 -30
  47. mixpeek/types/error_message.py +0 -25
  48. mixpeek/types/error_response.py +0 -26
  49. mixpeek/types/extract_response.py +0 -31
  50. mixpeek/types/field_type.py +0 -5
  51. mixpeek/types/generation_response.py +0 -32
  52. mixpeek/types/html_params.py +0 -25
  53. mixpeek/types/http_validation_error.py +0 -26
  54. mixpeek/types/image_params.py +0 -28
  55. mixpeek/types/message.py +0 -33
  56. mixpeek/types/metadata.py +0 -28
  57. mixpeek/types/modality.py +0 -5
  58. mixpeek/types/model.py +0 -34
  59. mixpeek/types/models.py +0 -5
  60. mixpeek/types/pdf_params.py +0 -37
  61. mixpeek/types/pipeline_response.py +0 -45
  62. mixpeek/types/pipeline_task_response.py +0 -28
  63. mixpeek/types/ppt_params.py +0 -23
  64. mixpeek/types/pptx_params.py +0 -23
  65. mixpeek/types/settings.py +0 -31
  66. mixpeek/types/source.py +0 -39
  67. mixpeek/types/source_destination_mapping.py +0 -40
  68. mixpeek/types/txt_params.py +0 -23
  69. mixpeek/types/user.py +0 -32
  70. mixpeek/types/validation_error.py +0 -28
  71. mixpeek/types/validation_error_loc_item.py +0 -5
  72. mixpeek/types/video_params.py +0 -23
  73. mixpeek/types/workflow_code_response.py +0 -25
  74. mixpeek/types/workflow_response.py +0 -28
  75. mixpeek/types/workflow_settings.py +0 -26
  76. mixpeek/types/xlsx_params.py +0 -25
  77. mixpeek/user/__init__.py +0 -2
  78. mixpeek/user/client.py +0 -312
  79. mixpeek/version.py +0 -4
  80. mixpeek/workflow/__init__.py +0 -2
  81. mixpeek/workflow/client.py +0 -543
  82. mixpeek-0.6.8.dist-info/LICENSE +0 -21
  83. mixpeek-0.6.8.dist-info/METADATA +0 -145
  84. mixpeek-0.6.8.dist-info/RECORD +0 -76
  85. /mixpeek/{py.typed → endpoints/__init__.py} +0 -0
mixpeek/base_client.py DELETED
@@ -1,1015 +0,0 @@
1
- # This file was auto-generated by Fern from our API Definition.
2
-
3
- import os
4
- import typing
5
- import urllib.parse
6
- from json.decoder import JSONDecodeError
7
-
8
- import httpx
9
-
10
- from .core.api_error import ApiError
11
- from .core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
12
- from .core.jsonable_encoder import jsonable_encoder
13
- from .core.pydantic_utilities import pydantic_v1
14
- from .core.remove_none_from_dict import remove_none_from_dict
15
- from .core.request_options import RequestOptions
16
- from .environment import MixpeekEnvironment
17
- from .errors.bad_request_error import BadRequestError
18
- from .errors.forbidden_error import ForbiddenError
19
- from .errors.internal_server_error import InternalServerError
20
- from .errors.not_found_error import NotFoundError
21
- from .errors.unauthorized_error import UnauthorizedError
22
- from .errors.unprocessable_entity_error import UnprocessableEntityError
23
- from .pipeline.client import AsyncPipelineClient, PipelineClient
24
- from .storage.client import AsyncStorageClient, StorageClient
25
- from .types.audio_params import AudioParams
26
- from .types.configs_response import ConfigsResponse
27
- from .types.csv_params import CsvParams
28
- from .types.embedding_response import EmbeddingResponse
29
- from .types.error_response import ErrorResponse
30
- from .types.extract_response import ExtractResponse
31
- from .types.generation_response import GenerationResponse
32
- from .types.html_params import HtmlParams
33
- from .types.http_validation_error import HttpValidationError
34
- from .types.image_params import ImageParams
35
- from .types.message import Message
36
- from .types.modality import Modality
37
- from .types.model import Model
38
- from .types.models import Models
39
- from .types.pdf_params import PdfParams
40
- from .types.ppt_params import PptParams
41
- from .types.pptx_params import PptxParams
42
- from .types.settings import Settings
43
- from .types.txt_params import TxtParams
44
- from .types.video_params import VideoParams
45
- from .types.xlsx_params import XlsxParams
46
- from .user.client import AsyncUserClient, UserClient
47
- from .workflow.client import AsyncWorkflowClient, WorkflowClient
48
-
49
- # this is used as the default value for optional parameters
50
- OMIT = typing.cast(typing.Any, ...)
51
-
52
-
53
- class BaseMixpeek:
54
- """
55
- Use this class to access the different functions within the SDK. You can instantiate any number of clients with different configuration that will propogate to these functions.
56
-
57
- Parameters:
58
- - base_url: typing.Optional[str]. The base url to use for requests from the client.
59
-
60
- - environment: MixpeekEnvironment. The environment to use for requests from the client. from .environment import MixpeekEnvironment
61
-
62
- Defaults to MixpeekEnvironment.DEFAULT
63
-
64
- - authorization: typing.Optional[str].
65
-
66
- - index_id: typing.Optional[str].
67
-
68
- - api_key: typing.Optional[typing.Union[str, typing.Callable[[], str]]].
69
-
70
- - timeout: typing.Optional[float]. The timeout to be used, in seconds, for requests by default the timeout is 60 seconds, unless a custom httpx client is used, in which case a default is not set.
71
-
72
- - follow_redirects: typing.Optional[bool]. Whether the default httpx client follows redirects or not, this is irrelevant if a custom httpx client is passed in.
73
-
74
- - httpx_client: typing.Optional[httpx.Client]. The httpx client to use for making requests, a preconfigured client is used by default, however this is useful should you want to pass in any custom httpx configuration.
75
- ---
76
- from mixpeek.client import Mixpeek
77
-
78
- client = Mixpeek(
79
- authorization="YOUR_AUTHORIZATION",
80
- index_id="YOUR_INDEX_ID",
81
- api_key="YOUR_API_KEY",
82
- )
83
- """
84
-
85
- def __init__(
86
- self,
87
- *,
88
- base_url: typing.Optional[str] = None,
89
- environment: MixpeekEnvironment = MixpeekEnvironment.DEFAULT,
90
- authorization: typing.Optional[str] = None,
91
- index_id: typing.Optional[str] = None,
92
- api_key: typing.Optional[typing.Union[str, typing.Callable[[], str]]] = os.getenv("MIXPEEK_API_KEY"),
93
- timeout: typing.Optional[float] = None,
94
- follow_redirects: typing.Optional[bool] = True,
95
- httpx_client: typing.Optional[httpx.Client] = None,
96
- ):
97
- _defaulted_timeout = timeout if timeout is not None else 60 if httpx_client is None else None
98
- if api_key is None:
99
- raise ApiError(
100
- body="The client must be instantiated be either passing in api_key or setting MIXPEEK_API_KEY"
101
- )
102
- self._client_wrapper = SyncClientWrapper(
103
- base_url=_get_base_url(base_url=base_url, environment=environment),
104
- authorization=authorization,
105
- index_id=index_id,
106
- api_key=api_key,
107
- httpx_client=httpx_client
108
- if httpx_client is not None
109
- else httpx.Client(timeout=_defaulted_timeout, follow_redirects=follow_redirects)
110
- if follow_redirects is not None
111
- else httpx.Client(timeout=_defaulted_timeout),
112
- timeout=_defaulted_timeout,
113
- )
114
- self.user = UserClient(client_wrapper=self._client_wrapper)
115
- self.pipeline = PipelineClient(client_wrapper=self._client_wrapper)
116
- self.workflow = WorkflowClient(client_wrapper=self._client_wrapper)
117
- self.storage = StorageClient(client_wrapper=self._client_wrapper)
118
-
119
- def extract(
120
- self,
121
- *,
122
- file_url: typing.Optional[str] = OMIT,
123
- contents: typing.Optional[str] = OMIT,
124
- should_chunk: typing.Optional[bool] = OMIT,
125
- clean_text: typing.Optional[bool] = OMIT,
126
- max_characters_per_chunk: typing.Optional[int] = OMIT,
127
- extract_tags: typing.Optional[bool] = OMIT,
128
- summarize: typing.Optional[bool] = OMIT,
129
- pdf_settings: typing.Optional[PdfParams] = OMIT,
130
- html_settings: typing.Optional[HtmlParams] = OMIT,
131
- csv_settings: typing.Optional[CsvParams] = OMIT,
132
- ppt_settings: typing.Optional[PptParams] = OMIT,
133
- pptx_settings: typing.Optional[PptxParams] = OMIT,
134
- xlsx_settings: typing.Optional[XlsxParams] = OMIT,
135
- txt_settings: typing.Optional[TxtParams] = OMIT,
136
- audio_settings: typing.Optional[AudioParams] = OMIT,
137
- image_settings: typing.Optional[ImageParams] = OMIT,
138
- video_settings: typing.Optional[VideoParams] = OMIT,
139
- request_options: typing.Optional[RequestOptions] = None,
140
- ) -> ExtractResponse:
141
- """
142
- Parameters:
143
- - file_url: typing.Optional[str].
144
-
145
- - contents: typing.Optional[str].
146
-
147
- - should_chunk: typing.Optional[bool].
148
-
149
- - clean_text: typing.Optional[bool].
150
-
151
- - max_characters_per_chunk: typing.Optional[int].
152
-
153
- - extract_tags: typing.Optional[bool].
154
-
155
- - summarize: typing.Optional[bool].
156
-
157
- - pdf_settings: typing.Optional[PdfParams].
158
-
159
- - html_settings: typing.Optional[HtmlParams].
160
-
161
- - csv_settings: typing.Optional[CsvParams].
162
-
163
- - ppt_settings: typing.Optional[PptParams].
164
-
165
- - pptx_settings: typing.Optional[PptxParams].
166
-
167
- - xlsx_settings: typing.Optional[XlsxParams].
168
-
169
- - txt_settings: typing.Optional[TxtParams].
170
-
171
- - audio_settings: typing.Optional[AudioParams].
172
-
173
- - image_settings: typing.Optional[ImageParams].
174
-
175
- - video_settings: typing.Optional[VideoParams].
176
-
177
- - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
178
- ---
179
- from mixpeek.client import Mixpeek
180
-
181
- client = Mixpeek(
182
- authorization="YOUR_AUTHORIZATION",
183
- index_id="YOUR_INDEX_ID",
184
- api_key="YOUR_API_KEY",
185
- )
186
- client.extract()
187
- """
188
- _request: typing.Dict[str, typing.Any] = {}
189
- if file_url is not OMIT:
190
- _request["file_url"] = file_url
191
- if contents is not OMIT:
192
- _request["contents"] = contents
193
- if should_chunk is not OMIT:
194
- _request["should_chunk"] = should_chunk
195
- if clean_text is not OMIT:
196
- _request["clean_text"] = clean_text
197
- if max_characters_per_chunk is not OMIT:
198
- _request["max_characters_per_chunk"] = max_characters_per_chunk
199
- if extract_tags is not OMIT:
200
- _request["extract_tags"] = extract_tags
201
- if summarize is not OMIT:
202
- _request["summarize"] = summarize
203
- if pdf_settings is not OMIT:
204
- _request["pdf_settings"] = pdf_settings
205
- if html_settings is not OMIT:
206
- _request["html_settings"] = html_settings
207
- if csv_settings is not OMIT:
208
- _request["csv_settings"] = csv_settings
209
- if ppt_settings is not OMIT:
210
- _request["ppt_settings"] = ppt_settings
211
- if pptx_settings is not OMIT:
212
- _request["pptx_settings"] = pptx_settings
213
- if xlsx_settings is not OMIT:
214
- _request["xlsx_settings"] = xlsx_settings
215
- if txt_settings is not OMIT:
216
- _request["txt_settings"] = txt_settings
217
- if audio_settings is not OMIT:
218
- _request["audio_settings"] = audio_settings
219
- if image_settings is not OMIT:
220
- _request["image_settings"] = image_settings
221
- if video_settings is not OMIT:
222
- _request["video_settings"] = video_settings
223
- _response = self._client_wrapper.httpx_client.request(
224
- "POST",
225
- urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "extract"),
226
- params=jsonable_encoder(
227
- request_options.get("additional_query_parameters") if request_options is not None else None
228
- ),
229
- json=jsonable_encoder(_request)
230
- if request_options is None or request_options.get("additional_body_parameters") is None
231
- else {
232
- **jsonable_encoder(_request),
233
- **(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
234
- },
235
- headers=jsonable_encoder(
236
- remove_none_from_dict(
237
- {
238
- **self._client_wrapper.get_headers(),
239
- **(request_options.get("additional_headers", {}) if request_options is not None else {}),
240
- }
241
- )
242
- ),
243
- timeout=request_options.get("timeout_in_seconds")
244
- if request_options is not None and request_options.get("timeout_in_seconds") is not None
245
- else self._client_wrapper.get_timeout(),
246
- retries=0,
247
- max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
248
- )
249
- if 200 <= _response.status_code < 300:
250
- return pydantic_v1.parse_obj_as(ExtractResponse, _response.json()) # type: ignore
251
- if _response.status_code == 400:
252
- raise BadRequestError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
253
- if _response.status_code == 401:
254
- raise UnauthorizedError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
255
- if _response.status_code == 403:
256
- raise ForbiddenError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
257
- if _response.status_code == 404:
258
- raise NotFoundError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
259
- if _response.status_code == 422:
260
- raise UnprocessableEntityError(
261
- pydantic_v1.parse_obj_as(HttpValidationError, _response.json()) # type: ignore
262
- )
263
- if _response.status_code == 500:
264
- raise InternalServerError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
265
- try:
266
- _response_json = _response.json()
267
- except JSONDecodeError:
268
- raise ApiError(status_code=_response.status_code, body=_response.text)
269
- raise ApiError(status_code=_response.status_code, body=_response_json)
270
-
271
- def base_generate(
272
- self,
273
- *,
274
- model: Model,
275
- response_format: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
276
- context: typing.Optional[str] = OMIT,
277
- messages: typing.Sequence[Message],
278
- settings: typing.Optional[Settings] = OMIT,
279
- request_options: typing.Optional[RequestOptions] = None,
280
- ) -> GenerationResponse:
281
- """
282
- Parameters:
283
- - model: Model. The model to be used.
284
-
285
- - response_format: typing.Optional[typing.Dict[str, typing.Any]].
286
-
287
- - context: typing.Optional[str].
288
-
289
- - messages: typing.Sequence[Message]. The messages for the generation.
290
-
291
- - settings: typing.Optional[Settings].
292
-
293
- - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
294
- ---
295
- from mixpeek import Message, Model
296
- from mixpeek.client import Mixpeek
297
-
298
- client = Mixpeek(
299
- authorization="YOUR_AUTHORIZATION",
300
- index_id="YOUR_INDEX_ID",
301
- api_key="YOUR_API_KEY",
302
- )
303
- client.base_generate(
304
- model=Model(
305
- provider="provider",
306
- model="gpt-3.5-turbo",
307
- ),
308
- messages=[
309
- Message(
310
- role="role",
311
- content="content",
312
- )
313
- ],
314
- )
315
- """
316
- _request: typing.Dict[str, typing.Any] = {"model": model, "messages": messages}
317
- if response_format is not OMIT:
318
- _request["response_format"] = response_format
319
- if context is not OMIT:
320
- _request["context"] = context
321
- if settings is not OMIT:
322
- _request["settings"] = settings
323
- _response = self._client_wrapper.httpx_client.request(
324
- "POST",
325
- urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "generate/text"),
326
- params=jsonable_encoder(
327
- request_options.get("additional_query_parameters") if request_options is not None else None
328
- ),
329
- json=jsonable_encoder(_request)
330
- if request_options is None or request_options.get("additional_body_parameters") is None
331
- else {
332
- **jsonable_encoder(_request),
333
- **(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
334
- },
335
- headers=jsonable_encoder(
336
- remove_none_from_dict(
337
- {
338
- **self._client_wrapper.get_headers(),
339
- **(request_options.get("additional_headers", {}) if request_options is not None else {}),
340
- }
341
- )
342
- ),
343
- timeout=request_options.get("timeout_in_seconds")
344
- if request_options is not None and request_options.get("timeout_in_seconds") is not None
345
- else self._client_wrapper.get_timeout(),
346
- retries=0,
347
- max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
348
- )
349
- if 200 <= _response.status_code < 300:
350
- return pydantic_v1.parse_obj_as(GenerationResponse, _response.json()) # type: ignore
351
- if _response.status_code == 400:
352
- raise BadRequestError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
353
- if _response.status_code == 401:
354
- raise UnauthorizedError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
355
- if _response.status_code == 403:
356
- raise ForbiddenError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
357
- if _response.status_code == 404:
358
- raise NotFoundError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
359
- if _response.status_code == 422:
360
- raise UnprocessableEntityError(
361
- pydantic_v1.parse_obj_as(HttpValidationError, _response.json()) # type: ignore
362
- )
363
- if _response.status_code == 500:
364
- raise InternalServerError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
365
- try:
366
- _response_json = _response.json()
367
- except JSONDecodeError:
368
- raise ApiError(status_code=_response.status_code, body=_response.text)
369
- raise ApiError(status_code=_response.status_code, body=_response_json)
370
-
371
- def get_model_config(
372
- self,
373
- *,
374
- modality: typing.Optional[Modality] = OMIT,
375
- model: typing.Optional[Models] = OMIT,
376
- request_options: typing.Optional[RequestOptions] = None,
377
- ) -> ConfigsResponse:
378
- """
379
- Parameters:
380
- - modality: typing.Optional[Modality].
381
-
382
- - model: typing.Optional[Models].
383
-
384
- - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
385
- ---
386
- from mixpeek.client import Mixpeek
387
-
388
- client = Mixpeek(
389
- authorization="YOUR_AUTHORIZATION",
390
- index_id="YOUR_INDEX_ID",
391
- api_key="YOUR_API_KEY",
392
- )
393
- client.get_model_config()
394
- """
395
- _request: typing.Dict[str, typing.Any] = {}
396
- if modality is not OMIT:
397
- _request["modality"] = modality
398
- if model is not OMIT:
399
- _request["model"] = model
400
- _response = self._client_wrapper.httpx_client.request(
401
- "POST",
402
- urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "embed/config"),
403
- params=jsonable_encoder(
404
- request_options.get("additional_query_parameters") if request_options is not None else None
405
- ),
406
- json=jsonable_encoder(_request)
407
- if request_options is None or request_options.get("additional_body_parameters") is None
408
- else {
409
- **jsonable_encoder(_request),
410
- **(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
411
- },
412
- headers=jsonable_encoder(
413
- remove_none_from_dict(
414
- {
415
- **self._client_wrapper.get_headers(),
416
- **(request_options.get("additional_headers", {}) if request_options is not None else {}),
417
- }
418
- )
419
- ),
420
- timeout=request_options.get("timeout_in_seconds")
421
- if request_options is not None and request_options.get("timeout_in_seconds") is not None
422
- else self._client_wrapper.get_timeout(),
423
- retries=0,
424
- max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
425
- )
426
- if 200 <= _response.status_code < 300:
427
- return pydantic_v1.parse_obj_as(ConfigsResponse, _response.json()) # type: ignore
428
- if _response.status_code == 400:
429
- raise BadRequestError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
430
- if _response.status_code == 401:
431
- raise UnauthorizedError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
432
- if _response.status_code == 403:
433
- raise ForbiddenError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
434
- if _response.status_code == 404:
435
- raise NotFoundError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
436
- if _response.status_code == 422:
437
- raise UnprocessableEntityError(
438
- pydantic_v1.parse_obj_as(HttpValidationError, _response.json()) # type: ignore
439
- )
440
- if _response.status_code == 500:
441
- raise InternalServerError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
442
- try:
443
- _response_json = _response.json()
444
- except JSONDecodeError:
445
- raise ApiError(status_code=_response.status_code, body=_response.text)
446
- raise ApiError(status_code=_response.status_code, body=_response_json)
447
-
448
- def embed(
449
- self,
450
- *,
451
- input: str,
452
- modality: typing.Optional[Modality] = OMIT,
453
- model: typing.Optional[str] = OMIT,
454
- request_options: typing.Optional[RequestOptions] = None,
455
- ) -> EmbeddingResponse:
456
- """
457
- Parameters:
458
- - input: str. The input data to be processed.
459
-
460
- - modality: typing.Optional[Modality].
461
-
462
- - model: typing.Optional[str].
463
-
464
- - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
465
- ---
466
- from mixpeek.client import Mixpeek
467
-
468
- client = Mixpeek(
469
- authorization="YOUR_AUTHORIZATION",
470
- index_id="YOUR_INDEX_ID",
471
- api_key="YOUR_API_KEY",
472
- )
473
- client.embed(
474
- input="input",
475
- )
476
- """
477
- _request: typing.Dict[str, typing.Any] = {"input": input}
478
- if modality is not OMIT:
479
- _request["modality"] = modality
480
- if model is not OMIT:
481
- _request["model"] = model
482
- _response = self._client_wrapper.httpx_client.request(
483
- "POST",
484
- urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "embed"),
485
- params=jsonable_encoder(
486
- request_options.get("additional_query_parameters") if request_options is not None else None
487
- ),
488
- json=jsonable_encoder(_request)
489
- if request_options is None or request_options.get("additional_body_parameters") is None
490
- else {
491
- **jsonable_encoder(_request),
492
- **(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
493
- },
494
- headers=jsonable_encoder(
495
- remove_none_from_dict(
496
- {
497
- **self._client_wrapper.get_headers(),
498
- **(request_options.get("additional_headers", {}) if request_options is not None else {}),
499
- }
500
- )
501
- ),
502
- timeout=request_options.get("timeout_in_seconds")
503
- if request_options is not None and request_options.get("timeout_in_seconds") is not None
504
- else self._client_wrapper.get_timeout(),
505
- retries=0,
506
- max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
507
- )
508
- if 200 <= _response.status_code < 300:
509
- return pydantic_v1.parse_obj_as(EmbeddingResponse, _response.json()) # type: ignore
510
- if _response.status_code == 400:
511
- raise BadRequestError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
512
- if _response.status_code == 401:
513
- raise UnauthorizedError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
514
- if _response.status_code == 403:
515
- raise ForbiddenError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
516
- if _response.status_code == 404:
517
- raise NotFoundError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
518
- if _response.status_code == 422:
519
- raise UnprocessableEntityError(
520
- pydantic_v1.parse_obj_as(HttpValidationError, _response.json()) # type: ignore
521
- )
522
- if _response.status_code == 500:
523
- raise InternalServerError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
524
- try:
525
- _response_json = _response.json()
526
- except JSONDecodeError:
527
- raise ApiError(status_code=_response.status_code, body=_response.text)
528
- raise ApiError(status_code=_response.status_code, body=_response_json)
529
-
530
-
531
- class AsyncBaseMixpeek:
532
- """
533
- Use this class to access the different functions within the SDK. You can instantiate any number of clients with different configuration that will propogate to these functions.
534
-
535
- Parameters:
536
- - base_url: typing.Optional[str]. The base url to use for requests from the client.
537
-
538
- - environment: MixpeekEnvironment. The environment to use for requests from the client. from .environment import MixpeekEnvironment
539
-
540
- Defaults to MixpeekEnvironment.DEFAULT
541
-
542
- - authorization: typing.Optional[str].
543
-
544
- - index_id: typing.Optional[str].
545
-
546
- - api_key: typing.Optional[typing.Union[str, typing.Callable[[], str]]].
547
-
548
- - timeout: typing.Optional[float]. The timeout to be used, in seconds, for requests by default the timeout is 60 seconds, unless a custom httpx client is used, in which case a default is not set.
549
-
550
- - follow_redirects: typing.Optional[bool]. Whether the default httpx client follows redirects or not, this is irrelevant if a custom httpx client is passed in.
551
-
552
- - httpx_client: typing.Optional[httpx.AsyncClient]. The httpx client to use for making requests, a preconfigured client is used by default, however this is useful should you want to pass in any custom httpx configuration.
553
- ---
554
- from mixpeek.client import AsyncMixpeek
555
-
556
- client = AsyncMixpeek(
557
- authorization="YOUR_AUTHORIZATION",
558
- index_id="YOUR_INDEX_ID",
559
- api_key="YOUR_API_KEY",
560
- )
561
- """
562
-
563
- def __init__(
564
- self,
565
- *,
566
- base_url: typing.Optional[str] = None,
567
- environment: MixpeekEnvironment = MixpeekEnvironment.DEFAULT,
568
- authorization: typing.Optional[str] = None,
569
- index_id: typing.Optional[str] = None,
570
- api_key: typing.Optional[typing.Union[str, typing.Callable[[], str]]] = os.getenv("MIXPEEK_API_KEY"),
571
- timeout: typing.Optional[float] = None,
572
- follow_redirects: typing.Optional[bool] = True,
573
- httpx_client: typing.Optional[httpx.AsyncClient] = None,
574
- ):
575
- _defaulted_timeout = timeout if timeout is not None else 60 if httpx_client is None else None
576
- if api_key is None:
577
- raise ApiError(
578
- body="The client must be instantiated be either passing in api_key or setting MIXPEEK_API_KEY"
579
- )
580
- self._client_wrapper = AsyncClientWrapper(
581
- base_url=_get_base_url(base_url=base_url, environment=environment),
582
- authorization=authorization,
583
- index_id=index_id,
584
- api_key=api_key,
585
- httpx_client=httpx_client
586
- if httpx_client is not None
587
- else httpx.AsyncClient(timeout=_defaulted_timeout, follow_redirects=follow_redirects)
588
- if follow_redirects is not None
589
- else httpx.AsyncClient(timeout=_defaulted_timeout),
590
- timeout=_defaulted_timeout,
591
- )
592
- self.user = AsyncUserClient(client_wrapper=self._client_wrapper)
593
- self.pipeline = AsyncPipelineClient(client_wrapper=self._client_wrapper)
594
- self.workflow = AsyncWorkflowClient(client_wrapper=self._client_wrapper)
595
- self.storage = AsyncStorageClient(client_wrapper=self._client_wrapper)
596
-
597
- async def extract(
598
- self,
599
- *,
600
- file_url: typing.Optional[str] = OMIT,
601
- contents: typing.Optional[str] = OMIT,
602
- should_chunk: typing.Optional[bool] = OMIT,
603
- clean_text: typing.Optional[bool] = OMIT,
604
- max_characters_per_chunk: typing.Optional[int] = OMIT,
605
- extract_tags: typing.Optional[bool] = OMIT,
606
- summarize: typing.Optional[bool] = OMIT,
607
- pdf_settings: typing.Optional[PdfParams] = OMIT,
608
- html_settings: typing.Optional[HtmlParams] = OMIT,
609
- csv_settings: typing.Optional[CsvParams] = OMIT,
610
- ppt_settings: typing.Optional[PptParams] = OMIT,
611
- pptx_settings: typing.Optional[PptxParams] = OMIT,
612
- xlsx_settings: typing.Optional[XlsxParams] = OMIT,
613
- txt_settings: typing.Optional[TxtParams] = OMIT,
614
- audio_settings: typing.Optional[AudioParams] = OMIT,
615
- image_settings: typing.Optional[ImageParams] = OMIT,
616
- video_settings: typing.Optional[VideoParams] = OMIT,
617
- request_options: typing.Optional[RequestOptions] = None,
618
- ) -> ExtractResponse:
619
- """
620
- Parameters:
621
- - file_url: typing.Optional[str].
622
-
623
- - contents: typing.Optional[str].
624
-
625
- - should_chunk: typing.Optional[bool].
626
-
627
- - clean_text: typing.Optional[bool].
628
-
629
- - max_characters_per_chunk: typing.Optional[int].
630
-
631
- - extract_tags: typing.Optional[bool].
632
-
633
- - summarize: typing.Optional[bool].
634
-
635
- - pdf_settings: typing.Optional[PdfParams].
636
-
637
- - html_settings: typing.Optional[HtmlParams].
638
-
639
- - csv_settings: typing.Optional[CsvParams].
640
-
641
- - ppt_settings: typing.Optional[PptParams].
642
-
643
- - pptx_settings: typing.Optional[PptxParams].
644
-
645
- - xlsx_settings: typing.Optional[XlsxParams].
646
-
647
- - txt_settings: typing.Optional[TxtParams].
648
-
649
- - audio_settings: typing.Optional[AudioParams].
650
-
651
- - image_settings: typing.Optional[ImageParams].
652
-
653
- - video_settings: typing.Optional[VideoParams].
654
-
655
- - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
656
- ---
657
- from mixpeek.client import AsyncMixpeek
658
-
659
- client = AsyncMixpeek(
660
- authorization="YOUR_AUTHORIZATION",
661
- index_id="YOUR_INDEX_ID",
662
- api_key="YOUR_API_KEY",
663
- )
664
- await client.extract()
665
- """
666
- _request: typing.Dict[str, typing.Any] = {}
667
- if file_url is not OMIT:
668
- _request["file_url"] = file_url
669
- if contents is not OMIT:
670
- _request["contents"] = contents
671
- if should_chunk is not OMIT:
672
- _request["should_chunk"] = should_chunk
673
- if clean_text is not OMIT:
674
- _request["clean_text"] = clean_text
675
- if max_characters_per_chunk is not OMIT:
676
- _request["max_characters_per_chunk"] = max_characters_per_chunk
677
- if extract_tags is not OMIT:
678
- _request["extract_tags"] = extract_tags
679
- if summarize is not OMIT:
680
- _request["summarize"] = summarize
681
- if pdf_settings is not OMIT:
682
- _request["pdf_settings"] = pdf_settings
683
- if html_settings is not OMIT:
684
- _request["html_settings"] = html_settings
685
- if csv_settings is not OMIT:
686
- _request["csv_settings"] = csv_settings
687
- if ppt_settings is not OMIT:
688
- _request["ppt_settings"] = ppt_settings
689
- if pptx_settings is not OMIT:
690
- _request["pptx_settings"] = pptx_settings
691
- if xlsx_settings is not OMIT:
692
- _request["xlsx_settings"] = xlsx_settings
693
- if txt_settings is not OMIT:
694
- _request["txt_settings"] = txt_settings
695
- if audio_settings is not OMIT:
696
- _request["audio_settings"] = audio_settings
697
- if image_settings is not OMIT:
698
- _request["image_settings"] = image_settings
699
- if video_settings is not OMIT:
700
- _request["video_settings"] = video_settings
701
- _response = await self._client_wrapper.httpx_client.request(
702
- "POST",
703
- urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "extract"),
704
- params=jsonable_encoder(
705
- request_options.get("additional_query_parameters") if request_options is not None else None
706
- ),
707
- json=jsonable_encoder(_request)
708
- if request_options is None or request_options.get("additional_body_parameters") is None
709
- else {
710
- **jsonable_encoder(_request),
711
- **(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
712
- },
713
- headers=jsonable_encoder(
714
- remove_none_from_dict(
715
- {
716
- **self._client_wrapper.get_headers(),
717
- **(request_options.get("additional_headers", {}) if request_options is not None else {}),
718
- }
719
- )
720
- ),
721
- timeout=request_options.get("timeout_in_seconds")
722
- if request_options is not None and request_options.get("timeout_in_seconds") is not None
723
- else self._client_wrapper.get_timeout(),
724
- retries=0,
725
- max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
726
- )
727
- if 200 <= _response.status_code < 300:
728
- return pydantic_v1.parse_obj_as(ExtractResponse, _response.json()) # type: ignore
729
- if _response.status_code == 400:
730
- raise BadRequestError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
731
- if _response.status_code == 401:
732
- raise UnauthorizedError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
733
- if _response.status_code == 403:
734
- raise ForbiddenError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
735
- if _response.status_code == 404:
736
- raise NotFoundError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
737
- if _response.status_code == 422:
738
- raise UnprocessableEntityError(
739
- pydantic_v1.parse_obj_as(HttpValidationError, _response.json()) # type: ignore
740
- )
741
- if _response.status_code == 500:
742
- raise InternalServerError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
743
- try:
744
- _response_json = _response.json()
745
- except JSONDecodeError:
746
- raise ApiError(status_code=_response.status_code, body=_response.text)
747
- raise ApiError(status_code=_response.status_code, body=_response_json)
748
-
749
- async def base_generate(
750
- self,
751
- *,
752
- model: Model,
753
- response_format: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
754
- context: typing.Optional[str] = OMIT,
755
- messages: typing.Sequence[Message],
756
- settings: typing.Optional[Settings] = OMIT,
757
- request_options: typing.Optional[RequestOptions] = None,
758
- ) -> GenerationResponse:
759
- """
760
- Parameters:
761
- - model: Model. The model to be used.
762
-
763
- - response_format: typing.Optional[typing.Dict[str, typing.Any]].
764
-
765
- - context: typing.Optional[str].
766
-
767
- - messages: typing.Sequence[Message]. The messages for the generation.
768
-
769
- - settings: typing.Optional[Settings].
770
-
771
- - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
772
- ---
773
- from mixpeek import Message, Model
774
- from mixpeek.client import AsyncMixpeek
775
-
776
- client = AsyncMixpeek(
777
- authorization="YOUR_AUTHORIZATION",
778
- index_id="YOUR_INDEX_ID",
779
- api_key="YOUR_API_KEY",
780
- )
781
- await client.base_generate(
782
- model=Model(
783
- provider="provider",
784
- model="gpt-3.5-turbo",
785
- ),
786
- messages=[
787
- Message(
788
- role="role",
789
- content="content",
790
- )
791
- ],
792
- )
793
- """
794
- _request: typing.Dict[str, typing.Any] = {"model": model, "messages": messages}
795
- if response_format is not OMIT:
796
- _request["response_format"] = response_format
797
- if context is not OMIT:
798
- _request["context"] = context
799
- if settings is not OMIT:
800
- _request["settings"] = settings
801
- _response = await self._client_wrapper.httpx_client.request(
802
- "POST",
803
- urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "generate/text"),
804
- params=jsonable_encoder(
805
- request_options.get("additional_query_parameters") if request_options is not None else None
806
- ),
807
- json=jsonable_encoder(_request)
808
- if request_options is None or request_options.get("additional_body_parameters") is None
809
- else {
810
- **jsonable_encoder(_request),
811
- **(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
812
- },
813
- headers=jsonable_encoder(
814
- remove_none_from_dict(
815
- {
816
- **self._client_wrapper.get_headers(),
817
- **(request_options.get("additional_headers", {}) if request_options is not None else {}),
818
- }
819
- )
820
- ),
821
- timeout=request_options.get("timeout_in_seconds")
822
- if request_options is not None and request_options.get("timeout_in_seconds") is not None
823
- else self._client_wrapper.get_timeout(),
824
- retries=0,
825
- max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
826
- )
827
- if 200 <= _response.status_code < 300:
828
- return pydantic_v1.parse_obj_as(GenerationResponse, _response.json()) # type: ignore
829
- if _response.status_code == 400:
830
- raise BadRequestError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
831
- if _response.status_code == 401:
832
- raise UnauthorizedError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
833
- if _response.status_code == 403:
834
- raise ForbiddenError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
835
- if _response.status_code == 404:
836
- raise NotFoundError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
837
- if _response.status_code == 422:
838
- raise UnprocessableEntityError(
839
- pydantic_v1.parse_obj_as(HttpValidationError, _response.json()) # type: ignore
840
- )
841
- if _response.status_code == 500:
842
- raise InternalServerError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
843
- try:
844
- _response_json = _response.json()
845
- except JSONDecodeError:
846
- raise ApiError(status_code=_response.status_code, body=_response.text)
847
- raise ApiError(status_code=_response.status_code, body=_response_json)
848
-
849
- async def get_model_config(
850
- self,
851
- *,
852
- modality: typing.Optional[Modality] = OMIT,
853
- model: typing.Optional[Models] = OMIT,
854
- request_options: typing.Optional[RequestOptions] = None,
855
- ) -> ConfigsResponse:
856
- """
857
- Parameters:
858
- - modality: typing.Optional[Modality].
859
-
860
- - model: typing.Optional[Models].
861
-
862
- - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
863
- ---
864
- from mixpeek.client import AsyncMixpeek
865
-
866
- client = AsyncMixpeek(
867
- authorization="YOUR_AUTHORIZATION",
868
- index_id="YOUR_INDEX_ID",
869
- api_key="YOUR_API_KEY",
870
- )
871
- await client.get_model_config()
872
- """
873
- _request: typing.Dict[str, typing.Any] = {}
874
- if modality is not OMIT:
875
- _request["modality"] = modality
876
- if model is not OMIT:
877
- _request["model"] = model
878
- _response = await self._client_wrapper.httpx_client.request(
879
- "POST",
880
- urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "embed/config"),
881
- params=jsonable_encoder(
882
- request_options.get("additional_query_parameters") if request_options is not None else None
883
- ),
884
- json=jsonable_encoder(_request)
885
- if request_options is None or request_options.get("additional_body_parameters") is None
886
- else {
887
- **jsonable_encoder(_request),
888
- **(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
889
- },
890
- headers=jsonable_encoder(
891
- remove_none_from_dict(
892
- {
893
- **self._client_wrapper.get_headers(),
894
- **(request_options.get("additional_headers", {}) if request_options is not None else {}),
895
- }
896
- )
897
- ),
898
- timeout=request_options.get("timeout_in_seconds")
899
- if request_options is not None and request_options.get("timeout_in_seconds") is not None
900
- else self._client_wrapper.get_timeout(),
901
- retries=0,
902
- max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
903
- )
904
- if 200 <= _response.status_code < 300:
905
- return pydantic_v1.parse_obj_as(ConfigsResponse, _response.json()) # type: ignore
906
- if _response.status_code == 400:
907
- raise BadRequestError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
908
- if _response.status_code == 401:
909
- raise UnauthorizedError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
910
- if _response.status_code == 403:
911
- raise ForbiddenError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
912
- if _response.status_code == 404:
913
- raise NotFoundError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
914
- if _response.status_code == 422:
915
- raise UnprocessableEntityError(
916
- pydantic_v1.parse_obj_as(HttpValidationError, _response.json()) # type: ignore
917
- )
918
- if _response.status_code == 500:
919
- raise InternalServerError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
920
- try:
921
- _response_json = _response.json()
922
- except JSONDecodeError:
923
- raise ApiError(status_code=_response.status_code, body=_response.text)
924
- raise ApiError(status_code=_response.status_code, body=_response_json)
925
-
926
- async def embed(
927
- self,
928
- *,
929
- input: str,
930
- modality: typing.Optional[Modality] = OMIT,
931
- model: typing.Optional[str] = OMIT,
932
- request_options: typing.Optional[RequestOptions] = None,
933
- ) -> EmbeddingResponse:
934
- """
935
- Parameters:
936
- - input: str. The input data to be processed.
937
-
938
- - modality: typing.Optional[Modality].
939
-
940
- - model: typing.Optional[str].
941
-
942
- - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
943
- ---
944
- from mixpeek.client import AsyncMixpeek
945
-
946
- client = AsyncMixpeek(
947
- authorization="YOUR_AUTHORIZATION",
948
- index_id="YOUR_INDEX_ID",
949
- api_key="YOUR_API_KEY",
950
- )
951
- await client.embed(
952
- input="input",
953
- )
954
- """
955
- _request: typing.Dict[str, typing.Any] = {"input": input}
956
- if modality is not OMIT:
957
- _request["modality"] = modality
958
- if model is not OMIT:
959
- _request["model"] = model
960
- _response = await self._client_wrapper.httpx_client.request(
961
- "POST",
962
- urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "embed"),
963
- params=jsonable_encoder(
964
- request_options.get("additional_query_parameters") if request_options is not None else None
965
- ),
966
- json=jsonable_encoder(_request)
967
- if request_options is None or request_options.get("additional_body_parameters") is None
968
- else {
969
- **jsonable_encoder(_request),
970
- **(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
971
- },
972
- headers=jsonable_encoder(
973
- remove_none_from_dict(
974
- {
975
- **self._client_wrapper.get_headers(),
976
- **(request_options.get("additional_headers", {}) if request_options is not None else {}),
977
- }
978
- )
979
- ),
980
- timeout=request_options.get("timeout_in_seconds")
981
- if request_options is not None and request_options.get("timeout_in_seconds") is not None
982
- else self._client_wrapper.get_timeout(),
983
- retries=0,
984
- max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
985
- )
986
- if 200 <= _response.status_code < 300:
987
- return pydantic_v1.parse_obj_as(EmbeddingResponse, _response.json()) # type: ignore
988
- if _response.status_code == 400:
989
- raise BadRequestError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
990
- if _response.status_code == 401:
991
- raise UnauthorizedError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
992
- if _response.status_code == 403:
993
- raise ForbiddenError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
994
- if _response.status_code == 404:
995
- raise NotFoundError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
996
- if _response.status_code == 422:
997
- raise UnprocessableEntityError(
998
- pydantic_v1.parse_obj_as(HttpValidationError, _response.json()) # type: ignore
999
- )
1000
- if _response.status_code == 500:
1001
- raise InternalServerError(pydantic_v1.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
1002
- try:
1003
- _response_json = _response.json()
1004
- except JSONDecodeError:
1005
- raise ApiError(status_code=_response.status_code, body=_response.text)
1006
- raise ApiError(status_code=_response.status_code, body=_response_json)
1007
-
1008
-
1009
- def _get_base_url(*, base_url: typing.Optional[str] = None, environment: MixpeekEnvironment) -> str:
1010
- if base_url is not None:
1011
- return base_url
1012
- elif environment is not None:
1013
- return environment.value
1014
- else:
1015
- raise Exception("Please pass in either base_url or environment to construct the client")