eval-studio-client 1.0.0a1__py3-none-any.whl → 1.1.0a5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (575) hide show
  1. eval_studio_client/api/__init__.py +79 -1
  2. eval_studio_client/api/api/__init__.py +9 -0
  3. eval_studio_client/api/api/adversarial_inputs_service_api.py +321 -0
  4. eval_studio_client/api/api/dashboard_service_api.py +1 -1
  5. eval_studio_client/api/api/document_service_api.py +1 -1
  6. eval_studio_client/api/api/evaluation_service_api.py +1 -1
  7. eval_studio_client/api/api/evaluator_service_api.py +1 -1
  8. eval_studio_client/api/api/generated_questions_validation_service_api.py +321 -0
  9. eval_studio_client/api/api/human_calibration_service_api.py +304 -0
  10. eval_studio_client/api/api/info_service_api.py +1 -1
  11. eval_studio_client/api/api/leaderboard_report_service_api.py +292 -0
  12. eval_studio_client/api/api/leaderboard_service_api.py +17 -17
  13. eval_studio_client/api/api/model_service_api.py +17 -17
  14. eval_studio_client/api/api/operation_progress_service_api.py +1 -1
  15. eval_studio_client/api/api/operation_service_api.py +272 -17
  16. eval_studio_client/api/api/perturbation_service_api.py +1 -1
  17. eval_studio_client/api/api/perturbator_service_api.py +285 -18
  18. eval_studio_client/api/api/prompt_generation_service_api.py +1 -1
  19. eval_studio_client/api/api/prompt_library_service_api.py +669 -0
  20. eval_studio_client/api/api/test_case_relationship_service_api.py +292 -0
  21. eval_studio_client/api/api/test_case_service_api.py +17 -17
  22. eval_studio_client/api/api/test_class_service_api.py +17 -17
  23. eval_studio_client/api/api/test_lab_service_api.py +1 -1
  24. eval_studio_client/api/api/test_service_api.py +1238 -102
  25. eval_studio_client/api/api/who_am_i_service_api.py +1 -1
  26. eval_studio_client/api/api/workflow_edge_service_api.py +835 -0
  27. eval_studio_client/api/api/workflow_node_service_api.py +2431 -0
  28. eval_studio_client/api/api/workflow_service_api.py +1893 -0
  29. eval_studio_client/api/api_client.py +1 -1
  30. eval_studio_client/api/configuration.py +1 -1
  31. eval_studio_client/api/docs/AdversarialInputsServiceApi.md +78 -0
  32. eval_studio_client/api/docs/AdversarialInputsServiceTestAdversarialInputsRobustnessRequest.md +45 -0
  33. eval_studio_client/api/docs/GeneratedQuestionsValidationServiceApi.md +78 -0
  34. eval_studio_client/api/docs/GeneratedQuestionsValidationServiceValidateGeneratedQuestionsRequest.md +30 -0
  35. eval_studio_client/api/docs/HumanCalibrationServiceApi.md +77 -0
  36. eval_studio_client/api/docs/LeaderboardReportServiceApi.md +75 -0
  37. eval_studio_client/api/docs/LeaderboardServiceApi.md +5 -5
  38. eval_studio_client/api/docs/ModelServiceApi.md +5 -5
  39. eval_studio_client/api/docs/OperationServiceApi.md +72 -5
  40. eval_studio_client/api/docs/PerturbationServiceCreatePerturbationRequest.md +1 -0
  41. eval_studio_client/api/docs/PerturbatorServiceApi.md +38 -8
  42. eval_studio_client/api/docs/PromptGenerationServiceAutoGeneratePromptsRequest.md +4 -2
  43. eval_studio_client/api/docs/PromptLibraryServiceApi.md +155 -0
  44. eval_studio_client/api/docs/ProtobufNullValue.md +12 -0
  45. eval_studio_client/api/docs/RequiredTheTestCaseToUpdate.md +3 -0
  46. eval_studio_client/api/docs/RequiredTheUpdatedWorkflow.md +47 -0
  47. eval_studio_client/api/docs/RequiredTheUpdatedWorkflowNode.md +44 -0
  48. eval_studio_client/api/docs/TestCaseRelationshipServiceApi.md +75 -0
  49. eval_studio_client/api/docs/TestCaseServiceApi.md +5 -5
  50. eval_studio_client/api/docs/TestClassServiceApi.md +5 -5
  51. eval_studio_client/api/docs/TestServiceApi.md +285 -5
  52. eval_studio_client/api/docs/TestServiceCloneTestRequest.md +30 -0
  53. eval_studio_client/api/docs/TestServiceGenerateTestCasesRequest.md +3 -1
  54. eval_studio_client/api/docs/TestServiceImportTestCasesFromLibraryRequest.md +32 -0
  55. eval_studio_client/api/docs/TestServiceListTestCaseLibraryItemsRequest.md +35 -0
  56. eval_studio_client/api/docs/TestServicePerturbTestInPlaceRequest.md +30 -0
  57. eval_studio_client/api/docs/TestServicePerturbTestRequest.md +1 -0
  58. eval_studio_client/api/docs/V1AbortOperationResponse.md +29 -0
  59. eval_studio_client/api/docs/V1BatchDeleteWorkflowsRequest.md +29 -0
  60. eval_studio_client/api/docs/V1BatchDeleteWorkflowsResponse.md +29 -0
  61. eval_studio_client/api/docs/V1BatchGetWorkflowEdgesResponse.md +29 -0
  62. eval_studio_client/api/docs/V1BatchGetWorkflowNodesResponse.md +29 -0
  63. eval_studio_client/api/docs/V1CloneTestResponse.md +29 -0
  64. eval_studio_client/api/docs/V1CloneWorkflowResponse.md +29 -0
  65. eval_studio_client/api/docs/V1Context.md +32 -0
  66. eval_studio_client/api/docs/V1CreateEvaluationRequest.md +1 -0
  67. eval_studio_client/api/docs/V1CreateWorkflowEdgeResponse.md +29 -0
  68. eval_studio_client/api/docs/V1CreateWorkflowNodeResponse.md +29 -0
  69. eval_studio_client/api/docs/V1CreateWorkflowResponse.md +29 -0
  70. eval_studio_client/api/docs/V1DeleteWorkflowEdgeResponse.md +29 -0
  71. eval_studio_client/api/docs/V1DeleteWorkflowNodeResponse.md +29 -0
  72. eval_studio_client/api/docs/V1DeleteWorkflowResponse.md +29 -0
  73. eval_studio_client/api/docs/V1EstimateThresholdRequest.md +33 -0
  74. eval_studio_client/api/docs/V1GeneratedTestCase.md +30 -0
  75. eval_studio_client/api/docs/V1GetLeaderboardReportResponse.md +29 -0
  76. eval_studio_client/api/docs/V1GetWorkflowNodePrerequisitesResponse.md +30 -0
  77. eval_studio_client/api/docs/V1GetWorkflowNodeResponse.md +29 -0
  78. eval_studio_client/api/docs/V1GetWorkflowResponse.md +29 -0
  79. eval_studio_client/api/docs/V1ImportEvaluationRequest.md +1 -0
  80. eval_studio_client/api/docs/V1ImportTestCasesFromLibraryResponse.md +29 -0
  81. eval_studio_client/api/docs/V1ImportTestCasesRequest.md +33 -0
  82. eval_studio_client/api/docs/V1Info.md +3 -0
  83. eval_studio_client/api/docs/V1InitWorkflowNodeResponse.md +29 -0
  84. eval_studio_client/api/docs/V1LabeledTestCase.md +31 -0
  85. eval_studio_client/api/docs/V1LeaderboardReport.md +32 -0
  86. eval_studio_client/api/docs/V1LeaderboardReportActualOutputData.md +31 -0
  87. eval_studio_client/api/docs/V1LeaderboardReportActualOutputMeta.md +31 -0
  88. eval_studio_client/api/docs/V1LeaderboardReportEvaluator.md +42 -0
  89. eval_studio_client/api/docs/V1LeaderboardReportEvaluatorParameter.md +38 -0
  90. eval_studio_client/api/docs/V1LeaderboardReportExplanation.md +34 -0
  91. eval_studio_client/api/docs/V1LeaderboardReportMetricsMetaEntry.md +41 -0
  92. eval_studio_client/api/docs/V1LeaderboardReportModel.md +39 -0
  93. eval_studio_client/api/docs/V1LeaderboardReportResult.md +45 -0
  94. eval_studio_client/api/docs/V1LeaderboardReportResultRelationship.md +32 -0
  95. eval_studio_client/api/docs/V1ListPromptLibraryItemsResponse.md +29 -0
  96. eval_studio_client/api/docs/V1ListTestCaseLibraryItemsResponse.md +29 -0
  97. eval_studio_client/api/docs/V1ListTestCaseRelationshipsResponse.md +29 -0
  98. eval_studio_client/api/docs/V1ListWorkflowsResponse.md +29 -0
  99. eval_studio_client/api/docs/V1MetricScore.md +31 -0
  100. eval_studio_client/api/docs/V1MetricScores.md +29 -0
  101. eval_studio_client/api/docs/V1PerturbTestInPlaceResponse.md +29 -0
  102. eval_studio_client/api/docs/V1ProcessWorkflowNodeResponse.md +29 -0
  103. eval_studio_client/api/docs/V1PromptLibraryItem.md +42 -0
  104. eval_studio_client/api/docs/V1RepeatedString.md +29 -0
  105. eval_studio_client/api/docs/V1ResetWorkflowNodeResponse.md +29 -0
  106. eval_studio_client/api/docs/V1TestCase.md +3 -0
  107. eval_studio_client/api/docs/V1TestSuiteEvaluates.md +11 -0
  108. eval_studio_client/api/docs/V1UpdateWorkflowNodeResponse.md +29 -0
  109. eval_studio_client/api/docs/V1UpdateWorkflowResponse.md +29 -0
  110. eval_studio_client/api/docs/V1Workflow.md +49 -0
  111. eval_studio_client/api/docs/V1WorkflowEdge.md +40 -0
  112. eval_studio_client/api/docs/V1WorkflowEdgeType.md +12 -0
  113. eval_studio_client/api/docs/V1WorkflowNode.md +46 -0
  114. eval_studio_client/api/docs/V1WorkflowNodeArtifact.md +40 -0
  115. eval_studio_client/api/docs/V1WorkflowNodeArtifacts.md +29 -0
  116. eval_studio_client/api/docs/V1WorkflowNodeAttributes.md +30 -0
  117. eval_studio_client/api/docs/V1WorkflowNodeStatus.md +12 -0
  118. eval_studio_client/api/docs/V1WorkflowNodeType.md +12 -0
  119. eval_studio_client/api/docs/V1WorkflowNodeView.md +12 -0
  120. eval_studio_client/api/docs/V1WorkflowType.md +12 -0
  121. eval_studio_client/api/docs/WorkflowEdgeServiceApi.md +215 -0
  122. eval_studio_client/api/docs/WorkflowNodeServiceApi.md +632 -0
  123. eval_studio_client/api/docs/WorkflowServiceApi.md +488 -0
  124. eval_studio_client/api/docs/WorkflowServiceCloneWorkflowRequest.md +33 -0
  125. eval_studio_client/api/exceptions.py +1 -1
  126. eval_studio_client/api/models/__init__.py +70 -1
  127. eval_studio_client/api/models/adversarial_inputs_service_test_adversarial_inputs_robustness_request.py +143 -0
  128. eval_studio_client/api/models/generated_questions_validation_service_validate_generated_questions_request.py +97 -0
  129. eval_studio_client/api/models/perturbation_service_create_perturbation_request.py +9 -3
  130. eval_studio_client/api/models/prompt_generation_service_auto_generate_prompts_request.py +17 -6
  131. eval_studio_client/api/models/protobuf_any.py +1 -1
  132. eval_studio_client/api/models/protobuf_null_value.py +36 -0
  133. eval_studio_client/api/models/required_the_dashboard_to_update.py +1 -1
  134. eval_studio_client/api/models/required_the_document_to_update.py +1 -1
  135. eval_studio_client/api/models/required_the_leaderboard_to_update.py +1 -1
  136. eval_studio_client/api/models/required_the_model_to_update.py +1 -1
  137. eval_studio_client/api/models/required_the_operation_to_finalize.py +1 -1
  138. eval_studio_client/api/models/required_the_operation_to_update.py +1 -1
  139. eval_studio_client/api/models/required_the_test_case_to_update.py +14 -3
  140. eval_studio_client/api/models/required_the_test_to_update.py +1 -1
  141. eval_studio_client/api/models/required_the_updated_workflow.py +160 -0
  142. eval_studio_client/api/models/required_the_updated_workflow_node.py +152 -0
  143. eval_studio_client/api/models/rpc_status.py +1 -1
  144. eval_studio_client/api/models/test_case_service_batch_delete_test_cases_request.py +1 -1
  145. eval_studio_client/api/models/test_service_clone_test_request.py +89 -0
  146. eval_studio_client/api/models/test_service_generate_test_cases_request.py +8 -4
  147. eval_studio_client/api/models/test_service_import_test_cases_from_library_request.py +93 -0
  148. eval_studio_client/api/models/test_service_list_test_case_library_items_request.py +99 -0
  149. eval_studio_client/api/models/test_service_perturb_test_in_place_request.py +97 -0
  150. eval_studio_client/api/models/test_service_perturb_test_request.py +5 -3
  151. eval_studio_client/api/models/v1_abort_operation_response.py +91 -0
  152. eval_studio_client/api/models/v1_batch_create_leaderboards_request.py +1 -1
  153. eval_studio_client/api/models/v1_batch_create_leaderboards_response.py +1 -1
  154. eval_studio_client/api/models/v1_batch_delete_dashboards_request.py +1 -1
  155. eval_studio_client/api/models/v1_batch_delete_dashboards_response.py +1 -1
  156. eval_studio_client/api/models/v1_batch_delete_documents_request.py +1 -1
  157. eval_studio_client/api/models/v1_batch_delete_documents_response.py +1 -1
  158. eval_studio_client/api/models/v1_batch_delete_evaluators_request.py +1 -1
  159. eval_studio_client/api/models/v1_batch_delete_evaluators_response.py +1 -1
  160. eval_studio_client/api/models/v1_batch_delete_leaderboards_request.py +1 -1
  161. eval_studio_client/api/models/v1_batch_delete_leaderboards_response.py +1 -1
  162. eval_studio_client/api/models/v1_batch_delete_models_request.py +1 -1
  163. eval_studio_client/api/models/v1_batch_delete_models_response.py +1 -1
  164. eval_studio_client/api/models/v1_batch_delete_test_cases_response.py +1 -1
  165. eval_studio_client/api/models/v1_batch_delete_tests_request.py +1 -1
  166. eval_studio_client/api/models/v1_batch_delete_tests_response.py +1 -1
  167. eval_studio_client/api/models/v1_batch_delete_workflows_request.py +87 -0
  168. eval_studio_client/api/models/v1_batch_delete_workflows_response.py +95 -0
  169. eval_studio_client/api/models/v1_batch_get_dashboards_response.py +1 -1
  170. eval_studio_client/api/models/v1_batch_get_documents_response.py +1 -1
  171. eval_studio_client/api/models/v1_batch_get_leaderboards_response.py +1 -1
  172. eval_studio_client/api/models/v1_batch_get_models_response.py +1 -1
  173. eval_studio_client/api/models/v1_batch_get_operations_response.py +1 -1
  174. eval_studio_client/api/models/v1_batch_get_tests_response.py +1 -1
  175. eval_studio_client/api/models/v1_batch_get_workflow_edges_response.py +95 -0
  176. eval_studio_client/api/models/v1_batch_get_workflow_nodes_response.py +95 -0
  177. eval_studio_client/api/models/v1_batch_import_leaderboard_request.py +1 -1
  178. eval_studio_client/api/models/v1_batch_import_leaderboard_response.py +1 -1
  179. eval_studio_client/api/models/v1_batch_import_tests_request.py +1 -1
  180. eval_studio_client/api/models/v1_batch_import_tests_response.py +1 -1
  181. eval_studio_client/api/models/v1_check_base_models_response.py +1 -1
  182. eval_studio_client/api/models/v1_clone_test_response.py +91 -0
  183. eval_studio_client/api/models/v1_clone_workflow_response.py +91 -0
  184. eval_studio_client/api/models/v1_collection_info.py +1 -1
  185. eval_studio_client/api/models/v1_context.py +93 -0
  186. eval_studio_client/api/models/v1_create_dashboard_response.py +1 -1
  187. eval_studio_client/api/models/v1_create_document_response.py +1 -1
  188. eval_studio_client/api/models/v1_create_evaluation_request.py +8 -3
  189. eval_studio_client/api/models/v1_create_evaluator_response.py +1 -1
  190. eval_studio_client/api/models/v1_create_leaderboard_request.py +1 -1
  191. eval_studio_client/api/models/v1_create_leaderboard_response.py +1 -1
  192. eval_studio_client/api/models/v1_create_leaderboard_without_cache_response.py +1 -1
  193. eval_studio_client/api/models/v1_create_model_response.py +1 -1
  194. eval_studio_client/api/models/v1_create_perturbation_response.py +1 -1
  195. eval_studio_client/api/models/v1_create_test_case_response.py +1 -1
  196. eval_studio_client/api/models/v1_create_test_lab_response.py +1 -1
  197. eval_studio_client/api/models/v1_create_test_response.py +1 -1
  198. eval_studio_client/api/models/v1_create_workflow_edge_response.py +91 -0
  199. eval_studio_client/api/models/v1_create_workflow_node_response.py +91 -0
  200. eval_studio_client/api/models/v1_create_workflow_response.py +91 -0
  201. eval_studio_client/api/models/v1_dashboard.py +1 -1
  202. eval_studio_client/api/models/v1_dashboard_status.py +1 -1
  203. eval_studio_client/api/models/v1_delete_dashboard_response.py +1 -1
  204. eval_studio_client/api/models/v1_delete_document_response.py +1 -1
  205. eval_studio_client/api/models/v1_delete_evaluator_response.py +1 -1
  206. eval_studio_client/api/models/v1_delete_leaderboard_response.py +1 -1
  207. eval_studio_client/api/models/v1_delete_model_response.py +1 -1
  208. eval_studio_client/api/models/v1_delete_test_case_response.py +1 -1
  209. eval_studio_client/api/models/v1_delete_test_response.py +1 -1
  210. eval_studio_client/api/models/v1_delete_workflow_edge_response.py +91 -0
  211. eval_studio_client/api/models/v1_delete_workflow_node_response.py +91 -0
  212. eval_studio_client/api/models/v1_delete_workflow_response.py +91 -0
  213. eval_studio_client/api/models/v1_document.py +1 -1
  214. eval_studio_client/api/models/v1_estimate_threshold_request.py +103 -0
  215. eval_studio_client/api/models/v1_evaluation_test.py +1 -1
  216. eval_studio_client/api/models/v1_evaluator.py +1 -1
  217. eval_studio_client/api/models/v1_evaluator_param_type.py +1 -1
  218. eval_studio_client/api/models/v1_evaluator_parameter.py +1 -1
  219. eval_studio_client/api/models/v1_evaluator_view.py +1 -1
  220. eval_studio_client/api/models/v1_finalize_operation_response.py +1 -1
  221. eval_studio_client/api/models/v1_find_all_test_cases_by_id_response.py +1 -1
  222. eval_studio_client/api/models/v1_find_test_lab_response.py +1 -1
  223. eval_studio_client/api/models/v1_generate_test_cases_response.py +1 -1
  224. eval_studio_client/api/models/v1_generated_test_case.py +101 -0
  225. eval_studio_client/api/models/v1_get_dashboard_response.py +1 -1
  226. eval_studio_client/api/models/v1_get_document_response.py +1 -1
  227. eval_studio_client/api/models/v1_get_evaluator_response.py +1 -1
  228. eval_studio_client/api/models/v1_get_info_response.py +1 -1
  229. eval_studio_client/api/models/v1_get_leaderboard_report_response.py +91 -0
  230. eval_studio_client/api/models/v1_get_leaderboard_response.py +1 -1
  231. eval_studio_client/api/models/v1_get_model_response.py +1 -1
  232. eval_studio_client/api/models/v1_get_operation_progress_by_parent_response.py +1 -1
  233. eval_studio_client/api/models/v1_get_operation_response.py +1 -1
  234. eval_studio_client/api/models/v1_get_perturbator_response.py +1 -1
  235. eval_studio_client/api/models/v1_get_test_case_response.py +1 -1
  236. eval_studio_client/api/models/v1_get_test_class_response.py +1 -1
  237. eval_studio_client/api/models/v1_get_test_response.py +1 -1
  238. eval_studio_client/api/models/v1_get_workflow_node_prerequisites_response.py +89 -0
  239. eval_studio_client/api/models/v1_get_workflow_node_response.py +91 -0
  240. eval_studio_client/api/models/v1_get_workflow_response.py +91 -0
  241. eval_studio_client/api/models/v1_import_evaluation_request.py +8 -3
  242. eval_studio_client/api/models/v1_import_leaderboard_request.py +1 -1
  243. eval_studio_client/api/models/v1_import_leaderboard_response.py +1 -1
  244. eval_studio_client/api/models/v1_import_test_cases_from_library_response.py +91 -0
  245. eval_studio_client/api/models/v1_import_test_cases_request.py +95 -0
  246. eval_studio_client/api/models/v1_info.py +10 -4
  247. eval_studio_client/api/models/v1_init_workflow_node_response.py +91 -0
  248. eval_studio_client/api/models/v1_insight.py +1 -1
  249. eval_studio_client/api/models/v1_labeled_test_case.py +91 -0
  250. eval_studio_client/api/models/v1_leaderboard.py +1 -1
  251. eval_studio_client/api/models/v1_leaderboard_report.py +115 -0
  252. eval_studio_client/api/models/v1_leaderboard_report_actual_output_data.py +93 -0
  253. eval_studio_client/api/models/v1_leaderboard_report_actual_output_meta.py +101 -0
  254. eval_studio_client/api/models/v1_leaderboard_report_evaluator.py +155 -0
  255. eval_studio_client/api/models/v1_leaderboard_report_evaluator_parameter.py +109 -0
  256. eval_studio_client/api/models/v1_leaderboard_report_explanation.py +103 -0
  257. eval_studio_client/api/models/v1_leaderboard_report_metrics_meta_entry.py +129 -0
  258. eval_studio_client/api/models/v1_leaderboard_report_model.py +121 -0
  259. eval_studio_client/api/models/v1_leaderboard_report_result.py +175 -0
  260. eval_studio_client/api/models/v1_leaderboard_report_result_relationship.py +97 -0
  261. eval_studio_client/api/models/v1_leaderboard_status.py +1 -1
  262. eval_studio_client/api/models/v1_leaderboard_type.py +1 -1
  263. eval_studio_client/api/models/v1_leaderboard_view.py +1 -1
  264. eval_studio_client/api/models/v1_list_base_models_response.py +1 -1
  265. eval_studio_client/api/models/v1_list_dashboards_response.py +1 -1
  266. eval_studio_client/api/models/v1_list_documents_response.py +1 -1
  267. eval_studio_client/api/models/v1_list_evaluators_response.py +1 -1
  268. eval_studio_client/api/models/v1_list_leaderboards_response.py +1 -1
  269. eval_studio_client/api/models/v1_list_llm_models_response.py +1 -1
  270. eval_studio_client/api/models/v1_list_model_collections_response.py +1 -1
  271. eval_studio_client/api/models/v1_list_models_response.py +1 -1
  272. eval_studio_client/api/models/v1_list_most_recent_dashboards_response.py +1 -1
  273. eval_studio_client/api/models/v1_list_most_recent_leaderboards_response.py +1 -1
  274. eval_studio_client/api/models/v1_list_most_recent_models_response.py +1 -1
  275. eval_studio_client/api/models/v1_list_most_recent_tests_response.py +1 -1
  276. eval_studio_client/api/models/v1_list_operations_response.py +1 -1
  277. eval_studio_client/api/models/v1_list_perturbators_response.py +1 -1
  278. eval_studio_client/api/models/v1_list_prompt_library_items_response.py +95 -0
  279. eval_studio_client/api/models/v1_list_rag_collections_response.py +1 -1
  280. eval_studio_client/api/models/v1_list_test_case_library_items_response.py +95 -0
  281. eval_studio_client/api/models/v1_list_test_case_relationships_response.py +95 -0
  282. eval_studio_client/api/models/v1_list_test_cases_response.py +1 -1
  283. eval_studio_client/api/models/v1_list_test_classes_response.py +1 -1
  284. eval_studio_client/api/models/v1_list_tests_response.py +1 -1
  285. eval_studio_client/api/models/v1_list_workflows_response.py +95 -0
  286. eval_studio_client/api/models/v1_metric_score.py +89 -0
  287. eval_studio_client/api/models/v1_metric_scores.py +95 -0
  288. eval_studio_client/api/models/v1_model.py +1 -1
  289. eval_studio_client/api/models/v1_model_type.py +1 -1
  290. eval_studio_client/api/models/v1_operation.py +1 -1
  291. eval_studio_client/api/models/v1_operation_progress.py +1 -1
  292. eval_studio_client/api/models/v1_perturb_test_in_place_response.py +91 -0
  293. eval_studio_client/api/models/v1_perturb_test_response.py +1 -1
  294. eval_studio_client/api/models/v1_perturbator.py +1 -1
  295. eval_studio_client/api/models/v1_perturbator_configuration.py +1 -1
  296. eval_studio_client/api/models/v1_perturbator_intensity.py +1 -1
  297. eval_studio_client/api/models/v1_problem_and_action.py +1 -1
  298. eval_studio_client/api/models/v1_process_workflow_node_response.py +91 -0
  299. eval_studio_client/api/models/v1_prompt_library_item.py +129 -0
  300. eval_studio_client/api/models/v1_repeated_string.py +87 -0
  301. eval_studio_client/api/models/v1_reset_workflow_node_response.py +91 -0
  302. eval_studio_client/api/models/v1_test.py +1 -1
  303. eval_studio_client/api/models/v1_test_case.py +14 -3
  304. eval_studio_client/api/models/v1_test_case_relationship.py +1 -1
  305. eval_studio_client/api/models/v1_test_cases_generator.py +1 -1
  306. eval_studio_client/api/models/v1_test_class.py +1 -1
  307. eval_studio_client/api/models/v1_test_class_type.py +1 -1
  308. eval_studio_client/api/models/v1_test_lab.py +1 -1
  309. eval_studio_client/api/models/v1_test_suite_evaluates.py +39 -0
  310. eval_studio_client/api/models/v1_update_dashboard_response.py +1 -1
  311. eval_studio_client/api/models/v1_update_document_response.py +1 -1
  312. eval_studio_client/api/models/v1_update_leaderboard_response.py +1 -1
  313. eval_studio_client/api/models/v1_update_model_response.py +1 -1
  314. eval_studio_client/api/models/v1_update_operation_response.py +1 -1
  315. eval_studio_client/api/models/v1_update_test_case_response.py +1 -1
  316. eval_studio_client/api/models/v1_update_test_response.py +1 -1
  317. eval_studio_client/api/models/v1_update_workflow_node_response.py +91 -0
  318. eval_studio_client/api/models/v1_update_workflow_response.py +91 -0
  319. eval_studio_client/api/models/v1_who_am_i_response.py +1 -1
  320. eval_studio_client/api/models/v1_workflow.py +164 -0
  321. eval_studio_client/api/models/v1_workflow_edge.py +123 -0
  322. eval_studio_client/api/models/v1_workflow_edge_type.py +37 -0
  323. eval_studio_client/api/models/v1_workflow_node.py +156 -0
  324. eval_studio_client/api/models/v1_workflow_node_artifact.py +122 -0
  325. eval_studio_client/api/models/v1_workflow_node_artifacts.py +97 -0
  326. eval_studio_client/api/models/v1_workflow_node_attributes.py +87 -0
  327. eval_studio_client/api/models/v1_workflow_node_status.py +40 -0
  328. eval_studio_client/api/models/v1_workflow_node_type.py +44 -0
  329. eval_studio_client/api/models/v1_workflow_node_view.py +38 -0
  330. eval_studio_client/api/models/v1_workflow_type.py +37 -0
  331. eval_studio_client/api/models/workflow_service_clone_workflow_request.py +95 -0
  332. eval_studio_client/api/rest.py +1 -1
  333. eval_studio_client/api/test/test_adversarial_inputs_service_api.py +37 -0
  334. eval_studio_client/api/test/test_adversarial_inputs_service_test_adversarial_inputs_robustness_request.py +128 -0
  335. eval_studio_client/api/test/test_dashboard_service_api.py +1 -1
  336. eval_studio_client/api/test/test_document_service_api.py +1 -1
  337. eval_studio_client/api/test/test_evaluation_service_api.py +1 -1
  338. eval_studio_client/api/test/test_evaluator_service_api.py +1 -1
  339. eval_studio_client/api/test/test_generated_questions_validation_service_api.py +37 -0
  340. eval_studio_client/api/test/test_generated_questions_validation_service_validate_generated_questions_request.py +83 -0
  341. eval_studio_client/api/test/test_human_calibration_service_api.py +38 -0
  342. eval_studio_client/api/test/test_info_service_api.py +1 -1
  343. eval_studio_client/api/test/test_leaderboard_report_service_api.py +37 -0
  344. eval_studio_client/api/test/test_leaderboard_service_api.py +1 -1
  345. eval_studio_client/api/test/test_model_service_api.py +1 -1
  346. eval_studio_client/api/test/test_operation_progress_service_api.py +1 -1
  347. eval_studio_client/api/test/test_operation_service_api.py +7 -1
  348. eval_studio_client/api/test/test_perturbation_service_api.py +1 -1
  349. eval_studio_client/api/test/test_perturbation_service_create_perturbation_request.py +25 -3
  350. eval_studio_client/api/test/test_perturbator_service_api.py +1 -1
  351. eval_studio_client/api/test/test_prompt_generation_service_api.py +1 -1
  352. eval_studio_client/api/test/test_prompt_generation_service_auto_generate_prompts_request.py +13 -5
  353. eval_studio_client/api/test/test_prompt_library_service_api.py +43 -0
  354. eval_studio_client/api/test/test_protobuf_any.py +1 -1
  355. eval_studio_client/api/test/test_protobuf_null_value.py +33 -0
  356. eval_studio_client/api/test/test_required_the_dashboard_to_update.py +1 -1
  357. eval_studio_client/api/test/test_required_the_document_to_update.py +1 -1
  358. eval_studio_client/api/test/test_required_the_leaderboard_to_update.py +1 -1
  359. eval_studio_client/api/test/test_required_the_model_to_update.py +1 -1
  360. eval_studio_client/api/test/test_required_the_operation_to_finalize.py +1 -1
  361. eval_studio_client/api/test/test_required_the_operation_to_update.py +1 -1
  362. eval_studio_client/api/test/test_required_the_test_case_to_update.py +9 -2
  363. eval_studio_client/api/test/test_required_the_test_to_update.py +1 -1
  364. eval_studio_client/api/test/test_required_the_updated_workflow.py +91 -0
  365. eval_studio_client/api/test/test_required_the_updated_workflow_node.py +80 -0
  366. eval_studio_client/api/test/test_rpc_status.py +1 -1
  367. eval_studio_client/api/test/test_test_case_relationship_service_api.py +37 -0
  368. eval_studio_client/api/test/test_test_case_service_api.py +1 -1
  369. eval_studio_client/api/test/test_test_case_service_batch_delete_test_cases_request.py +1 -1
  370. eval_studio_client/api/test/test_test_class_service_api.py +1 -1
  371. eval_studio_client/api/test/test_test_lab_service_api.py +1 -1
  372. eval_studio_client/api/test/test_test_service_api.py +25 -1
  373. eval_studio_client/api/test/test_test_service_clone_test_request.py +52 -0
  374. eval_studio_client/api/test/test_test_service_generate_test_cases_request.py +8 -2
  375. eval_studio_client/api/test/test_test_service_import_test_cases_from_library_request.py +56 -0
  376. eval_studio_client/api/test/test_test_service_list_test_case_library_items_request.py +63 -0
  377. eval_studio_client/api/test/test_test_service_perturb_test_in_place_request.py +59 -0
  378. eval_studio_client/api/test/test_test_service_perturb_test_request.py +5 -2
  379. eval_studio_client/api/test/test_v1_abort_operation_response.py +71 -0
  380. eval_studio_client/api/test/test_v1_batch_create_leaderboards_request.py +1 -1
  381. eval_studio_client/api/test/test_v1_batch_create_leaderboards_response.py +1 -1
  382. eval_studio_client/api/test/test_v1_batch_delete_dashboards_request.py +1 -1
  383. eval_studio_client/api/test/test_v1_batch_delete_dashboards_response.py +1 -1
  384. eval_studio_client/api/test/test_v1_batch_delete_documents_request.py +1 -1
  385. eval_studio_client/api/test/test_v1_batch_delete_documents_response.py +1 -1
  386. eval_studio_client/api/test/test_v1_batch_delete_evaluators_request.py +1 -1
  387. eval_studio_client/api/test/test_v1_batch_delete_evaluators_response.py +1 -1
  388. eval_studio_client/api/test/test_v1_batch_delete_leaderboards_request.py +1 -1
  389. eval_studio_client/api/test/test_v1_batch_delete_leaderboards_response.py +1 -1
  390. eval_studio_client/api/test/test_v1_batch_delete_models_request.py +1 -1
  391. eval_studio_client/api/test/test_v1_batch_delete_models_response.py +1 -1
  392. eval_studio_client/api/test/test_v1_batch_delete_test_cases_response.py +9 -2
  393. eval_studio_client/api/test/test_v1_batch_delete_tests_request.py +1 -1
  394. eval_studio_client/api/test/test_v1_batch_delete_tests_response.py +1 -1
  395. eval_studio_client/api/test/test_v1_batch_delete_workflows_request.py +53 -0
  396. eval_studio_client/api/test/test_v1_batch_delete_workflows_response.py +95 -0
  397. eval_studio_client/api/test/test_v1_batch_get_dashboards_response.py +1 -1
  398. eval_studio_client/api/test/test_v1_batch_get_documents_response.py +1 -1
  399. eval_studio_client/api/test/test_v1_batch_get_leaderboards_response.py +1 -1
  400. eval_studio_client/api/test/test_v1_batch_get_models_response.py +1 -1
  401. eval_studio_client/api/test/test_v1_batch_get_operations_response.py +1 -1
  402. eval_studio_client/api/test/test_v1_batch_get_tests_response.py +1 -1
  403. eval_studio_client/api/test/test_v1_batch_get_workflow_edges_response.py +64 -0
  404. eval_studio_client/api/test/test_v1_batch_get_workflow_nodes_response.py +84 -0
  405. eval_studio_client/api/test/test_v1_batch_import_leaderboard_request.py +1 -1
  406. eval_studio_client/api/test/test_v1_batch_import_leaderboard_response.py +1 -1
  407. eval_studio_client/api/test/test_v1_batch_import_tests_request.py +1 -1
  408. eval_studio_client/api/test/test_v1_batch_import_tests_response.py +1 -1
  409. eval_studio_client/api/test/test_v1_check_base_models_response.py +1 -1
  410. eval_studio_client/api/test/test_v1_clone_test_response.py +67 -0
  411. eval_studio_client/api/test/test_v1_clone_workflow_response.py +93 -0
  412. eval_studio_client/api/test/test_v1_collection_info.py +1 -1
  413. eval_studio_client/api/test/test_v1_context.py +54 -0
  414. eval_studio_client/api/test/test_v1_create_dashboard_response.py +1 -1
  415. eval_studio_client/api/test/test_v1_create_document_response.py +1 -1
  416. eval_studio_client/api/test/test_v1_create_evaluation_request.py +25 -3
  417. eval_studio_client/api/test/test_v1_create_evaluator_response.py +1 -1
  418. eval_studio_client/api/test/test_v1_create_leaderboard_request.py +1 -1
  419. eval_studio_client/api/test/test_v1_create_leaderboard_response.py +1 -1
  420. eval_studio_client/api/test/test_v1_create_leaderboard_without_cache_response.py +1 -1
  421. eval_studio_client/api/test/test_v1_create_model_response.py +1 -1
  422. eval_studio_client/api/test/test_v1_create_perturbation_response.py +1 -1
  423. eval_studio_client/api/test/test_v1_create_test_case_response.py +9 -2
  424. eval_studio_client/api/test/test_v1_create_test_lab_response.py +1 -1
  425. eval_studio_client/api/test/test_v1_create_test_response.py +1 -1
  426. eval_studio_client/api/test/test_v1_create_workflow_edge_response.py +62 -0
  427. eval_studio_client/api/test/test_v1_create_workflow_node_response.py +82 -0
  428. eval_studio_client/api/test/test_v1_create_workflow_response.py +93 -0
  429. eval_studio_client/api/test/test_v1_dashboard.py +1 -1
  430. eval_studio_client/api/test/test_v1_dashboard_status.py +1 -1
  431. eval_studio_client/api/test/test_v1_delete_dashboard_response.py +1 -1
  432. eval_studio_client/api/test/test_v1_delete_document_response.py +1 -1
  433. eval_studio_client/api/test/test_v1_delete_evaluator_response.py +1 -1
  434. eval_studio_client/api/test/test_v1_delete_leaderboard_response.py +1 -1
  435. eval_studio_client/api/test/test_v1_delete_model_response.py +1 -1
  436. eval_studio_client/api/test/test_v1_delete_test_case_response.py +9 -2
  437. eval_studio_client/api/test/test_v1_delete_test_response.py +1 -1
  438. eval_studio_client/api/test/test_v1_delete_workflow_edge_response.py +62 -0
  439. eval_studio_client/api/test/test_v1_delete_workflow_node_response.py +82 -0
  440. eval_studio_client/api/test/test_v1_delete_workflow_response.py +93 -0
  441. eval_studio_client/api/test/test_v1_document.py +1 -1
  442. eval_studio_client/api/test/test_v1_estimate_threshold_request.py +60 -0
  443. eval_studio_client/api/test/test_v1_evaluation_test.py +9 -2
  444. eval_studio_client/api/test/test_v1_evaluator.py +1 -1
  445. eval_studio_client/api/test/test_v1_evaluator_param_type.py +1 -1
  446. eval_studio_client/api/test/test_v1_evaluator_parameter.py +1 -1
  447. eval_studio_client/api/test/test_v1_evaluator_view.py +1 -1
  448. eval_studio_client/api/test/test_v1_finalize_operation_response.py +1 -1
  449. eval_studio_client/api/test/test_v1_find_all_test_cases_by_id_response.py +9 -2
  450. eval_studio_client/api/test/test_v1_find_test_lab_response.py +1 -1
  451. eval_studio_client/api/test/test_v1_generate_test_cases_response.py +1 -1
  452. eval_studio_client/api/test/test_v1_generated_test_case.py +79 -0
  453. eval_studio_client/api/test/test_v1_get_dashboard_response.py +1 -1
  454. eval_studio_client/api/test/test_v1_get_document_response.py +1 -1
  455. eval_studio_client/api/test/test_v1_get_evaluator_response.py +1 -1
  456. eval_studio_client/api/test/test_v1_get_info_response.py +7 -2
  457. eval_studio_client/api/test/test_v1_get_leaderboard_report_response.py +175 -0
  458. eval_studio_client/api/test/test_v1_get_leaderboard_response.py +1 -1
  459. eval_studio_client/api/test/test_v1_get_model_response.py +1 -1
  460. eval_studio_client/api/test/test_v1_get_operation_progress_by_parent_response.py +1 -1
  461. eval_studio_client/api/test/test_v1_get_operation_response.py +1 -1
  462. eval_studio_client/api/test/test_v1_get_perturbator_response.py +1 -1
  463. eval_studio_client/api/test/test_v1_get_test_case_response.py +9 -2
  464. eval_studio_client/api/test/test_v1_get_test_class_response.py +1 -1
  465. eval_studio_client/api/test/test_v1_get_test_response.py +1 -1
  466. eval_studio_client/api/test/test_v1_get_workflow_node_prerequisites_response.py +56 -0
  467. eval_studio_client/api/test/test_v1_get_workflow_node_response.py +82 -0
  468. eval_studio_client/api/test/test_v1_get_workflow_response.py +93 -0
  469. eval_studio_client/api/test/test_v1_import_evaluation_request.py +17 -2
  470. eval_studio_client/api/test/test_v1_import_leaderboard_request.py +1 -1
  471. eval_studio_client/api/test/test_v1_import_leaderboard_response.py +1 -1
  472. eval_studio_client/api/test/test_v1_import_test_cases_from_library_response.py +71 -0
  473. eval_studio_client/api/test/test_v1_import_test_cases_request.py +57 -0
  474. eval_studio_client/api/test/test_v1_info.py +7 -2
  475. eval_studio_client/api/test/test_v1_init_workflow_node_response.py +82 -0
  476. eval_studio_client/api/test/test_v1_insight.py +1 -1
  477. eval_studio_client/api/test/test_v1_labeled_test_case.py +53 -0
  478. eval_studio_client/api/test/test_v1_leaderboard.py +1 -1
  479. eval_studio_client/api/test/test_v1_leaderboard_report.py +174 -0
  480. eval_studio_client/api/test/test_v1_leaderboard_report_actual_output_data.py +52 -0
  481. eval_studio_client/api/test/test_v1_leaderboard_report_actual_output_meta.py +56 -0
  482. eval_studio_client/api/test/test_v1_leaderboard_report_evaluator.py +114 -0
  483. eval_studio_client/api/test/test_v1_leaderboard_report_evaluator_parameter.py +63 -0
  484. eval_studio_client/api/test/test_v1_leaderboard_report_explanation.py +58 -0
  485. eval_studio_client/api/test/test_v1_leaderboard_report_metrics_meta_entry.py +66 -0
  486. eval_studio_client/api/test/test_v1_leaderboard_report_model.py +62 -0
  487. eval_studio_client/api/test/test_v1_leaderboard_report_result.py +92 -0
  488. eval_studio_client/api/test/test_v1_leaderboard_report_result_relationship.py +53 -0
  489. eval_studio_client/api/test/test_v1_leaderboard_status.py +1 -1
  490. eval_studio_client/api/test/test_v1_leaderboard_type.py +1 -1
  491. eval_studio_client/api/test/test_v1_leaderboard_view.py +1 -1
  492. eval_studio_client/api/test/test_v1_list_base_models_response.py +1 -1
  493. eval_studio_client/api/test/test_v1_list_dashboards_response.py +1 -1
  494. eval_studio_client/api/test/test_v1_list_documents_response.py +1 -1
  495. eval_studio_client/api/test/test_v1_list_evaluators_response.py +1 -1
  496. eval_studio_client/api/test/test_v1_list_leaderboards_response.py +1 -1
  497. eval_studio_client/api/test/test_v1_list_llm_models_response.py +1 -1
  498. eval_studio_client/api/test/test_v1_list_model_collections_response.py +1 -1
  499. eval_studio_client/api/test/test_v1_list_models_response.py +1 -1
  500. eval_studio_client/api/test/test_v1_list_most_recent_dashboards_response.py +1 -1
  501. eval_studio_client/api/test/test_v1_list_most_recent_leaderboards_response.py +1 -1
  502. eval_studio_client/api/test/test_v1_list_most_recent_models_response.py +1 -1
  503. eval_studio_client/api/test/test_v1_list_most_recent_tests_response.py +1 -1
  504. eval_studio_client/api/test/test_v1_list_operations_response.py +1 -1
  505. eval_studio_client/api/test/test_v1_list_perturbators_response.py +1 -1
  506. eval_studio_client/api/test/test_v1_list_prompt_library_items_response.py +71 -0
  507. eval_studio_client/api/test/test_v1_list_rag_collections_response.py +1 -1
  508. eval_studio_client/api/test/test_v1_list_test_case_library_items_response.py +71 -0
  509. eval_studio_client/api/test/test_v1_list_test_case_relationships_response.py +56 -0
  510. eval_studio_client/api/test/test_v1_list_test_cases_response.py +9 -2
  511. eval_studio_client/api/test/test_v1_list_test_classes_response.py +1 -1
  512. eval_studio_client/api/test/test_v1_list_tests_response.py +1 -1
  513. eval_studio_client/api/test/test_v1_list_workflows_response.py +95 -0
  514. eval_studio_client/api/test/test_v1_metric_score.py +52 -0
  515. eval_studio_client/api/test/test_v1_metric_scores.py +55 -0
  516. eval_studio_client/api/test/test_v1_model.py +1 -1
  517. eval_studio_client/api/test/test_v1_model_type.py +1 -1
  518. eval_studio_client/api/test/test_v1_operation.py +1 -1
  519. eval_studio_client/api/test/test_v1_operation_progress.py +1 -1
  520. eval_studio_client/api/test/test_v1_perturb_test_in_place_response.py +67 -0
  521. eval_studio_client/api/test/test_v1_perturb_test_response.py +1 -1
  522. eval_studio_client/api/test/test_v1_perturbator.py +1 -1
  523. eval_studio_client/api/test/test_v1_perturbator_configuration.py +1 -1
  524. eval_studio_client/api/test/test_v1_perturbator_intensity.py +1 -1
  525. eval_studio_client/api/test/test_v1_problem_and_action.py +1 -1
  526. eval_studio_client/api/test/test_v1_process_workflow_node_response.py +71 -0
  527. eval_studio_client/api/test/test_v1_prompt_library_item.py +68 -0
  528. eval_studio_client/api/test/test_v1_repeated_string.py +53 -0
  529. eval_studio_client/api/test/test_v1_reset_workflow_node_response.py +82 -0
  530. eval_studio_client/api/test/test_v1_test.py +1 -1
  531. eval_studio_client/api/test/test_v1_test_case.py +9 -2
  532. eval_studio_client/api/test/test_v1_test_case_relationship.py +1 -1
  533. eval_studio_client/api/test/test_v1_test_cases_generator.py +1 -1
  534. eval_studio_client/api/test/test_v1_test_class.py +1 -1
  535. eval_studio_client/api/test/test_v1_test_class_type.py +1 -1
  536. eval_studio_client/api/test/test_v1_test_lab.py +1 -1
  537. eval_studio_client/api/test/test_v1_test_suite_evaluates.py +33 -0
  538. eval_studio_client/api/test/test_v1_update_dashboard_response.py +1 -1
  539. eval_studio_client/api/test/test_v1_update_document_response.py +1 -1
  540. eval_studio_client/api/test/test_v1_update_leaderboard_response.py +1 -1
  541. eval_studio_client/api/test/test_v1_update_model_response.py +1 -1
  542. eval_studio_client/api/test/test_v1_update_operation_response.py +1 -1
  543. eval_studio_client/api/test/test_v1_update_test_case_response.py +9 -2
  544. eval_studio_client/api/test/test_v1_update_test_response.py +1 -1
  545. eval_studio_client/api/test/test_v1_update_workflow_node_response.py +82 -0
  546. eval_studio_client/api/test/test_v1_update_workflow_response.py +93 -0
  547. eval_studio_client/api/test/test_v1_who_am_i_response.py +1 -1
  548. eval_studio_client/api/test/test_v1_workflow.py +92 -0
  549. eval_studio_client/api/test/test_v1_workflow_edge.py +61 -0
  550. eval_studio_client/api/test/test_v1_workflow_edge_type.py +33 -0
  551. eval_studio_client/api/test/test_v1_workflow_node.py +81 -0
  552. eval_studio_client/api/test/test_v1_workflow_node_artifact.py +61 -0
  553. eval_studio_client/api/test/test_v1_workflow_node_artifacts.py +64 -0
  554. eval_studio_client/api/test/test_v1_workflow_node_attributes.py +51 -0
  555. eval_studio_client/api/test/test_v1_workflow_node_status.py +33 -0
  556. eval_studio_client/api/test/test_v1_workflow_node_type.py +33 -0
  557. eval_studio_client/api/test/test_v1_workflow_node_view.py +33 -0
  558. eval_studio_client/api/test/test_v1_workflow_type.py +33 -0
  559. eval_studio_client/api/test/test_who_am_i_service_api.py +1 -1
  560. eval_studio_client/api/test/test_workflow_edge_service_api.py +52 -0
  561. eval_studio_client/api/test/test_workflow_node_service_api.py +94 -0
  562. eval_studio_client/api/test/test_workflow_service_api.py +80 -0
  563. eval_studio_client/api/test/test_workflow_service_clone_workflow_request.py +55 -0
  564. eval_studio_client/client.py +7 -0
  565. eval_studio_client/dashboards.py +66 -18
  566. eval_studio_client/gen/openapiv2/eval_studio.swagger.json +5132 -1847
  567. eval_studio_client/leaderboards.py +125 -0
  568. eval_studio_client/models.py +3 -42
  569. eval_studio_client/test_labs.py +49 -21
  570. eval_studio_client/tests.py +323 -58
  571. eval_studio_client/utils.py +26 -0
  572. {eval_studio_client-1.0.0a1.dist-info → eval_studio_client-1.1.0a5.dist-info}/METADATA +2 -3
  573. eval_studio_client-1.1.0a5.dist-info/RECORD +720 -0
  574. {eval_studio_client-1.0.0a1.dist-info → eval_studio_client-1.1.0a5.dist-info}/WHEEL +1 -1
  575. eval_studio_client-1.0.0a1.dist-info/RECORD +0 -485
@@ -11,7 +11,11 @@ from typing import Union
11
11
  from eval_studio_client import api
12
12
  from eval_studio_client import documents as d7s
13
13
  from eval_studio_client import perturbators as p10s
14
+ from eval_studio_client import utils
14
15
  from eval_studio_client.api import models
16
+ from eval_studio_client.api.models import (
17
+ test_service_clone_test_request as clone_test_request,
18
+ )
15
19
 
16
20
 
17
21
  class TestCaseGenerator(enum.Enum):
@@ -85,15 +89,8 @@ class TestCaseGenerator(enum.Enum):
85
89
 
86
90
 
87
91
  @dataclasses.dataclass
88
- class TestCaseGenerationHandle:
89
-
92
+ class _TestCaseGenerationHandle:
90
93
  name: Any | None
91
- create_time: Optional[datetime.datetime] = None
92
- creator: Optional[str] = None
93
- update_time: Optional[datetime.datetime] = None
94
- updater: Optional[str] = None
95
- delete_time: Optional[datetime.datetime] = None
96
- deleter: Optional[str] = None
97
94
  progress: Optional[float] = None
98
95
  progress_message: Optional[str] = None
99
96
  error: Optional[models.RpcStatus] = None
@@ -102,11 +99,39 @@ class TestCaseGenerationHandle:
102
99
  @staticmethod
103
100
  def _from_operation(
104
101
  res: models.V1GenerateTestCasesResponse | models.V1GetOperationResponse,
105
- ) -> "TestCaseGenerationHandle":
102
+ ) -> "_TestCaseGenerationHandle":
106
103
  """Converts an API operation to prompt generation handle."""
107
104
  op: models.V1Operation | None = res.operation
108
105
  if not op:
109
- return TestCaseGenerationHandle(name=None)
106
+ return _TestCaseGenerationHandle(name=None)
107
+
108
+ # progress
109
+ if hasattr(op, "metadata") and op.metadata:
110
+ meta_dict = op.metadata.to_dict() or {}
111
+ else:
112
+ meta_dict = {}
113
+
114
+ return _TestCaseGenerationHandle(
115
+ name=op.name,
116
+ progress=meta_dict.get("progress"),
117
+ progress_message=meta_dict.get("progressMessage"),
118
+ error=op.error,
119
+ done=op.done,
120
+ )
121
+
122
+
123
+ @dataclasses.dataclass
124
+ class _TestCaseLibraryGetHandle(_TestCaseGenerationHandle):
125
+ @staticmethod
126
+ def _from_operation(
127
+ res: (
128
+ models.V1ImportTestCasesFromLibraryResponse | models.V1GetOperationResponse
129
+ ),
130
+ ) -> "_TestCaseLibraryGetHandle":
131
+ """Converts an API operation to prompt library handle."""
132
+ op: models.V1Operation | None = res.operation
133
+ if not op:
134
+ return _TestCaseLibraryGetHandle(name=None)
110
135
 
111
136
  # progress
112
137
  if hasattr(op, "metadata") and op.metadata:
@@ -114,14 +139,8 @@ class TestCaseGenerationHandle:
114
139
  else:
115
140
  meta_dict = {}
116
141
 
117
- return TestCaseGenerationHandle(
142
+ return _TestCaseLibraryGetHandle(
118
143
  name=op.name,
119
- create_time=op.create_time,
120
- creator=op.creator,
121
- update_time=op.update_time,
122
- updater=op.updater,
123
- delete_time=op.delete_time,
124
- deleter=op.deleter,
125
144
  progress=meta_dict.get("progress"),
126
145
  progress_message=meta_dict.get("progressMessage"),
127
146
  error=op.error,
@@ -129,6 +148,42 @@ class TestCaseGenerationHandle:
129
148
  )
130
149
 
131
150
 
151
+ @dataclasses.dataclass
152
+ class TestCaseLibraryItem:
153
+ """Represents a single test case library item - test suite."""
154
+
155
+ key: str
156
+ name: str
157
+ description: str
158
+ test_suite_url: str
159
+ test_count: int
160
+ test_case_count: int
161
+ evaluates: List[str]
162
+ categories: List[str]
163
+
164
+ @staticmethod
165
+ def _from_api_items(
166
+ api_items: List[models.V1PromptLibraryItem],
167
+ ) -> List["TestCaseLibraryItem"]:
168
+ return (
169
+ [
170
+ TestCaseLibraryItem(
171
+ key=api_item.name or "",
172
+ name=api_item.display_name or "",
173
+ description=api_item.description or "",
174
+ test_suite_url=api_item.test_suite_url or "",
175
+ test_count=api_item.test_count or 0,
176
+ test_case_count=api_item.test_case_count or 0,
177
+ evaluates=list(api_item.evaluates) if api_item.evaluates else [],
178
+ categories=list(api_item.categories) if api_item.categories else [],
179
+ )
180
+ for api_item in api_items
181
+ ]
182
+ if api_items
183
+ else []
184
+ )
185
+
186
+
132
187
  @dataclasses.dataclass
133
188
  class TestCase:
134
189
  """Represents a single test case, which contains tested prompt, expected answer
@@ -173,6 +228,31 @@ class TestCase:
173
228
  )
174
229
 
175
230
 
231
+ @dataclasses.dataclass
232
+ class TestCaseRelationship:
233
+ source_test_case_key: str
234
+ target_test_case_key: str
235
+ relationship_type: str
236
+
237
+ def to_api_proto(self) -> models.V1TestCaseRelationship:
238
+ """Converts the client TestCase to an API TestCase."""
239
+ return models.V1TestCaseRelationship(
240
+ source=self.source_test_case_key,
241
+ target=self.target_test_case_key,
242
+ type=self.relationship_type,
243
+ )
244
+
245
+ @staticmethod
246
+ def _from_api_test_case_rel(
247
+ api_test_case_rel: models.V1TestCaseRelationship,
248
+ ) -> "TestCaseRelationship":
249
+ return TestCaseRelationship(
250
+ source_test_case_key=api_test_case_rel.source or "",
251
+ target_test_case_key=api_test_case_rel.target or "",
252
+ relationship_type=api_test_case_rel.type or "",
253
+ )
254
+
255
+
176
256
  @dataclasses.dataclass
177
257
  class Test:
178
258
  """Represents a test, which contains a set of test cases and optionally
@@ -193,6 +273,8 @@ class Test:
193
273
  create_time: Optional[datetime.datetime] = None
194
274
  update_time: Optional[datetime.datetime] = None
195
275
  _client: Optional[api.ApiClient] = None
276
+ _gen_tc_op_name: Optional[str] = None
277
+ _lib_tc_op_name: Optional[str] = None
196
278
 
197
279
  def __post_init__(self):
198
280
  if self._client:
@@ -200,6 +282,7 @@ class Test:
200
282
  self._test_case_api = api.TestCaseServiceApi(self._client)
201
283
  self._document_api = api.DocumentServiceApi(self._client)
202
284
  self._operation_api = api.OperationServiceApi(self._client)
285
+ self._relationships_api = api.TestCaseRelationshipServiceApi(self._client)
203
286
 
204
287
  @property
205
288
  def test_cases(self) -> List[TestCase]:
@@ -210,6 +293,19 @@ class Test:
210
293
 
211
294
  return []
212
295
 
296
+ @property
297
+ def test_case_relationships(self) -> List[TestCaseRelationship]:
298
+ """Retrieves all relationships among test cases of the test."""
299
+ r_a = self._relationships_api
300
+ res = r_a.test_case_relationship_service_list_test_case_relationships(self.key)
301
+ if res and res.test_case_relationships:
302
+ return [
303
+ TestCaseRelationship._from_api_test_case_rel(r)
304
+ for r in res.test_case_relationships
305
+ ]
306
+
307
+ return []
308
+
213
309
  @property
214
310
  def documents(self) -> List[d7s.Document]:
215
311
  """Retrieves all documents attached to the test."""
@@ -232,12 +328,12 @@ class Test:
232
328
  perturbators: Union[p10s.Perturbator, str, List[Union[p10s.Perturbator, str]]],
233
329
  new_test_description: str = "",
234
330
  ) -> "Test":
235
- """Creates new Test by perturbing this test using the given Perturbators.
331
+ """Creates new Test by perturbing this test using the given perturbators.
236
332
 
237
333
  Args:
238
334
  new_test_name (str): Name of the newly created test.
239
- perturbators (Perturbator, List[Perturbator], str or List[str]): List of Perturbators or
240
- their keys used to perturbate this Test.
335
+ perturbators (Perturbator, List[Perturbator], str or List[str]): List of
336
+ perturbators or their keys used to perturbate this Test.
241
337
  new_test_description (str): Optional description of the newly created test.
242
338
  """
243
339
 
@@ -258,13 +354,46 @@ class Test:
258
354
  configs = [_PerturbatorConfiguration(p) for p in perturbators_to_run]
259
355
 
260
356
  req = models.TestServicePerturbTestRequest(
261
- perturbatorConfigurations=[c.to_api_proto() for c in configs],
262
- newTestDisplayName=new_test_name,
263
- newTestDescription=new_test_description,
357
+ perturbator_configurations=[c.to_api_proto() for c in configs],
358
+ new_test_display_name=new_test_name,
359
+ new_test_description=new_test_description,
264
360
  )
265
361
  resp = self._test_api.test_service_perturb_test(self.key, req)
266
362
  return Test._from_api_test(resp.test, self._client)
267
363
 
364
+ def perturb_in_place(
365
+ self,
366
+ perturbators: Union[p10s.Perturbator, str, List[Union[p10s.Perturbator, str]]],
367
+ test_case_names: Optional[List[str]] = None,
368
+ ) -> str:
369
+ """In-place (in-test) perturbation of test cases using the given perturbators.
370
+
371
+ Args:
372
+ perturbators (Perturbator, List[Perturbator], str or List[str]): List of
373
+ perturbators or their keys used to perturbate this Test.
374
+ test_case_names (List[str]): List of test case names to perturbate.
375
+ """
376
+
377
+ if self._client is None:
378
+ raise RuntimeError("Client is not set.")
379
+
380
+ if not perturbators:
381
+ raise ValueError("Perturbators must be provided.")
382
+
383
+ if isinstance(perturbators, (p10s.Perturbator, str)):
384
+ perturbators_to_run = [perturbators]
385
+ else:
386
+ perturbators_to_run = perturbators
387
+
388
+ configs = [_PerturbatorConfiguration(p) for p in perturbators_to_run]
389
+
390
+ req = models.TestServicePerturbTestInPlaceRequest(
391
+ perturbator_configurations=[c.to_api_proto() for c in configs],
392
+ test_case_names=test_case_names,
393
+ )
394
+ resp = self._test_api.test_service_perturb_test(self.key, req)
395
+ return resp.test.name
396
+
268
397
  def generate_test_cases(
269
398
  self,
270
399
  count: int,
@@ -272,12 +401,12 @@ class Test:
272
401
  base_llm_model: Optional[str] = None,
273
402
  generators: Optional[List[TestCaseGenerator]] = None,
274
403
  existing_collection: Optional[str] = None,
275
- ) -> "TestCaseGenerationHandle":
404
+ ) -> None:
276
405
  """Generates test cases based on the documents of the Test.
277
406
 
278
407
  Args:
279
408
  count (int): Number of test cases to generate (generator may return fewer
280
- prompts).
409
+ prompts).
281
410
  model (str): Model to use for generating the prompts.
282
411
  base_llm_model (str): Base LLM model to use for generating the prompts.
283
412
  generators (List[TestCaseGenerator]): Methods to use for generation.
@@ -296,28 +425,28 @@ class Test:
296
425
 
297
426
  res = self._test_api.test_service_generate_test_cases(self.key, req)
298
427
 
299
- return TestCaseGenerationHandle._from_operation(res)
428
+ op: models.V1Operation | None = res.operation
429
+ self._gen_tc_op_name = op.name if op else None
300
430
 
301
431
  def wait_for_test_case_generation(
302
- self,
303
- handle: TestCaseGenerationHandle,
304
- timeout: Optional[float] = None,
305
- verbose: bool = False,
306
- ) -> TestCaseGenerationHandle:
432
+ self, timeout: Optional[float] = None, verbose: bool = False
433
+ ) -> None:
307
434
  """Waits for the test case generation to finish.
308
435
 
309
436
  Args:
310
- handle (TestCaseGenerationHandle): Handle of the test case generation.
311
437
  timeout (float): The maximum time to wait in seconds.
312
438
  verbose (bool): If True, prints the status of the handle while waiting.
313
439
  """
314
- if not handle.name:
315
- raise ValueError("Test case generation handle is not valid.")
316
- elif handle.done:
317
- return handle
440
+ if not self._gen_tc_op_name:
441
+ raise ValueError(
442
+ "There is no ongoing test case generation - the operation name is not "
443
+ "set."
444
+ )
318
445
 
319
446
  if verbose:
320
- print(f"Waiting for test case generation to finish ({handle.name}):")
447
+ print(
448
+ f"Waiting for test case generation to finish ({self._gen_tc_op_name}):"
449
+ )
321
450
  if self._client:
322
451
  # exponential backoff
323
452
  wait_time = 1.0
@@ -325,37 +454,151 @@ class Test:
325
454
  wait_max = 8.0
326
455
  wait_total = 0.0
327
456
  timeout = timeout or float(2 * 24 * 60 * 60) # 2 days
328
- # progress
329
- p_max = 1.0
330
- p_msg = ""
457
+ progress_bar = utils.ProgressBar()
331
458
  while wait_total < timeout:
332
- handle = TestCaseGenerationHandle._from_operation(
333
- self._operation_api.operation_service_get_operation(handle.name)
459
+ handle = _TestCaseGenerationHandle._from_operation(
460
+ self._operation_api.operation_service_get_operation(
461
+ self._gen_tc_op_name
462
+ )
334
463
  )
335
464
 
336
465
  if verbose:
337
- print(" " * len(p_msg), end="\r")
338
- if handle.progress or handle.progress_message:
339
- try:
340
- h_progress = float(str(handle.progress))
341
- except ValueError:
342
- h_progress = 0.0
343
- h_msg = handle.progress_message or "Processing"
344
- else:
345
- h_progress = 0.0
346
- h_msg = "Initializing"
347
- p_progress = int(h_progress / p_max * 100)
348
- p_hashes = p_progress // 5
349
- p_msg = f" {p_progress:>3}% |{'#' * p_hashes:<20}| {h_msg}"
350
- print(p_msg, end="\r")
466
+ progress_bar.update(handle.progress or 0, handle.progress_message)
351
467
 
352
468
  if handle.done:
353
- return handle
469
+ if handle.error:
470
+ raise RuntimeError(
471
+ f"Test case generation failed: {handle.error}"
472
+ )
473
+ return
354
474
 
355
475
  wait_time *= wait_coef
356
476
  time.sleep(min(wait_time, wait_max))
357
477
  else:
358
- raise ValueError("Cannot establish connection to Eval Studio host.")
478
+ raise ValueError(
479
+ "Unable to establish a connection to the Eval Studio host."
480
+ )
481
+
482
+ raise TimeoutError("Waiting timeout has been reached.")
483
+
484
+ def list_test_suite_library_items(
485
+ self,
486
+ filter_by_categories: Optional[List[str]] = None,
487
+ filter_by_purposes: Optional[List[str]] = None,
488
+ filter_by_evaluates: Optional[List[str]] = None,
489
+ filter_by_origin: Optional[str] = None,
490
+ filter_by_test_case_count: Optional[int] = None,
491
+ filter_by_test_count: Optional[int] = None,
492
+ filter_by_fts: Optional[str] = None,
493
+ ) -> List[TestCaseLibraryItem]:
494
+ """Retrieves a list of all available items - suites of tests - in the library.
495
+
496
+ Args:
497
+ filter_by_categories (List[str]): List of categories to filter
498
+ the library items.
499
+ filter_by_purposes (List[str]): List of purposes to filter
500
+ the library items.
501
+ filter_by_evaluates (List[str]): List of evaluates to filter
502
+ the library items.
503
+ filter_by_origin (str): Origin to filter the library items.
504
+ filter_by_test_case_count (int): Test case count to filter
505
+ the library items.
506
+ filter_by_test_count (int): Test count to filter the library items.
507
+ filter_by_fts (str): FTS to filter the library items - phrase to search for.
508
+
509
+ Returns:
510
+ List[TestCaseLibraryItem]: List of library items.
511
+ """
512
+ req = models.TestServiceListTestCaseLibraryItemsRequest(
513
+ filter_by_categories=filter_by_categories,
514
+ filter_by_purposes=filter_by_purposes,
515
+ filter_by_evaluates=filter_by_evaluates,
516
+ filter_by_origin=filter_by_origin,
517
+ filter_by_test_case_count=filter_by_test_case_count,
518
+ filter_by_test_count=filter_by_test_count,
519
+ filter_by_fts=filter_by_fts,
520
+ )
521
+
522
+ res = self._test_api.test_service_list_test_case_library_items(self.key, req)
523
+ if res and res.prompt_library_items:
524
+ return TestCaseLibraryItem._from_api_items(res.prompt_library_items)
525
+
526
+ return []
527
+
528
+ def add_library_test_cases(
529
+ self, test_suite_url: str, count: int, test_document_urls: Optional[List[str]]
530
+ ) -> None:
531
+ """Sample test cases from the test suite library and add them to the test.
532
+
533
+ Args:
534
+ test_suite_url (str): The URL of the library test suite to get TestCases
535
+ from (sample).
536
+ count (int): The number of TestCases to get from the library.
537
+ test_document_urls (List[str]): The list of target Test corpus
538
+ document URLs to skip when returning library TestCases corpus.
539
+ """
540
+ req = models.TestServiceImportTestCasesFromLibraryRequest(
541
+ test_suite_url=test_suite_url,
542
+ count=count,
543
+ test_document_urls=test_document_urls,
544
+ )
545
+
546
+ res = self._test_api.test_service_import_test_cases_from_library(self.key, req)
547
+
548
+ op: models.V1Operation | None = res.operation
549
+ self._lib_tc_op_name = op.name if op else None
550
+
551
+ def wait_for_library_test_case_get(
552
+ self, timeout: Optional[float] = None, verbose: bool = False
553
+ ) -> None:
554
+ """Waits for the library test cases(s) sampling to finish.
555
+
556
+ Args:
557
+ timeout (float): The maximum time to wait in seconds.
558
+ verbose (bool): If True, prints the status of the handle while waiting.
559
+ """
560
+ if not self._lib_tc_op_name:
561
+ raise ValueError(
562
+ "There is no ongoing getting of test case(s) from the library - "
563
+ "the operation name is not set."
564
+ )
565
+
566
+ if verbose:
567
+ print(
568
+ f"Waiting for getting library test case(s) operation to finish "
569
+ f"({self._lib_tc_op_name}):"
570
+ )
571
+ if self._client:
572
+ # exponential backoff
573
+ wait_time = 1.0
574
+ wait_coef = 1.6
575
+ wait_max = 8.0
576
+ wait_total = 0.0
577
+ timeout = timeout or float(2 * 24 * 60 * 60) # 2 days
578
+ progress_bar = utils.ProgressBar()
579
+ while wait_total < timeout:
580
+ handle = _TestCaseLibraryGetHandle._from_operation(
581
+ self._operation_api.operation_service_get_operation(
582
+ self._lib_tc_op_name
583
+ )
584
+ )
585
+
586
+ if verbose:
587
+ progress_bar.update(handle.progress or 0, handle.progress_message)
588
+
589
+ if handle.done:
590
+ if handle.error:
591
+ raise RuntimeError(
592
+ f"Getting of library test case(s) failed: {handle.error}"
593
+ )
594
+ return
595
+
596
+ wait_time *= wait_coef
597
+ time.sleep(min(wait_time, wait_max))
598
+ else:
599
+ raise ValueError(
600
+ "Unable to establish a connection to the Eval Studio host."
601
+ )
359
602
 
360
603
  raise TimeoutError("Waiting timeout has been reached.")
361
604
 
@@ -524,6 +767,28 @@ class _Tests:
524
767
 
525
768
  return None
526
769
 
770
+ def clone(
771
+ self, key: str, name: Optional[str] = "", description: Optional[str] = ""
772
+ ) -> Optional[Test]:
773
+ """Clone an existing test in the Eval Studio.
774
+
775
+ Args:
776
+ key (str): Resource name of the test to be cloned.
777
+ name (str): Optional new name of the cloned test.
778
+ description (str): Optional new description of the cloned test.
779
+ """
780
+ res = self._api.test_service_clone_test(
781
+ key,
782
+ body=clone_test_request.TestServiceCloneTestRequest(
783
+ new_test_display_name=name, new_test_description=description
784
+ ),
785
+ )
786
+
787
+ if res and res.test:
788
+ return Test._from_api_test(res.test, self._client)
789
+
790
+ return None
791
+
527
792
  def delete(self, key: str):
528
793
  """Deletes the test with given resource name.
529
794
 
@@ -0,0 +1,26 @@
1
+ from typing import Optional
2
+
3
+
4
+ class ProgressBar:
5
+ def __init__(self):
6
+ self.progress = 0.0
7
+ self.progress_message = "Initializing"
8
+ self._progress_max = 1.0
9
+
10
+ def update(self, progress: float, message: Optional[str] = None):
11
+ try:
12
+ self.progress = float(str(progress))
13
+ except ValueError:
14
+ self.progress = 0.0
15
+
16
+ if message:
17
+ self.progress_message = message or ""
18
+
19
+ self.print()
20
+
21
+ def print(self):
22
+ print(" " * len(self.progress_message), end="\r")
23
+ p_progress = int(self.progress / self._progress_max * 100)
24
+ p_hashes = p_progress // 5
25
+ p_msg = f" {p_progress:>3}% |{'#' * p_hashes:<20}| {self.progress_message}"
26
+ print(p_msg, end="\r")
@@ -1,10 +1,9 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: eval-studio-client
3
- Version: 1.0.0a1
3
+ Version: 1.1.0a5
4
4
  Project-URL: Source, https://github.com/h2oai/eval-studio/tree/main/client-py/src/
5
5
  Project-URL: Issues, https://github.com/h2oai/eval-studio/issues
6
6
  Author-email: "H2O.ai" <support@h2o.ai>
7
- License: MIT
8
7
  Classifier: Development Status :: 4 - Beta
9
8
  Classifier: Programming Language :: Python
10
9
  Classifier: Programming Language :: Python :: 3.9