morphik 1.2.0__tar.gz → 1.2.1__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.
Files changed (24) hide show
  1. {morphik-1.2.0 → morphik-1.2.1}/PKG-INFO +1 -1
  2. {morphik-1.2.0 → morphik-1.2.1}/morphik/__init__.py +1 -1
  3. {morphik-1.2.0 → morphik-1.2.1}/morphik/_shared.py +3 -24
  4. {morphik-1.2.0 → morphik-1.2.1}/morphik/async_.py +6 -36
  5. {morphik-1.2.0 → morphik-1.2.1}/morphik/sync.py +6 -36
  6. {morphik-1.2.0 → morphik-1.2.1}/morphik/tests/test_app_ops.py +4 -5
  7. {morphik-1.2.0 → morphik-1.2.1}/morphik/tests/test_shared_helpers.py +3 -17
  8. {morphik-1.2.0 → morphik-1.2.1}/morphik/tests/test_update_document_metadata_rename.py +0 -1
  9. {morphik-1.2.0 → morphik-1.2.1}/pyproject.toml +1 -1
  10. {morphik-1.2.0 → morphik-1.2.1}/.gitignore +0 -0
  11. {morphik-1.2.0 → morphik-1.2.1}/README.md +0 -0
  12. {morphik-1.2.0 → morphik-1.2.1}/morphik/_internal.py +0 -0
  13. {morphik-1.2.0 → morphik-1.2.1}/morphik/_scoped_ops.py +0 -0
  14. {morphik-1.2.0 → morphik-1.2.1}/morphik/exceptions.py +0 -0
  15. {morphik-1.2.0 → morphik-1.2.1}/morphik/models.py +0 -0
  16. {morphik-1.2.0 → morphik-1.2.1}/morphik/tests/README.md +0 -0
  17. {morphik-1.2.0 → morphik-1.2.1}/morphik/tests/__init__.py +0 -0
  18. {morphik-1.2.0 → morphik-1.2.1}/morphik/tests/example_usage.py +0 -0
  19. {morphik-1.2.0 → morphik-1.2.1}/morphik/tests/test_async.py +0 -0
  20. {morphik-1.2.0 → morphik-1.2.1}/morphik/tests/test_docs/sample1.txt +0 -0
  21. {morphik-1.2.0 → morphik-1.2.1}/morphik/tests/test_docs/sample2.txt +0 -0
  22. {morphik-1.2.0 → morphik-1.2.1}/morphik/tests/test_docs/sample3.txt +0 -0
  23. {morphik-1.2.0 → morphik-1.2.1}/morphik/tests/test_scoped_ops_unit.py +0 -0
  24. {morphik-1.2.0 → morphik-1.2.1}/morphik/tests/test_sync.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: morphik
3
- Version: 1.2.0
3
+ Version: 1.2.1
4
4
  Summary: Morphik Python Client
5
5
  Author-email: Morphik <founders@morphik.ai>
6
6
  Requires-Python: >=3.8
@@ -14,4 +14,4 @@ __all__ = [
14
14
  "DocumentQueryResponse",
15
15
  ]
16
16
 
17
- __version__ = "1.2.0"
17
+ __version__ = "1.2.1"
@@ -95,27 +95,8 @@ def build_rotate_app_params(
95
95
  return params
96
96
 
97
97
 
98
- def build_create_app_payload(
99
- *,
100
- name: str,
101
- app_id: Optional[str],
102
- user_id: Optional[str],
103
- expiry_days: Optional[int],
104
- org_id: Optional[str],
105
- created_by_user_id: Optional[str],
106
- ) -> Dict[str, Any]:
107
- payload: Dict[str, Any] = {"name": name}
108
- if app_id is not None:
109
- payload["app_id"] = app_id
110
- if user_id is not None:
111
- payload["user_id"] = user_id
112
- if expiry_days is not None:
113
- payload["expiry_days"] = expiry_days
114
- if org_id is not None:
115
- payload["org_id"] = org_id
116
- if created_by_user_id is not None:
117
- payload["created_by_user_id"] = created_by_user_id
118
- return payload
98
+ def build_create_app_payload(*, name: str) -> Dict[str, Any]:
99
+ return {"name": name}
119
100
 
120
101
 
121
102
  def build_requeue_payload(
@@ -140,9 +121,7 @@ def build_requeue_payload(
140
121
  return payload
141
122
 
142
123
 
143
- def build_logs_params(
144
- *, limit: int, hours: float, op_type: Optional[str], status: Optional[str]
145
- ) -> Dict[str, Any]:
124
+ def build_logs_params(*, limit: int, hours: float, op_type: Optional[str], status: Optional[str]) -> Dict[str, Any]:
146
125
  params: Dict[str, Any] = {
147
126
  "limit": max(1, min(limit, MAX_LIMIT)),
148
127
  "hours": max(MIN_LOG_HOURS, min(hours, MAX_LOG_HOURS)),
@@ -11,19 +11,19 @@ from pydantic import BaseModel
11
11
 
12
12
  from ._internal import FinalChunkResult, _MorphikClientLogic
13
13
  from ._scoped_ops import _ScopedOperationsMixin
14
- from .models import CompletionResponse # Prompt override models
15
14
  from ._shared import (
16
15
  build_create_app_payload,
17
16
  build_document_by_filename_params,
18
17
  build_list_apps_params,
19
18
  build_logs_params,
20
- build_requeue_payload,
21
19
  build_rename_app_params,
20
+ build_requeue_payload,
22
21
  build_rotate_app_params,
23
22
  collect_directory_files,
24
23
  merge_folders,
25
24
  normalize_additional_folders,
26
25
  )
26
+ from .models import CompletionResponse # Prompt override models
27
27
  from .models import (
28
28
  AppStorageUsageResponse,
29
29
  ChunkSource,
@@ -128,9 +128,7 @@ class _AsyncScopedClientOps:
128
128
  if not files:
129
129
  return []
130
130
 
131
- return await self.ingest_files(
132
- files=files, metadata=metadata, use_colpali=use_colpali, parallel=parallel
133
- )
131
+ return await self.ingest_files(files=files, metadata=metadata, use_colpali=use_colpali, parallel=parallel)
134
132
 
135
133
  async def query_document(
136
134
  self,
@@ -492,7 +490,6 @@ class AsyncFolder(_AsyncScopedClientOps):
492
490
  return None
493
491
 
494
492
 
495
-
496
493
  class AsyncUserScope(_AsyncScopedClientOps):
497
494
  """
498
495
  A user scope that allows operations to be scoped to a specific end user and optionally a folder.
@@ -525,7 +522,6 @@ class AsyncUserScope(_AsyncScopedClientOps):
525
522
  return self._end_user_id
526
523
 
527
524
 
528
-
529
525
  class AsyncMorphik(_ScopedOperationsMixin):
530
526
  """
531
527
  Morphik client for document operations.
@@ -996,9 +992,7 @@ class AsyncMorphik(_ScopedOperationsMixin):
996
992
  return []
997
993
 
998
994
  # Use ingest_files with collected paths
999
- return await self.ingest_files(
1000
- files=files, metadata=metadata, use_colpali=use_colpali, parallel=parallel
1001
- )
995
+ return await self.ingest_files(files=files, metadata=metadata, use_colpali=use_colpali, parallel=parallel)
1002
996
 
1003
997
  async def retrieve_chunks(
1004
998
  self,
@@ -1947,42 +1941,18 @@ class AsyncMorphik(_ScopedOperationsMixin):
1947
1941
  self,
1948
1942
  *,
1949
1943
  name: str,
1950
- app_id: Optional[str] = None,
1951
- user_id: Optional[str] = None,
1952
- expiry_days: Optional[int] = None,
1953
- org_id: Optional[str] = None,
1954
- created_by_user_id: Optional[str] = None,
1955
1944
  ) -> Dict[str, str]:
1956
1945
  """Create a cloud app and return its authenticated URI (async)."""
1957
- payload = build_create_app_payload(
1958
- name=name,
1959
- app_id=app_id,
1960
- user_id=user_id,
1961
- expiry_days=expiry_days,
1962
- org_id=org_id,
1963
- created_by_user_id=created_by_user_id,
1964
- )
1946
+ payload = build_create_app_payload(name=name)
1965
1947
  return await self._request("POST", "cloud/generate_uri", data=payload)
1966
1948
 
1967
1949
  async def generate_cloud_uri(
1968
1950
  self,
1969
1951
  *,
1970
1952
  name: str,
1971
- app_id: Optional[str] = None,
1972
- user_id: Optional[str] = None,
1973
- expiry_days: Optional[int] = None,
1974
- org_id: Optional[str] = None,
1975
- created_by_user_id: Optional[str] = None,
1976
1953
  ) -> Dict[str, str]:
1977
1954
  """Deprecated alias for create_app (async)."""
1978
- return await self.create_app(
1979
- name=name,
1980
- app_id=app_id,
1981
- user_id=user_id,
1982
- expiry_days=expiry_days,
1983
- org_id=org_id,
1984
- created_by_user_id=created_by_user_id,
1985
- )
1955
+ return await self.create_app(name=name)
1986
1956
 
1987
1957
  async def requeue_ingestion_jobs(
1988
1958
  self,
@@ -11,19 +11,19 @@ from pydantic import BaseModel
11
11
 
12
12
  from ._internal import FinalChunkResult, _MorphikClientLogic
13
13
  from ._scoped_ops import _ScopedOperationsMixin
14
- from .models import CompletionResponse # Prompt override models
15
14
  from ._shared import (
16
15
  build_create_app_payload,
17
16
  build_document_by_filename_params,
18
17
  build_list_apps_params,
19
18
  build_logs_params,
20
- build_requeue_payload,
21
19
  build_rename_app_params,
20
+ build_requeue_payload,
22
21
  build_rotate_app_params,
23
22
  collect_directory_files,
24
23
  merge_folders,
25
24
  normalize_additional_folders,
26
25
  )
26
+ from .models import CompletionResponse # Prompt override models
27
27
  from .models import (
28
28
  AppStorageUsageResponse,
29
29
  ChunkSource,
@@ -136,9 +136,7 @@ class _ScopedClientOps:
136
136
  if not files:
137
137
  return []
138
138
 
139
- return self.ingest_files(
140
- files=files, metadata=metadata, use_colpali=use_colpali, parallel=parallel
141
- )
139
+ return self.ingest_files(files=files, metadata=metadata, use_colpali=use_colpali, parallel=parallel)
142
140
 
143
141
  def query_document(
144
142
  self,
@@ -519,7 +517,6 @@ class Folder(_ScopedClientOps):
519
517
  return None
520
518
 
521
519
 
522
-
523
520
  class UserScope(_ScopedClientOps):
524
521
  """
525
522
  A user scope that allows operations to be scoped to a specific end user and optionally a folder.
@@ -552,7 +549,6 @@ class UserScope(_ScopedClientOps):
552
549
  return self._end_user_id
553
550
 
554
551
 
555
-
556
552
  class Morphik(_ScopedOperationsMixin):
557
553
  """
558
554
  Morphik client for document operations.
@@ -1039,9 +1035,7 @@ class Morphik(_ScopedOperationsMixin):
1039
1035
  return []
1040
1036
 
1041
1037
  # Use ingest_files with collected paths
1042
- return self.ingest_files(
1043
- files=files, metadata=metadata, use_colpali=use_colpali, parallel=parallel
1044
- )
1038
+ return self.ingest_files(files=files, metadata=metadata, use_colpali=use_colpali, parallel=parallel)
1045
1039
 
1046
1040
  def retrieve_chunks(
1047
1041
  self,
@@ -1984,42 +1978,18 @@ class Morphik(_ScopedOperationsMixin):
1984
1978
  self,
1985
1979
  *,
1986
1980
  name: str,
1987
- app_id: Optional[str] = None,
1988
- user_id: Optional[str] = None,
1989
- expiry_days: Optional[int] = None,
1990
- org_id: Optional[str] = None,
1991
- created_by_user_id: Optional[str] = None,
1992
1981
  ) -> Dict[str, str]:
1993
1982
  """Create a cloud app and return its authenticated URI."""
1994
- payload = build_create_app_payload(
1995
- name=name,
1996
- app_id=app_id,
1997
- user_id=user_id,
1998
- expiry_days=expiry_days,
1999
- org_id=org_id,
2000
- created_by_user_id=created_by_user_id,
2001
- )
1983
+ payload = build_create_app_payload(name=name)
2002
1984
  return self._request("POST", "cloud/generate_uri", data=payload)
2003
1985
 
2004
1986
  def generate_cloud_uri(
2005
1987
  self,
2006
1988
  *,
2007
1989
  name: str,
2008
- app_id: Optional[str] = None,
2009
- user_id: Optional[str] = None,
2010
- expiry_days: Optional[int] = None,
2011
- org_id: Optional[str] = None,
2012
- created_by_user_id: Optional[str] = None,
2013
1990
  ) -> Dict[str, str]:
2014
1991
  """Deprecated alias for create_app."""
2015
- return self.create_app(
2016
- name=name,
2017
- app_id=app_id,
2018
- user_id=user_id,
2019
- expiry_days=expiry_days,
2020
- org_id=org_id,
2021
- created_by_user_id=created_by_user_id,
2022
- )
1992
+ return self.create_app(name=name)
2023
1993
 
2024
1994
  def requeue_ingestion_jobs(
2025
1995
  self,
@@ -1,5 +1,4 @@
1
1
  import pytest
2
-
3
2
  from morphik.async_ import AsyncMorphik
4
3
  from morphik.models import DetailedHealthCheckResponse, LogResponse, RequeueIngestionJob
5
4
  from morphik.sync import Morphik
@@ -102,10 +101,10 @@ def test_sync_app_ops_payloads():
102
101
  assert call["endpoint"] == "apps/rotate_token"
103
102
  assert call["params"] == {"app_name": "demo", "expiry_days": 10}
104
103
 
105
- client.create_app(name="demo", org_id="org")
104
+ client.create_app(name="demo")
106
105
  call = calls.pop()
107
106
  assert call["endpoint"] == "cloud/generate_uri"
108
- assert call["data"] == {"name": "demo", "org_id": "org"}
107
+ assert call["data"] == {"name": "demo"}
109
108
 
110
109
  client.requeue_ingestion_jobs(jobs=[RequeueIngestionJob(external_id="doc-1")])
111
110
  call = calls.pop()
@@ -146,10 +145,10 @@ async def test_async_app_ops_payloads():
146
145
  assert call["endpoint"] == "apps/rotate_token"
147
146
  assert call["params"] == {"app_id": "app-1"}
148
147
 
149
- await client.create_app(name="demo", user_id="u1", expiry_days=30)
148
+ await client.create_app(name="demo")
150
149
  call = calls.pop()
151
150
  assert call["endpoint"] == "cloud/generate_uri"
152
- assert call["data"] == {"name": "demo", "user_id": "u1", "expiry_days": 30}
151
+ assert call["data"] == {"name": "demo"}
153
152
 
154
153
  await client.requeue_ingestion_jobs(include_all=True, statuses=["failed"])
155
154
  call = calls.pop()
@@ -2,14 +2,13 @@ import json
2
2
  from pathlib import Path
3
3
 
4
4
  import pytest
5
-
6
5
  from morphik._shared import (
7
6
  build_create_app_payload,
8
7
  build_document_by_filename_params,
9
8
  build_list_apps_params,
10
9
  build_logs_params,
11
- build_requeue_payload,
12
10
  build_rename_app_params,
11
+ build_requeue_payload,
13
12
  build_rotate_app_params,
14
13
  collect_directory_files,
15
14
  merge_folders,
@@ -71,21 +70,8 @@ def test_build_rotate_app_params_validation():
71
70
 
72
71
 
73
72
  def test_build_create_app_payload():
74
- payload = build_create_app_payload(
75
- name="app",
76
- app_id="id",
77
- user_id=None,
78
- expiry_days=7,
79
- org_id="org",
80
- created_by_user_id="creator",
81
- )
82
- assert payload == {
83
- "name": "app",
84
- "app_id": "id",
85
- "expiry_days": 7,
86
- "org_id": "org",
87
- "created_by_user_id": "creator",
88
- }
73
+ payload = build_create_app_payload(name="app")
74
+ assert payload == {"name": "app"}
89
75
 
90
76
 
91
77
  def test_build_requeue_payload_with_jobs():
@@ -1,5 +1,4 @@
1
1
  import pytest
2
-
3
2
  from morphik.async_ import AsyncMorphik
4
3
  from morphik.models import Document
5
4
  from morphik.sync import Morphik
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "morphik"
7
- version = "1.2.0"
7
+ version = "1.2.1"
8
8
  authors = [
9
9
  { name = "Morphik", email = "founders@morphik.ai" },
10
10
  ]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes