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.
- {morphik-0.1.7 → morphik-0.1.9}/PKG-INFO +3 -3
- {morphik-0.1.7 → morphik-0.1.9}/morphik/__init__.py +1 -1
- {morphik-0.1.7 → morphik-0.1.9}/morphik/_internal.py +9 -9
- {morphik-0.1.7 → morphik-0.1.9}/morphik/async_.py +15 -3
- {morphik-0.1.7 → morphik-0.1.9}/morphik/sync.py +19 -25
- {morphik-0.1.7 → morphik-0.1.9}/pyproject.toml +3 -3
- {morphik-0.1.7 → morphik-0.1.9}/.gitignore +0 -0
- {morphik-0.1.7 → morphik-0.1.9}/README.md +0 -0
- {morphik-0.1.7 → morphik-0.1.9}/morphik/exceptions.py +0 -0
- {morphik-0.1.7 → morphik-0.1.9}/morphik/models.py +0 -0
- {morphik-0.1.7 → morphik-0.1.9}/morphik/rules.py +0 -0
- {morphik-0.1.7 → morphik-0.1.9}/morphik/tests/README.md +0 -0
- {morphik-0.1.7 → morphik-0.1.9}/morphik/tests/__init__.py +0 -0
- {morphik-0.1.7 → morphik-0.1.9}/morphik/tests/example_usage.py +0 -0
- {morphik-0.1.7 → morphik-0.1.9}/morphik/tests/test_async.py +0 -0
- {morphik-0.1.7 → morphik-0.1.9}/morphik/tests/test_docs/sample1.txt +0 -0
- {morphik-0.1.7 → morphik-0.1.9}/morphik/tests/test_docs/sample2.txt +0 -0
- {morphik-0.1.7 → morphik-0.1.9}/morphik/tests/test_docs/sample3.txt +0 -0
- {morphik-0.1.7 → morphik-0.1.9}/morphik/tests/test_sync.py +0 -0
@@ -1,12 +1,12 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: morphik
|
3
|
-
Version: 0.1.
|
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
|
9
|
-
Requires-Dist: pydantic
|
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
|
@@ -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
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
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(
|
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(
|
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(
|
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
|
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 =
|
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
|
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 =
|
1102
|
-
|
1103
|
-
|
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,
|
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(
|
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
|
+
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
|
17
|
+
"pydantic>=2.10.3",
|
18
18
|
"requests>=2.32.3",
|
19
|
-
"pillow
|
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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|