projectdavid 1.32.14__py3-none-any.whl → 1.32.16__py3-none-any.whl

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.

@@ -81,17 +81,23 @@ class SynchronousInferenceStream:
81
81
  def _filter_text(txt: str) -> str: # noqa: D401
82
82
  return txt
83
83
 
84
- # helper – drain any leftover bytes still buffered
85
- def _flush_tail() -> Optional[dict]:
86
- """
87
- Force-flush PeekGate / FunctionCallSuppressor so the last few
88
- characters (kept for safety-margin) reach the frontend.
89
- Returns a ready-to-stream chunk or None.
90
- """
91
- if suppress_fc:
92
- tail = _filter_text("") # empty feed ⇒ flush
93
- if tail:
94
- return {"type": "content", "content": tail}
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
+ # 1) normal draining loop
90
+ while True:
91
+ out = _filter_text("")
92
+ if not out:
93
+ break
94
+ parts.append(out)
95
+ # 2) force-drain the ≤ 8 safety-margin tail
96
+ if not _peek_gate.suppressing and _peek_gate.buf:
97
+ parts.append(_peek_gate.buf)
98
+ _peek_gate.buf = ""
99
+ if parts:
100
+ return {"type": "content", "content": "".join(parts)}
95
101
  return None
96
102
 
97
103
  # ── main loop ─────────────────────────────────────────────
@@ -110,7 +116,6 @@ class SynchronousInferenceStream:
110
116
  if chunk.get("type") in ("hot_code", "hot_code_output"):
111
117
  yield chunk
112
118
  continue
113
-
114
119
  if (
115
120
  chunk.get("stream_type") == "code_execution"
116
121
  and chunk.get("chunk", {}).get("type") == "code_interpreter_stream"
@@ -127,21 +132,21 @@ class SynchronousInferenceStream:
127
132
  # ④ everything else streams unchanged
128
133
  yield chunk
129
134
 
130
- # ─────────── graceful endings ───────────
135
+ # graceful endings ------------------------------------------------
131
136
  except StopAsyncIteration:
132
- if tail := _flush_tail():
137
+ if tail := _drain_filters():
133
138
  yield tail
134
139
  LOG.info("Stream completed normally.")
135
140
  break
136
141
 
137
142
  except asyncio.TimeoutError:
138
- if tail := _flush_tail():
143
+ if tail := _drain_filters():
139
144
  yield tail
140
145
  LOG.error("[TimeoutError] Chunk wait expired – aborting stream.")
141
146
  break
142
147
 
143
148
  except Exception as exc: # noqa: BLE001
144
- if tail := _flush_tail():
149
+ if tail := _drain_filters():
145
150
  yield tail
146
151
  LOG.error("Unexpected streaming error: %s", exc, exc_info=True)
147
152
  break
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: projectdavid
3
- Version: 1.32.14
3
+ Version: 1.32.16
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
@@ -15,7 +15,7 @@ projectdavid/clients/files_client.py,sha256=XkIDzbQFGDrd88taf0Kouc_4YJOPIYEHiIyW
15
15
  projectdavid/clients/inference_client.py,sha256=xz4ACPv5Tkis604QxO5mJX1inH_TGDfQP-31geETYpE,6609
16
16
  projectdavid/clients/messages_client.py,sha256=467xeIt3VYs6cG8-bl-eDRi_auWOPmfd5tSJDmQSJUI,17232
17
17
  projectdavid/clients/runs.py,sha256=-fXOq5L9w2efDPmZkNxb0s2yjl6oN0XN4_aLXqaeceo,25270
18
- projectdavid/clients/synchronous_inference_wrapper.py,sha256=RuFOgvUar1p8xpklMZTMswDjZ8n2N3ghtjmDjSiI6Eo,6209
18
+ projectdavid/clients/synchronous_inference_wrapper.py,sha256=JPOmEeF8ib5EwbH0QUvctyIYShpflZXOT-sMlhnFvdY,6373
19
19
  projectdavid/clients/threads_client.py,sha256=ekzU5w14zftmtmFkiec3NC90Of-_KVSUY1qH9cmfSFg,6771
20
20
  projectdavid/clients/tools_client.py,sha256=GkCVOmwpAoPqVt6aYmH0G1HIFha3iEwR9IIf9teR0j8,11487
21
21
  projectdavid/clients/users_client.py,sha256=eCuUb9qvyH1GUFhZu6TRL9zdoK-qzHSs8-Vmrk_0mmg,13729
@@ -34,8 +34,8 @@ projectdavid/utils/monitor_launcher.py,sha256=3YAgJdeuaUvq3JGvpA4ymqFsAnk29nH5q9
34
34
  projectdavid/utils/peek_gate.py,sha256=5whMRnDOQjATRpThWDJkvY9ScXuJ7Sd_-9rvGgXeTAQ,2532
35
35
  projectdavid/utils/run_monitor.py,sha256=F_WkqIP-qnWH-4llIbileWWLfRj2Q1Cg-ni23SR1rec,3786
36
36
  projectdavid/utils/vector_search_formatter.py,sha256=YTe3HPGec26qGY7uxY8_GS8lc4QaN6aNXMzkl29nZpI,1735
37
- projectdavid-1.32.14.dist-info/licenses/LICENSE,sha256=_8yjiEGttpS284BkfhXxfERqTRZW_tUaHiBB0GTJTMg,4563
38
- projectdavid-1.32.14.dist-info/METADATA,sha256=lwrij-9rEDGMo6elHx8cZyAmArJirSaL1Nit8177LeA,10782
39
- projectdavid-1.32.14.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
40
- projectdavid-1.32.14.dist-info/top_level.txt,sha256=kil8GU4s7qYRfNnzGnFHhZnSNRSxgNG-J4HLgQMmMtw,13
41
- projectdavid-1.32.14.dist-info/RECORD,,
37
+ projectdavid-1.32.16.dist-info/licenses/LICENSE,sha256=_8yjiEGttpS284BkfhXxfERqTRZW_tUaHiBB0GTJTMg,4563
38
+ projectdavid-1.32.16.dist-info/METADATA,sha256=BOcsvrfPdNelHuFfb9u08dkcx6NxeyWEpoJcnqxaAEc,10782
39
+ projectdavid-1.32.16.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
40
+ projectdavid-1.32.16.dist-info/top_level.txt,sha256=kil8GU4s7qYRfNnzGnFHhZnSNRSxgNG-J4HLgQMmMtw,13
41
+ projectdavid-1.32.16.dist-info/RECORD,,