projectdavid 1.32.19__tar.gz → 1.32.21__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.32.19 → projectdavid-1.32.21}/CHANGELOG.md +14 -0
- {projectdavid-1.32.19/src/projectdavid.egg-info → projectdavid-1.32.21}/PKG-INFO +1 -1
- {projectdavid-1.32.19 → projectdavid-1.32.21}/pyproject.toml +1 -1
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/clients/synchronous_inference_wrapper.py +19 -24
- {projectdavid-1.32.19 → projectdavid-1.32.21/src/projectdavid.egg-info}/PKG-INFO +1 -1
- {projectdavid-1.32.19 → projectdavid-1.32.21}/LICENSE +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/MANIFEST.in +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/README.md +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/docs/assistants.md +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/docs/code_interpretation.md +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/docs/database.md +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/docs/database_assistant_example.md +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/docs/docker_comtainers.md +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/docs/file_search.md +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/docs/files.md +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/docs/function_call_definition.md +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/docs/function_calls.md +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/docs/handling_function_calls.md +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/docs/inference.md +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/docs/messages.md +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/docs/runs.md +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/docs/streams.md +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/docs/threads.md +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/docs/tools.md +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/docs/users.md +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/docs/vector_store.md +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/docs/versioning.md +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/setup.cfg +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/__init__.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/_version.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/clients/actions_client.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/clients/api_key_client.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/clients/assistants_client.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/clients/base_client.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/clients/base_vector_store.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/clients/event_handler.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/clients/file_processor.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/clients/file_search.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/clients/files_client.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/clients/inference_client.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/clients/messages_client.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/clients/runs.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/clients/threads_client.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/clients/tools_client.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/clients/users_client.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/clients/vector_store_manager.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/clients/vectors.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/constants/platform.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/entity.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/events.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/serializers.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/services/logging_service.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/synthesis/__init__.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/synthesis/llm_synthesizer.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/synthesis/prompt.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/synthesis/reranker.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/synthesis/retriever.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/utils/__init__.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/utils/function_call_suppressor.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/utils/monitor_launcher.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/utils/peek_gate.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/utils/run_monitor.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/utils/vector_search_formatter.py +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid.egg-info/SOURCES.txt +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid.egg-info/dependency_links.txt +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid.egg-info/requires.txt +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid.egg-info/top_level.txt +0 -0
- {projectdavid-1.32.19 → projectdavid-1.32.21}/tests/test_clients.py +0 -0
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## [1.32.21](https://github.com/frankie336/projectdavid/compare/v1.32.20...v1.32.21) (2025-06-10)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* allow status chunks to bypass suppression ([9a21581](https://github.com/frankie336/projectdavid/commit/9a2158156b85c1685aff65925c17730722972ddb))
|
|
7
|
+
|
|
8
|
+
## [1.32.20](https://github.com/frankie336/projectdavid/compare/v1.32.19...v1.32.20) (2025-06-09)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* parse run_id into emission. ([60ace8c](https://github.com/frankie336/projectdavid/commit/60ace8cf669c873c40a1b031740b2f7103a59c53))
|
|
14
|
+
|
|
1
15
|
## [1.32.19](https://github.com/frankie336/projectdavid/compare/v1.32.18...v1.32.19) (2025-06-09)
|
|
2
16
|
|
|
3
17
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: projectdavid
|
|
3
|
-
Version: 1.32.
|
|
3
|
+
Version: 1.32.21
|
|
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
|
|
@@ -14,7 +14,6 @@ class SynchronousInferenceStream:
|
|
|
14
14
|
_GLOBAL_LOOP = asyncio.new_event_loop()
|
|
15
15
|
asyncio.set_event_loop(_GLOBAL_LOOP)
|
|
16
16
|
|
|
17
|
-
# ────────────────────────────────────────────────────────────
|
|
18
17
|
def __init__(self, inference) -> None:
|
|
19
18
|
self.inference_client = inference
|
|
20
19
|
self.user_id: Optional[str] = None
|
|
@@ -24,7 +23,6 @@ class SynchronousInferenceStream:
|
|
|
24
23
|
self.run_id: Optional[str] = None
|
|
25
24
|
self.api_key: Optional[str] = None
|
|
26
25
|
|
|
27
|
-
# ────────────────────────────────────────────────────────────
|
|
28
26
|
def setup(
|
|
29
27
|
self,
|
|
30
28
|
user_id: str,
|
|
@@ -41,8 +39,6 @@ class SynchronousInferenceStream:
|
|
|
41
39
|
self.run_id = run_id
|
|
42
40
|
self.api_key = api_key
|
|
43
41
|
|
|
44
|
-
# ────────────────────────────────────────────────────────────
|
|
45
|
-
# ────────────────────────────────────────────────────────────
|
|
46
42
|
def stream_chunks(
|
|
47
43
|
self,
|
|
48
44
|
provider: str,
|
|
@@ -69,52 +65,55 @@ class SynchronousInferenceStream:
|
|
|
69
65
|
|
|
70
66
|
agen = _stream_chunks_async().__aiter__()
|
|
71
67
|
|
|
72
|
-
# ── build the <fc> suppressor chain ─────────────────────────
|
|
73
68
|
if suppress_fc:
|
|
74
69
|
_suppressor = FunctionCallSuppressor()
|
|
75
70
|
_peek_gate = PeekGate(_suppressor)
|
|
76
71
|
|
|
77
|
-
def _filter_text(txt: str) -> str:
|
|
72
|
+
def _filter_text(txt: str) -> str:
|
|
78
73
|
return _peek_gate.feed(txt)
|
|
79
74
|
|
|
80
75
|
else:
|
|
81
76
|
|
|
82
|
-
def _filter_text(txt: str) -> str:
|
|
77
|
+
def _filter_text(txt: str) -> str:
|
|
83
78
|
return txt
|
|
84
79
|
|
|
85
|
-
# helper – drain **all** residual bytes from the chain
|
|
86
80
|
def _drain_filters() -> Optional[dict]:
|
|
87
81
|
if not suppress_fc:
|
|
88
82
|
return None
|
|
89
83
|
parts: list[str] = []
|
|
90
|
-
# 1) normal draining loop
|
|
91
84
|
while True:
|
|
92
85
|
out = _filter_text("")
|
|
93
86
|
if not out:
|
|
94
87
|
break
|
|
95
88
|
parts.append(out)
|
|
96
|
-
# 2) force-drain the ≤ 8 safety-margin tail
|
|
97
89
|
if not _peek_gate.suppressing and _peek_gate.buf:
|
|
98
90
|
parts.append(_peek_gate.buf)
|
|
99
91
|
_peek_gate.buf = ""
|
|
100
92
|
if parts:
|
|
101
|
-
return {
|
|
93
|
+
return {
|
|
94
|
+
"type": "content",
|
|
95
|
+
"content": "".join(parts),
|
|
96
|
+
"run_id": self.run_id,
|
|
97
|
+
}
|
|
102
98
|
return None
|
|
103
99
|
|
|
104
|
-
# ── main loop ─────────────────────────────────────────────
|
|
105
100
|
while True:
|
|
106
101
|
try:
|
|
107
102
|
chunk = self._GLOBAL_LOOP.run_until_complete(
|
|
108
103
|
asyncio.wait_for(agen.__anext__(), timeout=timeout_per_chunk)
|
|
109
104
|
)
|
|
110
105
|
|
|
111
|
-
#
|
|
112
|
-
|
|
113
|
-
# LOG.debug("[SUPPRESS] provider function_call dropped")
|
|
114
|
-
# continue
|
|
106
|
+
# Always attach run_id
|
|
107
|
+
chunk["run_id"] = self.run_id
|
|
115
108
|
|
|
116
|
-
#
|
|
117
|
-
|
|
109
|
+
# ------------------------------------------------------
|
|
110
|
+
# allow status chunks to bypass suppression suppression
|
|
111
|
+
# -------------------------------------------------------
|
|
112
|
+
if chunk.get("type") == "status":
|
|
113
|
+
yield chunk
|
|
114
|
+
continue
|
|
115
|
+
|
|
116
|
+
if chunk.get("type") in ("hot_code", "hot_code_output"):
|
|
118
117
|
yield chunk
|
|
119
118
|
continue
|
|
120
119
|
|
|
@@ -125,16 +124,13 @@ class SynchronousInferenceStream:
|
|
|
125
124
|
yield chunk
|
|
126
125
|
continue
|
|
127
126
|
|
|
128
|
-
# ③ ordinary TEXT content — run through the <fc> filter
|
|
129
127
|
if isinstance(chunk.get("content"), str):
|
|
130
128
|
chunk["content"] = _filter_text(chunk["content"])
|
|
131
129
|
if chunk["content"] == "":
|
|
132
|
-
continue
|
|
130
|
+
continue
|
|
133
131
|
|
|
134
|
-
# ④ everything else streams unchanged
|
|
135
132
|
yield chunk
|
|
136
133
|
|
|
137
|
-
# graceful endings ------------------------------------------------
|
|
138
134
|
except StopAsyncIteration:
|
|
139
135
|
if tail := _drain_filters():
|
|
140
136
|
yield tail
|
|
@@ -147,13 +143,12 @@ class SynchronousInferenceStream:
|
|
|
147
143
|
LOG.error("[TimeoutError] Chunk wait expired – aborting stream.")
|
|
148
144
|
break
|
|
149
145
|
|
|
150
|
-
except Exception as exc:
|
|
146
|
+
except Exception as exc:
|
|
151
147
|
if tail := _drain_filters():
|
|
152
148
|
yield tail
|
|
153
149
|
LOG.error("Unexpected streaming error: %s", exc, exc_info=True)
|
|
154
150
|
break
|
|
155
151
|
|
|
156
|
-
# ────────────────────────────────────────────────────────────
|
|
157
152
|
@classmethod
|
|
158
153
|
def shutdown_loop(cls) -> None:
|
|
159
154
|
if cls._GLOBAL_LOOP and not cls._GLOBAL_LOOP.is_closed():
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: projectdavid
|
|
3
|
-
Version: 1.32.
|
|
3
|
+
Version: 1.32.21
|
|
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
|
|
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.32.19 → projectdavid-1.32.21}/src/projectdavid/clients/vector_store_manager.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
|
{projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/utils/function_call_suppressor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid/utils/vector_search_formatter.py
RENAMED
|
File without changes
|
|
File without changes
|
{projectdavid-1.32.19 → projectdavid-1.32.21}/src/projectdavid.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|