projectdavid 1.32.13__tar.gz → 1.32.15__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 (68) hide show
  1. {projectdavid-1.32.13 → projectdavid-1.32.15}/CHANGELOG.md +14 -0
  2. {projectdavid-1.32.13/src/projectdavid.egg-info → projectdavid-1.32.15}/PKG-INFO +1 -1
  3. {projectdavid-1.32.13 → projectdavid-1.32.15}/pyproject.toml +1 -1
  4. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/clients/synchronous_inference_wrapper.py +31 -8
  5. {projectdavid-1.32.13 → projectdavid-1.32.15/src/projectdavid.egg-info}/PKG-INFO +1 -1
  6. {projectdavid-1.32.13 → projectdavid-1.32.15}/LICENSE +0 -0
  7. {projectdavid-1.32.13 → projectdavid-1.32.15}/MANIFEST.in +0 -0
  8. {projectdavid-1.32.13 → projectdavid-1.32.15}/README.md +0 -0
  9. {projectdavid-1.32.13 → projectdavid-1.32.15}/docs/assistants.md +0 -0
  10. {projectdavid-1.32.13 → projectdavid-1.32.15}/docs/code_interpretation.md +0 -0
  11. {projectdavid-1.32.13 → projectdavid-1.32.15}/docs/database.md +0 -0
  12. {projectdavid-1.32.13 → projectdavid-1.32.15}/docs/database_assistant_example.md +0 -0
  13. {projectdavid-1.32.13 → projectdavid-1.32.15}/docs/docker_comtainers.md +0 -0
  14. {projectdavid-1.32.13 → projectdavid-1.32.15}/docs/file_search.md +0 -0
  15. {projectdavid-1.32.13 → projectdavid-1.32.15}/docs/files.md +0 -0
  16. {projectdavid-1.32.13 → projectdavid-1.32.15}/docs/function_call_definition.md +0 -0
  17. {projectdavid-1.32.13 → projectdavid-1.32.15}/docs/function_calls.md +0 -0
  18. {projectdavid-1.32.13 → projectdavid-1.32.15}/docs/handling_function_calls.md +0 -0
  19. {projectdavid-1.32.13 → projectdavid-1.32.15}/docs/inference.md +0 -0
  20. {projectdavid-1.32.13 → projectdavid-1.32.15}/docs/messages.md +0 -0
  21. {projectdavid-1.32.13 → projectdavid-1.32.15}/docs/runs.md +0 -0
  22. {projectdavid-1.32.13 → projectdavid-1.32.15}/docs/streams.md +0 -0
  23. {projectdavid-1.32.13 → projectdavid-1.32.15}/docs/threads.md +0 -0
  24. {projectdavid-1.32.13 → projectdavid-1.32.15}/docs/tools.md +0 -0
  25. {projectdavid-1.32.13 → projectdavid-1.32.15}/docs/users.md +0 -0
  26. {projectdavid-1.32.13 → projectdavid-1.32.15}/docs/vector_store.md +0 -0
  27. {projectdavid-1.32.13 → projectdavid-1.32.15}/docs/versioning.md +0 -0
  28. {projectdavid-1.32.13 → projectdavid-1.32.15}/setup.cfg +0 -0
  29. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/__init__.py +0 -0
  30. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/_version.py +0 -0
  31. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/clients/actions_client.py +0 -0
  32. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/clients/api_key_client.py +0 -0
  33. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/clients/assistants_client.py +0 -0
  34. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/clients/base_client.py +0 -0
  35. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/clients/base_vector_store.py +0 -0
  36. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/clients/event_handler.py +0 -0
  37. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/clients/file_processor.py +0 -0
  38. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/clients/file_search.py +0 -0
  39. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/clients/files_client.py +0 -0
  40. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/clients/inference_client.py +0 -0
  41. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/clients/messages_client.py +0 -0
  42. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/clients/runs.py +0 -0
  43. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/clients/threads_client.py +0 -0
  44. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/clients/tools_client.py +0 -0
  45. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/clients/users_client.py +0 -0
  46. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/clients/vector_store_manager.py +0 -0
  47. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/clients/vectors.py +0 -0
  48. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/constants/platform.py +0 -0
  49. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/entity.py +0 -0
  50. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/events.py +0 -0
  51. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/serializers.py +0 -0
  52. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/services/logging_service.py +0 -0
  53. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/synthesis/__init__.py +0 -0
  54. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/synthesis/llm_synthesizer.py +0 -0
  55. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/synthesis/prompt.py +0 -0
  56. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/synthesis/reranker.py +0 -0
  57. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/synthesis/retriever.py +0 -0
  58. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/utils/__init__.py +0 -0
  59. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/utils/function_call_suppressor.py +0 -0
  60. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/utils/monitor_launcher.py +0 -0
  61. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/utils/peek_gate.py +0 -0
  62. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/utils/run_monitor.py +0 -0
  63. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid/utils/vector_search_formatter.py +0 -0
  64. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid.egg-info/SOURCES.txt +0 -0
  65. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid.egg-info/dependency_links.txt +0 -0
  66. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid.egg-info/requires.txt +0 -0
  67. {projectdavid-1.32.13 → projectdavid-1.32.15}/src/projectdavid.egg-info/top_level.txt +0 -0
  68. {projectdavid-1.32.13 → projectdavid-1.32.15}/tests/test_clients.py +0 -0
@@ -1,3 +1,17 @@
1
+ ## [1.32.15](https://github.com/frankie336/projectdavid/compare/v1.32.14...v1.32.15) (2025-06-09)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * Filter and supress file_search inline-7 ([7c85449](https://github.com/frankie336/projectdavid/commit/7c85449a288384eed76aa5c87c657f1a149be937))
7
+
8
+ ## [1.32.14](https://github.com/frankie336/projectdavid/compare/v1.32.13...v1.32.14) (2025-06-09)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * Filter and supress file_search inline-5 ([2ed7419](https://github.com/frankie336/projectdavid/commit/2ed7419d9d2ff8d73559b40b29942a3d2319734c))
14
+
1
15
  ## [1.32.13](https://github.com/frankie336/projectdavid/compare/v1.32.12...v1.32.13) (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.13
3
+ Version: 1.32.15
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.32.13"
7
+ version = "1.32.15"
8
8
  description = "Python SDK for interacting with the Entities Assistant API."
9
9
  readme = "README.md"
10
10
  authors = [
@@ -14,7 +14,7 @@ class SynchronousInferenceStream:
14
14
  _GLOBAL_LOOP = asyncio.new_event_loop()
15
15
  asyncio.set_event_loop(_GLOBAL_LOOP)
16
16
 
17
- # ────────────────────────────────────────────────────────────────
17
+ # ────────────────────────────────────────────────────────────
18
18
  def __init__(self, inference) -> None:
19
19
  self.inference_client = inference
20
20
  self.user_id: Optional[str] = None
@@ -24,6 +24,7 @@ class SynchronousInferenceStream:
24
24
  self.run_id: Optional[str] = None
25
25
  self.api_key: Optional[str] = None
26
26
 
27
+ # ────────────────────────────────────────────────────────────
27
28
  def setup(
28
29
  self,
29
30
  user_id: str,
@@ -40,7 +41,7 @@ class SynchronousInferenceStream:
40
41
  self.run_id = run_id
41
42
  self.api_key = api_key
42
43
 
43
- # ────────────────────────────────────────────────────────────────
44
+ # ────────────────────────────────────────────────────────────
44
45
  def stream_chunks(
45
46
  self,
46
47
  provider: str,
@@ -72,15 +73,29 @@ class SynchronousInferenceStream:
72
73
  _suppressor = FunctionCallSuppressor()
73
74
  _peek_gate = PeekGate(_suppressor)
74
75
 
75
- def _filter_text(txt: str) -> str:
76
+ def _filter_text(txt: str) -> str: # noqa: D401
76
77
  return _peek_gate.feed(txt)
77
78
 
78
79
  else:
79
80
 
80
- def _filter_text(txt: str) -> str:
81
+ def _filter_text(txt: str) -> str: # noqa: D401
81
82
  return txt
82
83
 
83
- # ── main loop ───────────────────────────────────────────────
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 ─────────────────────────────────────────────
84
99
  while True:
85
100
  try:
86
101
  chunk = self._GLOBAL_LOOP.run_until_complete(
@@ -108,23 +123,31 @@ class SynchronousInferenceStream:
108
123
  if isinstance(chunk.get("content"), str):
109
124
  chunk["content"] = _filter_text(chunk["content"])
110
125
  if chunk["content"] == "":
111
- # fully suppressed (either buffering or an <fc> block)
112
- continue
126
+ continue # fully suppressed / still buffering
113
127
 
114
128
  # ④ everything else streams unchanged
115
129
  yield chunk
116
130
 
131
+ # ─────────── graceful endings ───────────
117
132
  except StopAsyncIteration:
133
+ if tail := _drain_filters():
134
+ yield tail
118
135
  LOG.info("Stream completed normally.")
119
136
  break
137
+
120
138
  except asyncio.TimeoutError:
139
+ if tail := _drain_filters():
140
+ yield tail
121
141
  LOG.error("[TimeoutError] Chunk wait expired – aborting stream.")
122
142
  break
143
+
123
144
  except Exception as exc: # noqa: BLE001
145
+ if tail := _drain_filters():
146
+ yield tail
124
147
  LOG.error("Unexpected streaming error: %s", exc, exc_info=True)
125
148
  break
126
149
 
127
- # ────────────────────────────────────────────────────────────────
150
+ # ────────────────────────────────────────────────────────────
128
151
  @classmethod
129
152
  def shutdown_loop(cls) -> None:
130
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.32.13
3
+ Version: 1.32.15
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