projectdavid 1.33.10__tar.gz → 1.33.11__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.33.10 → projectdavid-1.33.11}/CHANGELOG.md +7 -0
- {projectdavid-1.33.10/src/projectdavid.egg-info → projectdavid-1.33.11}/PKG-INFO +1 -1
- {projectdavid-1.33.10 → projectdavid-1.33.11}/pyproject.toml +1 -1
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/clients/synchronous_inference_wrapper.py +51 -29
- {projectdavid-1.33.10 → projectdavid-1.33.11/src/projectdavid.egg-info}/PKG-INFO +1 -1
- {projectdavid-1.33.10 → projectdavid-1.33.11}/LICENSE +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/MANIFEST.in +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/README.md +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/docs/assistants.md +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/docs/code_interpretation.md +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/docs/database.md +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/docs/database_assistant_example.md +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/docs/docker_comtainers.md +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/docs/file_search.md +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/docs/files.md +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/docs/function_call_definition.md +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/docs/function_calls.md +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/docs/handling_function_calls.md +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/docs/inference.md +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/docs/messages.md +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/docs/runs.md +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/docs/streams.md +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/docs/threads.md +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/docs/tools.md +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/docs/users.md +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/docs/vector_store.md +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/docs/versioning.md +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/setup.cfg +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/__init__.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/_version.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/clients/actions_client.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/clients/api_key_client.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/clients/assistants_client.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/clients/base_client.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/clients/base_vector_store.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/clients/event_handler.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/clients/file_processor.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/clients/file_search.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/clients/files_client.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/clients/inference_client.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/clients/messages_client.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/clients/runs.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/clients/threads_client.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/clients/tools_client.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/clients/users_client.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/clients/vector_store_manager.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/clients/vectors.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/constants/platform.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/decorators.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/entity.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/events.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/serializers.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/services/logging_service.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/synthesis/__init__.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/synthesis/llm_synthesizer.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/synthesis/prompt.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/synthesis/reranker.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/synthesis/retriever.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/utils/__init__.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/utils/function_call_suppressor.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/utils/monitor_launcher.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/utils/peek_gate.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/utils/run_monitor.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/utils/vector_search_formatter.py +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid.egg-info/SOURCES.txt +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid.egg-info/dependency_links.txt +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid.egg-info/requires.txt +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid.egg-info/top_level.txt +0 -0
- {projectdavid-1.33.10 → projectdavid-1.33.11}/tests/test_clients.py +0 -0
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## [1.33.11](https://github.com/frankie336/projectdavid/compare/v1.33.10...v1.33.11) (2025-06-13)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* restore code_interpreter_stream passthrough.11 ([57274ef](https://github.com/frankie336/projectdavid/commit/57274efea469b4cc513a2260202b4872f1ae64f2))
|
|
7
|
+
|
|
1
8
|
## [1.33.10](https://github.com/frankie336/projectdavid/compare/v1.33.9...v1.33.10) (2025-06-13)
|
|
2
9
|
|
|
3
10
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: projectdavid
|
|
3
|
-
Version: 1.33.
|
|
3
|
+
Version: 1.33.11
|
|
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,9 +14,7 @@ class SynchronousInferenceStream:
|
|
|
14
14
|
_GLOBAL_LOOP = asyncio.new_event_loop()
|
|
15
15
|
asyncio.set_event_loop(_GLOBAL_LOOP)
|
|
16
16
|
|
|
17
|
-
#
|
|
18
|
-
# ctor / setup
|
|
19
|
-
# --------------------------------------------------------------
|
|
17
|
+
# ────────────────────────────────────────────────────────────
|
|
20
18
|
def __init__(self, inference) -> None:
|
|
21
19
|
self.inference_client = inference
|
|
22
20
|
self.user_id: Optional[str] = None
|
|
@@ -26,6 +24,7 @@ class SynchronousInferenceStream:
|
|
|
26
24
|
self.run_id: Optional[str] = None
|
|
27
25
|
self.api_key: Optional[str] = None
|
|
28
26
|
|
|
27
|
+
# ────────────────────────────────────────────────────────────
|
|
29
28
|
def setup(
|
|
30
29
|
self,
|
|
31
30
|
user_id: str,
|
|
@@ -42,9 +41,7 @@ class SynchronousInferenceStream:
|
|
|
42
41
|
self.run_id = run_id
|
|
43
42
|
self.api_key = api_key
|
|
44
43
|
|
|
45
|
-
#
|
|
46
|
-
# main streaming entry-point
|
|
47
|
-
# --------------------------------------------------------------
|
|
44
|
+
# ────────────────────────────────────────────────────────────
|
|
48
45
|
def stream_chunks(
|
|
49
46
|
self,
|
|
50
47
|
provider: str,
|
|
@@ -71,61 +68,86 @@ class SynchronousInferenceStream:
|
|
|
71
68
|
|
|
72
69
|
agen = _stream_chunks_async().__aiter__()
|
|
73
70
|
|
|
74
|
-
#
|
|
71
|
+
# ── build the <fc> suppressor chain ─────────────────────────
|
|
75
72
|
if suppress_fc:
|
|
76
73
|
_suppressor = FunctionCallSuppressor()
|
|
77
74
|
_peek_gate = PeekGate(_suppressor)
|
|
78
75
|
|
|
79
|
-
def _filter_text(txt: str) -> str:
|
|
76
|
+
def _filter_text(txt: str) -> str: # noqa: D401
|
|
80
77
|
return _peek_gate.feed(txt)
|
|
81
78
|
|
|
82
79
|
else:
|
|
83
80
|
|
|
84
|
-
def _filter_text(txt: str) -> str: #
|
|
81
|
+
def _filter_text(txt: str) -> str: # noqa: D401
|
|
85
82
|
return txt
|
|
86
83
|
|
|
87
|
-
#
|
|
88
|
-
|
|
84
|
+
# helper – drain **all** residual bytes from the chain
|
|
85
|
+
def _drain_filters() -> Optional[dict]:
|
|
86
|
+
if not suppress_fc:
|
|
87
|
+
return None
|
|
88
|
+
parts: list[str] = []
|
|
89
|
+
while True:
|
|
90
|
+
out = _filter_text("") # empty feed ⇒ “give me whatever’s left”
|
|
91
|
+
if not out:
|
|
92
|
+
break
|
|
93
|
+
parts.append(out)
|
|
94
|
+
if parts:
|
|
95
|
+
return {"type": "content", "content": "".join(parts)}
|
|
96
|
+
return None
|
|
97
|
+
|
|
98
|
+
# ── main loop ─────────────────────────────────────────────
|
|
89
99
|
while True:
|
|
90
100
|
try:
|
|
91
101
|
chunk = self._GLOBAL_LOOP.run_until_complete(
|
|
92
102
|
asyncio.wait_for(agen.__anext__(), timeout=timeout_per_chunk)
|
|
93
103
|
)
|
|
94
104
|
|
|
95
|
-
# provider-labelled function_call
|
|
105
|
+
# ① drop provider-labelled function_call objects
|
|
96
106
|
if suppress_fc and chunk.get("type") == "function_call":
|
|
97
|
-
LOG.debug("[
|
|
107
|
+
LOG.debug("[SUPPRESS] provider function_call dropped")
|
|
108
|
+
continue
|
|
109
|
+
|
|
110
|
+
# ② hot-code & file-preview payloads always pass
|
|
111
|
+
if chunk.get("type") in ("hot_code", "hot_code_output"):
|
|
112
|
+
yield chunk
|
|
113
|
+
continue
|
|
114
|
+
|
|
115
|
+
if (
|
|
116
|
+
chunk.get("stream_type") == "code_execution"
|
|
117
|
+
and chunk.get("chunk", {}).get("type") == "code_interpreter_stream"
|
|
118
|
+
):
|
|
119
|
+
yield chunk
|
|
98
120
|
continue
|
|
99
121
|
|
|
100
|
-
#
|
|
122
|
+
# ③ ordinary TEXT content — run through the <fc> filter
|
|
101
123
|
if isinstance(chunk.get("content"), str):
|
|
102
124
|
chunk["content"] = _filter_text(chunk["content"])
|
|
103
125
|
if chunk["content"] == "":
|
|
104
|
-
continue # fully suppressed
|
|
105
|
-
|
|
106
|
-
# additional raw inline suppression for partial JSON
|
|
107
|
-
if (
|
|
108
|
-
'"name": "code_interpreter"' in chunk["content"]
|
|
109
|
-
and '"arguments": {"code"' in chunk["content"]
|
|
110
|
-
):
|
|
111
|
-
LOG.debug("[SUPPRESSOR] inline code_interpreter match blocked")
|
|
112
|
-
continue
|
|
126
|
+
continue # fully suppressed / still buffering
|
|
113
127
|
|
|
128
|
+
# ④ everything else streams unchanged
|
|
114
129
|
yield chunk
|
|
115
130
|
|
|
131
|
+
# ─────────── graceful endings ───────────
|
|
116
132
|
except StopAsyncIteration:
|
|
133
|
+
if tail := _drain_filters():
|
|
134
|
+
yield tail
|
|
117
135
|
LOG.info("Stream completed normally.")
|
|
118
136
|
break
|
|
137
|
+
|
|
119
138
|
except asyncio.TimeoutError:
|
|
120
|
-
|
|
139
|
+
if tail := _drain_filters():
|
|
140
|
+
yield tail
|
|
141
|
+
LOG.error("[TimeoutError] Chunk wait expired – aborting stream.")
|
|
121
142
|
break
|
|
122
|
-
|
|
123
|
-
|
|
143
|
+
|
|
144
|
+
except Exception as exc: # noqa: BLE001
|
|
145
|
+
if tail := _drain_filters():
|
|
146
|
+
yield tail
|
|
147
|
+
LOG.error("Unexpected streaming error: %s", exc, exc_info=True)
|
|
124
148
|
break
|
|
125
149
|
|
|
126
|
-
#
|
|
127
|
-
# housekeeping
|
|
128
|
-
# --------------------------------------------------------------
|
|
150
|
+
# ────────────────────────────────────────────────────────────
|
|
129
151
|
@classmethod
|
|
130
152
|
def shutdown_loop(cls) -> None:
|
|
131
153
|
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.33.
|
|
3
|
+
Version: 1.33.11
|
|
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.33.10 → projectdavid-1.33.11}/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
|
|
File without changes
|
{projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/utils/function_call_suppressor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid/utils/vector_search_formatter.py
RENAMED
|
File without changes
|
|
File without changes
|
{projectdavid-1.33.10 → projectdavid-1.33.11}/src/projectdavid.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|