projectdavid 1.34.2__tar.gz → 1.34.4__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 (72) hide show
  1. {projectdavid-1.34.2 → projectdavid-1.34.4}/CHANGELOG.md +14 -0
  2. {projectdavid-1.34.2/src/projectdavid.egg-info → projectdavid-1.34.4}/PKG-INFO +1 -1
  3. {projectdavid-1.34.2 → projectdavid-1.34.4}/pyproject.toml +1 -1
  4. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/clients/runs.py +30 -158
  5. {projectdavid-1.34.2 → projectdavid-1.34.4/src/projectdavid.egg-info}/PKG-INFO +1 -1
  6. {projectdavid-1.34.2 → projectdavid-1.34.4}/LICENSE +0 -0
  7. {projectdavid-1.34.2 → projectdavid-1.34.4}/MANIFEST.in +0 -0
  8. {projectdavid-1.34.2 → projectdavid-1.34.4}/README.md +0 -0
  9. {projectdavid-1.34.2 → projectdavid-1.34.4}/docs/UPDATE-V133.23.md +0 -0
  10. {projectdavid-1.34.2 → projectdavid-1.34.4}/docs/assistants.md +0 -0
  11. {projectdavid-1.34.2 → projectdavid-1.34.4}/docs/code_interpretation.md +0 -0
  12. {projectdavid-1.34.2 → projectdavid-1.34.4}/docs/database.md +0 -0
  13. {projectdavid-1.34.2 → projectdavid-1.34.4}/docs/database_assistant_example.md +0 -0
  14. {projectdavid-1.34.2 → projectdavid-1.34.4}/docs/docker_comtainers.md +0 -0
  15. {projectdavid-1.34.2 → projectdavid-1.34.4}/docs/file_search.md +0 -0
  16. {projectdavid-1.34.2 → projectdavid-1.34.4}/docs/files.md +0 -0
  17. {projectdavid-1.34.2 → projectdavid-1.34.4}/docs/function_call_definition.md +0 -0
  18. {projectdavid-1.34.2 → projectdavid-1.34.4}/docs/function_calls.md +0 -0
  19. {projectdavid-1.34.2 → projectdavid-1.34.4}/docs/handling_function_calls.md +0 -0
  20. {projectdavid-1.34.2 → projectdavid-1.34.4}/docs/inference.md +0 -0
  21. {projectdavid-1.34.2 → projectdavid-1.34.4}/docs/messages.md +0 -0
  22. {projectdavid-1.34.2 → projectdavid-1.34.4}/docs/runs.md +0 -0
  23. {projectdavid-1.34.2 → projectdavid-1.34.4}/docs/streams.md +0 -0
  24. {projectdavid-1.34.2 → projectdavid-1.34.4}/docs/threads.md +0 -0
  25. {projectdavid-1.34.2 → projectdavid-1.34.4}/docs/tools.md +0 -0
  26. {projectdavid-1.34.2 → projectdavid-1.34.4}/docs/users.md +0 -0
  27. {projectdavid-1.34.2 → projectdavid-1.34.4}/docs/vector_store.md +0 -0
  28. {projectdavid-1.34.2 → projectdavid-1.34.4}/docs/versioning.md +0 -0
  29. {projectdavid-1.34.2 → projectdavid-1.34.4}/setup.cfg +0 -0
  30. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/__init__.py +0 -0
  31. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/_version.py +0 -0
  32. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/clients/actions_client.py +0 -0
  33. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/clients/api_key_client.py +0 -0
  34. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/clients/assistants_client.py +0 -0
  35. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/clients/base_client.py +0 -0
  36. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/clients/base_vector_store.py +0 -0
  37. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/clients/event_handler.py +0 -0
  38. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/clients/file_processor.py +0 -0
  39. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/clients/file_search.py +0 -0
  40. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/clients/files_client.py +0 -0
  41. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/clients/inference_client.py +0 -0
  42. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/clients/messages_client.py +0 -0
  43. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/clients/synchronous_inference_wrapper.py +0 -0
  44. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/clients/threads_client.py +0 -0
  45. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/clients/tools_client.py +0 -0
  46. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/clients/users_client.py +0 -0
  47. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/clients/vector_store_manager.py +0 -0
  48. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/clients/vectors.py +0 -0
  49. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/clients/vision-file_processor.py +0 -0
  50. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/clients/vision_vectors.py +0 -0
  51. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/constants/platform.py +0 -0
  52. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/decorators.py +0 -0
  53. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/entity.py +0 -0
  54. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/events.py +0 -0
  55. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/serializers.py +0 -0
  56. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/services/logging_service.py +0 -0
  57. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/synthesis/__init__.py +0 -0
  58. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/synthesis/llm_synthesizer.py +0 -0
  59. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/synthesis/prompt.py +0 -0
  60. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/synthesis/reranker.py +0 -0
  61. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/synthesis/retriever.py +0 -0
  62. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/utils/__init__.py +0 -0
  63. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/utils/function_call_suppressor.py +0 -0
  64. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/utils/monitor_launcher.py +0 -0
  65. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/utils/peek_gate.py +0 -0
  66. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/utils/run_monitor.py +0 -0
  67. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid/utils/vector_search_formatter.py +0 -0
  68. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid.egg-info/SOURCES.txt +0 -0
  69. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid.egg-info/dependency_links.txt +0 -0
  70. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid.egg-info/requires.txt +0 -0
  71. {projectdavid-1.34.2 → projectdavid-1.34.4}/src/projectdavid.egg-info/top_level.txt +0 -0
  72. {projectdavid-1.34.2 → projectdavid-1.34.4}/tests/test_clients.py +0 -0
@@ -1,3 +1,17 @@
1
+ ## [1.34.4](https://github.com/frankie336/projectdavid/compare/v1.34.3...v1.34.4) (2025-08-15)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * Adding update_run ([ce98a68](https://github.com/frankie336/projectdavid/commit/ce98a688150c5073d1041815542012e486cf706e))
7
+
8
+ ## [1.34.3](https://github.com/frankie336/projectdavid/compare/v1.34.2...v1.34.3) (2025-08-13)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * rename list_all_runs and list_runs ([7efb822](https://github.com/frankie336/projectdavid/commit/7efb8220c82184df941fc897132ca3caa96d07a0))
14
+
1
15
  ## [1.34.2](https://github.com/frankie336/projectdavid/compare/v1.34.1...v1.34.2) (2025-08-13)
2
16
 
3
17
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: projectdavid
3
- Version: 1.34.2
3
+ Version: 1.34.4
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.34.2"
7
+ version = "1.34.4"
8
8
  description = "Python SDK for interacting with the Entities Assistant API."
9
9
  readme = "README.md"
10
10
  authors = [
@@ -148,6 +148,25 @@ class RunsClient(BaseAPIClient):
148
148
  )
149
149
  raise
150
150
 
151
+ def update_run(self, run_id: str, metadata: Dict[str, Any]) -> ent_validator.Run:
152
+ """
153
+ Shallow-merge metadata into a run. Returns the updated Run.
154
+ """
155
+ logging_utility.info("Updating metadata for run_id: %s", run_id)
156
+ try:
157
+ resp = self.client.put(f"/v1/runs/{run_id}/metadata", json=metadata)
158
+ resp.raise_for_status()
159
+ return ent_validator.Run(**resp.json())
160
+ except ValidationError as e:
161
+ logging_utility.error("Validation error: %s", e.json())
162
+ raise ValueError(f"Validation error: {e}")
163
+ except httpx.HTTPStatusError as e:
164
+ logging_utility.error("HTTP error updating run metadata: %s", str(e))
165
+ raise
166
+ except Exception as e:
167
+ logging_utility.error("Unexpected error updating run metadata: %s", str(e))
168
+ raise
169
+
151
170
  def update_run_status(self, run_id: str, new_status: str) -> ent_validator.Run:
152
171
  """
153
172
  Update the status of a run.
@@ -609,18 +628,17 @@ class RunsClient(BaseAPIClient):
609
628
  t.join()
610
629
 
611
630
  # ------------------------------------------------------------
612
- # These are helpers that build the run lists
631
+ # List all runs by thread_id
613
632
  # ------------------------------------------------------------
614
- def list_runs_enveloped(
615
- self, limit: int = 20, order: str = "asc"
633
+ def list_runs(
634
+ self, thread_id: str, limit: int = 20, order: str = "asc"
616
635
  ) -> ent_validator.RunListResponse:
617
636
  params = {"limit": limit, "order": order if order in ("asc", "desc") else "asc"}
618
- resp = self.client.get("/v1/runs", params=params)
637
+ resp = self.client.get(f"/v1/threads/{thread_id}/runs", params=params)
619
638
  resp.raise_for_status()
620
639
  payload = resp.json()
621
640
  if isinstance(payload, dict) and "data" in payload:
622
641
  return ent_validator.RunListResponse(**payload)
623
- # legacy fallback: wrap raw list
624
642
  runs = [ent_validator.Run(**item) for item in payload]
625
643
  return ent_validator.RunListResponse(
626
644
  object="list",
@@ -630,15 +648,19 @@ class RunsClient(BaseAPIClient):
630
648
  has_more=False,
631
649
  )
632
650
 
633
- def list_runs_for_thread_enveloped(
634
- self, thread_id: str, limit: int = 20, order: str = "asc"
651
+ # ------------------------------------------------------------
652
+ # List all runs by user
653
+ # ------------------------------------------------------------
654
+ def list_all_runs(
655
+ self, limit: int = 20, order: str = "asc"
635
656
  ) -> ent_validator.RunListResponse:
636
657
  params = {"limit": limit, "order": order if order in ("asc", "desc") else "asc"}
637
- resp = self.client.get(f"/v1/threads/{thread_id}/runs", params=params)
658
+ resp = self.client.get("/v1/runs", params=params)
638
659
  resp.raise_for_status()
639
660
  payload = resp.json()
640
661
  if isinstance(payload, dict) and "data" in payload:
641
662
  return ent_validator.RunListResponse(**payload)
663
+ # legacy fallback: wrap raw list
642
664
  runs = [ent_validator.Run(**item) for item in payload]
643
665
  return ent_validator.RunListResponse(
644
666
  object="list",
@@ -647,153 +669,3 @@ class RunsClient(BaseAPIClient):
647
669
  last_id=runs[-1].id if runs else None,
648
670
  has_more=False,
649
671
  )
650
-
651
- def list_runs(self, limit: int = 20, order: str = "asc") -> List[ent_validator.Run]:
652
- # soft-deprecate in logs if you want
653
- env = self.list_runs_enveloped(limit=limit, order=order)
654
- return list(env.data)
655
-
656
- def list_runs_for_thread(
657
- self, thread_id: str, limit: int = 20, order: str = "asc"
658
- ) -> List[ent_validator.Run]:
659
- env = self.list_runs_for_thread_enveloped(
660
- thread_id=thread_id, limit=limit, order=order
661
- )
662
- return list(env.data)
663
-
664
- def list_runsX(
665
- self, limit: int = 20, order: str = "asc"
666
- ) -> List[ent_validator.Run]:
667
-
668
- logging_utility.info("Listing runs with limit: %d, order: %s", limit, order)
669
- params = {"limit": limit, "order": order if order in ("asc", "desc") else "asc"}
670
- try:
671
- resp = self.client.get("/v1/runs", params=params)
672
- resp.raise_for_status()
673
- payload = resp.json()
674
-
675
- # Preferred: envelope
676
- if isinstance(payload, dict) and "data" in payload:
677
- env = ent_validator.RunListResponse(**payload)
678
- logging_utility.info("Retrieved %d runs", len(env.data))
679
- return list(env.data)
680
-
681
- # Legacy: raw list of dicts
682
- runs = [ent_validator.Run(**item) for item in payload]
683
- logging_utility.info("Retrieved %d runs (legacy)", len(runs))
684
- return runs
685
-
686
- except ValidationError as e:
687
- logging_utility.error("Validation error: %s", e.json())
688
- raise ValueError(f"Validation error: {e}")
689
- except httpx.HTTPStatusError as e:
690
- logging_utility.error("HTTP error occurred while listing runs: %s", str(e))
691
- raise
692
- except Exception as e:
693
- logging_utility.error("An error occurred while listing runs: %s", str(e))
694
- raise
695
-
696
- def list_runs_with_metaX(
697
- self, limit: int = 20, order: str = "asc"
698
- ) -> Tuple[List[ent_validator.Run], Optional[str], Optional[str], bool]:
699
- """
700
- Returns (runs, first_id, last_id, has_more).
701
- """
702
- logging_utility.info("Listing runs (with meta) limit=%d order=%s", limit, order)
703
- params = {"limit": limit, "order": order if order in ("asc", "desc") else "asc"}
704
- try:
705
- resp = self.client.get("/v1/runs", params=params)
706
- resp.raise_for_status()
707
- payload = resp.json()
708
-
709
- if isinstance(payload, dict) and "data" in payload:
710
- env = ent_validator.RunListResponse(**payload)
711
- return list(env.data), env.first_id, env.last_id, env.has_more
712
-
713
- # Legacy fallback: compute minimal meta
714
- runs = [ent_validator.Run(**item) for item in payload]
715
- first_id = runs[0].id if runs else None
716
- last_id = runs[-1].id if runs else None
717
- return runs, first_id, last_id, False
718
-
719
- except ValidationError as e:
720
- logging_utility.error("Validation error: %s", e.json())
721
- raise ValueError(f"Validation error: {e}")
722
- except httpx.HTTPStatusError as e:
723
- logging_utility.error("HTTP error occurred while listing runs: %s", str(e))
724
- raise
725
- except Exception as e:
726
- logging_utility.error("An error occurred while listing runs: %s", str(e))
727
- raise
728
-
729
- def list_runs_for_threadX(
730
- self, thread_id: str, limit: int = 20, order: str = "asc"
731
- ) -> List[ent_validator.Run]:
732
- logging_utility.info(
733
- "Listing runs for thread_id=%s (limit=%d, order=%s)",
734
- thread_id,
735
- limit,
736
- order,
737
- )
738
- params = {"limit": limit, "order": order if order in ("asc", "desc") else "asc"}
739
- try:
740
- resp = self.client.get(f"/v1/threads/{thread_id}/runs", params=params)
741
- resp.raise_for_status()
742
- payload = resp.json()
743
-
744
- if isinstance(payload, dict) and "data" in payload:
745
- env = ent_validator.RunListResponse(**payload)
746
- logging_utility.info(
747
- "Retrieved %d runs for thread %s", len(env.data), thread_id
748
- )
749
- return list(env.data)
750
-
751
- runs = [ent_validator.Run(**item) for item in payload]
752
- logging_utility.info(
753
- "Retrieved %d runs (legacy) for thread %s", len(runs), thread_id
754
- )
755
- return runs
756
-
757
- except ValidationError as e:
758
- logging_utility.error("Validation error: %s", e.json())
759
- raise ValueError(f"Validation error: {e}")
760
- except httpx.HTTPStatusError as e:
761
- logging_utility.error("HTTP error listing runs for thread: %s", str(e))
762
- raise
763
- except Exception as e:
764
- logging_utility.error("Error listing runs for thread: %s", str(e))
765
- raise
766
-
767
- def list_runs_for_thread_with_metaX(
768
- self, thread_id: str, limit: int = 20, order: str = "asc"
769
- ) -> Tuple[List[ent_validator.Run], Optional[str], Optional[str], bool]:
770
- logging_utility.info(
771
- "Listing runs for thread_id=%s (with meta) limit=%d order=%s",
772
- thread_id,
773
- limit,
774
- order,
775
- )
776
- params = {"limit": limit, "order": order if order in ("asc", "desc") else "asc"}
777
- try:
778
- resp = self.client.get(f"/v1/threads/{thread_id}/runs", params=params)
779
- resp.raise_for_status()
780
- payload = resp.json()
781
-
782
- if isinstance(payload, dict) and "data" in payload:
783
- env = ent_validator.RunListResponse(**payload)
784
- return list(env.data), env.first_id, env.last_id, env.has_more
785
-
786
- runs = [ent_validator.Run(**item) for item in payload]
787
- first_id = runs[0].id if runs else None
788
- last_id = runs[-1].id if runs else None
789
- return runs, first_id, last_id, False
790
-
791
- except ValidationError as e:
792
- logging_utility.error("Validation error: %s", e.json())
793
- raise ValueError(f"Validation error: {e}")
794
- except httpx.HTTPStatusError as e:
795
- logging_utility.error("HTTP error listing runs for thread: %s", str(e))
796
- raise
797
- except Exception as e:
798
- logging_utility.error("Error listing runs for thread: %s", str(e))
799
- raise
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: projectdavid
3
- Version: 1.34.2
3
+ Version: 1.34.4
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