projectdavid 1.33.11__tar.gz → 1.33.12__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.

Files changed (69) hide show
  1. {projectdavid-1.33.11 → projectdavid-1.33.12}/CHANGELOG.md +7 -0
  2. {projectdavid-1.33.11/src/projectdavid.egg-info → projectdavid-1.33.12}/PKG-INFO +1 -1
  3. {projectdavid-1.33.11 → projectdavid-1.33.12}/pyproject.toml +1 -1
  4. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/clients/synchronous_inference_wrapper.py +21 -20
  5. {projectdavid-1.33.11 → projectdavid-1.33.12/src/projectdavid.egg-info}/PKG-INFO +1 -1
  6. {projectdavid-1.33.11 → projectdavid-1.33.12}/LICENSE +0 -0
  7. {projectdavid-1.33.11 → projectdavid-1.33.12}/MANIFEST.in +0 -0
  8. {projectdavid-1.33.11 → projectdavid-1.33.12}/README.md +0 -0
  9. {projectdavid-1.33.11 → projectdavid-1.33.12}/docs/assistants.md +0 -0
  10. {projectdavid-1.33.11 → projectdavid-1.33.12}/docs/code_interpretation.md +0 -0
  11. {projectdavid-1.33.11 → projectdavid-1.33.12}/docs/database.md +0 -0
  12. {projectdavid-1.33.11 → projectdavid-1.33.12}/docs/database_assistant_example.md +0 -0
  13. {projectdavid-1.33.11 → projectdavid-1.33.12}/docs/docker_comtainers.md +0 -0
  14. {projectdavid-1.33.11 → projectdavid-1.33.12}/docs/file_search.md +0 -0
  15. {projectdavid-1.33.11 → projectdavid-1.33.12}/docs/files.md +0 -0
  16. {projectdavid-1.33.11 → projectdavid-1.33.12}/docs/function_call_definition.md +0 -0
  17. {projectdavid-1.33.11 → projectdavid-1.33.12}/docs/function_calls.md +0 -0
  18. {projectdavid-1.33.11 → projectdavid-1.33.12}/docs/handling_function_calls.md +0 -0
  19. {projectdavid-1.33.11 → projectdavid-1.33.12}/docs/inference.md +0 -0
  20. {projectdavid-1.33.11 → projectdavid-1.33.12}/docs/messages.md +0 -0
  21. {projectdavid-1.33.11 → projectdavid-1.33.12}/docs/runs.md +0 -0
  22. {projectdavid-1.33.11 → projectdavid-1.33.12}/docs/streams.md +0 -0
  23. {projectdavid-1.33.11 → projectdavid-1.33.12}/docs/threads.md +0 -0
  24. {projectdavid-1.33.11 → projectdavid-1.33.12}/docs/tools.md +0 -0
  25. {projectdavid-1.33.11 → projectdavid-1.33.12}/docs/users.md +0 -0
  26. {projectdavid-1.33.11 → projectdavid-1.33.12}/docs/vector_store.md +0 -0
  27. {projectdavid-1.33.11 → projectdavid-1.33.12}/docs/versioning.md +0 -0
  28. {projectdavid-1.33.11 → projectdavid-1.33.12}/setup.cfg +0 -0
  29. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/__init__.py +0 -0
  30. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/_version.py +0 -0
  31. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/clients/actions_client.py +0 -0
  32. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/clients/api_key_client.py +0 -0
  33. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/clients/assistants_client.py +0 -0
  34. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/clients/base_client.py +0 -0
  35. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/clients/base_vector_store.py +0 -0
  36. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/clients/event_handler.py +0 -0
  37. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/clients/file_processor.py +0 -0
  38. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/clients/file_search.py +0 -0
  39. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/clients/files_client.py +0 -0
  40. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/clients/inference_client.py +0 -0
  41. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/clients/messages_client.py +0 -0
  42. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/clients/runs.py +0 -0
  43. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/clients/threads_client.py +0 -0
  44. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/clients/tools_client.py +0 -0
  45. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/clients/users_client.py +0 -0
  46. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/clients/vector_store_manager.py +0 -0
  47. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/clients/vectors.py +0 -0
  48. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/constants/platform.py +0 -0
  49. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/decorators.py +0 -0
  50. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/entity.py +0 -0
  51. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/events.py +0 -0
  52. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/serializers.py +0 -0
  53. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/services/logging_service.py +0 -0
  54. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/synthesis/__init__.py +0 -0
  55. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/synthesis/llm_synthesizer.py +0 -0
  56. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/synthesis/prompt.py +0 -0
  57. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/synthesis/reranker.py +0 -0
  58. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/synthesis/retriever.py +0 -0
  59. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/utils/__init__.py +0 -0
  60. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/utils/function_call_suppressor.py +0 -0
  61. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/utils/monitor_launcher.py +0 -0
  62. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/utils/peek_gate.py +0 -0
  63. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/utils/run_monitor.py +0 -0
  64. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid/utils/vector_search_formatter.py +0 -0
  65. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid.egg-info/SOURCES.txt +0 -0
  66. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid.egg-info/dependency_links.txt +0 -0
  67. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid.egg-info/requires.txt +0 -0
  68. {projectdavid-1.33.11 → projectdavid-1.33.12}/src/projectdavid.egg-info/top_level.txt +0 -0
  69. {projectdavid-1.33.11 → projectdavid-1.33.12}/tests/test_clients.py +0 -0
@@ -1,3 +1,10 @@
1
+ ## [1.33.12](https://github.com/frankie336/projectdavid/compare/v1.33.11...v1.33.12) (2025-06-13)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * restore code_interpreter_stream passthrough.12 ([6c1fd4d](https://github.com/frankie336/projectdavid/commit/6c1fd4dafb5680cd7898f005e866b32c78e61ca1))
7
+
1
8
  ## [1.33.11](https://github.com/frankie336/projectdavid/compare/v1.33.10...v1.33.11) (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.11
3
+ Version: 1.33.12
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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "projectdavid"
7
- version = "1.33.11"
7
+ version = "1.33.12"
8
8
  description = "Python SDK for interacting with the Entities Assistant API."
9
9
  readme = "README.md"
10
10
  authors = [
@@ -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,7 +39,6 @@ class SynchronousInferenceStream:
41
39
  self.run_id = run_id
42
40
  self.api_key = api_key
43
41
 
44
- # ────────────────────────────────────────────────────────────
45
42
  def stream_chunks(
46
43
  self,
47
44
  provider: str,
@@ -68,46 +65,54 @@ class SynchronousInferenceStream:
68
65
 
69
66
  agen = _stream_chunks_async().__aiter__()
70
67
 
71
- # ── build the <fc> suppressor chain ─────────────────────────
72
68
  if suppress_fc:
73
69
  _suppressor = FunctionCallSuppressor()
74
70
  _peek_gate = PeekGate(_suppressor)
75
71
 
76
- def _filter_text(txt: str) -> str: # noqa: D401
72
+ def _filter_text(txt: str) -> str:
77
73
  return _peek_gate.feed(txt)
78
74
 
79
75
  else:
80
76
 
81
- def _filter_text(txt: str) -> str: # noqa: D401
77
+ def _filter_text(txt: str) -> str:
82
78
  return txt
83
79
 
84
- # helper – drain **all** residual bytes from the chain
85
80
  def _drain_filters() -> Optional[dict]:
86
81
  if not suppress_fc:
87
82
  return None
88
83
  parts: list[str] = []
89
84
  while True:
90
- out = _filter_text("") # empty feed ⇒ “give me whatever’s left”
85
+ out = _filter_text("")
91
86
  if not out:
92
87
  break
93
88
  parts.append(out)
89
+ if not _peek_gate.suppressing and _peek_gate.buf:
90
+ parts.append(_peek_gate.buf)
91
+ _peek_gate.buf = ""
94
92
  if parts:
95
- return {"type": "content", "content": "".join(parts)}
93
+ return {
94
+ "type": "content",
95
+ "content": "".join(parts),
96
+ "run_id": self.run_id,
97
+ }
96
98
  return None
97
99
 
98
- # ── main loop ─────────────────────────────────────────────
99
100
  while True:
100
101
  try:
101
102
  chunk = self._GLOBAL_LOOP.run_until_complete(
102
103
  asyncio.wait_for(agen.__anext__(), timeout=timeout_per_chunk)
103
104
  )
104
105
 
105
- # drop provider-labelled function_call objects
106
- if suppress_fc and chunk.get("type") == "function_call":
107
- LOG.debug("[SUPPRESS] provider function_call dropped")
106
+ # Always attach run_id
107
+ chunk["run_id"] = self.run_id
108
+
109
+ # ------------------------------------------------------
110
+ # allow status chunks to bypass suppression suppression
111
+ # -------------------------------------------------------
112
+ if chunk.get("type") == "status":
113
+ yield chunk
108
114
  continue
109
115
 
110
- # ② hot-code & file-preview payloads always pass
111
116
  if chunk.get("type") in ("hot_code", "hot_code_output"):
112
117
  yield chunk
113
118
  continue
@@ -119,16 +124,13 @@ class SynchronousInferenceStream:
119
124
  yield chunk
120
125
  continue
121
126
 
122
- # ③ ordinary TEXT content — run through the <fc> filter
123
127
  if isinstance(chunk.get("content"), str):
124
128
  chunk["content"] = _filter_text(chunk["content"])
125
129
  if chunk["content"] == "":
126
- continue # fully suppressed / still buffering
130
+ continue
127
131
 
128
- # ④ everything else streams unchanged
129
132
  yield chunk
130
133
 
131
- # ─────────── graceful endings ───────────
132
134
  except StopAsyncIteration:
133
135
  if tail := _drain_filters():
134
136
  yield tail
@@ -141,13 +143,12 @@ class SynchronousInferenceStream:
141
143
  LOG.error("[TimeoutError] Chunk wait expired – aborting stream.")
142
144
  break
143
145
 
144
- except Exception as exc: # noqa: BLE001
146
+ except Exception as exc:
145
147
  if tail := _drain_filters():
146
148
  yield tail
147
149
  LOG.error("Unexpected streaming error: %s", exc, exc_info=True)
148
150
  break
149
151
 
150
- # ────────────────────────────────────────────────────────────
151
152
  @classmethod
152
153
  def shutdown_loop(cls) -> None:
153
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.33.11
3
+ Version: 1.33.12
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