morphik 0.1.7__tar.gz → 0.1.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: morphik
3
- Version: 0.1.7
3
+ Version: 0.1.9
4
4
  Summary: Morphik Python Client
5
5
  Author-email: Morphik <founders@morphik.ai>
6
6
  Requires-Python: >=3.8
7
7
  Requires-Dist: httpx>=0.24.0
8
- Requires-Dist: pillow==10.4.0
9
- Requires-Dist: pydantic==2.10.3
8
+ Requires-Dist: pillow>=10.4.0
9
+ Requires-Dist: pydantic>=2.10.3
10
10
  Requires-Dist: pyjwt>=2.0.0
11
11
  Requires-Dist: requests>=2.32.3
12
12
  Description-Content-Type: text/markdown
@@ -12,4 +12,4 @@ __all__ = [
12
12
  "Document",
13
13
  ]
14
14
 
15
- __version__ = "0.1.7"
15
+ __version__ = "0.1.8"
@@ -357,6 +357,7 @@ class _MorphikClientLogic:
357
357
  sources: List[Union[ChunkSource, Dict[str, Any]]],
358
358
  folder_name: Optional[Union[str, List[str]]],
359
359
  end_user_id: Optional[str],
360
+ use_colpali: bool = True,
360
361
  ) -> Dict[str, Any]:
361
362
  """Prepare request for batch_get_chunks endpoint"""
362
363
  source_dicts = []
@@ -366,15 +367,14 @@ class _MorphikClientLogic:
366
367
  else:
367
368
  source_dicts.append(source.model_dump())
368
369
 
369
- if folder_name or end_user_id:
370
- request = {"sources": source_dicts}
371
- if folder_name:
372
- request["folder_name"] = folder_name
373
- if end_user_id:
374
- request["end_user_id"] = end_user_id
375
- return request
376
- # Return the dictionary structure { "sources": [...] } consistently.
377
- return {"sources": source_dicts}
370
+ # Always include use_colpali flag so the server can decide how to
371
+ # enrich chunks. Keep any additional scoping parameters.
372
+ request: Dict[str, Any] = {"sources": source_dicts, "use_colpali": use_colpali}
373
+ if folder_name:
374
+ request["folder_name"] = folder_name
375
+ if end_user_id:
376
+ request["end_user_id"] = end_user_id
377
+ return request
378
378
 
379
379
  def _prepare_create_graph_request(
380
380
  self,
@@ -460,6 +460,7 @@ class AsyncFolder:
460
460
  self,
461
461
  sources: List[Union[ChunkSource, Dict[str, Any]]],
462
462
  additional_folders: Optional[List[str]] = None,
463
+ use_colpali: bool = True,
463
464
  ) -> List[FinalChunkResult]:
464
465
  """
465
466
  Retrieve specific chunks by their document ID and chunk number in a single batch operation within this folder.
@@ -467,12 +468,15 @@ class AsyncFolder:
467
468
  Args:
468
469
  sources: List of ChunkSource objects or dictionaries with document_id and chunk_number
469
470
  additional_folders: Optional list of additional folder names to further scope operations
471
+ use_colpali: Whether to use ColPali-style embedding model
470
472
 
471
473
  Returns:
472
474
  List[FinalChunkResult]: List of chunk results
473
475
  """
474
476
  merged = self._merge_folders(additional_folders)
475
- request = self._client._logic._prepare_batch_get_chunks_request(sources, merged, None)
477
+ request = self._client._logic._prepare_batch_get_chunks_request(
478
+ sources, merged, None, use_colpali
479
+ )
476
480
  response = await self._client._request("POST", "batch/chunks", data=request)
477
481
  return self._client._logic._parse_chunk_result_list_response(response)
478
482
 
@@ -998,6 +1002,7 @@ class AsyncUserScope:
998
1002
  self,
999
1003
  sources: List[Union[ChunkSource, Dict[str, Any]]],
1000
1004
  folder_name: Optional[Union[str, List[str]]] = None,
1005
+ use_colpali: bool = True,
1001
1006
  ) -> List[FinalChunkResult]:
1002
1007
  """
1003
1008
  Retrieve specific chunks by their document ID and chunk number in a single batch operation for this end user.
@@ -1005,11 +1010,14 @@ class AsyncUserScope:
1005
1010
  Args:
1006
1011
  sources: List of ChunkSource objects or dictionaries with document_id and chunk_number
1007
1012
  folder_name: Optional folder name (or list of names) to scope the request
1013
+ use_colpali: Whether to use ColPali-style embedding model
1008
1014
 
1009
1015
  Returns:
1010
1016
  List[FinalChunkResult]: List of chunk results
1011
1017
  """
1012
- request = self._client._logic._prepare_batch_get_chunks_request(sources, self._folder_name, self._end_user_id)
1018
+ request = self._client._logic._prepare_batch_get_chunks_request(
1019
+ sources, self._folder_name, self._end_user_id, use_colpali
1020
+ )
1013
1021
  response = await self._client._request("POST", "batch/chunks", data=request)
1014
1022
  return self._client._logic._parse_chunk_result_list_response(response)
1015
1023
 
@@ -2184,6 +2192,7 @@ class AsyncMorphik:
2184
2192
  self,
2185
2193
  sources: List[Union[ChunkSource, Dict[str, Any]]],
2186
2194
  folder_name: Optional[Union[str, List[str]]] = None,
2195
+ use_colpali: bool = True,
2187
2196
  ) -> List[FinalChunkResult]:
2188
2197
  """
2189
2198
  Retrieve specific chunks by their document ID and chunk number in a single batch operation.
@@ -2191,6 +2200,7 @@ class AsyncMorphik:
2191
2200
  Args:
2192
2201
  sources: List of ChunkSource objects or dictionaries with document_id and chunk_number
2193
2202
  folder_name: Optional folder name (or list of names) to scope the request
2203
+ use_colpali: Whether to use ColPali-style embedding model
2194
2204
 
2195
2205
  Returns:
2196
2206
  List[FinalChunkResult]: List of chunk results
@@ -2215,7 +2225,9 @@ class AsyncMorphik:
2215
2225
  print(f"Chunk from {chunk.document_id}, number {chunk.chunk_number}: {chunk.content[:50]}...")
2216
2226
  ```
2217
2227
  """
2218
- request = self._logic._prepare_batch_get_chunks_request(sources, folder_name, None)
2228
+ request = self._logic._prepare_batch_get_chunks_request(
2229
+ sources, folder_name, None, use_colpali
2230
+ )
2219
2231
  response = await self._request("POST", "batch/chunks", data=request)
2220
2232
  return self._logic._parse_chunk_result_list_response(response)
2221
2233
 
@@ -474,27 +474,23 @@ class Folder:
474
474
  self,
475
475
  sources: List[Union[ChunkSource, Dict[str, Any]]],
476
476
  additional_folders: Optional[List[str]] = None,
477
+ use_colpali: bool = True,
477
478
  ) -> List[FinalChunkResult]:
478
479
  """
479
- Retrieve specific chunks by their document ID and chunk number in a single batch operation within this folder.
480
+ Retrieve specific chunks by their document ID and chunk number in this folder.
480
481
 
481
482
  Args:
482
483
  sources: List of ChunkSource objects or dictionaries with document_id and chunk_number
483
484
  additional_folders: Optional list of extra folders to include in the scope
485
+ use_colpali: Whether to request multimodal chunks when available
484
486
 
485
487
  Returns:
486
488
  List[FinalChunkResult]: List of chunk results
487
489
  """
488
- # Convert to list of dictionaries if needed
489
- source_dicts = []
490
- for source in sources:
491
- if isinstance(source, dict):
492
- source_dicts.append(source)
493
- else:
494
- source_dicts.append(source.model_dump())
495
-
496
490
  merged = self._merge_folders(additional_folders)
497
- request = {"sources": source_dicts, "folder_name": merged}
491
+ request = self._client._logic._prepare_batch_get_chunks_request(
492
+ sources, merged, None, use_colpali
493
+ )
498
494
 
499
495
  response = self._client._request("POST", "batch/chunks", data=request)
500
496
  return self._client._logic._parse_chunk_result_list_response(response)
@@ -1078,30 +1074,23 @@ class UserScope:
1078
1074
  self,
1079
1075
  sources: List[Union[ChunkSource, Dict[str, Any]]],
1080
1076
  additional_folders: Optional[List[str]] = None,
1077
+ use_colpali: bool = True,
1081
1078
  ) -> List[FinalChunkResult]:
1082
1079
  """
1083
- Retrieve specific chunks by their document ID and chunk number in a single batch operation for this end user.
1080
+ Retrieve specific chunks by their document ID and chunk number in this folder.
1084
1081
 
1085
1082
  Args:
1086
1083
  sources: List of ChunkSource objects or dictionaries with document_id and chunk_number
1087
1084
  additional_folders: Optional list of extra folders to include in the scope
1085
+ use_colpali: Whether to request multimodal chunks when available
1088
1086
 
1089
1087
  Returns:
1090
1088
  List[FinalChunkResult]: List of chunk results
1091
1089
  """
1092
- # Convert to list of dictionaries if needed
1093
- source_dicts = []
1094
- for source in sources:
1095
- if isinstance(source, dict):
1096
- source_dicts.append(source)
1097
- else:
1098
- source_dicts.append(source.model_dump())
1099
-
1100
1090
  merged = self._merge_folders(additional_folders)
1101
- request = {"sources": source_dicts, "end_user_id": self._end_user_id}
1102
-
1103
- if merged:
1104
- request["folder_name"] = merged
1091
+ request = self._client._logic._prepare_batch_get_chunks_request(
1092
+ sources, merged, None, use_colpali
1093
+ )
1105
1094
 
1106
1095
  response = self._client._request("POST", "batch/chunks", data=request)
1107
1096
  return self._client._logic._parse_chunk_result_list_response(response)
@@ -2344,7 +2333,10 @@ class Morphik:
2344
2333
  return docs
2345
2334
 
2346
2335
  def batch_get_chunks(
2347
- self, sources: List[Union[ChunkSource, Dict[str, Any]]], folder_name: Optional[Union[str, List[str]]] = None
2336
+ self,
2337
+ sources: List[Union[ChunkSource, Dict[str, Any]]],
2338
+ folder_name: Optional[Union[str, List[str]]] = None,
2339
+ use_colpali: bool = True,
2348
2340
  ) -> List[FinalChunkResult]:
2349
2341
  """
2350
2342
  Retrieve specific chunks by their document ID and chunk number.
@@ -2376,7 +2368,9 @@ class Morphik:
2376
2368
  print(f"Chunk from {chunk.document_id}, number {chunk.chunk_number}: {chunk.content[:50]}...")
2377
2369
  ```
2378
2370
  """
2379
- request = self._logic._prepare_batch_get_chunks_request(sources, folder_name, None)
2371
+ request = self._logic._prepare_batch_get_chunks_request(
2372
+ sources, folder_name, None, use_colpali
2373
+ )
2380
2374
  response = self._request("POST", "batch/chunks", data=request)
2381
2375
  return self._logic._parse_chunk_result_list_response(response)
2382
2376
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "morphik"
7
- version = "0.1.7"
7
+ version = "0.1.9"
8
8
  authors = [
9
9
  { name = "Morphik", email = "founders@morphik.ai" },
10
10
  ]
@@ -14,9 +14,9 @@ requires-python = ">=3.8"
14
14
  dependencies = [
15
15
  "httpx>=0.24.0",
16
16
  "pyjwt>=2.0.0",
17
- "pydantic==2.10.3",
17
+ "pydantic>=2.10.3",
18
18
  "requests>=2.32.3",
19
- "pillow==10.4.0"
19
+ "pillow>=10.4.0"
20
20
  ]
21
21
 
22
22
  [tool.hatch.build.targets.wheel]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes