deepeval 3.6.3__tar.gz → 3.6.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.
Files changed (468) hide show
  1. {deepeval-3.6.3 → deepeval-3.6.4}/PKG-INFO +1 -1
  2. deepeval-3.6.4/deepeval/_version.py +1 -0
  3. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/prompt/prompt.py +133 -86
  4. {deepeval-3.6.3 → deepeval-3.6.4}/pyproject.toml +1 -1
  5. deepeval-3.6.3/deepeval/_version.py +0 -1
  6. {deepeval-3.6.3 → deepeval-3.6.4}/LICENSE.md +0 -0
  7. {deepeval-3.6.3 → deepeval-3.6.4}/README.md +0 -0
  8. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/__init__.py +0 -0
  9. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/annotation/__init__.py +0 -0
  10. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/annotation/annotation.py +0 -0
  11. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/annotation/api.py +0 -0
  12. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/__init__.py +0 -0
  13. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/arc/__init__.py +0 -0
  14. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/arc/arc.py +0 -0
  15. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/arc/mode.py +0 -0
  16. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/arc/template.py +0 -0
  17. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/base_benchmark.py +0 -0
  18. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/bbq/__init__.py +0 -0
  19. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/bbq/bbq.py +0 -0
  20. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/bbq/task.py +0 -0
  21. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/bbq/template.py +0 -0
  22. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/__init__.py +0 -0
  23. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/big_bench_hard.py +0 -0
  24. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/__init__.py +0 -0
  25. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/boolean_expressions.txt +0 -0
  26. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/causal_judgement.txt +0 -0
  27. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/date_understanding.txt +0 -0
  28. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/disambiguation_qa.txt +0 -0
  29. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/dyck_languages.txt +0 -0
  30. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/formal_fallacies.txt +0 -0
  31. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/geometric_shapes.txt +0 -0
  32. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/hyperbaton.txt +0 -0
  33. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/logical_deduction_five_objects.txt +0 -0
  34. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/logical_deduction_seven_objects.txt +0 -0
  35. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/logical_deduction_three_objects.txt +0 -0
  36. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/movie_recommendation.txt +0 -0
  37. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/multistep_arithmetic_two.txt +0 -0
  38. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/navigate.txt +0 -0
  39. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/object_counting.txt +0 -0
  40. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/penguins_in_a_table.txt +0 -0
  41. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/reasoning_about_colored_objects.txt +0 -0
  42. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/ruin_names.txt +0 -0
  43. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/salient_translation_error_detection.txt +0 -0
  44. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/snarks.txt +0 -0
  45. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/sports_understanding.txt +0 -0
  46. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/temporal_sequences.txt +0 -0
  47. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/tracking_shuffled_objects_five_objects.txt +0 -0
  48. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/tracking_shuffled_objects_seven_objects.txt +0 -0
  49. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/tracking_shuffled_objects_three_objects.txt +0 -0
  50. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/web_of_lies.txt +0 -0
  51. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/word_sorting.txt +0 -0
  52. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/__init__.py +0 -0
  53. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/boolean_expressions.txt +0 -0
  54. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/causal_judgement.txt +0 -0
  55. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/date_understanding.txt +0 -0
  56. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/disambiguation_qa.txt +0 -0
  57. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/dyck_languages.txt +0 -0
  58. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/formal_fallacies.txt +0 -0
  59. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/geometric_shapes.txt +0 -0
  60. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/hyperbaton.txt +0 -0
  61. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/logical_deduction_five_objects.txt +0 -0
  62. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/logical_deduction_seven_objects.txt +0 -0
  63. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/logical_deduction_three_objects.txt +0 -0
  64. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/movie_recommendation.txt +0 -0
  65. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/multistep_arithmetic_two.txt +0 -0
  66. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/navigate.txt +0 -0
  67. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/object_counting.txt +0 -0
  68. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/penguins_in_a_table.txt +0 -0
  69. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/reasoning_about_colored_objects.txt +0 -0
  70. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/ruin_names.txt +0 -0
  71. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/salient_translation_error_detection.txt +0 -0
  72. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/snarks.txt +0 -0
  73. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/sports_understanding.txt +0 -0
  74. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/temporal_sequences.txt +0 -0
  75. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/tracking_shuffled_objects_five_objects.txt +0 -0
  76. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/tracking_shuffled_objects_seven_objects.txt +0 -0
  77. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/tracking_shuffled_objects_three_objects.txt +0 -0
  78. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/web_of_lies.txt +0 -0
  79. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/word_sorting.txt +0 -0
  80. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/task.py +0 -0
  81. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/big_bench_hard/template.py +0 -0
  82. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/bool_q/__init__.py +0 -0
  83. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/bool_q/bool_q.py +0 -0
  84. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/bool_q/template.py +0 -0
  85. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/drop/__init__.py +0 -0
  86. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/drop/drop.py +0 -0
  87. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/drop/task.py +0 -0
  88. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/drop/template.py +0 -0
  89. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/equity_med_qa/__init__.py +0 -0
  90. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/equity_med_qa/equity_med_qa.py +0 -0
  91. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/equity_med_qa/task.py +0 -0
  92. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/equity_med_qa/template.py +0 -0
  93. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/gsm8k/__init__.py +0 -0
  94. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/gsm8k/gsm8k.py +0 -0
  95. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/gsm8k/template.py +0 -0
  96. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/hellaswag/__init__.py +0 -0
  97. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/hellaswag/hellaswag.py +0 -0
  98. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/hellaswag/task.py +0 -0
  99. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/hellaswag/template.py +0 -0
  100. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/human_eval/__init__.py +0 -0
  101. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/human_eval/human_eval.py +0 -0
  102. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/human_eval/task.py +0 -0
  103. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/human_eval/template.py +0 -0
  104. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/ifeval/__init__.py +0 -0
  105. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/ifeval/ifeval.py +0 -0
  106. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/ifeval/template.py +0 -0
  107. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/lambada/__init__.py +0 -0
  108. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/lambada/lambada.py +0 -0
  109. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/lambada/template.py +0 -0
  110. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/logi_qa/__init__.py +0 -0
  111. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/logi_qa/logi_qa.py +0 -0
  112. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/logi_qa/task.py +0 -0
  113. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/logi_qa/template.py +0 -0
  114. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/math_qa/__init__.py +0 -0
  115. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/math_qa/math_qa.py +0 -0
  116. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/math_qa/task.py +0 -0
  117. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/math_qa/template.py +0 -0
  118. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/mmlu/__init__.py +0 -0
  119. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/mmlu/mmlu.py +0 -0
  120. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/mmlu/task.py +0 -0
  121. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/mmlu/template.py +0 -0
  122. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/modes/__init__.py +0 -0
  123. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/results.py +0 -0
  124. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/schema.py +0 -0
  125. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/squad/__init__.py +0 -0
  126. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/squad/squad.py +0 -0
  127. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/squad/task.py +0 -0
  128. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/squad/template.py +0 -0
  129. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/tasks/__init__.py +0 -0
  130. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/truthful_qa/__init__.py +0 -0
  131. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/truthful_qa/mode.py +0 -0
  132. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/truthful_qa/task.py +0 -0
  133. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/truthful_qa/template.py +0 -0
  134. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/truthful_qa/truthful_qa.py +0 -0
  135. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/utils.py +0 -0
  136. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/winogrande/__init__.py +0 -0
  137. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/winogrande/template.py +0 -0
  138. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/benchmarks/winogrande/winogrande.py +0 -0
  139. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/cli/__init__.py +0 -0
  140. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/cli/dotenv_handler.py +0 -0
  141. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/cli/main.py +0 -0
  142. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/cli/server.py +0 -0
  143. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/cli/test.py +0 -0
  144. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/cli/types.py +0 -0
  145. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/cli/utils.py +0 -0
  146. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/confident/__init__.py +0 -0
  147. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/confident/api.py +0 -0
  148. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/confident/types.py +0 -0
  149. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/config/__init__.py +0 -0
  150. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/config/settings.py +0 -0
  151. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/config/settings_manager.py +0 -0
  152. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/config/utils.py +0 -0
  153. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/constants.py +0 -0
  154. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/contextvars.py +0 -0
  155. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/dataset/__init__.py +0 -0
  156. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/dataset/api.py +0 -0
  157. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/dataset/dataset.py +0 -0
  158. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/dataset/golden.py +0 -0
  159. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/dataset/test_run_tracer.py +0 -0
  160. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/dataset/types.py +0 -0
  161. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/dataset/utils.py +0 -0
  162. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/errors.py +0 -0
  163. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/evaluate/__init__.py +0 -0
  164. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/evaluate/api.py +0 -0
  165. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/evaluate/compare.py +0 -0
  166. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/evaluate/configs.py +0 -0
  167. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/evaluate/evaluate.py +0 -0
  168. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/evaluate/execute.py +0 -0
  169. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/evaluate/types.py +0 -0
  170. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/evaluate/utils.py +0 -0
  171. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/integrations/__init__.py +0 -0
  172. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/integrations/crewai/__init__.py +0 -0
  173. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/integrations/crewai/agent.py +0 -0
  174. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/integrations/crewai/handler.py +0 -0
  175. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/integrations/crewai/patch.py +0 -0
  176. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/integrations/hugging_face/__init__.py +0 -0
  177. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/integrations/hugging_face/callback.py +0 -0
  178. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/integrations/hugging_face/rich_manager.py +0 -0
  179. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/integrations/hugging_face/tests/test_callbacks.py +0 -0
  180. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/integrations/hugging_face/utils.py +0 -0
  181. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/integrations/langchain/__init__.py +0 -0
  182. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/integrations/langchain/callback.py +0 -0
  183. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/integrations/langchain/patch.py +0 -0
  184. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/integrations/langchain/utils.py +0 -0
  185. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/integrations/llama_index/__init__.py +0 -0
  186. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/integrations/llama_index/agent/patched.py +0 -0
  187. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/integrations/llama_index/handler.py +0 -0
  188. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/integrations/llama_index/utils.py +0 -0
  189. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/integrations/pydantic_ai/__init__.py +0 -0
  190. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/integrations/pydantic_ai/agent.py +0 -0
  191. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/integrations/pydantic_ai/instrumentator.py +0 -0
  192. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/integrations/pydantic_ai/otel.py +0 -0
  193. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/key_handler.py +0 -0
  194. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/__init__.py +0 -0
  195. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/answer_relevancy/__init__.py +0 -0
  196. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/answer_relevancy/answer_relevancy.py +0 -0
  197. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/answer_relevancy/schema.py +0 -0
  198. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/answer_relevancy/template.py +0 -0
  199. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/arena_g_eval/__init__.py +0 -0
  200. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/arena_g_eval/arena_g_eval.py +0 -0
  201. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/arena_g_eval/schema.py +0 -0
  202. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/arena_g_eval/template.py +0 -0
  203. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/arena_g_eval/utils.py +0 -0
  204. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/argument_correctness/__init__.py +0 -0
  205. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/argument_correctness/argument_correctness.py +0 -0
  206. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/argument_correctness/schema.py +0 -0
  207. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/argument_correctness/template.py +0 -0
  208. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/base_metric.py +0 -0
  209. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/bias/__init__.py +0 -0
  210. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/bias/bias.py +0 -0
  211. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/bias/schema.py +0 -0
  212. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/bias/template.py +0 -0
  213. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/contextual_precision/__init__.py +0 -0
  214. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/contextual_precision/contextual_precision.py +0 -0
  215. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/contextual_precision/schema.py +0 -0
  216. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/contextual_precision/template.py +0 -0
  217. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/contextual_recall/__init__.py +0 -0
  218. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/contextual_recall/contextual_recall.py +0 -0
  219. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/contextual_recall/schema.py +0 -0
  220. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/contextual_recall/template.py +0 -0
  221. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/contextual_relevancy/__init__.py +0 -0
  222. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/contextual_relevancy/contextual_relevancy.py +0 -0
  223. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/contextual_relevancy/schema.py +0 -0
  224. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/contextual_relevancy/template.py +0 -0
  225. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/conversation_completeness/__init__.py +0 -0
  226. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/conversation_completeness/conversation_completeness.py +0 -0
  227. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/conversation_completeness/schema.py +0 -0
  228. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/conversation_completeness/template.py +0 -0
  229. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/conversational_dag/__init__.py +0 -0
  230. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/conversational_dag/conversational_dag.py +0 -0
  231. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/conversational_dag/nodes.py +0 -0
  232. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/conversational_dag/templates.py +0 -0
  233. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/conversational_g_eval/__init__.py +0 -0
  234. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/conversational_g_eval/conversational_g_eval.py +0 -0
  235. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/conversational_g_eval/schema.py +0 -0
  236. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/conversational_g_eval/template.py +0 -0
  237. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/dag/__init__.py +0 -0
  238. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/dag/dag.py +0 -0
  239. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/dag/graph.py +0 -0
  240. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/dag/nodes.py +0 -0
  241. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/dag/schema.py +0 -0
  242. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/dag/templates.py +0 -0
  243. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/dag/utils.py +0 -0
  244. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/faithfulness/__init__.py +0 -0
  245. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/faithfulness/faithfulness.py +0 -0
  246. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/faithfulness/schema.py +0 -0
  247. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/faithfulness/template.py +0 -0
  248. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/g_eval/__init__.py +0 -0
  249. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/g_eval/g_eval.py +0 -0
  250. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/g_eval/schema.py +0 -0
  251. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/g_eval/template.py +0 -0
  252. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/g_eval/utils.py +0 -0
  253. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/hallucination/__init__.py +0 -0
  254. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/hallucination/hallucination.py +0 -0
  255. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/hallucination/schema.py +0 -0
  256. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/hallucination/template.py +0 -0
  257. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/indicator.py +0 -0
  258. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/json_correctness/__init__.py +0 -0
  259. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/json_correctness/json_correctness.py +0 -0
  260. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/json_correctness/schema.py +0 -0
  261. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/json_correctness/template.py +0 -0
  262. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/knowledge_retention/__init__.py +0 -0
  263. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/knowledge_retention/knowledge_retention.py +0 -0
  264. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/knowledge_retention/schema.py +0 -0
  265. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/knowledge_retention/template.py +0 -0
  266. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/mcp/__init__.py +0 -0
  267. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/mcp/mcp_task_completion.py +0 -0
  268. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/mcp/multi_turn_mcp_use_metric.py +0 -0
  269. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/mcp/schema.py +0 -0
  270. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/mcp/template.py +0 -0
  271. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/mcp_use_metric/__init__.py +0 -0
  272. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/mcp_use_metric/mcp_use_metric.py +0 -0
  273. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/mcp_use_metric/schema.py +0 -0
  274. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/mcp_use_metric/template.py +0 -0
  275. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/misuse/__init__.py +0 -0
  276. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/misuse/misuse.py +0 -0
  277. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/misuse/schema.py +0 -0
  278. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/misuse/template.py +0 -0
  279. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/__init__.py +0 -0
  280. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/image_coherence/__init__.py +0 -0
  281. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/image_coherence/image_coherence.py +0 -0
  282. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/image_coherence/schema.py +0 -0
  283. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/image_coherence/template.py +0 -0
  284. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/image_editing/__init__.py +0 -0
  285. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/image_editing/image_editing.py +0 -0
  286. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/image_editing/schema.py +0 -0
  287. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/image_editing/template.py +0 -0
  288. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/image_helpfulness/__init__.py +0 -0
  289. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/image_helpfulness/image_helpfulness.py +0 -0
  290. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/image_helpfulness/schema.py +0 -0
  291. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/image_helpfulness/template.py +0 -0
  292. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/image_reference/__init__.py +0 -0
  293. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/image_reference/image_reference.py +0 -0
  294. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/image_reference/schema.py +0 -0
  295. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/image_reference/template.py +0 -0
  296. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/multimodal_answer_relevancy/__init__.py +0 -0
  297. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/multimodal_answer_relevancy/multimodal_answer_relevancy.py +0 -0
  298. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/multimodal_answer_relevancy/schema.py +0 -0
  299. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/multimodal_answer_relevancy/template.py +0 -0
  300. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/multimodal_contextual_precision/__init__.py +0 -0
  301. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/multimodal_contextual_precision/multimodal_contextual_precision.py +0 -0
  302. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/multimodal_contextual_precision/schema.py +0 -0
  303. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/multimodal_contextual_precision/template.py +0 -0
  304. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/multimodal_contextual_recall/__init__.py +0 -0
  305. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/multimodal_contextual_recall/multimodal_contextual_recall.py +0 -0
  306. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/multimodal_contextual_recall/schema.py +0 -0
  307. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/multimodal_contextual_recall/template.py +0 -0
  308. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/multimodal_contextual_relevancy/__init__.py +0 -0
  309. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/multimodal_contextual_relevancy/multimodal_contextual_relevancy.py +0 -0
  310. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/multimodal_contextual_relevancy/schema.py +0 -0
  311. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/multimodal_contextual_relevancy/template.py +0 -0
  312. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/multimodal_faithfulness/__init__.py +0 -0
  313. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/multimodal_faithfulness/multimodal_faithfulness.py +0 -0
  314. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/multimodal_faithfulness/schema.py +0 -0
  315. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/multimodal_faithfulness/template.py +0 -0
  316. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/multimodal_g_eval/__init__.py +0 -0
  317. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/multimodal_g_eval/multimodal_g_eval.py +0 -0
  318. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/multimodal_g_eval/schema.py +0 -0
  319. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/multimodal_g_eval/template.py +0 -0
  320. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/multimodal_g_eval/utils.py +0 -0
  321. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/multimodal_tool_correctness/__init__.py +0 -0
  322. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/multimodal_tool_correctness/multimodal_tool_correctness.py +0 -0
  323. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/text_to_image/__init__.py +0 -0
  324. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/text_to_image/schema.py +0 -0
  325. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/text_to_image/template.py +0 -0
  326. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/multimodal_metrics/text_to_image/text_to_image.py +0 -0
  327. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/non_advice/__init__.py +0 -0
  328. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/non_advice/non_advice.py +0 -0
  329. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/non_advice/schema.py +0 -0
  330. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/non_advice/template.py +0 -0
  331. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/pii_leakage/__init__.py +0 -0
  332. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/pii_leakage/pii_leakage.py +0 -0
  333. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/pii_leakage/schema.py +0 -0
  334. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/pii_leakage/template.py +0 -0
  335. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/prompt_alignment/__init__.py +0 -0
  336. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/prompt_alignment/prompt_alignment.py +0 -0
  337. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/prompt_alignment/schema.py +0 -0
  338. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/prompt_alignment/template.py +0 -0
  339. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/ragas.py +0 -0
  340. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/role_adherence/__init__.py +0 -0
  341. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/role_adherence/role_adherence.py +0 -0
  342. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/role_adherence/schema.py +0 -0
  343. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/role_adherence/template.py +0 -0
  344. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/role_violation/__init__.py +0 -0
  345. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/role_violation/role_violation.py +0 -0
  346. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/role_violation/schema.py +0 -0
  347. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/role_violation/template.py +0 -0
  348. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/summarization/__init__.py +0 -0
  349. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/summarization/schema.py +0 -0
  350. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/summarization/summarization.py +0 -0
  351. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/summarization/template.py +0 -0
  352. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/task_completion/__init__.py +0 -0
  353. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/task_completion/schema.py +0 -0
  354. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/task_completion/task_completion.py +0 -0
  355. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/task_completion/template.py +0 -0
  356. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/tool_correctness/__init__.py +0 -0
  357. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/tool_correctness/tool_correctness.py +0 -0
  358. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/toxicity/__init__.py +0 -0
  359. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/toxicity/schema.py +0 -0
  360. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/toxicity/template.py +0 -0
  361. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/toxicity/toxicity.py +0 -0
  362. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/turn_relevancy/__init__.py +0 -0
  363. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/turn_relevancy/schema.py +0 -0
  364. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/turn_relevancy/template.py +0 -0
  365. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/turn_relevancy/turn_relevancy.py +0 -0
  366. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/metrics/utils.py +0 -0
  367. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/__init__.py +0 -0
  368. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/_summac_model.py +0 -0
  369. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/answer_relevancy_model.py +0 -0
  370. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/base_model.py +0 -0
  371. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/detoxify_model.py +0 -0
  372. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/embedding_models/__init__.py +0 -0
  373. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/embedding_models/azure_embedding_model.py +0 -0
  374. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/embedding_models/local_embedding_model.py +0 -0
  375. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/embedding_models/ollama_embedding_model.py +0 -0
  376. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/embedding_models/openai_embedding_model.py +0 -0
  377. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/hallucination_model.py +0 -0
  378. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/llms/__init__.py +0 -0
  379. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/llms/amazon_bedrock_model.py +0 -0
  380. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/llms/anthropic_model.py +0 -0
  381. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/llms/azure_model.py +0 -0
  382. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/llms/deepseek_model.py +0 -0
  383. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/llms/gemini_model.py +0 -0
  384. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/llms/grok_model.py +0 -0
  385. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/llms/kimi_model.py +0 -0
  386. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/llms/litellm_model.py +0 -0
  387. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/llms/local_model.py +0 -0
  388. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/llms/ollama_model.py +0 -0
  389. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/llms/openai_model.py +0 -0
  390. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/llms/utils.py +0 -0
  391. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/mlllms/__init__.py +0 -0
  392. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/mlllms/gemini_model.py +0 -0
  393. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/mlllms/ollama_model.py +0 -0
  394. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/mlllms/openai_model.py +0 -0
  395. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/retry_policy.py +0 -0
  396. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/summac_model.py +0 -0
  397. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/unbias_model.py +0 -0
  398. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/models/utils.py +0 -0
  399. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/openai/__init__.py +0 -0
  400. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/openai/extractors.py +0 -0
  401. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/openai/patch.py +0 -0
  402. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/openai/utils.py +0 -0
  403. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/openai_agents/__init__.py +0 -0
  404. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/openai_agents/agent.py +0 -0
  405. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/openai_agents/callback_handler.py +0 -0
  406. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/openai_agents/extractors.py +0 -0
  407. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/openai_agents/patch.py +0 -0
  408. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/openai_agents/runner.py +0 -0
  409. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/plugins/__init__.py +0 -0
  410. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/plugins/plugin.py +0 -0
  411. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/progress_context.py +0 -0
  412. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/prompt/__init__.py +0 -0
  413. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/prompt/api.py +0 -0
  414. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/prompt/utils.py +0 -0
  415. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/py.typed +0 -0
  416. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/red_teaming/README.md +0 -0
  417. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/scorer/__init__.py +0 -0
  418. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/scorer/scorer.py +0 -0
  419. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/simulator/__init__.py +0 -0
  420. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/simulator/conversation_simulator.py +0 -0
  421. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/simulator/schema.py +0 -0
  422. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/simulator/template.py +0 -0
  423. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/singleton.py +0 -0
  424. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/synthesizer/__init__.py +0 -0
  425. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/synthesizer/base_synthesizer.py +0 -0
  426. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/synthesizer/chunking/__init__.py +0 -0
  427. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/synthesizer/chunking/context_generator.py +0 -0
  428. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/synthesizer/chunking/doc_chunker.py +0 -0
  429. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/synthesizer/config.py +0 -0
  430. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/synthesizer/schema.py +0 -0
  431. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/synthesizer/synthesizer.py +0 -0
  432. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/synthesizer/templates/__init__.py +0 -0
  433. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/synthesizer/templates/template.py +0 -0
  434. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/synthesizer/templates/template_extraction.py +0 -0
  435. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/synthesizer/templates/template_prompt.py +0 -0
  436. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/synthesizer/types.py +0 -0
  437. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/synthesizer/utils.py +0 -0
  438. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/telemetry.py +0 -0
  439. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/test_case/__init__.py +0 -0
  440. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/test_case/arena_test_case.py +0 -0
  441. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/test_case/conversational_test_case.py +0 -0
  442. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/test_case/llm_test_case.py +0 -0
  443. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/test_case/mcp.py +0 -0
  444. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/test_case/mllm_test_case.py +0 -0
  445. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/test_case/utils.py +0 -0
  446. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/test_run/__init__.py +0 -0
  447. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/test_run/api.py +0 -0
  448. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/test_run/cache.py +0 -0
  449. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/test_run/hooks.py +0 -0
  450. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/test_run/hyperparameters.py +0 -0
  451. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/test_run/test_run.py +0 -0
  452. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/tracing/__init__.py +0 -0
  453. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/tracing/api.py +0 -0
  454. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/tracing/context.py +0 -0
  455. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/tracing/offline_evals/__init__.py +0 -0
  456. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/tracing/offline_evals/api.py +0 -0
  457. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/tracing/offline_evals/span.py +0 -0
  458. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/tracing/offline_evals/thread.py +0 -0
  459. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/tracing/offline_evals/trace.py +0 -0
  460. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/tracing/otel/__init__.py +0 -0
  461. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/tracing/otel/exporter.py +0 -0
  462. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/tracing/otel/utils.py +0 -0
  463. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/tracing/patchers.py +0 -0
  464. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/tracing/perf_epoch_bridge.py +0 -0
  465. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/tracing/tracing.py +0 -0
  466. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/tracing/types.py +0 -0
  467. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/tracing/utils.py +0 -0
  468. {deepeval-3.6.3 → deepeval-3.6.4}/deepeval/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deepeval
3
- Version: 3.6.3
3
+ Version: 3.6.4
4
4
  Summary: The LLM Evaluation Framework
5
5
  Home-page: https://github.com/confident-ai/deepeval
6
6
  License: Apache-2.0
@@ -0,0 +1 @@
1
+ __version__: str = "3.6.4"
@@ -8,6 +8,7 @@ import os
8
8
  from pydantic import BaseModel
9
9
  import asyncio
10
10
  import portalocker
11
+ import threading
11
12
 
12
13
  from deepeval.prompt.api import (
13
14
  PromptHttpResponse,
@@ -20,15 +21,39 @@ from deepeval.prompt.api import (
20
21
  from deepeval.prompt.utils import interpolate_text
21
22
  from deepeval.confident.api import Api, Endpoints, HttpMethods
22
23
  from deepeval.constants import HIDDEN_DIR
23
- from deepeval.utils import (
24
- get_or_create_event_loop,
25
- get_or_create_general_event_loop,
26
- )
27
24
 
28
25
  CACHE_FILE_NAME = f"{HIDDEN_DIR}/.deepeval-prompt-cache.json"
29
26
  VERSION_CACHE_KEY = "version"
30
27
  LABEL_CACHE_KEY = "label"
31
28
 
29
+ # Global background event loop for polling
30
+ _polling_loop: Optional[asyncio.AbstractEventLoop] = None
31
+ _polling_thread: Optional[threading.Thread] = None
32
+ _polling_loop_lock = threading.Lock()
33
+
34
+
35
+ def _get_or_create_polling_loop() -> asyncio.AbstractEventLoop:
36
+ """Get or create a background event loop for polling that runs in a daemon thread."""
37
+ global _polling_loop, _polling_thread
38
+
39
+ with _polling_loop_lock:
40
+ if _polling_loop is None or not _polling_loop.is_running():
41
+
42
+ def run_loop():
43
+ global _polling_loop
44
+ _polling_loop = asyncio.new_event_loop()
45
+ asyncio.set_event_loop(_polling_loop)
46
+ _polling_loop.run_forever()
47
+
48
+ _polling_thread = threading.Thread(target=run_loop, daemon=True)
49
+ _polling_thread.start()
50
+
51
+ # Wait for loop to be ready
52
+ while _polling_loop is None:
53
+ time.sleep(0.01)
54
+
55
+ return _polling_loop
56
+
32
57
 
33
58
  class CustomEncoder(json.JSONEncoder):
34
59
  def default(self, obj):
@@ -80,11 +105,22 @@ class Prompt:
80
105
  self._version = None
81
106
  self._polling_tasks: Dict[str, Dict[str, asyncio.Task]] = {}
82
107
  self._refresh_map: Dict[str, Dict[str, int]] = {}
108
+ self._lock = (
109
+ threading.Lock()
110
+ ) # Protect instance attributes from race conditions
83
111
  if template:
84
112
  self._type = PromptType.TEXT
85
113
  elif messages_template:
86
114
  self._type = PromptType.LIST
87
115
 
116
+ def __del__(self):
117
+ """Cleanup polling tasks when instance is destroyed"""
118
+ try:
119
+ self._stop_polling()
120
+ except Exception:
121
+ # Suppress exceptions during cleanup to avoid issues in interpreter shutdown
122
+ pass
123
+
88
124
  @property
89
125
  def version(self):
90
126
  if self._version is not None and self._version != "latest":
@@ -100,33 +136,37 @@ class Prompt:
100
136
  self._version = value
101
137
 
102
138
  def interpolate(self, **kwargs):
103
- if self._type == PromptType.TEXT:
104
- if self._text_template is None:
139
+ with self._lock:
140
+ prompt_type = self._type
141
+ text_template = self._text_template
142
+ messages_template = self._messages_template
143
+ interpolation_type = self._interpolation_type
144
+
145
+ if prompt_type == PromptType.TEXT:
146
+ if text_template is None:
105
147
  raise TypeError(
106
148
  "Unable to interpolate empty prompt template. Please pull a prompt from Confident AI or set template manually to continue."
107
149
  )
108
150
 
109
- return interpolate_text(
110
- self._interpolation_type, self._text_template, **kwargs
111
- )
151
+ return interpolate_text(interpolation_type, text_template, **kwargs)
112
152
 
113
- elif self._type == PromptType.LIST:
114
- if self._messages_template is None:
153
+ elif prompt_type == PromptType.LIST:
154
+ if messages_template is None:
115
155
  raise TypeError(
116
156
  "Unable to interpolate empty prompt template messages. Please pull a prompt from Confident AI or set template manually to continue."
117
157
  )
118
158
 
119
159
  interpolated_messages = []
120
- for message in self._messages_template:
160
+ for message in messages_template:
121
161
  interpolated_content = interpolate_text(
122
- self._interpolation_type, message.content, **kwargs
162
+ interpolation_type, message.content, **kwargs
123
163
  )
124
164
  interpolated_messages.append(
125
165
  {"role": message.role, "content": interpolated_content}
126
166
  )
127
167
  return interpolated_messages
128
168
  else:
129
- raise ValueError(f"Unsupported prompt type: {self._type}")
169
+ raise ValueError(f"Unsupported prompt type: {prompt_type}")
130
170
 
131
171
  def _get_versions(self) -> List:
132
172
  if self.alias is None:
@@ -272,15 +312,16 @@ class Prompt:
272
312
  if not cached_prompt:
273
313
  raise ValueError("Unable to fetch prompt and load from cache")
274
314
 
275
- self.version = cached_prompt.version
276
- self.label = cached_prompt.label
277
- self._text_template = cached_prompt.template
278
- self._messages_template = cached_prompt.messages_template
279
- self._prompt_version_id = cached_prompt.prompt_version_id
280
- self._type = PromptType(cached_prompt.type)
281
- self._interpolation_type = PromptInterpolationType(
282
- cached_prompt.interpolation_type
283
- )
315
+ with self._lock:
316
+ self.version = cached_prompt.version
317
+ self.label = cached_prompt.label
318
+ self._text_template = cached_prompt.template
319
+ self._messages_template = cached_prompt.messages_template
320
+ self._prompt_version_id = cached_prompt.prompt_version_id
321
+ self._type = PromptType(cached_prompt.type)
322
+ self._interpolation_type = PromptInterpolationType(
323
+ cached_prompt.interpolation_type
324
+ )
284
325
 
285
326
  end_time = time.perf_counter()
286
327
  time_taken = format(end_time - start_time, ".2f")
@@ -300,7 +341,6 @@ class Prompt:
300
341
  ):
301
342
  should_write_on_first_fetch = False
302
343
  if refresh:
303
- default_to_cache = True
304
344
  # Check if we need to bootstrap the cache
305
345
  cached_prompt = self._read_from_cache(
306
346
  self.alias, version=version, label=label
@@ -316,12 +356,10 @@ class Prompt:
316
356
  )
317
357
 
318
358
  # Manage background prompt polling
319
- loop = get_or_create_general_event_loop()
320
- if loop.is_running():
321
- loop.create_task(self.create_polling_task(version, label, refresh))
322
- else:
323
- loop.run_until_complete(
324
- self.create_polling_task(version, label, refresh)
359
+ if refresh:
360
+ loop = _get_or_create_polling_loop()
361
+ asyncio.run_coroutine_threadsafe(
362
+ self.create_polling_task(version, label, refresh), loop
325
363
  )
326
364
 
327
365
  if default_to_cache:
@@ -330,15 +368,20 @@ class Prompt:
330
368
  self.alias, version=version, label=label
331
369
  )
332
370
  if cached_prompt:
333
- self.version = cached_prompt.version
334
- self.label = cached_prompt.label
335
- self._text_template = cached_prompt.template
336
- self._messages_template = cached_prompt.messages_template
337
- self._prompt_version_id = cached_prompt.prompt_version_id
338
- self._type = PromptType(cached_prompt.type)
339
- self._interpolation_type = PromptInterpolationType(
340
- cached_prompt.interpolation_type
341
- )
371
+ with self._lock:
372
+ self.version = cached_prompt.version
373
+ self.label = cached_prompt.label
374
+ self._text_template = cached_prompt.template
375
+ self._messages_template = (
376
+ cached_prompt.messages_template
377
+ )
378
+ self._prompt_version_id = (
379
+ cached_prompt.prompt_version_id
380
+ )
381
+ self._type = PromptType(cached_prompt.type)
382
+ self._interpolation_type = PromptInterpolationType(
383
+ cached_prompt.interpolation_type
384
+ )
342
385
  return
343
386
  except:
344
387
  pass
@@ -402,13 +445,14 @@ class Prompt:
402
445
  return
403
446
  raise
404
447
 
405
- self.version = response.version
406
- self.label = response.label
407
- self._text_template = response.text
408
- self._messages_template = response.messages
409
- self._prompt_version_id = response.id
410
- self._type = response.type
411
- self._interpolation_type = response.interpolation_type
448
+ with self._lock:
449
+ self.version = response.version
450
+ self.label = response.label
451
+ self._text_template = response.text
452
+ self._messages_template = response.messages
453
+ self._prompt_version_id = response.id
454
+ self._type = response.type
455
+ self._interpolation_type = response.interpolation_type
412
456
 
413
457
  end_time = time.perf_counter()
414
458
  time_taken = format(end_time - start_time, ".2f")
@@ -483,11 +527,7 @@ class Prompt:
483
527
  version: Optional[str],
484
528
  label: Optional[str],
485
529
  refresh: Optional[int] = 60,
486
- default_to_cache: bool = True,
487
530
  ):
488
- if version is None and label is None:
489
- return
490
-
491
531
  # If polling task doesn't exist, start it
492
532
  CACHE_KEY = LABEL_CACHE_KEY if label else VERSION_CACHE_KEY
493
533
  cache_value = label if label else version
@@ -506,9 +546,7 @@ class Prompt:
506
546
  self._refresh_map[CACHE_KEY][cache_value] = refresh
507
547
  if not polling_task:
508
548
  self._polling_tasks[CACHE_KEY][cache_value] = (
509
- asyncio.create_task(
510
- self.poll(version, label, default_to_cache)
511
- )
549
+ asyncio.create_task(self.poll(version, label))
512
550
  )
513
551
 
514
552
  # If invalid `refresh`, stop the task
@@ -524,24 +562,12 @@ class Prompt:
524
562
  self,
525
563
  version: Optional[str] = None,
526
564
  label: Optional[str] = None,
527
- default_to_cache: bool = True,
528
565
  ):
566
+ CACHE_KEY = LABEL_CACHE_KEY if label else VERSION_CACHE_KEY
567
+ cache_value = label if label else version
568
+
529
569
  while True:
530
- if default_to_cache:
531
- cached_prompt = self._read_from_cache(
532
- self.alias, version=version, label=label
533
- )
534
- if cached_prompt:
535
- self.version = cached_prompt.version
536
- self.label = cached_prompt.label
537
- self._text_template = cached_prompt.template
538
- self._messages_template = cached_prompt.messages_template
539
- self._prompt_version_id = cached_prompt.prompt_version_id
540
- self._type = PromptType(cached_prompt.type)
541
- self._interpolation_type = PromptInterpolationType(
542
- cached_prompt.interpolation_type
543
- )
544
- return
570
+ await asyncio.sleep(self._refresh_map[CACHE_KEY][cache_value])
545
571
 
546
572
  api = Api()
547
573
  try:
@@ -573,22 +599,43 @@ class Prompt:
573
599
  type=data["type"],
574
600
  interpolation_type=data["interpolationType"],
575
601
  )
576
- if default_to_cache:
577
- self._write_to_cache(
578
- cache_key=(
579
- LABEL_CACHE_KEY if label else VERSION_CACHE_KEY
580
- ),
581
- version=response.version,
582
- label=response.label,
583
- text_template=response.text,
584
- messages_template=response.messages,
585
- prompt_version_id=response.id,
586
- type=response.type,
587
- interpolation_type=response.interpolation_type,
588
- )
589
- except Exception as e:
602
+
603
+ # Update the cache with fresh data from server
604
+ self._write_to_cache(
605
+ cache_key=CACHE_KEY,
606
+ version=response.version,
607
+ label=response.label,
608
+ text_template=response.text,
609
+ messages_template=response.messages,
610
+ prompt_version_id=response.id,
611
+ type=response.type,
612
+ interpolation_type=response.interpolation_type,
613
+ )
614
+
615
+ # Update in-memory properties with fresh data (thread-safe)
616
+ with self._lock:
617
+ self.version = response.version
618
+ self.label = response.label
619
+ self._text_template = response.text
620
+ self._messages_template = response.messages
621
+ self._prompt_version_id = response.id
622
+ self._type = response.type
623
+ self._interpolation_type = response.interpolation_type
624
+
625
+ except Exception:
590
626
  pass
591
627
 
592
- CACHE_KEY = LABEL_CACHE_KEY if label else VERSION_CACHE_KEY
593
- cache_value = label if label else version
594
- await asyncio.sleep(self._refresh_map[CACHE_KEY][cache_value])
628
+ def _stop_polling(self):
629
+ loop = _polling_loop
630
+ if not loop or not loop.is_running():
631
+ return
632
+
633
+ # Stop all polling tasks
634
+ for ck in list(self._polling_tasks.keys()):
635
+ for cv in list(self._polling_tasks[ck].keys()):
636
+ task = self._polling_tasks[ck][cv]
637
+ if task and not task.done():
638
+ loop.call_soon_threadsafe(task.cancel)
639
+ self._polling_tasks[ck].clear()
640
+ self._refresh_map[ck].clear()
641
+ return
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "deepeval"
3
- version = "3.6.3"
3
+ version = "3.6.4"
4
4
  description = "The LLM Evaluation Framework"
5
5
  authors = ["Jeffrey Ip <jeffreyip@confident-ai.com>"]
6
6
  license = "Apache-2.0"
@@ -1 +0,0 @@
1
- __version__: str = "3.6.3"
File without changes
File without changes
File without changes