mixpeek 0.6.1__py3-none-any.whl → 0.6.2__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.
mixpeek/parse/client.py CHANGED
@@ -9,96 +9,15 @@ from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
9
9
  from ..core.jsonable_encoder import jsonable_encoder
10
10
  from ..core.remove_none_from_dict import remove_none_from_dict
11
11
  from ..core.request_options import RequestOptions
12
- from ..errors.bad_request_error import BadRequestError
13
- from ..errors.forbidden_error import ForbiddenError
14
- from ..errors.internal_server_error import InternalServerError
15
- from ..errors.not_found_error import NotFoundError
16
- from ..errors.unauthorized_error import UnauthorizedError
17
- from ..errors.unprocessable_entity_error import UnprocessableEntityError
18
- from ..types.audio_params import AudioParams
19
- from ..types.csv_params import CsvParams
20
- from ..types.error_response import ErrorResponse
21
- from ..types.html_params import HtmlParams
22
- from ..types.http_validation_error import HttpValidationError
23
- from ..types.image_params import ImageParams
24
- from ..types.pdf_params import PdfParams
25
- from ..types.ppt_params import PptParams
26
- from ..types.pptx_params import PptxParams
27
- from ..types.txt_params import TxtParams
28
- from ..types.video_params import VideoParams
29
- from ..types.xlsx_params import XlsxParams
30
-
31
- try:
32
- import pydantic.v1 as pydantic # type: ignore
33
- except ImportError:
34
- import pydantic # type: ignore
35
-
36
- # this is used as the default value for optional parameters
37
- OMIT = typing.cast(typing.Any, ...)
38
12
 
39
13
 
40
14
  class ParseClient:
41
15
  def __init__(self, *, client_wrapper: SyncClientWrapper):
42
16
  self._client_wrapper = client_wrapper
43
17
 
44
- def parse_file(
45
- self,
46
- *,
47
- file_url: typing.Optional[str] = OMIT,
48
- contents: typing.Optional[str] = OMIT,
49
- should_chunk: typing.Optional[bool] = OMIT,
50
- clean_text: typing.Optional[bool] = OMIT,
51
- max_characters_per_chunk: typing.Optional[int] = OMIT,
52
- extract_tags: typing.Optional[bool] = OMIT,
53
- summarize: typing.Optional[bool] = OMIT,
54
- pdf_settings: typing.Optional[PdfParams] = OMIT,
55
- html_settings: typing.Optional[HtmlParams] = OMIT,
56
- csv_settings: typing.Optional[CsvParams] = OMIT,
57
- ppt_settings: typing.Optional[PptParams] = OMIT,
58
- pptx_settings: typing.Optional[PptxParams] = OMIT,
59
- xlsx_settings: typing.Optional[XlsxParams] = OMIT,
60
- txt_settings: typing.Optional[TxtParams] = OMIT,
61
- audio_settings: typing.Optional[AudioParams] = OMIT,
62
- image_settings: typing.Optional[ImageParams] = OMIT,
63
- video_settings: typing.Optional[VideoParams] = OMIT,
64
- request_options: typing.Optional[RequestOptions] = None,
65
- ) -> typing.Any:
18
+ def parse_file(self, *, request_options: typing.Optional[RequestOptions] = None) -> None:
66
19
  """
67
20
  Parameters:
68
- - file_url: typing.Optional[str].
69
-
70
- - contents: typing.Optional[str].
71
-
72
- - should_chunk: typing.Optional[bool].
73
-
74
- - clean_text: typing.Optional[bool].
75
-
76
- - max_characters_per_chunk: typing.Optional[int].
77
-
78
- - extract_tags: typing.Optional[bool].
79
-
80
- - summarize: typing.Optional[bool].
81
-
82
- - pdf_settings: typing.Optional[PdfParams].
83
-
84
- - html_settings: typing.Optional[HtmlParams].
85
-
86
- - csv_settings: typing.Optional[CsvParams].
87
-
88
- - ppt_settings: typing.Optional[PptParams].
89
-
90
- - pptx_settings: typing.Optional[PptxParams].
91
-
92
- - xlsx_settings: typing.Optional[XlsxParams].
93
-
94
- - txt_settings: typing.Optional[TxtParams].
95
-
96
- - audio_settings: typing.Optional[AudioParams].
97
-
98
- - image_settings: typing.Optional[ImageParams].
99
-
100
- - video_settings: typing.Optional[VideoParams].
101
-
102
21
  - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
103
22
  ---
104
23
  from mixpeek.client import Mixpeek
@@ -107,57 +26,18 @@ class ParseClient:
107
26
  authorization="YOUR_AUTHORIZATION",
108
27
  index_id="YOUR_INDEX_ID",
109
28
  api_key="YOUR_API_KEY",
110
- base_url="https://yourhost.com/path/to/api",
111
29
  )
112
30
  client.parse.parse_file()
113
31
  """
114
- _request: typing.Dict[str, typing.Any] = {}
115
- if file_url is not OMIT:
116
- _request["file_url"] = file_url
117
- if contents is not OMIT:
118
- _request["contents"] = contents
119
- if should_chunk is not OMIT:
120
- _request["should_chunk"] = should_chunk
121
- if clean_text is not OMIT:
122
- _request["clean_text"] = clean_text
123
- if max_characters_per_chunk is not OMIT:
124
- _request["max_characters_per_chunk"] = max_characters_per_chunk
125
- if extract_tags is not OMIT:
126
- _request["extract_tags"] = extract_tags
127
- if summarize is not OMIT:
128
- _request["summarize"] = summarize
129
- if pdf_settings is not OMIT:
130
- _request["pdf_settings"] = pdf_settings
131
- if html_settings is not OMIT:
132
- _request["html_settings"] = html_settings
133
- if csv_settings is not OMIT:
134
- _request["csv_settings"] = csv_settings
135
- if ppt_settings is not OMIT:
136
- _request["ppt_settings"] = ppt_settings
137
- if pptx_settings is not OMIT:
138
- _request["pptx_settings"] = pptx_settings
139
- if xlsx_settings is not OMIT:
140
- _request["xlsx_settings"] = xlsx_settings
141
- if txt_settings is not OMIT:
142
- _request["txt_settings"] = txt_settings
143
- if audio_settings is not OMIT:
144
- _request["audio_settings"] = audio_settings
145
- if image_settings is not OMIT:
146
- _request["image_settings"] = image_settings
147
- if video_settings is not OMIT:
148
- _request["video_settings"] = video_settings
149
32
  _response = self._client_wrapper.httpx_client.request(
150
33
  "POST",
151
34
  urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "parsers"),
152
35
  params=jsonable_encoder(
153
36
  request_options.get("additional_query_parameters") if request_options is not None else None
154
37
  ),
155
- json=jsonable_encoder(_request)
156
- if request_options is None or request_options.get("additional_body_parameters") is None
157
- else {
158
- **jsonable_encoder(_request),
159
- **(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
160
- },
38
+ json=jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))
39
+ if request_options is not None
40
+ else None,
161
41
  headers=jsonable_encoder(
162
42
  remove_none_from_dict(
163
43
  {
@@ -173,19 +53,7 @@ class ParseClient:
173
53
  max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
174
54
  )
175
55
  if 200 <= _response.status_code < 300:
176
- return pydantic.parse_obj_as(typing.Any, _response.json()) # type: ignore
177
- if _response.status_code == 400:
178
- raise BadRequestError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
179
- if _response.status_code == 401:
180
- raise UnauthorizedError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
181
- if _response.status_code == 403:
182
- raise ForbiddenError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
183
- if _response.status_code == 404:
184
- raise NotFoundError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
185
- if _response.status_code == 422:
186
- raise UnprocessableEntityError(pydantic.parse_obj_as(HttpValidationError, _response.json())) # type: ignore
187
- if _response.status_code == 500:
188
- raise InternalServerError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
56
+ return
189
57
  try:
190
58
  _response_json = _response.json()
191
59
  except JSONDecodeError:
@@ -197,64 +65,9 @@ class AsyncParseClient:
197
65
  def __init__(self, *, client_wrapper: AsyncClientWrapper):
198
66
  self._client_wrapper = client_wrapper
199
67
 
200
- async def parse_file(
201
- self,
202
- *,
203
- file_url: typing.Optional[str] = OMIT,
204
- contents: typing.Optional[str] = OMIT,
205
- should_chunk: typing.Optional[bool] = OMIT,
206
- clean_text: typing.Optional[bool] = OMIT,
207
- max_characters_per_chunk: typing.Optional[int] = OMIT,
208
- extract_tags: typing.Optional[bool] = OMIT,
209
- summarize: typing.Optional[bool] = OMIT,
210
- pdf_settings: typing.Optional[PdfParams] = OMIT,
211
- html_settings: typing.Optional[HtmlParams] = OMIT,
212
- csv_settings: typing.Optional[CsvParams] = OMIT,
213
- ppt_settings: typing.Optional[PptParams] = OMIT,
214
- pptx_settings: typing.Optional[PptxParams] = OMIT,
215
- xlsx_settings: typing.Optional[XlsxParams] = OMIT,
216
- txt_settings: typing.Optional[TxtParams] = OMIT,
217
- audio_settings: typing.Optional[AudioParams] = OMIT,
218
- image_settings: typing.Optional[ImageParams] = OMIT,
219
- video_settings: typing.Optional[VideoParams] = OMIT,
220
- request_options: typing.Optional[RequestOptions] = None,
221
- ) -> typing.Any:
68
+ async def parse_file(self, *, request_options: typing.Optional[RequestOptions] = None) -> None:
222
69
  """
223
70
  Parameters:
224
- - file_url: typing.Optional[str].
225
-
226
- - contents: typing.Optional[str].
227
-
228
- - should_chunk: typing.Optional[bool].
229
-
230
- - clean_text: typing.Optional[bool].
231
-
232
- - max_characters_per_chunk: typing.Optional[int].
233
-
234
- - extract_tags: typing.Optional[bool].
235
-
236
- - summarize: typing.Optional[bool].
237
-
238
- - pdf_settings: typing.Optional[PdfParams].
239
-
240
- - html_settings: typing.Optional[HtmlParams].
241
-
242
- - csv_settings: typing.Optional[CsvParams].
243
-
244
- - ppt_settings: typing.Optional[PptParams].
245
-
246
- - pptx_settings: typing.Optional[PptxParams].
247
-
248
- - xlsx_settings: typing.Optional[XlsxParams].
249
-
250
- - txt_settings: typing.Optional[TxtParams].
251
-
252
- - audio_settings: typing.Optional[AudioParams].
253
-
254
- - image_settings: typing.Optional[ImageParams].
255
-
256
- - video_settings: typing.Optional[VideoParams].
257
-
258
71
  - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
259
72
  ---
260
73
  from mixpeek.client import AsyncMixpeek
@@ -263,57 +76,18 @@ class AsyncParseClient:
263
76
  authorization="YOUR_AUTHORIZATION",
264
77
  index_id="YOUR_INDEX_ID",
265
78
  api_key="YOUR_API_KEY",
266
- base_url="https://yourhost.com/path/to/api",
267
79
  )
268
80
  await client.parse.parse_file()
269
81
  """
270
- _request: typing.Dict[str, typing.Any] = {}
271
- if file_url is not OMIT:
272
- _request["file_url"] = file_url
273
- if contents is not OMIT:
274
- _request["contents"] = contents
275
- if should_chunk is not OMIT:
276
- _request["should_chunk"] = should_chunk
277
- if clean_text is not OMIT:
278
- _request["clean_text"] = clean_text
279
- if max_characters_per_chunk is not OMIT:
280
- _request["max_characters_per_chunk"] = max_characters_per_chunk
281
- if extract_tags is not OMIT:
282
- _request["extract_tags"] = extract_tags
283
- if summarize is not OMIT:
284
- _request["summarize"] = summarize
285
- if pdf_settings is not OMIT:
286
- _request["pdf_settings"] = pdf_settings
287
- if html_settings is not OMIT:
288
- _request["html_settings"] = html_settings
289
- if csv_settings is not OMIT:
290
- _request["csv_settings"] = csv_settings
291
- if ppt_settings is not OMIT:
292
- _request["ppt_settings"] = ppt_settings
293
- if pptx_settings is not OMIT:
294
- _request["pptx_settings"] = pptx_settings
295
- if xlsx_settings is not OMIT:
296
- _request["xlsx_settings"] = xlsx_settings
297
- if txt_settings is not OMIT:
298
- _request["txt_settings"] = txt_settings
299
- if audio_settings is not OMIT:
300
- _request["audio_settings"] = audio_settings
301
- if image_settings is not OMIT:
302
- _request["image_settings"] = image_settings
303
- if video_settings is not OMIT:
304
- _request["video_settings"] = video_settings
305
82
  _response = await self._client_wrapper.httpx_client.request(
306
83
  "POST",
307
84
  urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "parsers"),
308
85
  params=jsonable_encoder(
309
86
  request_options.get("additional_query_parameters") if request_options is not None else None
310
87
  ),
311
- json=jsonable_encoder(_request)
312
- if request_options is None or request_options.get("additional_body_parameters") is None
313
- else {
314
- **jsonable_encoder(_request),
315
- **(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
316
- },
88
+ json=jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))
89
+ if request_options is not None
90
+ else None,
317
91
  headers=jsonable_encoder(
318
92
  remove_none_from_dict(
319
93
  {
@@ -329,19 +103,7 @@ class AsyncParseClient:
329
103
  max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
330
104
  )
331
105
  if 200 <= _response.status_code < 300:
332
- return pydantic.parse_obj_as(typing.Any, _response.json()) # type: ignore
333
- if _response.status_code == 400:
334
- raise BadRequestError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
335
- if _response.status_code == 401:
336
- raise UnauthorizedError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
337
- if _response.status_code == 403:
338
- raise ForbiddenError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
339
- if _response.status_code == 404:
340
- raise NotFoundError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
341
- if _response.status_code == 422:
342
- raise UnprocessableEntityError(pydantic.parse_obj_as(HttpValidationError, _response.json())) # type: ignore
343
- if _response.status_code == 500:
344
- raise InternalServerError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
106
+ return
345
107
  try:
346
108
  _response_json = _response.json()
347
109
  except JSONDecodeError:
@@ -1,6 +1,5 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
- import datetime as dt
4
3
  import typing
5
4
  import urllib.parse
6
5
  from json.decoder import JSONDecodeError
@@ -16,12 +15,9 @@ from ..errors.internal_server_error import InternalServerError
16
15
  from ..errors.not_found_error import NotFoundError
17
16
  from ..errors.unauthorized_error import UnauthorizedError
18
17
  from ..errors.unprocessable_entity_error import UnprocessableEntityError
19
- from ..types.connection import Connection
20
- from ..types.destination_schema import DestinationSchema
21
18
  from ..types.error_response import ErrorResponse
22
19
  from ..types.http_validation_error import HttpValidationError
23
- from ..types.pipeline_response import PipelineResponse
24
- from ..types.source_schema import SourceSchema
20
+ from ..types.source_destination_mapping import SourceDestinationMapping
25
21
 
26
22
  try:
27
23
  import pydantic.v1 as pydantic # type: ignore
@@ -49,7 +45,6 @@ class PipelinesClient:
49
45
  authorization="YOUR_AUTHORIZATION",
50
46
  index_id="YOUR_INDEX_ID",
51
47
  api_key="YOUR_API_KEY",
52
- base_url="https://yourhost.com/path/to/api",
53
48
  )
54
49
  client.pipelines.invoke(
55
50
  pipeline_id="pipeline_id",
@@ -103,87 +98,52 @@ class PipelinesClient:
103
98
  def create(
104
99
  self,
105
100
  *,
106
- connection_id: str,
107
- pipeline_id: typing.Optional[str] = OMIT,
108
- connection: typing.Optional[Connection] = OMIT,
109
- source: SourceSchema,
110
- destination: DestinationSchema,
101
+ source_destination_mappings: typing.Sequence[SourceDestinationMapping],
111
102
  metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
112
- enabled: typing.Optional[bool] = OMIT,
113
- last_run: typing.Optional[dt.datetime] = OMIT,
114
103
  request_options: typing.Optional[RequestOptions] = None,
115
- ) -> PipelineResponse:
104
+ ) -> typing.Any:
116
105
  """
117
106
  Parameters:
118
- - connection_id: str.
119
-
120
- - pipeline_id: typing.Optional[str].
121
-
122
- - connection: typing.Optional[Connection].
123
-
124
- - source: SourceSchema.
125
-
126
- - destination: DestinationSchema.
107
+ - source_destination_mappings: typing.Sequence[SourceDestinationMapping].
127
108
 
128
109
  - metadata: typing.Optional[typing.Dict[str, typing.Any]].
129
110
 
130
- - enabled: typing.Optional[bool].
131
-
132
- - last_run: typing.Optional[dt.datetime].
133
-
134
111
  - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
135
112
  ---
136
- from mixpeek import DestinationSchema, FieldSchema, SourceSchema
113
+ from mixpeek import Destination, Source, SourceDestinationMapping
137
114
  from mixpeek.client import Mixpeek
138
115
 
139
116
  client = Mixpeek(
140
117
  authorization="YOUR_AUTHORIZATION",
141
118
  index_id="YOUR_INDEX_ID",
142
119
  api_key="YOUR_API_KEY",
143
- base_url="https://yourhost.com/path/to/api",
144
120
  )
145
121
  client.pipelines.create(
146
- connection_id="connection_id",
147
- source=SourceSchema(
148
- filters={},
149
- on_operation=["on_operation"],
150
- field=FieldSchema(
151
- name="name",
152
- type="url",
153
- ),
154
- ),
155
- destination=DestinationSchema(
156
- collection="collection",
157
- new_field_name="new_field_name",
158
- new_embeddings="new_embeddings",
159
- ),
122
+ source_destination_mappings=[
123
+ SourceDestinationMapping(
124
+ embedding_model="embedding_model",
125
+ source=Source(
126
+ field="field",
127
+ type="file_url",
128
+ settings={},
129
+ ),
130
+ destination=Destination(
131
+ collection="collection",
132
+ field="field",
133
+ embedding="embedding",
134
+ ),
135
+ )
136
+ ],
160
137
  )
161
138
  """
162
- _request: typing.Dict[str, typing.Any] = {"source": source, "destination": destination}
163
- if pipeline_id is not OMIT:
164
- _request["pipeline_id"] = pipeline_id
165
- if connection is not OMIT:
166
- _request["connection"] = connection
139
+ _request: typing.Dict[str, typing.Any] = {"source_destination_mappings": source_destination_mappings}
167
140
  if metadata is not OMIT:
168
141
  _request["metadata"] = metadata
169
- if enabled is not OMIT:
170
- _request["enabled"] = enabled
171
- if last_run is not OMIT:
172
- _request["last_run"] = last_run
173
142
  _response = self._client_wrapper.httpx_client.request(
174
143
  "POST",
175
144
  urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "pipelines"),
176
145
  params=jsonable_encoder(
177
- remove_none_from_dict(
178
- {
179
- "connection_id": connection_id,
180
- **(
181
- request_options.get("additional_query_parameters", {})
182
- if request_options is not None
183
- else {}
184
- ),
185
- }
186
- )
146
+ request_options.get("additional_query_parameters") if request_options is not None else None
187
147
  ),
188
148
  json=jsonable_encoder(_request)
189
149
  if request_options is None or request_options.get("additional_body_parameters") is None
@@ -206,7 +166,7 @@ class PipelinesClient:
206
166
  max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
207
167
  )
208
168
  if 200 <= _response.status_code < 300:
209
- return pydantic.parse_obj_as(PipelineResponse, _response.json()) # type: ignore
169
+ return pydantic.parse_obj_as(typing.Any, _response.json()) # type: ignore
210
170
  if _response.status_code == 400:
211
171
  raise BadRequestError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
212
172
  if _response.status_code == 401:
@@ -240,7 +200,6 @@ class PipelinesClient:
240
200
  authorization="YOUR_AUTHORIZATION",
241
201
  index_id="YOUR_INDEX_ID",
242
202
  api_key="YOUR_API_KEY",
243
- base_url="https://yourhost.com/path/to/api",
244
203
  )
245
204
  client.pipelines.get_status(
246
205
  task_id="task_id",
@@ -306,7 +265,6 @@ class AsyncPipelinesClient:
306
265
  authorization="YOUR_AUTHORIZATION",
307
266
  index_id="YOUR_INDEX_ID",
308
267
  api_key="YOUR_API_KEY",
309
- base_url="https://yourhost.com/path/to/api",
310
268
  )
311
269
  await client.pipelines.invoke(
312
270
  pipeline_id="pipeline_id",
@@ -360,87 +318,52 @@ class AsyncPipelinesClient:
360
318
  async def create(
361
319
  self,
362
320
  *,
363
- connection_id: str,
364
- pipeline_id: typing.Optional[str] = OMIT,
365
- connection: typing.Optional[Connection] = OMIT,
366
- source: SourceSchema,
367
- destination: DestinationSchema,
321
+ source_destination_mappings: typing.Sequence[SourceDestinationMapping],
368
322
  metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
369
- enabled: typing.Optional[bool] = OMIT,
370
- last_run: typing.Optional[dt.datetime] = OMIT,
371
323
  request_options: typing.Optional[RequestOptions] = None,
372
- ) -> PipelineResponse:
324
+ ) -> typing.Any:
373
325
  """
374
326
  Parameters:
375
- - connection_id: str.
376
-
377
- - pipeline_id: typing.Optional[str].
378
-
379
- - connection: typing.Optional[Connection].
380
-
381
- - source: SourceSchema.
382
-
383
- - destination: DestinationSchema.
327
+ - source_destination_mappings: typing.Sequence[SourceDestinationMapping].
384
328
 
385
329
  - metadata: typing.Optional[typing.Dict[str, typing.Any]].
386
330
 
387
- - enabled: typing.Optional[bool].
388
-
389
- - last_run: typing.Optional[dt.datetime].
390
-
391
331
  - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
392
332
  ---
393
- from mixpeek import DestinationSchema, FieldSchema, SourceSchema
333
+ from mixpeek import Destination, Source, SourceDestinationMapping
394
334
  from mixpeek.client import AsyncMixpeek
395
335
 
396
336
  client = AsyncMixpeek(
397
337
  authorization="YOUR_AUTHORIZATION",
398
338
  index_id="YOUR_INDEX_ID",
399
339
  api_key="YOUR_API_KEY",
400
- base_url="https://yourhost.com/path/to/api",
401
340
  )
402
341
  await client.pipelines.create(
403
- connection_id="connection_id",
404
- source=SourceSchema(
405
- filters={},
406
- on_operation=["on_operation"],
407
- field=FieldSchema(
408
- name="name",
409
- type="url",
410
- ),
411
- ),
412
- destination=DestinationSchema(
413
- collection="collection",
414
- new_field_name="new_field_name",
415
- new_embeddings="new_embeddings",
416
- ),
342
+ source_destination_mappings=[
343
+ SourceDestinationMapping(
344
+ embedding_model="embedding_model",
345
+ source=Source(
346
+ field="field",
347
+ type="file_url",
348
+ settings={},
349
+ ),
350
+ destination=Destination(
351
+ collection="collection",
352
+ field="field",
353
+ embedding="embedding",
354
+ ),
355
+ )
356
+ ],
417
357
  )
418
358
  """
419
- _request: typing.Dict[str, typing.Any] = {"source": source, "destination": destination}
420
- if pipeline_id is not OMIT:
421
- _request["pipeline_id"] = pipeline_id
422
- if connection is not OMIT:
423
- _request["connection"] = connection
359
+ _request: typing.Dict[str, typing.Any] = {"source_destination_mappings": source_destination_mappings}
424
360
  if metadata is not OMIT:
425
361
  _request["metadata"] = metadata
426
- if enabled is not OMIT:
427
- _request["enabled"] = enabled
428
- if last_run is not OMIT:
429
- _request["last_run"] = last_run
430
362
  _response = await self._client_wrapper.httpx_client.request(
431
363
  "POST",
432
364
  urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "pipelines"),
433
365
  params=jsonable_encoder(
434
- remove_none_from_dict(
435
- {
436
- "connection_id": connection_id,
437
- **(
438
- request_options.get("additional_query_parameters", {})
439
- if request_options is not None
440
- else {}
441
- ),
442
- }
443
- )
366
+ request_options.get("additional_query_parameters") if request_options is not None else None
444
367
  ),
445
368
  json=jsonable_encoder(_request)
446
369
  if request_options is None or request_options.get("additional_body_parameters") is None
@@ -463,7 +386,7 @@ class AsyncPipelinesClient:
463
386
  max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
464
387
  )
465
388
  if 200 <= _response.status_code < 300:
466
- return pydantic.parse_obj_as(PipelineResponse, _response.json()) # type: ignore
389
+ return pydantic.parse_obj_as(typing.Any, _response.json()) # type: ignore
467
390
  if _response.status_code == 400:
468
391
  raise BadRequestError(pydantic.parse_obj_as(ErrorResponse, _response.json())) # type: ignore
469
392
  if _response.status_code == 401:
@@ -497,7 +420,6 @@ class AsyncPipelinesClient:
497
420
  authorization="YOUR_AUTHORIZATION",
498
421
  index_id="YOUR_INDEX_ID",
499
422
  api_key="YOUR_API_KEY",
500
- base_url="https://yourhost.com/path/to/api",
501
423
  )
502
424
  await client.pipelines.get_status(
503
425
  task_id="task_id",
mixpeek/storage/client.py CHANGED
@@ -39,7 +39,6 @@ class StorageClient:
39
39
  authorization="YOUR_AUTHORIZATION",
40
40
  index_id="YOUR_INDEX_ID",
41
41
  api_key="YOUR_API_KEY",
42
- base_url="https://yourhost.com/path/to/api",
43
42
  )
44
43
  client.storage.test_connection()
45
44
  """
@@ -94,7 +93,6 @@ class StorageClient:
94
93
  authorization="YOUR_AUTHORIZATION",
95
94
  index_id="YOUR_INDEX_ID",
96
95
  api_key="YOUR_API_KEY",
97
- base_url="https://yourhost.com/path/to/api",
98
96
  )
99
97
  client.storage.sample_database()
100
98
  """
@@ -154,7 +152,6 @@ class AsyncStorageClient:
154
152
  authorization="YOUR_AUTHORIZATION",
155
153
  index_id="YOUR_INDEX_ID",
156
154
  api_key="YOUR_API_KEY",
157
- base_url="https://yourhost.com/path/to/api",
158
155
  )
159
156
  await client.storage.test_connection()
160
157
  """
@@ -209,7 +206,6 @@ class AsyncStorageClient:
209
206
  authorization="YOUR_AUTHORIZATION",
210
207
  index_id="YOUR_INDEX_ID",
211
208
  api_key="YOUR_API_KEY",
212
- base_url="https://yourhost.com/path/to/api",
213
209
  )
214
210
  await client.storage.sample_database()
215
211
  """