projectdavid 1.33.8__tar.gz → 1.33.10__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.8 → projectdavid-1.33.10}/CHANGELOG.md +14 -0
- {projectdavid-1.33.8/src/projectdavid.egg-info → projectdavid-1.33.10}/PKG-INFO +1 -1
- {projectdavid-1.33.8 → projectdavid-1.33.10}/pyproject.toml +1 -1
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/clients/synchronous_inference_wrapper.py +27 -50
- {projectdavid-1.33.8 → projectdavid-1.33.10/src/projectdavid.egg-info}/PKG-INFO +1 -1
- {projectdavid-1.33.8 → projectdavid-1.33.10}/LICENSE +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/MANIFEST.in +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/README.md +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/docs/assistants.md +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/docs/code_interpretation.md +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/docs/database.md +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/docs/database_assistant_example.md +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/docs/docker_comtainers.md +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/docs/file_search.md +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/docs/files.md +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/docs/function_call_definition.md +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/docs/function_calls.md +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/docs/handling_function_calls.md +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/docs/inference.md +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/docs/messages.md +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/docs/runs.md +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/docs/streams.md +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/docs/threads.md +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/docs/tools.md +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/docs/users.md +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/docs/vector_store.md +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/docs/versioning.md +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/setup.cfg +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/__init__.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/_version.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/clients/actions_client.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/clients/api_key_client.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/clients/assistants_client.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/clients/base_client.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/clients/base_vector_store.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/clients/event_handler.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/clients/file_processor.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/clients/file_search.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/clients/files_client.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/clients/inference_client.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/clients/messages_client.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/clients/runs.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/clients/threads_client.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/clients/tools_client.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/clients/users_client.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/clients/vector_store_manager.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/clients/vectors.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/constants/platform.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/decorators.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/entity.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/events.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/serializers.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/services/logging_service.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/synthesis/__init__.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/synthesis/llm_synthesizer.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/synthesis/prompt.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/synthesis/reranker.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/synthesis/retriever.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/utils/__init__.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/utils/function_call_suppressor.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/utils/monitor_launcher.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/utils/peek_gate.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/utils/run_monitor.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/utils/vector_search_formatter.py +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid.egg-info/SOURCES.txt +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid.egg-info/dependency_links.txt +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid.egg-info/requires.txt +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid.egg-info/top_level.txt +0 -0
- {projectdavid-1.33.8 → projectdavid-1.33.10}/tests/test_clients.py +0 -0
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## [1.33.10](https://github.com/frankie336/projectdavid/compare/v1.33.9...v1.33.10) (2025-06-13)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* restore code_interpreter_stream passthrough.10 ([54c084e](https://github.com/frankie336/projectdavid/commit/54c084ea6ef03d677b8e544db9afe9eff88266b5))
|
|
7
|
+
|
|
8
|
+
## [1.33.9](https://github.com/frankie336/projectdavid/compare/v1.33.8...v1.33.9) (2025-06-13)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* restore code_interpreter_stream passthrough.9 ([98999d3](https://github.com/frankie336/projectdavid/commit/98999d3eca403d675d3cd8d54e2e59ec3f99f5a7))
|
|
14
|
+
|
|
1
15
|
## [1.33.8](https://github.com/frankie336/projectdavid/compare/v1.33.7...v1.33.8) (2025-06-12)
|
|
2
16
|
|
|
3
17
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: projectdavid
|
|
3
|
-
Version: 1.33.
|
|
3
|
+
Version: 1.33.10
|
|
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,6 +14,9 @@ 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
|
def __init__(self, inference) -> None:
|
|
18
21
|
self.inference_client = inference
|
|
19
22
|
self.user_id: Optional[str] = None
|
|
@@ -39,6 +42,9 @@ class SynchronousInferenceStream:
|
|
|
39
42
|
self.run_id = run_id
|
|
40
43
|
self.api_key = api_key
|
|
41
44
|
|
|
45
|
+
# --------------------------------------------------------------
|
|
46
|
+
# main streaming entry-point
|
|
47
|
+
# --------------------------------------------------------------
|
|
42
48
|
def stream_chunks(
|
|
43
49
|
self,
|
|
44
50
|
provider: str,
|
|
@@ -65,6 +71,7 @@ class SynchronousInferenceStream:
|
|
|
65
71
|
|
|
66
72
|
agen = _stream_chunks_async().__aiter__()
|
|
67
73
|
|
|
74
|
+
# ---------- suppression chain ----------
|
|
68
75
|
if suppress_fc:
|
|
69
76
|
_suppressor = FunctionCallSuppressor()
|
|
70
77
|
_peek_gate = PeekGate(_suppressor)
|
|
@@ -74,28 +81,10 @@ class SynchronousInferenceStream:
|
|
|
74
81
|
|
|
75
82
|
else:
|
|
76
83
|
|
|
77
|
-
def _filter_text(txt: str) -> str:
|
|
84
|
+
def _filter_text(txt: str) -> str: # no-op
|
|
78
85
|
return txt
|
|
79
86
|
|
|
80
|
-
|
|
81
|
-
if not suppress_fc:
|
|
82
|
-
return None
|
|
83
|
-
parts: list[str] = []
|
|
84
|
-
while True:
|
|
85
|
-
out = _filter_text("")
|
|
86
|
-
if not out:
|
|
87
|
-
break
|
|
88
|
-
parts.append(out)
|
|
89
|
-
if not _peek_gate.suppressing and _peek_gate.buf:
|
|
90
|
-
parts.append(_peek_gate.buf)
|
|
91
|
-
_peek_gate.buf = ""
|
|
92
|
-
if parts:
|
|
93
|
-
return {
|
|
94
|
-
"type": "content",
|
|
95
|
-
"content": "".join(parts),
|
|
96
|
-
"run_id": self.run_id,
|
|
97
|
-
}
|
|
98
|
-
return None
|
|
87
|
+
# ---------------------------------------
|
|
99
88
|
|
|
100
89
|
while True:
|
|
101
90
|
try:
|
|
@@ -103,52 +92,40 @@ class SynchronousInferenceStream:
|
|
|
103
92
|
asyncio.wait_for(agen.__anext__(), timeout=timeout_per_chunk)
|
|
104
93
|
)
|
|
105
94
|
|
|
106
|
-
#
|
|
107
|
-
chunk
|
|
108
|
-
|
|
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"):
|
|
117
|
-
yield chunk
|
|
118
|
-
continue
|
|
119
|
-
|
|
120
|
-
if (
|
|
121
|
-
chunk.get("stream_type") == "code_execution"
|
|
122
|
-
and chunk.get("chunk", {}).get("type") == "code_interpreter_stream"
|
|
123
|
-
):
|
|
124
|
-
yield chunk
|
|
95
|
+
# provider-labelled function_call
|
|
96
|
+
if suppress_fc and chunk.get("type") == "function_call":
|
|
97
|
+
LOG.debug("[SUPPRESSOR] blocked provider-labelled function_call")
|
|
125
98
|
continue
|
|
126
99
|
|
|
100
|
+
# inline content
|
|
127
101
|
if isinstance(chunk.get("content"), str):
|
|
128
102
|
chunk["content"] = _filter_text(chunk["content"])
|
|
129
103
|
if chunk["content"] == "":
|
|
104
|
+
continue # fully suppressed (or still peeking)
|
|
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")
|
|
130
112
|
continue
|
|
131
113
|
|
|
132
114
|
yield chunk
|
|
133
115
|
|
|
134
116
|
except StopAsyncIteration:
|
|
135
|
-
if tail := _drain_filters():
|
|
136
|
-
yield tail
|
|
137
117
|
LOG.info("Stream completed normally.")
|
|
138
118
|
break
|
|
139
|
-
|
|
140
119
|
except asyncio.TimeoutError:
|
|
141
|
-
|
|
142
|
-
yield tail
|
|
143
|
-
LOG.error("[TimeoutError] Chunk wait expired – aborting stream.")
|
|
120
|
+
LOG.error("[TimeoutError] Timeout occurred, stopping stream.")
|
|
144
121
|
break
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
if tail := _drain_filters():
|
|
148
|
-
yield tail
|
|
149
|
-
LOG.error("Unexpected streaming error: %s", exc, exc_info=True)
|
|
122
|
+
except Exception as e:
|
|
123
|
+
LOG.error("Unexpected error during streaming completions: %s", e)
|
|
150
124
|
break
|
|
151
125
|
|
|
126
|
+
# --------------------------------------------------------------
|
|
127
|
+
# housekeeping
|
|
128
|
+
# --------------------------------------------------------------
|
|
152
129
|
@classmethod
|
|
153
130
|
def shutdown_loop(cls) -> None:
|
|
154
131
|
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.10
|
|
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.8 → projectdavid-1.33.10}/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.8 → projectdavid-1.33.10}/src/projectdavid/utils/function_call_suppressor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{projectdavid-1.33.8 → projectdavid-1.33.10}/src/projectdavid/utils/vector_search_formatter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|