projectdavid 1.34.5__tar.gz → 1.34.7__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.
Potentially problematic release.
This version of projectdavid might be problematic. Click here for more details.
- {projectdavid-1.34.5 → projectdavid-1.34.7}/CHANGELOG.md +14 -0
- {projectdavid-1.34.5/src/projectdavid.egg-info → projectdavid-1.34.7}/PKG-INFO +2 -2
- {projectdavid-1.34.5 → projectdavid-1.34.7}/pyproject.toml +2 -2
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/clients/runs.py +33 -58
- {projectdavid-1.34.5 → projectdavid-1.34.7/src/projectdavid.egg-info}/PKG-INFO +2 -2
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid.egg-info/requires.txt +1 -1
- {projectdavid-1.34.5 → projectdavid-1.34.7}/LICENSE +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/MANIFEST.in +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/README.md +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/docs/UPDATE-V133.23.md +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/docs/assistants.md +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/docs/code_interpretation.md +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/docs/database.md +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/docs/database_assistant_example.md +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/docs/docker_comtainers.md +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/docs/file_search.md +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/docs/files.md +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/docs/function_call_definition.md +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/docs/function_calls.md +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/docs/handling_function_calls.md +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/docs/inference.md +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/docs/messages.md +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/docs/runs.md +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/docs/streams.md +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/docs/threads.md +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/docs/tools.md +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/docs/users.md +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/docs/vector_store.md +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/docs/versioning.md +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/setup.cfg +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/__init__.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/_version.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/clients/actions_client.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/clients/api_key_client.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/clients/assistants_client.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/clients/base_client.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/clients/base_vector_store.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/clients/event_handler.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/clients/file_processor.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/clients/file_search.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/clients/files_client.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/clients/inference_client.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/clients/messages_client.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/clients/synchronous_inference_wrapper.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/clients/threads_client.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/clients/tools_client.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/clients/users_client.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/clients/vector_store_manager.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/clients/vectors.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/clients/vision-file_processor.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/clients/vision_vectors.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/constants/platform.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/decorators.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/entity.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/events.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/serializers.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/services/logging_service.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/synthesis/__init__.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/synthesis/llm_synthesizer.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/synthesis/prompt.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/synthesis/reranker.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/synthesis/retriever.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/utils/__init__.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/utils/function_call_suppressor.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/utils/monitor_launcher.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/utils/peek_gate.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/utils/run_monitor.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/utils/vector_search_formatter.py +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid.egg-info/SOURCES.txt +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid.egg-info/dependency_links.txt +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid.egg-info/top_level.txt +0 -0
- {projectdavid-1.34.5 → projectdavid-1.34.7}/tests/test_clients.py +0 -0
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## [1.34.7](https://github.com/frankie336/projectdavid/compare/v1.34.6...v1.34.7) (2025-08-21)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* Normalize time stamps to epoch integer format instead of datetime. ([43af583](https://github.com/frankie336/projectdavid/commit/43af5830f80d9eafde694449d7119a2da8a8d127))
|
|
7
|
+
|
|
8
|
+
## [1.34.6](https://github.com/frankie336/projectdavid/compare/v1.34.5...v1.34.6) (2025-08-20)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* epoch time on .create_run ([be013d4](https://github.com/frankie336/projectdavid/commit/be013d4e98724a2c252a7daa5b31bfda61253d15))
|
|
14
|
+
|
|
1
15
|
## [1.34.5](https://github.com/frankie336/projectdavid/compare/v1.34.4...v1.34.5) (2025-08-17)
|
|
2
16
|
|
|
3
17
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: projectdavid
|
|
3
|
-
Version: 1.34.
|
|
3
|
+
Version: 1.34.7
|
|
4
4
|
Summary: Python SDK for interacting with the Entities Assistant API.
|
|
5
5
|
Author-email: Francis Neequaye Armah <francis.neequaye@projectdavid.co.uk>
|
|
6
6
|
License: PolyForm Noncommercial License 1.0.0
|
|
@@ -20,7 +20,7 @@ Requires-Dist: pydantic<3.0,>=2.0
|
|
|
20
20
|
Requires-Dist: python-dotenv<2.0,>=1.0.1
|
|
21
21
|
Requires-Dist: aiofiles<25.0,>=23.2.1
|
|
22
22
|
Requires-Dist: ollama<0.5.0,>=0.4.4
|
|
23
|
-
Requires-Dist: projectdavid_common==0.17.
|
|
23
|
+
Requires-Dist: projectdavid_common==0.17.14
|
|
24
24
|
Requires-Dist: qdrant-client<2.0.0,>=1.0.0
|
|
25
25
|
Requires-Dist: pdfplumber<0.12.0,>=0.11.0
|
|
26
26
|
Requires-Dist: validators<0.35.0,>=0.29.0
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "projectdavid"
|
|
7
|
-
version = "1.34.
|
|
7
|
+
version = "1.34.7"
|
|
8
8
|
description = "Python SDK for interacting with the Entities Assistant API."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
authors = [
|
|
@@ -20,7 +20,7 @@ dependencies = [
|
|
|
20
20
|
"python-dotenv>=1.0.1,<2.0",
|
|
21
21
|
"aiofiles>=23.2.1,<25.0",
|
|
22
22
|
"ollama>=0.4.4,<0.5.0",
|
|
23
|
-
"projectdavid_common==0.17.
|
|
23
|
+
"projectdavid_common==0.17.14",
|
|
24
24
|
"qdrant-client>=1.0.0,<2.0.0",
|
|
25
25
|
"pdfplumber>=0.11.0,<0.12.0",
|
|
26
26
|
"validators>=0.29.0,<0.35.0",
|
|
@@ -45,15 +45,30 @@ class RunsClient(BaseAPIClient):
|
|
|
45
45
|
meta_data: Optional[Dict[str, Any]] = None,
|
|
46
46
|
) -> ent_validator.Run:
|
|
47
47
|
"""
|
|
48
|
-
Create a run. The server
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
Returns a fully‑populated Run model (read schema).
|
|
48
|
+
Create a run. The server injects user_id from the API key.
|
|
49
|
+
We normalize all timestamp fields to epoch ints (or None).
|
|
52
50
|
"""
|
|
51
|
+
|
|
52
|
+
def _epoch(v):
|
|
53
|
+
# Accept None, int, datetime, or stringified int
|
|
54
|
+
if v is None:
|
|
55
|
+
return None
|
|
56
|
+
if isinstance(v, int):
|
|
57
|
+
return v
|
|
58
|
+
if isinstance(v, float):
|
|
59
|
+
return int(v)
|
|
60
|
+
if hasattr(v, "timestamp"): # datetime / date
|
|
61
|
+
return int(v.timestamp())
|
|
62
|
+
try:
|
|
63
|
+
return int(str(v))
|
|
64
|
+
except Exception:
|
|
65
|
+
return None
|
|
66
|
+
|
|
67
|
+
now = int(time.time())
|
|
53
68
|
if meta_data is None:
|
|
54
69
|
meta_data = {}
|
|
55
70
|
|
|
56
|
-
#
|
|
71
|
+
# Build the Pydantic payload with epoch-normalized timestamps
|
|
57
72
|
run_payload = ent_validator.RunCreate(
|
|
58
73
|
id=UtilsInterface.IdentifierService.generate_run_id(),
|
|
59
74
|
user_id=None,
|
|
@@ -61,11 +76,11 @@ class RunsClient(BaseAPIClient):
|
|
|
61
76
|
thread_id=thread_id,
|
|
62
77
|
instructions=instructions,
|
|
63
78
|
meta_data=meta_data,
|
|
64
|
-
cancelled_at=None,
|
|
65
|
-
completed_at=None,
|
|
66
|
-
created_at=
|
|
67
|
-
expires_at=
|
|
68
|
-
failed_at=None,
|
|
79
|
+
cancelled_at=_epoch(None),
|
|
80
|
+
completed_at=_epoch(None),
|
|
81
|
+
created_at=_epoch(now),
|
|
82
|
+
expires_at=_epoch(now + 3600),
|
|
83
|
+
failed_at=_epoch(None),
|
|
69
84
|
incomplete_details=None,
|
|
70
85
|
last_error=None,
|
|
71
86
|
max_completion_tokens=1000,
|
|
@@ -75,14 +90,15 @@ class RunsClient(BaseAPIClient):
|
|
|
75
90
|
parallel_tool_calls=False,
|
|
76
91
|
required_action=None,
|
|
77
92
|
response_format="text",
|
|
78
|
-
started_at=None,
|
|
93
|
+
started_at=_epoch(None),
|
|
79
94
|
status=StatusEnum.queued,
|
|
80
95
|
tool_choice="none",
|
|
81
96
|
tools=[],
|
|
82
97
|
truncation_strategy={},
|
|
83
98
|
usage=None,
|
|
84
|
-
|
|
85
|
-
|
|
99
|
+
# NOTE: your DB columns are Integer; avoid floats here to prevent truncation
|
|
100
|
+
temperature=1, # or None if you prefer to omit
|
|
101
|
+
top_p=1, # or None if you prefer to omit
|
|
86
102
|
tool_resources={},
|
|
87
103
|
)
|
|
88
104
|
|
|
@@ -91,14 +107,15 @@ class RunsClient(BaseAPIClient):
|
|
|
91
107
|
assistant_id,
|
|
92
108
|
thread_id,
|
|
93
109
|
)
|
|
94
|
-
|
|
95
110
|
logging_utility.debug("Run payload: %s", run_payload.model_dump())
|
|
96
111
|
|
|
97
112
|
try:
|
|
98
|
-
|
|
113
|
+
# Exclude None so we don't send unset fields
|
|
114
|
+
resp = self.client.post(
|
|
115
|
+
"/v1/runs", json=run_payload.model_dump(exclude_none=True)
|
|
116
|
+
)
|
|
99
117
|
resp.raise_for_status()
|
|
100
118
|
|
|
101
|
-
# Validate response with the *read* schema
|
|
102
119
|
run_out = ent_validator.Run(**resp.json())
|
|
103
120
|
logging_utility.info("Run created successfully: %s", run_out.id)
|
|
104
121
|
return run_out
|
|
@@ -148,48 +165,6 @@ class RunsClient(BaseAPIClient):
|
|
|
148
165
|
)
|
|
149
166
|
raise
|
|
150
167
|
|
|
151
|
-
def update_run(self, run_id: str, metadata: Dict[str, Any]) -> ent_validator.Run:
|
|
152
|
-
"""
|
|
153
|
-
Shallow-merge metadata into a run. Returns the updated Run.
|
|
154
|
-
|
|
155
|
-
Server route expects body shaped as:
|
|
156
|
-
{"metadata": {...}}
|
|
157
|
-
|
|
158
|
-
Args:
|
|
159
|
-
run_id: The run ID (e.g., "run_abc123").
|
|
160
|
-
metadata: Dict to merge into run.meta_data.
|
|
161
|
-
|
|
162
|
-
Raises:
|
|
163
|
-
ValueError: if metadata is not a dict or validation fails.
|
|
164
|
-
httpx.HTTPStatusError: on non-2xx response.
|
|
165
|
-
Exception: on unexpected errors.
|
|
166
|
-
"""
|
|
167
|
-
logging_utility.info("Updating metadata for run_id: %s", run_id)
|
|
168
|
-
|
|
169
|
-
# Basic input validation (fail fast with clear error)
|
|
170
|
-
if not isinstance(metadata, dict):
|
|
171
|
-
raise ValueError("`metadata` must be a dict")
|
|
172
|
-
|
|
173
|
-
try:
|
|
174
|
-
resp = self.client.put(
|
|
175
|
-
f"/v1/runs/{run_id}/metadata",
|
|
176
|
-
json={"metadata": metadata}, # <-- wrap to match router param
|
|
177
|
-
)
|
|
178
|
-
resp.raise_for_status()
|
|
179
|
-
|
|
180
|
-
# Validate server response to the shared model
|
|
181
|
-
return ent_validator.Run(**resp.json())
|
|
182
|
-
|
|
183
|
-
except ValidationError as e:
|
|
184
|
-
logging_utility.error("Validation error: %s", e.json())
|
|
185
|
-
raise ValueError(f"Validation error: {e}")
|
|
186
|
-
except httpx.HTTPStatusError as e:
|
|
187
|
-
logging_utility.error("HTTP error updating run metadata: %s", str(e))
|
|
188
|
-
raise
|
|
189
|
-
except Exception as e:
|
|
190
|
-
logging_utility.error("Unexpected error updating run metadata: %s", str(e))
|
|
191
|
-
raise
|
|
192
|
-
|
|
193
168
|
def update_run_status(self, run_id: str, new_status: str) -> ent_validator.Run:
|
|
194
169
|
"""
|
|
195
170
|
Update the status of a run.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: projectdavid
|
|
3
|
-
Version: 1.34.
|
|
3
|
+
Version: 1.34.7
|
|
4
4
|
Summary: Python SDK for interacting with the Entities Assistant API.
|
|
5
5
|
Author-email: Francis Neequaye Armah <francis.neequaye@projectdavid.co.uk>
|
|
6
6
|
License: PolyForm Noncommercial License 1.0.0
|
|
@@ -20,7 +20,7 @@ Requires-Dist: pydantic<3.0,>=2.0
|
|
|
20
20
|
Requires-Dist: python-dotenv<2.0,>=1.0.1
|
|
21
21
|
Requires-Dist: aiofiles<25.0,>=23.2.1
|
|
22
22
|
Requires-Dist: ollama<0.5.0,>=0.4.4
|
|
23
|
-
Requires-Dist: projectdavid_common==0.17.
|
|
23
|
+
Requires-Dist: projectdavid_common==0.17.14
|
|
24
24
|
Requires-Dist: qdrant-client<2.0.0,>=1.0.0
|
|
25
25
|
Requires-Dist: pdfplumber<0.12.0,>=0.11.0
|
|
26
26
|
Requires-Dist: validators<0.35.0,>=0.29.0
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
{projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/clients/vector_store_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
{projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/clients/vision-file_processor.py
RENAMED
|
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
|
|
File without changes
|
{projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/utils/function_call_suppressor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{projectdavid-1.34.5 → projectdavid-1.34.7}/src/projectdavid/utils/vector_search_formatter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|