orca-sdk 0.0.97__tar.gz → 0.0.98__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (312) hide show
  1. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/PKG-INFO +2 -5
  2. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/__init__.py +1 -0
  3. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/_shared/__init__.py +1 -0
  4. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/_utils/analysis_ui.py +5 -5
  5. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/_utils/auth.py +23 -33
  6. orca_sdk-0.0.98/orca_sdk/_utils/pagination.py +126 -0
  7. orca_sdk-0.0.98/orca_sdk/_utils/pagination_test.py +132 -0
  8. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/classification_model.py +188 -126
  9. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/classification_model_test.py +57 -8
  10. orca_sdk-0.0.98/orca_sdk/client.py +3515 -0
  11. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/conftest.py +10 -0
  12. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/credentials.py +59 -21
  13. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/credentials_test.py +20 -0
  14. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/datasource.py +42 -76
  15. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/embedding_model.py +225 -71
  16. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/embedding_model_test.py +27 -36
  17. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/job.py +49 -45
  18. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/job_test.py +16 -0
  19. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/memoryset.py +340 -353
  20. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/memoryset_test.py +7 -11
  21. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/regression_model.py +120 -111
  22. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/regression_model_test.py +15 -0
  23. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/telemetry.py +162 -139
  24. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/pyproject.toml +6 -7
  25. orca_sdk-0.0.97/orca_sdk/_generated_api_client/__init__.py +0 -3
  26. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/__init__.py +0 -307
  27. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/auth/check_authentication_auth_get.py +0 -128
  28. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/auth/create_api_key_auth_api_key_post.py +0 -170
  29. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/auth/create_org_plan_auth_org_plan_post.py +0 -168
  30. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/auth/delete_api_key_auth_api_key_name_or_id_delete.py +0 -156
  31. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/auth/delete_org_auth_org_delete.py +0 -130
  32. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/auth/get_org_plan_auth_org_plan_get.py +0 -122
  33. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/auth/list_api_keys_auth_api_key_get.py +0 -127
  34. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/auth/update_org_plan_auth_org_plan_put.py +0 -168
  35. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/classification_model/__init__.py +0 -0
  36. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/classification_model/create_classification_model_classification_model_post.py +0 -170
  37. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/classification_model/delete_classification_model_classification_model_name_or_id_delete.py +0 -156
  38. orca_sdk-0.0.97/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-0.0.97/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-0.0.97/orca_sdk/_generated_api_client/api/classification_model/get_classification_model_classification_model_name_or_id_get.py +0 -156
  41. orca_sdk-0.0.97/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-0.0.97/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-0.0.97/orca_sdk/_generated_api_client/api/classification_model/list_classification_models_classification_model_get.py +0 -127
  44. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/classification_model/predict_label_gpu_classification_model_name_or_id_prediction_post.py +0 -190
  45. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/classification_model/update_classification_model_classification_model_name_or_id_patch.py +0 -183
  46. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/datasource/__init__.py +0 -0
  47. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/datasource/create_datasource_from_content_datasource_post.py +0 -224
  48. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/datasource/create_datasource_from_files_datasource_upload_post.py +0 -229
  49. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/datasource/create_embedding_evaluation_datasource_name_or_id_embedding_evaluation_post.py +0 -183
  50. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/datasource/delete_datasource_datasource_name_or_id_delete.py +0 -156
  51. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/datasource/download_datasource_datasource_name_or_id_download_get.py +0 -172
  52. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/datasource/get_datasource_datasource_name_or_id_get.py +0 -156
  53. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/datasource/get_embedding_evaluation_datasource_name_or_id_embedding_evaluation_task_id_get.py +0 -169
  54. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/datasource/list_datasources_datasource_get.py +0 -127
  55. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/datasource/list_embedding_evaluations_datasource_name_or_id_embedding_evaluation_get.py +0 -235
  56. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/default/__init__.py +0 -0
  57. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/default/healthcheck_get.py +0 -118
  58. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/default/healthcheck_gpu_get.py +0 -118
  59. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/finetuned_embedding_model/__init__.py +0 -0
  60. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/finetuned_embedding_model/create_finetuned_embedding_model_finetuned_embedding_model_post.py +0 -168
  61. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/finetuned_embedding_model/delete_finetuned_embedding_model_finetuned_embedding_model_name_or_id_delete.py +0 -156
  62. orca_sdk-0.0.97/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
  63. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/finetuned_embedding_model/get_finetuned_embedding_model_finetuned_embedding_model_name_or_id_get.py +0 -156
  64. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/finetuned_embedding_model/list_finetuned_embedding_models_finetuned_embedding_model_get.py +0 -127
  65. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/memoryset/__init__.py +0 -0
  66. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/memoryset/analyze_memoryset_memoryset_name_or_id_analysis_post.py +0 -183
  67. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/memoryset/batch_delete_memoryset_batch_delete_memoryset_post.py +0 -168
  68. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/memoryset/clone_memoryset_memoryset_name_or_id_clone_post.py +0 -181
  69. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/memoryset/create_memoryset_memoryset_post.py +0 -168
  70. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/memoryset/delete_memories_memoryset_name_or_id_memories_delete_post.py +0 -181
  71. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/memoryset/delete_memory_memoryset_name_or_id_memory_memory_id_delete.py +0 -167
  72. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/memoryset/delete_memoryset_memoryset_name_or_id_delete.py +0 -156
  73. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/memoryset/get_analysis_memoryset_name_or_id_analysis_analysis_task_id_get.py +0 -169
  74. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/memoryset/get_memories_memoryset_name_or_id_memories_get_post.py +0 -210
  75. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/memoryset/get_memory_memoryset_name_or_id_memory_memory_id_get.py +0 -186
  76. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/memoryset/get_memoryset_memoryset_name_or_id_get.py +0 -156
  77. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/memoryset/insert_memories_gpu_memoryset_name_or_id_memory_post.py +0 -188
  78. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/memoryset/list_analyses_memoryset_name_or_id_analysis_get.py +0 -235
  79. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/memoryset/list_memorysets_memoryset_get.py +0 -180
  80. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/memoryset/memoryset_lookup_gpu_memoryset_name_or_id_lookup_post.py +0 -212
  81. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/memoryset/potential_duplicate_groups_memoryset_name_or_id_potential_duplicate_groups_get.py +0 -195
  82. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/memoryset/query_memoryset_memoryset_name_or_id_memories_post.py +0 -210
  83. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/memoryset/suggest_cascading_edits_memoryset_name_or_id_memory_memory_id_cascading_edits_post.py +0 -233
  84. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/memoryset/update_memories_gpu_memoryset_name_or_id_memories_patch.py +0 -216
  85. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/memoryset/update_memory_gpu_memoryset_name_or_id_memory_patch.py +0 -205
  86. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/memoryset/update_memoryset_memoryset_name_or_id_patch.py +0 -183
  87. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/predictive_model/__init__.py +0 -0
  88. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/predictive_model/list_predictive_models_predictive_model_get.py +0 -150
  89. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/pretrained_embedding_model/__init__.py +0 -0
  90. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/pretrained_embedding_model/embed_with_pretrained_model_gpu_pretrained_embedding_model_model_name_embedding_post.py +0 -192
  91. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/pretrained_embedding_model/get_pretrained_embedding_model_pretrained_embedding_model_model_name_get.py +0 -161
  92. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/pretrained_embedding_model/list_pretrained_embedding_models_pretrained_embedding_model_get.py +0 -127
  93. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/regression_model/__init__.py +0 -0
  94. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/regression_model/create_regression_model_regression_model_post.py +0 -170
  95. orca_sdk-0.0.97/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
  96. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/regression_model/delete_regression_model_regression_model_name_or_id_delete.py +0 -154
  97. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/regression_model/evaluate_regression_model_regression_model_model_name_or_id_evaluation_post.py +0 -183
  98. orca_sdk-0.0.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
  99. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/regression_model/get_regression_model_regression_model_name_or_id_get.py +0 -156
  100. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/regression_model/list_regression_model_evaluations_regression_model_model_name_or_id_evaluation_get.py +0 -161
  101. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/regression_model/list_regression_models_regression_model_get.py +0 -127
  102. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/regression_model/predict_score_gpu_regression_model_name_or_id_prediction_post.py +0 -190
  103. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/regression_model/update_regression_model_regression_model_name_or_id_patch.py +0 -183
  104. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/task/__init__.py +0 -0
  105. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/task/abort_task_task_task_id_abort_delete.py +0 -154
  106. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/task/get_task_status_task_task_id_status_get.py +0 -156
  107. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/task/get_task_task_task_id_get.py +0 -156
  108. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/task/list_tasks_task_get.py +0 -288
  109. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/telemetry/__init__.py +0 -0
  110. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/telemetry/count_predictions_telemetry_prediction_count_post.py +0 -168
  111. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/telemetry/drop_feedback_category_with_data_telemetry_feedback_category_name_or_id_delete.py +0 -162
  112. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/telemetry/explain_prediction_telemetry_prediction_prediction_id_explanation_get.py +0 -182
  113. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/telemetry/generate_memory_suggestions_telemetry_prediction_prediction_id_memory_suggestions_post.py +0 -239
  114. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/telemetry/get_action_recommendation_telemetry_prediction_prediction_id_action_get.py +0 -192
  115. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/telemetry/get_feedback_category_telemetry_feedback_category_name_or_id_get.py +0 -156
  116. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/telemetry/get_prediction_telemetry_prediction_prediction_id_get.py +0 -180
  117. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/telemetry/list_feedback_categories_telemetry_feedback_category_get.py +0 -127
  118. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/telemetry/list_memories_with_feedback_telemetry_memories_post.py +0 -198
  119. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/telemetry/list_predictions_telemetry_prediction_post.py +0 -198
  120. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/telemetry/record_prediction_feedback_telemetry_prediction_feedback_put.py +0 -171
  121. orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/telemetry/update_prediction_telemetry_prediction_prediction_id_patch.py +0 -181
  122. orca_sdk-0.0.97/orca_sdk/_generated_api_client/client.py +0 -216
  123. orca_sdk-0.0.97/orca_sdk/_generated_api_client/errors.py +0 -38
  124. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/__init__.py +0 -345
  125. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/action_recommendation.py +0 -82
  126. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/action_recommendation_action.py +0 -11
  127. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/add_memory_recommendations.py +0 -85
  128. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/add_memory_suggestion.py +0 -79
  129. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/analyze_neighbor_labels_result.py +0 -116
  130. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/api_key_metadata.py +0 -137
  131. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/api_key_metadata_scope_item.py +0 -9
  132. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/base_label_prediction_result.py +0 -130
  133. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/base_model.py +0 -55
  134. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/base_score_prediction_result.py +0 -108
  135. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/body_create_datasource_from_files_datasource_upload_post.py +0 -145
  136. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/cascade_edit_suggestions_request.py +0 -154
  137. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/cascading_edit_suggestion.py +0 -92
  138. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/class_representatives.py +0 -92
  139. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/classification_evaluation_request.py +0 -148
  140. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/classification_metrics.py +0 -259
  141. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/classification_model_metadata.py +0 -227
  142. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/classification_prediction_request.py +0 -220
  143. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/clone_memoryset_request.py +0 -210
  144. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/cluster_metrics.py +0 -78
  145. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/column_info.py +0 -145
  146. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/column_type.py +0 -14
  147. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/constraint_violation_error_response.py +0 -81
  148. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/constraint_violation_error_response_status_code.py +0 -8
  149. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/count_predictions_request.py +0 -195
  150. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/create_api_key_request.py +0 -120
  151. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/create_api_key_request_scope_item.py +0 -9
  152. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/create_api_key_response.py +0 -145
  153. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/create_api_key_response_scope_item.py +0 -9
  154. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/create_classification_model_request.py +0 -237
  155. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/create_datasource_from_content_request.py +0 -101
  156. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/create_memoryset_request.py +0 -365
  157. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/create_memoryset_request_index_params.py +0 -66
  158. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/create_memoryset_request_index_type.py +0 -13
  159. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/create_org_plan_request.py +0 -73
  160. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/create_org_plan_request_tier.py +0 -11
  161. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/create_regression_model_request.py +0 -157
  162. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/datasource_metadata.py +0 -156
  163. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/delete_memories_request.py +0 -70
  164. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/delete_memorysets_request.py +0 -70
  165. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/embed_request.py +0 -155
  166. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/embedding_evaluation_payload.py +0 -205
  167. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/embedding_evaluation_request.py +0 -197
  168. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/embedding_evaluation_response.py +0 -158
  169. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/embedding_evaluation_result.py +0 -86
  170. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/embedding_finetuning_method.py +0 -9
  171. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/embedding_model_result.py +0 -123
  172. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/evaluation_response.py +0 -153
  173. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/evaluation_response_classification_metrics.py +0 -140
  174. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/evaluation_response_regression_metrics.py +0 -140
  175. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/feedback_metrics.py +0 -85
  176. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/feedback_type.py +0 -9
  177. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/filter_item.py +0 -239
  178. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/filter_item_field_type_0_item.py +0 -17
  179. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/filter_item_field_type_1_item_type_0.py +0 -8
  180. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/filter_item_field_type_2_item_type_0.py +0 -8
  181. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/filter_item_field_type_2_item_type_1.py +0 -22
  182. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/filter_item_op.py +0 -16
  183. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/finetune_embedding_model_request.py +0 -259
  184. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/finetune_embedding_model_request_training_args.py +0 -66
  185. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/finetuned_embedding_model_metadata.py +0 -166
  186. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/get_memories_request.py +0 -70
  187. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/http_validation_error.py +0 -86
  188. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/internal_server_error_response.py +0 -81
  189. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/internal_server_error_response_status_code.py +0 -8
  190. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/label_class_metrics.py +0 -108
  191. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/label_prediction_memory_lookup.py +0 -210
  192. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/label_prediction_memory_lookup_metadata.py +0 -68
  193. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/label_prediction_with_memories_and_feedback.py +0 -288
  194. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/labeled_memory.py +0 -186
  195. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/labeled_memory_insert.py +0 -128
  196. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/labeled_memory_insert_metadata.py +0 -68
  197. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/labeled_memory_lookup.py +0 -194
  198. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/labeled_memory_lookup_metadata.py +0 -68
  199. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/labeled_memory_metadata.py +0 -68
  200. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/labeled_memory_update.py +0 -171
  201. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/labeled_memory_update_metadata_type_0.py +0 -68
  202. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/labeled_memory_with_feedback_metrics.py +0 -207
  203. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/labeled_memory_with_feedback_metrics_feedback_metrics.py +0 -68
  204. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/labeled_memory_with_feedback_metrics_metadata.py +0 -68
  205. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/list_memories_request.py +0 -104
  206. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/list_predictions_request.py +0 -319
  207. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/lookup_request.py +0 -101
  208. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/lookup_score_metrics.py +0 -94
  209. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/memory_metrics.py +0 -263
  210. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/memory_type.py +0 -9
  211. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/memoryset_analysis_configs.py +0 -245
  212. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/memoryset_analysis_request.py +0 -105
  213. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/memoryset_analysis_response.py +0 -182
  214. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/memoryset_class_patterns_analysis_config.py +0 -79
  215. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/memoryset_class_patterns_metrics.py +0 -138
  216. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/memoryset_cluster_analysis_config.py +0 -202
  217. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/memoryset_cluster_analysis_config_clustering_method.py +0 -9
  218. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/memoryset_cluster_analysis_config_partitioning_method.py +0 -10
  219. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/memoryset_cluster_metrics.py +0 -100
  220. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/memoryset_duplicate_analysis_config.py +0 -70
  221. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/memoryset_duplicate_metrics.py +0 -70
  222. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/memoryset_label_analysis_config.py +0 -70
  223. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/memoryset_label_metrics.py +0 -116
  224. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/memoryset_metadata.py +0 -333
  225. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/memoryset_metadata_index_params.py +0 -55
  226. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/memoryset_metadata_index_type.py +0 -13
  227. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/memoryset_metrics.py +0 -265
  228. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/memoryset_neighbor_analysis_config.py +0 -83
  229. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/memoryset_neighbor_metrics.py +0 -76
  230. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/memoryset_neighbor_metrics_lookup_score_metrics.py +0 -68
  231. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/memoryset_projection_analysis_config.py +0 -79
  232. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/memoryset_projection_metrics.py +0 -55
  233. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/memoryset_update.py +0 -121
  234. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/not_found_error_response.py +0 -99
  235. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/not_found_error_response_resource_type_0.py +0 -23
  236. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/not_found_error_response_status_code.py +0 -8
  237. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/org_plan.py +0 -99
  238. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/org_plan_tier.py +0 -11
  239. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/paginated_task.py +0 -108
  240. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/paginated_union_labeled_memory_with_feedback_metrics_scored_memory_with_feedback_metrics.py +0 -135
  241. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/pr_curve.py +0 -86
  242. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/prediction_feedback.py +0 -157
  243. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/prediction_feedback_category.py +0 -115
  244. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/prediction_feedback_request.py +0 -122
  245. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/prediction_feedback_result.py +0 -102
  246. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/prediction_sort_item_item_type_0.py +0 -10
  247. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/prediction_sort_item_item_type_1.py +0 -9
  248. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/predictive_model_update.py +0 -111
  249. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/pretrained_embedding_model_metadata.py +0 -115
  250. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/pretrained_embedding_model_name.py +0 -17
  251. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/rac_head_type.py +0 -11
  252. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/rar_head_type.py +0 -8
  253. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/regression_evaluation_request.py +0 -148
  254. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/regression_metrics.py +0 -172
  255. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/regression_model_metadata.py +0 -191
  256. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/regression_prediction_request.py +0 -195
  257. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/roc_curve.py +0 -86
  258. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/score_prediction_memory_lookup.py +0 -196
  259. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/score_prediction_memory_lookup_metadata.py +0 -68
  260. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/score_prediction_with_memories_and_feedback.py +0 -252
  261. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/scored_memory.py +0 -172
  262. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/scored_memory_insert.py +0 -128
  263. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/scored_memory_insert_metadata.py +0 -68
  264. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/scored_memory_lookup.py +0 -180
  265. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/scored_memory_lookup_metadata.py +0 -68
  266. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/scored_memory_metadata.py +0 -68
  267. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/scored_memory_update.py +0 -171
  268. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/scored_memory_update_metadata_type_0.py +0 -68
  269. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/scored_memory_with_feedback_metrics.py +0 -193
  270. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/scored_memory_with_feedback_metrics_feedback_metrics.py +0 -68
  271. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/scored_memory_with_feedback_metrics_metadata.py +0 -68
  272. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/service_unavailable_error_response.py +0 -81
  273. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/service_unavailable_error_response_status_code.py +0 -8
  274. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/task.py +0 -198
  275. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/task_status.py +0 -14
  276. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/task_status_info.py +0 -133
  277. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/telemetry_field_type_0_item_type_0.py +0 -8
  278. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/telemetry_field_type_0_item_type_2.py +0 -9
  279. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/telemetry_field_type_1_item_type_0.py +0 -8
  280. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/telemetry_field_type_1_item_type_1.py +0 -8
  281. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/telemetry_filter_item.py +0 -217
  282. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/telemetry_filter_item_op.py +0 -15
  283. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/telemetry_memories_request.py +0 -181
  284. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/telemetry_sort_options.py +0 -185
  285. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/telemetry_sort_options_direction.py +0 -9
  286. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/unauthenticated_error_response.py +0 -73
  287. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/unauthenticated_error_response_status_code.py +0 -8
  288. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/unauthorized_error_response.py +0 -81
  289. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/unauthorized_error_response_status_code.py +0 -8
  290. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/update_org_plan_request.py +0 -73
  291. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/update_org_plan_request_tier.py +0 -11
  292. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/update_prediction_request.py +0 -133
  293. orca_sdk-0.0.97/orca_sdk/_generated_api_client/models/validation_error.py +0 -99
  294. orca_sdk-0.0.97/orca_sdk/_generated_api_client/py.typed +0 -1
  295. orca_sdk-0.0.97/orca_sdk/_generated_api_client/types.py +0 -56
  296. orca_sdk-0.0.97/orca_sdk/_utils/__init__.py +0 -0
  297. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/README.md +0 -0
  298. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/_shared/metrics.py +0 -0
  299. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/_shared/metrics_test.py +0 -0
  300. {orca_sdk-0.0.97/orca_sdk/_generated_api_client/api/auth → orca_sdk-0.0.98/orca_sdk/_utils}/__init__.py +0 -0
  301. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/_utils/analysis_ui_style.css +0 -0
  302. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/_utils/auth_test.py +0 -0
  303. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/_utils/common.py +0 -0
  304. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/_utils/data_parsing.py +0 -0
  305. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/_utils/data_parsing_test.py +0 -0
  306. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/_utils/prediction_result_ui.css +0 -0
  307. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/_utils/prediction_result_ui.py +0 -0
  308. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/_utils/tqdm_file_reader.py +0 -0
  309. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/_utils/value_parser.py +0 -0
  310. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/_utils/value_parser_test.py +0 -0
  311. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/datasource_test.py +0 -0
  312. {orca_sdk-0.0.97 → orca_sdk-0.0.98}/orca_sdk/telemetry_test.py +0 -0
@@ -1,23 +1,20 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: orca_sdk
3
- Version: 0.0.97
3
+ Version: 0.0.98
4
4
  Summary: SDK for interacting with Orca Services
5
5
  License: Apache-2.0
6
6
  Author: Orca DB Inc.
7
7
  Author-email: dev-rel@orcadb.ai
8
- Requires-Python: >=3.10,<3.13
8
+ Requires-Python: >=3.11,<4.0
9
9
  Classifier: License :: OSI Approved :: Apache Software License
10
10
  Classifier: Programming Language :: Python :: 3
11
- Classifier: Programming Language :: Python :: 3.10
12
11
  Classifier: Programming Language :: Python :: 3.11
13
12
  Classifier: Programming Language :: Python :: 3.12
14
- Requires-Dist: attrs (>=22.2.0)
15
13
  Requires-Dist: datasets (>=3.1.0,<4.0.0)
16
14
  Requires-Dist: gradio (==5.13.0)
17
15
  Requires-Dist: httpx (>=0.20.0,<0.29.0)
18
16
  Requires-Dist: pandas (>=2.2.3,<3.0.0)
19
17
  Requires-Dist: pyarrow (>=18.0.0,<19.0.0)
20
- Requires-Dist: python-dateutil (>=2.8.0,<3.0.0)
21
18
  Requires-Dist: python-dotenv (>=1.1.0,<2.0.0)
22
19
  Requires-Dist: scikit-learn (>=1.6.1,<2.0.0)
23
20
  Requires-Dist: torch (>=2.5.1,<3.0.0)
@@ -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 (
@@ -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
  )
@@ -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,
@@ -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]