orca-sdk 0.0.96__py3-none-any.whl → 0.0.98__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 (269) hide show
  1. orca_sdk/__init__.py +2 -5
  2. orca_sdk/_shared/__init__.py +1 -0
  3. orca_sdk/_shared/metrics.py +1 -1
  4. orca_sdk/_utils/analysis_ui.py +5 -5
  5. orca_sdk/_utils/auth.py +23 -33
  6. orca_sdk/_utils/pagination.py +126 -0
  7. orca_sdk/_utils/pagination_test.py +132 -0
  8. orca_sdk/classification_model.py +188 -126
  9. orca_sdk/classification_model_test.py +102 -0
  10. orca_sdk/client.py +3515 -0
  11. orca_sdk/conftest.py +10 -0
  12. orca_sdk/credentials.py +73 -21
  13. orca_sdk/credentials_test.py +20 -0
  14. orca_sdk/datasource.py +186 -81
  15. orca_sdk/datasource_test.py +194 -0
  16. orca_sdk/embedding_model.py +267 -75
  17. orca_sdk/embedding_model_test.py +32 -14
  18. orca_sdk/job.py +59 -54
  19. orca_sdk/job_test.py +50 -0
  20. orca_sdk/memoryset.py +372 -345
  21. orca_sdk/memoryset_test.py +7 -11
  22. orca_sdk/regression_model.py +120 -111
  23. orca_sdk/regression_model_test.py +15 -0
  24. orca_sdk/telemetry.py +229 -115
  25. {orca_sdk-0.0.96.dist-info → orca_sdk-0.0.98.dist-info}/METADATA +19 -5
  26. orca_sdk-0.0.98.dist-info/RECORD +40 -0
  27. orca_sdk/_generated_api_client/__init__.py +0 -3
  28. orca_sdk/_generated_api_client/api/__init__.py +0 -287
  29. orca_sdk/_generated_api_client/api/auth/__init__.py +0 -0
  30. orca_sdk/_generated_api_client/api/auth/check_authentication_auth_get.py +0 -128
  31. orca_sdk/_generated_api_client/api/auth/create_api_key_auth_api_key_post.py +0 -170
  32. orca_sdk/_generated_api_client/api/auth/delete_api_key_auth_api_key_name_or_id_delete.py +0 -156
  33. orca_sdk/_generated_api_client/api/auth/delete_org_auth_org_delete.py +0 -130
  34. orca_sdk/_generated_api_client/api/auth/list_api_keys_auth_api_key_get.py +0 -127
  35. orca_sdk/_generated_api_client/api/classification_model/__init__.py +0 -0
  36. orca_sdk/_generated_api_client/api/classification_model/create_classification_model_gpu_classification_model_post.py +0 -170
  37. orca_sdk/_generated_api_client/api/classification_model/delete_classification_model_classification_model_name_or_id_delete.py +0 -156
  38. orca_sdk/_generated_api_client/api/classification_model/delete_classification_model_evaluation_classification_model_model_name_or_id_evaluation_task_id_delete.py +0 -168
  39. orca_sdk/_generated_api_client/api/classification_model/evaluate_classification_model_classification_model_model_name_or_id_evaluation_post.py +0 -183
  40. orca_sdk/_generated_api_client/api/classification_model/get_classification_model_classification_model_name_or_id_get.py +0 -156
  41. orca_sdk/_generated_api_client/api/classification_model/get_classification_model_evaluation_classification_model_model_name_or_id_evaluation_task_id_get.py +0 -170
  42. orca_sdk/_generated_api_client/api/classification_model/list_classification_model_evaluations_classification_model_model_name_or_id_evaluation_get.py +0 -161
  43. orca_sdk/_generated_api_client/api/classification_model/list_classification_models_classification_model_get.py +0 -127
  44. orca_sdk/_generated_api_client/api/classification_model/predict_label_gpu_classification_model_name_or_id_prediction_post.py +0 -190
  45. orca_sdk/_generated_api_client/api/classification_model/update_classification_model_classification_model_name_or_id_patch.py +0 -183
  46. orca_sdk/_generated_api_client/api/datasource/__init__.py +0 -0
  47. orca_sdk/_generated_api_client/api/datasource/create_datasource_datasource_post.py +0 -167
  48. orca_sdk/_generated_api_client/api/datasource/create_embedding_evaluation_datasource_name_or_id_embedding_evaluation_post.py +0 -183
  49. orca_sdk/_generated_api_client/api/datasource/delete_datasource_datasource_name_or_id_delete.py +0 -156
  50. orca_sdk/_generated_api_client/api/datasource/download_datasource_datasource_name_or_id_download_get.py +0 -172
  51. orca_sdk/_generated_api_client/api/datasource/get_datasource_datasource_name_or_id_get.py +0 -156
  52. orca_sdk/_generated_api_client/api/datasource/get_embedding_evaluation_datasource_name_or_id_embedding_evaluation_task_id_get.py +0 -169
  53. orca_sdk/_generated_api_client/api/datasource/list_datasources_datasource_get.py +0 -127
  54. orca_sdk/_generated_api_client/api/datasource/list_embedding_evaluations_datasource_name_or_id_embedding_evaluation_get.py +0 -235
  55. orca_sdk/_generated_api_client/api/default/__init__.py +0 -0
  56. orca_sdk/_generated_api_client/api/default/healthcheck_get.py +0 -118
  57. orca_sdk/_generated_api_client/api/default/healthcheck_gpu_get.py +0 -118
  58. orca_sdk/_generated_api_client/api/finetuned_embedding_model/__init__.py +0 -0
  59. orca_sdk/_generated_api_client/api/finetuned_embedding_model/create_finetuned_embedding_model_finetuned_embedding_model_post.py +0 -168
  60. orca_sdk/_generated_api_client/api/finetuned_embedding_model/delete_finetuned_embedding_model_finetuned_embedding_model_name_or_id_delete.py +0 -156
  61. orca_sdk/_generated_api_client/api/finetuned_embedding_model/embed_with_finetuned_model_gpu_finetuned_embedding_model_name_or_id_embedding_post.py +0 -189
  62. orca_sdk/_generated_api_client/api/finetuned_embedding_model/get_finetuned_embedding_model_finetuned_embedding_model_name_or_id_get.py +0 -156
  63. orca_sdk/_generated_api_client/api/finetuned_embedding_model/list_finetuned_embedding_models_finetuned_embedding_model_get.py +0 -127
  64. orca_sdk/_generated_api_client/api/memoryset/__init__.py +0 -0
  65. orca_sdk/_generated_api_client/api/memoryset/analyze_memoryset_memoryset_name_or_id_analysis_post.py +0 -183
  66. orca_sdk/_generated_api_client/api/memoryset/batch_delete_memoryset_batch_delete_memoryset_post.py +0 -168
  67. orca_sdk/_generated_api_client/api/memoryset/clone_memoryset_memoryset_name_or_id_clone_post.py +0 -181
  68. orca_sdk/_generated_api_client/api/memoryset/create_memoryset_memoryset_post.py +0 -168
  69. orca_sdk/_generated_api_client/api/memoryset/delete_memories_memoryset_name_or_id_memories_delete_post.py +0 -181
  70. orca_sdk/_generated_api_client/api/memoryset/delete_memory_memoryset_name_or_id_memory_memory_id_delete.py +0 -167
  71. orca_sdk/_generated_api_client/api/memoryset/delete_memoryset_memoryset_name_or_id_delete.py +0 -156
  72. orca_sdk/_generated_api_client/api/memoryset/get_analysis_memoryset_name_or_id_analysis_analysis_task_id_get.py +0 -169
  73. orca_sdk/_generated_api_client/api/memoryset/get_memories_memoryset_name_or_id_memories_get_post.py +0 -210
  74. orca_sdk/_generated_api_client/api/memoryset/get_memory_memoryset_name_or_id_memory_memory_id_get.py +0 -186
  75. orca_sdk/_generated_api_client/api/memoryset/get_memoryset_memoryset_name_or_id_get.py +0 -156
  76. orca_sdk/_generated_api_client/api/memoryset/insert_memories_gpu_memoryset_name_or_id_memory_post.py +0 -188
  77. orca_sdk/_generated_api_client/api/memoryset/list_analyses_memoryset_name_or_id_analysis_get.py +0 -235
  78. orca_sdk/_generated_api_client/api/memoryset/list_memorysets_memoryset_get.py +0 -180
  79. orca_sdk/_generated_api_client/api/memoryset/memoryset_lookup_gpu_memoryset_name_or_id_lookup_post.py +0 -212
  80. orca_sdk/_generated_api_client/api/memoryset/potential_duplicate_groups_memoryset_name_or_id_potential_duplicate_groups_get.py +0 -195
  81. orca_sdk/_generated_api_client/api/memoryset/query_memoryset_memoryset_name_or_id_memories_post.py +0 -210
  82. orca_sdk/_generated_api_client/api/memoryset/suggest_cascading_edits_memoryset_name_or_id_memory_memory_id_cascading_edits_post.py +0 -233
  83. orca_sdk/_generated_api_client/api/memoryset/update_memories_gpu_memoryset_name_or_id_memories_patch.py +0 -216
  84. orca_sdk/_generated_api_client/api/memoryset/update_memory_gpu_memoryset_name_or_id_memory_patch.py +0 -205
  85. orca_sdk/_generated_api_client/api/memoryset/update_memoryset_memoryset_name_or_id_patch.py +0 -183
  86. orca_sdk/_generated_api_client/api/predictive_model/__init__.py +0 -0
  87. orca_sdk/_generated_api_client/api/predictive_model/list_predictive_models_predictive_model_get.py +0 -150
  88. orca_sdk/_generated_api_client/api/pretrained_embedding_model/__init__.py +0 -0
  89. orca_sdk/_generated_api_client/api/pretrained_embedding_model/embed_with_pretrained_model_gpu_pretrained_embedding_model_model_name_embedding_post.py +0 -192
  90. orca_sdk/_generated_api_client/api/pretrained_embedding_model/get_pretrained_embedding_model_pretrained_embedding_model_model_name_get.py +0 -161
  91. orca_sdk/_generated_api_client/api/pretrained_embedding_model/list_pretrained_embedding_models_pretrained_embedding_model_get.py +0 -127
  92. orca_sdk/_generated_api_client/api/regression_model/__init__.py +0 -0
  93. orca_sdk/_generated_api_client/api/regression_model/create_regression_model_gpu_regression_model_post.py +0 -170
  94. orca_sdk/_generated_api_client/api/regression_model/delete_regression_model_evaluation_regression_model_model_name_or_id_evaluation_task_id_delete.py +0 -168
  95. orca_sdk/_generated_api_client/api/regression_model/delete_regression_model_regression_model_name_or_id_delete.py +0 -154
  96. orca_sdk/_generated_api_client/api/regression_model/evaluate_regression_model_regression_model_model_name_or_id_evaluation_post.py +0 -183
  97. orca_sdk/_generated_api_client/api/regression_model/get_regression_model_evaluation_regression_model_model_name_or_id_evaluation_task_id_get.py +0 -170
  98. orca_sdk/_generated_api_client/api/regression_model/get_regression_model_regression_model_name_or_id_get.py +0 -156
  99. orca_sdk/_generated_api_client/api/regression_model/list_regression_model_evaluations_regression_model_model_name_or_id_evaluation_get.py +0 -161
  100. orca_sdk/_generated_api_client/api/regression_model/list_regression_models_regression_model_get.py +0 -127
  101. orca_sdk/_generated_api_client/api/regression_model/predict_score_gpu_regression_model_name_or_id_prediction_post.py +0 -190
  102. orca_sdk/_generated_api_client/api/regression_model/update_regression_model_regression_model_name_or_id_patch.py +0 -183
  103. orca_sdk/_generated_api_client/api/task/__init__.py +0 -0
  104. orca_sdk/_generated_api_client/api/task/abort_task_task_task_id_abort_delete.py +0 -154
  105. orca_sdk/_generated_api_client/api/task/get_task_status_task_task_id_status_get.py +0 -156
  106. orca_sdk/_generated_api_client/api/task/get_task_task_task_id_get.py +0 -156
  107. orca_sdk/_generated_api_client/api/task/list_tasks_task_get.py +0 -293
  108. orca_sdk/_generated_api_client/api/telemetry/__init__.py +0 -0
  109. orca_sdk/_generated_api_client/api/telemetry/count_predictions_telemetry_prediction_count_post.py +0 -168
  110. orca_sdk/_generated_api_client/api/telemetry/drop_feedback_category_with_data_telemetry_feedback_category_name_or_id_delete.py +0 -162
  111. orca_sdk/_generated_api_client/api/telemetry/explain_prediction_telemetry_prediction_prediction_id_explanation_get.py +0 -182
  112. orca_sdk/_generated_api_client/api/telemetry/get_feedback_category_telemetry_feedback_category_name_or_id_get.py +0 -156
  113. orca_sdk/_generated_api_client/api/telemetry/get_prediction_telemetry_prediction_prediction_id_get.py +0 -180
  114. orca_sdk/_generated_api_client/api/telemetry/list_feedback_categories_telemetry_feedback_category_get.py +0 -127
  115. orca_sdk/_generated_api_client/api/telemetry/list_memories_with_feedback_telemetry_memories_post.py +0 -198
  116. orca_sdk/_generated_api_client/api/telemetry/list_predictions_telemetry_prediction_post.py +0 -198
  117. orca_sdk/_generated_api_client/api/telemetry/record_prediction_feedback_telemetry_prediction_feedback_put.py +0 -171
  118. orca_sdk/_generated_api_client/api/telemetry/update_prediction_telemetry_prediction_prediction_id_patch.py +0 -181
  119. orca_sdk/_generated_api_client/client.py +0 -216
  120. orca_sdk/_generated_api_client/errors.py +0 -38
  121. orca_sdk/_generated_api_client/models/__init__.py +0 -295
  122. orca_sdk/_generated_api_client/models/analyze_neighbor_labels_result.py +0 -116
  123. orca_sdk/_generated_api_client/models/api_key_metadata.py +0 -137
  124. orca_sdk/_generated_api_client/models/api_key_metadata_scope_item.py +0 -9
  125. orca_sdk/_generated_api_client/models/base_label_prediction_result.py +0 -130
  126. orca_sdk/_generated_api_client/models/base_model.py +0 -55
  127. orca_sdk/_generated_api_client/models/base_score_prediction_result.py +0 -108
  128. orca_sdk/_generated_api_client/models/body_create_datasource_datasource_post.py +0 -207
  129. orca_sdk/_generated_api_client/models/cascade_edit_suggestions_request.py +0 -154
  130. orca_sdk/_generated_api_client/models/cascading_edit_suggestion.py +0 -92
  131. orca_sdk/_generated_api_client/models/classification_evaluation_request.py +0 -148
  132. orca_sdk/_generated_api_client/models/classification_metrics.py +0 -259
  133. orca_sdk/_generated_api_client/models/classification_model_metadata.py +0 -213
  134. orca_sdk/_generated_api_client/models/classification_prediction_request.py +0 -220
  135. orca_sdk/_generated_api_client/models/clone_memoryset_request.py +0 -170
  136. orca_sdk/_generated_api_client/models/cluster_metrics.py +0 -78
  137. orca_sdk/_generated_api_client/models/column_info.py +0 -145
  138. orca_sdk/_generated_api_client/models/column_type.py +0 -14
  139. orca_sdk/_generated_api_client/models/constraint_violation_error_response.py +0 -80
  140. orca_sdk/_generated_api_client/models/count_predictions_request.py +0 -195
  141. orca_sdk/_generated_api_client/models/create_api_key_request.py +0 -120
  142. orca_sdk/_generated_api_client/models/create_api_key_request_scope_item.py +0 -9
  143. orca_sdk/_generated_api_client/models/create_api_key_response.py +0 -145
  144. orca_sdk/_generated_api_client/models/create_api_key_response_scope_item.py +0 -9
  145. orca_sdk/_generated_api_client/models/create_classification_model_request.py +0 -197
  146. orca_sdk/_generated_api_client/models/create_memoryset_request.py +0 -325
  147. orca_sdk/_generated_api_client/models/create_memoryset_request_index_params.py +0 -66
  148. orca_sdk/_generated_api_client/models/create_memoryset_request_index_type.py +0 -13
  149. orca_sdk/_generated_api_client/models/create_regression_model_request.py +0 -137
  150. orca_sdk/_generated_api_client/models/datasource_metadata.py +0 -156
  151. orca_sdk/_generated_api_client/models/delete_memories_request.py +0 -70
  152. orca_sdk/_generated_api_client/models/delete_memorysets_request.py +0 -70
  153. orca_sdk/_generated_api_client/models/embed_request.py +0 -135
  154. orca_sdk/_generated_api_client/models/embedding_evaluation_payload.py +0 -187
  155. orca_sdk/_generated_api_client/models/embedding_evaluation_request.py +0 -179
  156. orca_sdk/_generated_api_client/models/embedding_evaluation_response.py +0 -158
  157. orca_sdk/_generated_api_client/models/embedding_evaluation_result.py +0 -86
  158. orca_sdk/_generated_api_client/models/embedding_finetuning_method.py +0 -9
  159. orca_sdk/_generated_api_client/models/embedding_model_result.py +0 -114
  160. orca_sdk/_generated_api_client/models/evaluation_response.py +0 -153
  161. orca_sdk/_generated_api_client/models/evaluation_response_classification_metrics.py +0 -140
  162. orca_sdk/_generated_api_client/models/evaluation_response_regression_metrics.py +0 -140
  163. orca_sdk/_generated_api_client/models/feedback_metrics.py +0 -85
  164. orca_sdk/_generated_api_client/models/feedback_type.py +0 -9
  165. orca_sdk/_generated_api_client/models/filter_item.py +0 -231
  166. orca_sdk/_generated_api_client/models/filter_item_field_type_0_item.py +0 -17
  167. orca_sdk/_generated_api_client/models/filter_item_field_type_2_item_type_1.py +0 -20
  168. orca_sdk/_generated_api_client/models/filter_item_op.py +0 -16
  169. orca_sdk/_generated_api_client/models/finetune_embedding_model_request.py +0 -259
  170. orca_sdk/_generated_api_client/models/finetune_embedding_model_request_training_args.py +0 -66
  171. orca_sdk/_generated_api_client/models/finetuned_embedding_model_metadata.py +0 -166
  172. orca_sdk/_generated_api_client/models/get_memories_request.py +0 -70
  173. orca_sdk/_generated_api_client/models/http_validation_error.py +0 -86
  174. orca_sdk/_generated_api_client/models/internal_server_error_response.py +0 -80
  175. orca_sdk/_generated_api_client/models/label_class_metrics.py +0 -108
  176. orca_sdk/_generated_api_client/models/label_prediction_memory_lookup.py +0 -210
  177. orca_sdk/_generated_api_client/models/label_prediction_memory_lookup_metadata.py +0 -68
  178. orca_sdk/_generated_api_client/models/label_prediction_with_memories_and_feedback.py +0 -288
  179. orca_sdk/_generated_api_client/models/labeled_memory.py +0 -186
  180. orca_sdk/_generated_api_client/models/labeled_memory_insert.py +0 -128
  181. orca_sdk/_generated_api_client/models/labeled_memory_insert_metadata.py +0 -68
  182. orca_sdk/_generated_api_client/models/labeled_memory_lookup.py +0 -194
  183. orca_sdk/_generated_api_client/models/labeled_memory_lookup_metadata.py +0 -68
  184. orca_sdk/_generated_api_client/models/labeled_memory_metadata.py +0 -68
  185. orca_sdk/_generated_api_client/models/labeled_memory_metrics.py +0 -246
  186. orca_sdk/_generated_api_client/models/labeled_memory_update.py +0 -171
  187. orca_sdk/_generated_api_client/models/labeled_memory_update_metadata_type_0.py +0 -68
  188. orca_sdk/_generated_api_client/models/labeled_memory_with_feedback_metrics.py +0 -207
  189. orca_sdk/_generated_api_client/models/labeled_memory_with_feedback_metrics_feedback_metrics.py +0 -68
  190. orca_sdk/_generated_api_client/models/labeled_memory_with_feedback_metrics_metadata.py +0 -68
  191. orca_sdk/_generated_api_client/models/list_memories_request.py +0 -104
  192. orca_sdk/_generated_api_client/models/list_predictions_request.py +0 -319
  193. orca_sdk/_generated_api_client/models/lookup_request.py +0 -81
  194. orca_sdk/_generated_api_client/models/lookup_score_metrics.py +0 -94
  195. orca_sdk/_generated_api_client/models/memory_metrics.py +0 -165
  196. orca_sdk/_generated_api_client/models/memory_type.py +0 -9
  197. orca_sdk/_generated_api_client/models/memoryset_analysis_configs.py +0 -212
  198. orca_sdk/_generated_api_client/models/memoryset_analysis_request.py +0 -105
  199. orca_sdk/_generated_api_client/models/memoryset_analysis_response.py +0 -182
  200. orca_sdk/_generated_api_client/models/memoryset_cluster_analysis_config.py +0 -202
  201. orca_sdk/_generated_api_client/models/memoryset_cluster_analysis_config_clustering_method.py +0 -9
  202. orca_sdk/_generated_api_client/models/memoryset_cluster_analysis_config_partitioning_method.py +0 -10
  203. orca_sdk/_generated_api_client/models/memoryset_cluster_metrics.py +0 -100
  204. orca_sdk/_generated_api_client/models/memoryset_duplicate_analysis_config.py +0 -70
  205. orca_sdk/_generated_api_client/models/memoryset_duplicate_metrics.py +0 -70
  206. orca_sdk/_generated_api_client/models/memoryset_label_analysis_config.py +0 -70
  207. orca_sdk/_generated_api_client/models/memoryset_label_metrics.py +0 -116
  208. orca_sdk/_generated_api_client/models/memoryset_metadata.py +0 -291
  209. orca_sdk/_generated_api_client/models/memoryset_metadata_index_params.py +0 -55
  210. orca_sdk/_generated_api_client/models/memoryset_metadata_index_type.py +0 -13
  211. orca_sdk/_generated_api_client/models/memoryset_metrics.py +0 -232
  212. orca_sdk/_generated_api_client/models/memoryset_neighbor_analysis_config.py +0 -83
  213. orca_sdk/_generated_api_client/models/memoryset_neighbor_metrics.py +0 -76
  214. orca_sdk/_generated_api_client/models/memoryset_neighbor_metrics_lookup_score_metrics.py +0 -68
  215. orca_sdk/_generated_api_client/models/memoryset_projection_analysis_config.py +0 -79
  216. orca_sdk/_generated_api_client/models/memoryset_projection_metrics.py +0 -55
  217. orca_sdk/_generated_api_client/models/memoryset_update.py +0 -101
  218. orca_sdk/_generated_api_client/models/not_found_error_response.py +0 -100
  219. orca_sdk/_generated_api_client/models/not_found_error_response_resource_type_0.py +0 -22
  220. orca_sdk/_generated_api_client/models/paginated_union_labeled_memory_with_feedback_metrics_scored_memory_with_feedback_metrics.py +0 -135
  221. orca_sdk/_generated_api_client/models/pr_curve.py +0 -86
  222. orca_sdk/_generated_api_client/models/prediction_feedback.py +0 -157
  223. orca_sdk/_generated_api_client/models/prediction_feedback_category.py +0 -115
  224. orca_sdk/_generated_api_client/models/prediction_feedback_request.py +0 -122
  225. orca_sdk/_generated_api_client/models/prediction_feedback_result.py +0 -102
  226. orca_sdk/_generated_api_client/models/prediction_sort_item_item_type_0.py +0 -10
  227. orca_sdk/_generated_api_client/models/prediction_sort_item_item_type_1.py +0 -9
  228. orca_sdk/_generated_api_client/models/predictive_model_update.py +0 -91
  229. orca_sdk/_generated_api_client/models/pretrained_embedding_model_metadata.py +0 -107
  230. orca_sdk/_generated_api_client/models/pretrained_embedding_model_name.py +0 -17
  231. orca_sdk/_generated_api_client/models/rac_head_type.py +0 -11
  232. orca_sdk/_generated_api_client/models/rar_head_type.py +0 -8
  233. orca_sdk/_generated_api_client/models/regression_evaluation_request.py +0 -148
  234. orca_sdk/_generated_api_client/models/regression_metrics.py +0 -172
  235. orca_sdk/_generated_api_client/models/regression_model_metadata.py +0 -177
  236. orca_sdk/_generated_api_client/models/regression_prediction_request.py +0 -195
  237. orca_sdk/_generated_api_client/models/roc_curve.py +0 -86
  238. orca_sdk/_generated_api_client/models/score_prediction_memory_lookup.py +0 -196
  239. orca_sdk/_generated_api_client/models/score_prediction_memory_lookup_metadata.py +0 -68
  240. orca_sdk/_generated_api_client/models/score_prediction_with_memories_and_feedback.py +0 -252
  241. orca_sdk/_generated_api_client/models/scored_memory.py +0 -172
  242. orca_sdk/_generated_api_client/models/scored_memory_insert.py +0 -128
  243. orca_sdk/_generated_api_client/models/scored_memory_insert_metadata.py +0 -68
  244. orca_sdk/_generated_api_client/models/scored_memory_lookup.py +0 -180
  245. orca_sdk/_generated_api_client/models/scored_memory_lookup_metadata.py +0 -68
  246. orca_sdk/_generated_api_client/models/scored_memory_metadata.py +0 -68
  247. orca_sdk/_generated_api_client/models/scored_memory_update.py +0 -171
  248. orca_sdk/_generated_api_client/models/scored_memory_update_metadata_type_0.py +0 -68
  249. orca_sdk/_generated_api_client/models/scored_memory_with_feedback_metrics.py +0 -193
  250. orca_sdk/_generated_api_client/models/scored_memory_with_feedback_metrics_feedback_metrics.py +0 -68
  251. orca_sdk/_generated_api_client/models/scored_memory_with_feedback_metrics_metadata.py +0 -68
  252. orca_sdk/_generated_api_client/models/service_unavailable_error_response.py +0 -80
  253. orca_sdk/_generated_api_client/models/task.py +0 -198
  254. orca_sdk/_generated_api_client/models/task_status.py +0 -14
  255. orca_sdk/_generated_api_client/models/task_status_info.py +0 -133
  256. orca_sdk/_generated_api_client/models/telemetry_field_type_0_item_type_2.py +0 -9
  257. orca_sdk/_generated_api_client/models/telemetry_filter_item.py +0 -205
  258. orca_sdk/_generated_api_client/models/telemetry_filter_item_op.py +0 -15
  259. orca_sdk/_generated_api_client/models/telemetry_memories_request.py +0 -181
  260. orca_sdk/_generated_api_client/models/telemetry_sort_options.py +0 -173
  261. orca_sdk/_generated_api_client/models/telemetry_sort_options_direction.py +0 -9
  262. orca_sdk/_generated_api_client/models/unauthenticated_error_response.py +0 -72
  263. orca_sdk/_generated_api_client/models/unauthorized_error_response.py +0 -80
  264. orca_sdk/_generated_api_client/models/update_prediction_request.py +0 -133
  265. orca_sdk/_generated_api_client/models/validation_error.py +0 -99
  266. orca_sdk/_generated_api_client/py.typed +0 -1
  267. orca_sdk/_generated_api_client/types.py +0 -56
  268. orca_sdk-0.0.96.dist-info/RECORD +0 -278
  269. {orca_sdk-0.0.96.dist-info → orca_sdk-0.0.98.dist-info}/WHEEL +0 -0
orca_sdk/__init__.py CHANGED
@@ -4,6 +4,7 @@ OrcaSDK is a Python library for building and using retrieval augmented models in
4
4
 
5
5
  from ._utils.common import UNSET, CreateMode, DropMode
6
6
  from .classification_model import ClassificationMetrics, ClassificationModel
7
+ from .client import orca_api
7
8
  from .credentials import OrcaCredentials
8
9
  from .datasource import Datasource
9
10
  from .embedding_model import (
@@ -23,11 +24,7 @@ from .memoryset import (
23
24
  ScoredMemoryset,
24
25
  )
25
26
  from .regression_model import RegressionModel
26
- from .telemetry import (
27
- ClassificationPrediction,
28
- FeedbackCategory,
29
- RegressionPrediction,
30
- )
27
+ from .telemetry import ClassificationPrediction, FeedbackCategory, RegressionPrediction
31
28
 
32
29
  # only specify things that should show up on the root page of the reference docs because they are in private modules
33
30
  __all__ = ["UNSET", "CreateMode", "DropMode"]
@@ -5,5 +5,6 @@ from .metrics import (
5
5
  ROCCurve,
6
6
  calculate_classification_metrics,
7
7
  calculate_pr_curve,
8
+ calculate_regression_metrics,
8
9
  calculate_roc_curve,
9
10
  )
@@ -24,7 +24,7 @@ def softmax(logits: np.ndarray, axis: int = -1) -> np.ndarray:
24
24
 
25
25
 
26
26
  # We don't want to depend on transformers just for the eval_pred type in orca_sdk
27
- def transform_eval_pred(eval_pred: Any) -> tuple[NDArray[np.int64], NDArray[np.float32]]:
27
+ def transform_eval_pred(eval_pred: Any) -> tuple[NDArray, NDArray[np.float32]]:
28
28
  # convert results from Trainer compute_metrics param for use in calculate_classification_metrics
29
29
  logits, references = eval_pred # transformers.trainer_utils.EvalPrediction
30
30
  if isinstance(logits, tuple):
@@ -28,7 +28,7 @@ def display_suggested_memory_relabels(memoryset: LabeledMemoryset):
28
28
  filters=[("metrics.neighbor_predicted_label_matches_current_label", "==", False)]
29
29
  )
30
30
  # Sort memories by confidence score (higher confidence first)
31
- suggested_relabels.sort(key=lambda x: (x.metrics["neighbor_predicted_label_confidence"] or 0.0), reverse=True)
31
+ suggested_relabels.sort(key=lambda x: (x.metrics.get("neighbor_predicted_label_confidence", 0.0)), reverse=True)
32
32
 
33
33
  def update_approved(memory_id: str, selected: bool, current_memory_relabel_map: dict[str, RelabelStatus]):
34
34
  current_memory_relabel_map[memory_id]["approved"] = selected
@@ -70,9 +70,9 @@ def display_suggested_memory_relabels(memoryset: LabeledMemoryset):
70
70
  current_memory_relabel_map[mem_id]["new_label"] = new_label
71
71
  confidence = "--"
72
72
  current_metrics = current_memory_relabel_map[mem_id]["full_memory"].metrics
73
- if current_metrics and new_label == current_metrics["neighbor_predicted_label"]:
73
+ if current_metrics and new_label == current_metrics.get("neighbor_predicted_label"):
74
74
  confidence = (
75
- round(current_metrics["neighbor_predicted_label_confidence"] or 0.0, 2) if current_metrics else 0
75
+ round(current_metrics.get("neighbor_predicted_label_confidence", 0.0), 2) if current_metrics else 0
76
76
  )
77
77
  return (
78
78
  gr.HTML(
@@ -99,8 +99,8 @@ def display_suggested_memory_relabels(memoryset: LabeledMemoryset):
99
99
  memory_id=mem.memory_id,
100
100
  approved=False,
101
101
  new_label=(
102
- mem.metrics["neighbor_predicted_label"]
103
- if (mem.metrics and isinstance(mem.metrics["neighbor_predicted_label"], int))
102
+ mem.metrics.get("neighbor_predicted_label")
103
+ if (mem.metrics and isinstance(mem.metrics.get("neighbor_predicted_label"), int))
104
104
  else None
105
105
  ),
106
106
  full_memory=mem,
orca_sdk/_utils/auth.py CHANGED
@@ -2,23 +2,12 @@
2
2
 
3
3
  import logging
4
4
  import os
5
- from typing import List
5
+ from typing import List, Literal
6
6
 
7
7
  from dotenv import load_dotenv
8
8
 
9
- from .._generated_api_client.api import (
10
- check_authentication,
11
- create_api_key,
12
- delete_api_key,
13
- delete_org,
14
- list_api_keys,
15
- )
16
- from .._generated_api_client.client import headers_context, set_base_url, set_headers
17
- from .._generated_api_client.models import (
18
- CreateApiKeyRequest,
19
- CreateApiKeyRequestScopeItem,
20
- )
21
- from .._generated_api_client.models.api_key_metadata import ApiKeyMetadata
9
+ from ..client import ApiKeyMetadata, orca_api
10
+ from ..credentials import OrcaCredentials
22
11
  from .common import DropMode
23
12
 
24
13
  load_dotenv() # this needs to be here to ensure env is populated before accessing it
@@ -28,43 +17,44 @@ _ORCA_ROOT_ACCESS_API_KEY = os.environ.get("ORCA_ROOT_ACCESS_API_KEY", "00000000
28
17
  _DEFAULT_ORG_ID = os.environ.get("DEFAULT_ORG_ID", "10e50000-0000-4000-a000-a78dca14af3a")
29
18
 
30
19
 
31
- def _create_api_key(org_id: str, name: str, scopes: list[str] = ["ADMINISTER"]) -> str:
20
+ def _create_api_key(org_id: str, name: str, scopes: list[Literal["ADMINISTER", "PREDICT"]] = ["ADMINISTER"]) -> str:
32
21
  """Creates an API key for the given organization"""
33
- with headers_context({"Api-Key": _ORCA_ROOT_ACCESS_API_KEY, "Org-Id": org_id}):
34
- res = create_api_key(
35
- body=CreateApiKeyRequest(name=name, scope=[CreateApiKeyRequestScopeItem(scope) for scope in scopes])
36
- )
37
- return res.api_key
22
+ response = orca_api.POST(
23
+ "/auth/api_key",
24
+ json={"name": name, "scope": scopes},
25
+ headers={"Api-Key": _ORCA_ROOT_ACCESS_API_KEY, "Org-Id": org_id},
26
+ )
27
+ return response["api_key"]
38
28
 
39
29
 
40
30
  def _list_api_keys(org_id: str) -> List[ApiKeyMetadata]:
41
31
  """Lists all API keys for the given organization"""
42
- with headers_context({"Api-Key": _ORCA_ROOT_ACCESS_API_KEY, "Org-Id": org_id}):
43
- return list_api_keys()
32
+ return orca_api.GET("/auth/api_key", headers={"Api-Key": _ORCA_ROOT_ACCESS_API_KEY, "Org-Id": org_id})
44
33
 
45
34
 
46
35
  def _delete_api_key(org_id: str, name: str, if_not_exists: DropMode = "error") -> None:
47
36
  """Deletes the API key with the given name from the organization"""
48
- with headers_context({"Api-Key": _ORCA_ROOT_ACCESS_API_KEY, "Org-Id": org_id}):
49
- try:
50
- delete_api_key(name_or_id=name)
51
- except LookupError:
52
- if if_not_exists == "error":
53
- raise
37
+ try:
38
+ orca_api.DELETE(
39
+ "/auth/api_key/{name_or_id}",
40
+ params={"name_or_id": name},
41
+ headers={"Api-Key": _ORCA_ROOT_ACCESS_API_KEY, "Org-Id": org_id},
42
+ )
43
+ except LookupError:
44
+ if if_not_exists == "error":
45
+ raise
54
46
 
55
47
 
56
48
  def _delete_org(org_id: str) -> None:
57
49
  """Deletes the organization"""
58
- with headers_context({"Api-Key": _ORCA_ROOT_ACCESS_API_KEY, "Org-Id": org_id}):
59
- delete_org()
50
+ orca_api.DELETE("/auth/org", headers={"Api-Key": _ORCA_ROOT_ACCESS_API_KEY, "Org-Id": org_id})
60
51
 
61
52
 
62
53
  def _authenticate_local_api(org_id: str = _DEFAULT_ORG_ID, api_key_name: str = "local") -> None:
63
54
  """Connect to the local API at http://localhost:1584/ and authenticate with a new API key"""
64
- set_base_url("http://localhost:1584/")
65
55
  _delete_api_key(org_id, api_key_name, if_not_exists="ignore")
66
- set_headers({"Api-Key": _create_api_key(org_id, api_key_name)})
67
- check_authentication()
56
+ OrcaCredentials.set_base_url("http://localhost:1584")
57
+ OrcaCredentials.set_api_key(_create_api_key(org_id, api_key_name))
68
58
  logging.info(f"Authenticated against local API at 'http://localhost:1584' with '{api_key_name}' API key")
69
59
 
70
60
 
@@ -0,0 +1,126 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Callable, Generic, Iterator, TypedDict, TypeVar, cast, overload
4
+
5
+ T = TypeVar("T")
6
+ R = TypeVar("R")
7
+
8
+
9
+ class Page(TypedDict, Generic[T]):
10
+ items: list[T]
11
+ count: int
12
+
13
+
14
+ class _PagedIterable(Generic[T, R]):
15
+ def __init__(
16
+ self,
17
+ fetch: Callable[[int, int], Page[T]],
18
+ *,
19
+ transform: Callable[[T], R] | None = None,
20
+ page_size: int = 100,
21
+ ) -> None:
22
+ """
23
+ Iterate over a paginated endpoint.
24
+
25
+ Parameters:
26
+ fetch: function to fetch a page from the endpoint `(limit: int, offset: int) -> TypedDict[{items: list[T], count: int}]`
27
+ transform: Optional function to transforms item types `(item: T) -> R`, defaults to identity
28
+ limit: maximum number of items to fetch per page
29
+ """
30
+ self.fetch = fetch
31
+ self.transform = transform or (lambda x: cast(R, x))
32
+ self.page_size = page_size
33
+ self.offset = 0 # tracks how much has been yielded, not fetched
34
+ self.page = fetch(self.page_size, self.offset) # fetch first page to populate count
35
+ self.count = self.page["count"]
36
+
37
+ def __iter__(self) -> Iterator[R]:
38
+ if self.offset >= self.count:
39
+ self.offset = 0
40
+ if len(self.page["items"]) < self.count:
41
+ # refetch first page unless we are still on the first page
42
+ self.page = self.fetch(self.page_size, self.offset)
43
+
44
+ # yield prefetched first page
45
+ if self.offset == 0:
46
+ yield from map(self.transform, self.page["items"])
47
+ self.offset += len(self.page["items"])
48
+
49
+ # yield remaining pages one by one
50
+ while self.offset < self.count:
51
+ self.page = self.fetch(self.page_size, self.offset)
52
+ yield from map(self.transform, self.page["items"])
53
+ self.offset += len(self.page["items"])
54
+
55
+ @overload
56
+ def __getitem__(self, key: int) -> R:
57
+ pass
58
+
59
+ @overload
60
+ def __getitem__(self, key: slice) -> list[R]:
61
+ pass
62
+
63
+ def __getitem__(self, key: int | slice) -> R | list[R]:
64
+ if isinstance(key, int):
65
+ effective_key = key
66
+ if effective_key < 0:
67
+ effective_key += self.count
68
+ if not 0 <= effective_key < self.count:
69
+ raise IndexError(f"Index {key} out of range")
70
+ # if key is on current page, return item
71
+ if self.offset <= effective_key < self.offset + len(self.page["items"]):
72
+ return self.transform(self.page["items"][effective_key - self.offset])
73
+ # otherwise, fetch and return the single item
74
+ return self.transform(self.fetch(1, effective_key)["items"][0])
75
+
76
+ elif isinstance(key, slice):
77
+ start, stop, step = key.indices(self.count)
78
+ if step != 1:
79
+ raise ValueError("Stepped slicing is not supported")
80
+ start = start + self.count if start < 0 else start or 0
81
+ stop = stop + self.count if stop < 0 else stop or self.count
82
+ if start >= self.count or stop > self.count:
83
+ raise IndexError(f"Slice {key} out of range")
84
+ limit = min(self.page_size, stop - start)
85
+ if limit <= 0:
86
+ return []
87
+ items = []
88
+ for i in range(start, stop, limit):
89
+ page = self.fetch(limit, i)
90
+ items.extend(map(self.transform, page["items"]))
91
+ return items
92
+
93
+ def __len__(self) -> int:
94
+ return self.count
95
+
96
+
97
+ # type checking workaround until python 3.13 allows declaring the class as PagedIterable[T, R = T]
98
+
99
+
100
+ @overload
101
+ def PagedIterable(
102
+ fetch: Callable[[int, int], Page[T]],
103
+ *,
104
+ transform: None = None,
105
+ page_size: int = 100,
106
+ ) -> _PagedIterable[T, T]:
107
+ pass
108
+
109
+
110
+ @overload
111
+ def PagedIterable(
112
+ fetch: Callable[[int, int], Page[T]],
113
+ *,
114
+ transform: Callable[[T], R],
115
+ page_size: int = 100,
116
+ ) -> _PagedIterable[T, R]:
117
+ pass
118
+
119
+
120
+ def PagedIterable(
121
+ fetch: Callable[[int, int], Page[T]],
122
+ *,
123
+ transform: Callable[[T], R] | None = None,
124
+ page_size: int = 100,
125
+ ) -> _PagedIterable[T, R]:
126
+ return _PagedIterable(fetch, transform=transform, page_size=page_size)
@@ -0,0 +1,132 @@
1
+ import pytest
2
+
3
+ from .pagination import Page, PagedIterable
4
+
5
+
6
+ class MockEndpoint:
7
+ """Mock paginated endpoint for testing"""
8
+
9
+ def __init__(self, total_items: int):
10
+ self.items = list(range(total_items))
11
+ self.fetch_count = 0
12
+
13
+ def fetch(self, limit: int, offset: int) -> Page[int]:
14
+ self.fetch_count += 1
15
+ end_index = min(offset + limit, len(self.items))
16
+ items = self.items[offset:end_index]
17
+ return {"items": items, "count": len(self.items)}
18
+
19
+
20
+ def test_basic_pagination():
21
+ # Given a mock endpoint with 5 items
22
+ endpoint = MockEndpoint(5)
23
+ # When doing a paginated iteration
24
+ paginated = PagedIterable(endpoint.fetch, page_size=2)
25
+ # Then we should be able to iterate through all items
26
+ assert list(paginated) == [0, 1, 2, 3, 4]
27
+ # And the length should be correct
28
+ assert len(paginated) == 5
29
+ # And 3 requests: [0,1], [2,3], [4] should have been made, one for each page
30
+ assert endpoint.fetch_count == 3
31
+
32
+
33
+ def test_empty_results():
34
+ # Given an empty mock endpoint
35
+ endpoint = MockEndpoint(0)
36
+ # When doing a paginated iteration
37
+ paginated = PagedIterable(endpoint.fetch, page_size=5)
38
+ # Then we should get an empty list
39
+ assert list(paginated) == []
40
+ # And the length should be 0
41
+ assert len(paginated) == 0
42
+ # And only one request should have been made, for the first page
43
+ assert endpoint.fetch_count == 1
44
+
45
+
46
+ def test_transform_function():
47
+ # Given a mock endpoint with 4 items
48
+ endpoint = MockEndpoint(4)
49
+ # And a transform function that doubles the items
50
+ transform = lambda x: f"2x={2*x}"
51
+ # When doing a paginated iteration with a transform function
52
+ paginated = PagedIterable(endpoint.fetch, transform=transform, page_size=2)
53
+ # Then we should get the transformed items
54
+ assert list(paginated) == ["2x=0", "2x=2", "2x=4", "2x=6"]
55
+
56
+
57
+ def test_multiple_iterations():
58
+ # Given a mock endpoint with 5 items
59
+ endpoint = MockEndpoint(5)
60
+ # When we do 2 paginated iterations
61
+ paginated = PagedIterable(endpoint.fetch, page_size=2)
62
+ result1 = list(paginated)
63
+ result2 = list(paginated)
64
+ # Then we should get the same items twice
65
+ assert result1 == result2 == [0, 1, 2, 3, 4]
66
+ # And 6 requests should have been made, 3 for each iteration
67
+ assert endpoint.fetch_count == 6
68
+
69
+
70
+ def test_single_page_optimization():
71
+ # Given a mock endpoint with 5 items
72
+ endpoint = MockEndpoint(5)
73
+ # When doing a paginated iteration with a limit that is greater than the number of items
74
+ paginated = PagedIterable(endpoint.fetch, page_size=10)
75
+ # Then we should get all items
76
+ assert list(paginated) == [0, 1, 2, 3, 4]
77
+ # And the length should be 5
78
+ assert len(paginated) == 5
79
+ # And only one request should have been made
80
+ assert endpoint.fetch_count == 1
81
+ # And a second iteration should not make any additional requests
82
+ assert list(paginated) == [0, 1, 2, 3, 4]
83
+ assert endpoint.fetch_count == 1
84
+
85
+
86
+ def test_indexing():
87
+ # Given a mock endpoint with 7 items
88
+ endpoint = MockEndpoint(7)
89
+ # When creating a paginated iterable with page size 3
90
+ paginated = PagedIterable(endpoint.fetch, page_size=3)
91
+ # Then we should be able to access items by index
92
+ assert paginated[0] == 0
93
+ assert paginated[2] == 2
94
+ assert paginated[6] == 6
95
+ # And negative indices should work
96
+ assert paginated[-1] == 6
97
+ # And accessing out of bounds should raise IndexError
98
+ with pytest.raises(IndexError):
99
+ paginated[7]
100
+ with pytest.raises(IndexError):
101
+ paginated[-8]
102
+ # And transforms are applied
103
+ assert PagedIterable(endpoint.fetch, transform=lambda x: x * 10, page_size=3)[1] == 10
104
+
105
+
106
+ def test_slicing():
107
+ # Given a mock endpoint with 10 items
108
+ endpoint = MockEndpoint(10)
109
+ # When creating a paginated iterable
110
+ paginated = PagedIterable(endpoint.fetch, page_size=3)
111
+ # Then we should be able to slice it
112
+ assert list(paginated[2:5]) == [2, 3, 4]
113
+ assert list(paginated[:3]) == [0, 1, 2]
114
+ assert list(paginated[7:]) == [7, 8, 9]
115
+ # And negative indices should work
116
+ assert list(paginated[:-5]) == [0, 1, 2, 3, 4, 5]
117
+ assert list(paginated[-3:]) == [7, 8, 9]
118
+ assert list(paginated[-5:-2]) == [5, 6, 7]
119
+ # And empty slices should work
120
+ assert list(paginated[5:5]) == []
121
+ # And slicing with a start and stop that are out of bounds should raise IndexError
122
+ with pytest.raises(IndexError):
123
+ list(paginated[20:25])
124
+ # And slicing with a step other than 1 should raise ValueError
125
+ with pytest.raises(ValueError):
126
+ list(paginated[::2])
127
+ with pytest.raises(ValueError):
128
+ list(paginated[1:8:3])
129
+ with pytest.raises(ValueError):
130
+ list(paginated[::-1])
131
+ # And transforms are applied
132
+ assert list(PagedIterable(endpoint.fetch, transform=lambda x: x * 10, page_size=3)[1:3]) == [10, 20]