abacusai 1.4.66__tar.gz → 1.4.67__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of abacusai might be problematic. Click here for more details.

Files changed (321) hide show
  1. {abacusai-1.4.66 → abacusai-1.4.67}/PKG-INFO +1 -1
  2. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/__init__.py +4 -1
  3. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/api_class/ai_agents.py +6 -2
  4. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/api_class/model.py +2 -0
  5. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/api_endpoint.py +6 -4
  6. abacusai-1.4.67/abacusai/audit_log.py +47 -0
  7. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/client.py +38 -8
  8. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/deployment_conversation.py +9 -0
  9. abacusai-1.4.67/abacusai/document_retriever_version_logs.py +33 -0
  10. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/hosted_app_container.py +6 -4
  11. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/prediction_client.py +8 -0
  12. abacusai-1.4.67/abacusai/user_group_object_permission.py +41 -0
  13. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai.egg-info/PKG-INFO +1 -1
  14. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai.egg-info/SOURCES.txt +3 -0
  15. {abacusai-1.4.66 → abacusai-1.4.67}/setup.py +1 -1
  16. {abacusai-1.4.66 → abacusai-1.4.67}/LICENSE +0 -0
  17. {abacusai-1.4.66 → abacusai-1.4.67}/README.md +0 -0
  18. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/abacus_api.py +0 -0
  19. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/address.py +0 -0
  20. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/agent.py +0 -0
  21. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/agent_chat_message.py +0 -0
  22. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/agent_conversation.py +0 -0
  23. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/agent_data_document_info.py +0 -0
  24. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/agent_data_execution_result.py +0 -0
  25. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/agent_version.py +0 -0
  26. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/ai_building_task.py +0 -0
  27. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/algorithm.py +0 -0
  28. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/annotation.py +0 -0
  29. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/annotation_config.py +0 -0
  30. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/annotation_document.py +0 -0
  31. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/annotation_entry.py +0 -0
  32. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/annotations_status.py +0 -0
  33. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/api_class/__init__.py +0 -0
  34. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/api_class/abstract.py +0 -0
  35. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/api_class/ai_chat.py +0 -0
  36. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/api_class/batch_prediction.py +0 -0
  37. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/api_class/blob_input.py +0 -0
  38. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/api_class/connectors.py +0 -0
  39. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/api_class/dataset.py +0 -0
  40. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/api_class/dataset_application_connector.py +0 -0
  41. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/api_class/deployment.py +0 -0
  42. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/api_class/document_retriever.py +0 -0
  43. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/api_class/enums.py +0 -0
  44. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/api_class/feature_group.py +0 -0
  45. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/api_class/monitor.py +0 -0
  46. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/api_class/monitor_alert.py +0 -0
  47. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/api_class/project.py +0 -0
  48. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/api_class/python_functions.py +0 -0
  49. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/api_class/refresh.py +0 -0
  50. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/api_class/segments.py +0 -0
  51. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/api_client_utils.py +0 -0
  52. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/api_key.py +0 -0
  53. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/app_user_group.py +0 -0
  54. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/app_user_group_sign_in_token.py +0 -0
  55. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/application_connector.py +0 -0
  56. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/audio_gen_settings.py +0 -0
  57. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/audio_url_result.py +0 -0
  58. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/batch_prediction.py +0 -0
  59. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/batch_prediction_version.py +0 -0
  60. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/batch_prediction_version_logs.py +0 -0
  61. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/bot_info.py +0 -0
  62. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/categorical_range_violation.py +0 -0
  63. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/chat_message.py +0 -0
  64. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/chat_session.py +0 -0
  65. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/chatllm_computer.py +0 -0
  66. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/chatllm_computer_status.py +0 -0
  67. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/chatllm_memory.py +0 -0
  68. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/chatllm_project.py +0 -0
  69. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/chatllm_project_permissions.py +0 -0
  70. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/chatllm_referral_invite.py +0 -0
  71. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/chatllm_task.py +0 -0
  72. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/code_agent_response.py +0 -0
  73. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/code_autocomplete_edit_prediction_response.py +0 -0
  74. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/code_autocomplete_response.py +0 -0
  75. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/code_bot.py +0 -0
  76. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/code_edit.py +0 -0
  77. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/code_edit_response.py +0 -0
  78. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/code_edits.py +0 -0
  79. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/code_embeddings.py +0 -0
  80. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/code_llm_changed_files.py +0 -0
  81. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/code_source.py +0 -0
  82. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/code_suggestion_validation_response.py +0 -0
  83. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/code_summary_response.py +0 -0
  84. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/codellm_embedding_constants.py +0 -0
  85. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/compute_point_info.py +0 -0
  86. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/concatenation_config.py +0 -0
  87. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/constants_autocomplete_response.py +0 -0
  88. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/cpu_gpu_memory_specs.py +0 -0
  89. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/cryptography.py +0 -0
  90. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/custom_chat_instructions.py +0 -0
  91. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/custom_domain.py +0 -0
  92. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/custom_loss_function.py +0 -0
  93. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/custom_metric.py +0 -0
  94. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/custom_metric_version.py +0 -0
  95. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/custom_train_function_info.py +0 -0
  96. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/data_consistency_duplication.py +0 -0
  97. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/data_metrics.py +0 -0
  98. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/data_prep_logs.py +0 -0
  99. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/data_quality_results.py +0 -0
  100. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/data_upload_result.py +0 -0
  101. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/database_column_feature_mapping.py +0 -0
  102. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/database_connector.py +0 -0
  103. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/database_connector_column.py +0 -0
  104. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/database_connector_schema.py +0 -0
  105. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/dataset.py +0 -0
  106. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/dataset_column.py +0 -0
  107. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/dataset_version.py +0 -0
  108. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/dataset_version_logs.py +0 -0
  109. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/default_llm.py +0 -0
  110. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/deployment.py +0 -0
  111. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/deployment_auth_token.py +0 -0
  112. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/deployment_conversation_event.py +0 -0
  113. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/deployment_conversation_export.py +0 -0
  114. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/deployment_statistics.py +0 -0
  115. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/document_data.py +0 -0
  116. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/document_retriever.py +0 -0
  117. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/document_retriever_lookup_result.py +0 -0
  118. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/document_retriever_version.py +0 -0
  119. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/drift_distribution.py +0 -0
  120. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/drift_distributions.py +0 -0
  121. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/eda.py +0 -0
  122. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/eda_chart_description.py +0 -0
  123. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/eda_collinearity.py +0 -0
  124. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/eda_data_consistency.py +0 -0
  125. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/eda_feature_association.py +0 -0
  126. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/eda_feature_collinearity.py +0 -0
  127. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/eda_forecasting_analysis.py +0 -0
  128. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/eda_version.py +0 -0
  129. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/edit_image_models.py +0 -0
  130. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/embedding_feature_drift_distribution.py +0 -0
  131. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/entri_auth_token.py +0 -0
  132. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/execute_feature_group_operation.py +0 -0
  133. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/external_application.py +0 -0
  134. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/external_invite.py +0 -0
  135. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/extracted_fields.py +0 -0
  136. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/feature.py +0 -0
  137. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/feature_distribution.py +0 -0
  138. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/feature_drift_record.py +0 -0
  139. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/feature_drift_summary.py +0 -0
  140. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/feature_group.py +0 -0
  141. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/feature_group_document.py +0 -0
  142. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/feature_group_export.py +0 -0
  143. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/feature_group_export_config.py +0 -0
  144. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/feature_group_export_download_url.py +0 -0
  145. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/feature_group_lineage.py +0 -0
  146. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/feature_group_refresh_export_config.py +0 -0
  147. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/feature_group_row.py +0 -0
  148. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/feature_group_row_process.py +0 -0
  149. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/feature_group_row_process_logs.py +0 -0
  150. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/feature_group_row_process_summary.py +0 -0
  151. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/feature_group_template.py +0 -0
  152. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/feature_group_template_variable_options.py +0 -0
  153. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/feature_group_version.py +0 -0
  154. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/feature_group_version_logs.py +0 -0
  155. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/feature_importance.py +0 -0
  156. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/feature_mapping.py +0 -0
  157. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/feature_performance_analysis.py +0 -0
  158. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/file_connector.py +0 -0
  159. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/file_connector_instructions.py +0 -0
  160. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/file_connector_verification.py +0 -0
  161. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/finetuned_pretrained_model.py +0 -0
  162. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/forecasting_analysis_graph_data.py +0 -0
  163. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/forecasting_monitor_item_analysis.py +0 -0
  164. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/forecasting_monitor_summary.py +0 -0
  165. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/fs_entry.py +0 -0
  166. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/function_logs.py +0 -0
  167. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/generated_pit_feature_config_option.py +0 -0
  168. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/global_context.py +0 -0
  169. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/graph_dashboard.py +0 -0
  170. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/holdout_analysis.py +0 -0
  171. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/holdout_analysis_version.py +0 -0
  172. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/hosted_app.py +0 -0
  173. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/hosted_app_file_read.py +0 -0
  174. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/hosted_artifact.py +0 -0
  175. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/hosted_database.py +0 -0
  176. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/hosted_database_snapshot.py +0 -0
  177. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/hosted_model_token.py +0 -0
  178. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/hostname_info.py +0 -0
  179. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/hume_voice.py +0 -0
  180. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/image_gen_model.py +0 -0
  181. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/image_gen_model_options.py +0 -0
  182. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/image_gen_settings.py +0 -0
  183. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/indexing_config.py +0 -0
  184. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/inferred_database_column_to_feature_mappings.py +0 -0
  185. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/inferred_feature_mappings.py +0 -0
  186. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/item_statistics.py +0 -0
  187. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/lip_sync_gen_settings.py +0 -0
  188. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/llm_app.py +0 -0
  189. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/llm_artifact.py +0 -0
  190. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/llm_code_block.py +0 -0
  191. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/llm_execution_preview.py +0 -0
  192. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/llm_execution_result.py +0 -0
  193. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/llm_generated_code.py +0 -0
  194. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/llm_input.py +0 -0
  195. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/llm_parameters.py +0 -0
  196. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/llm_response.py +0 -0
  197. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/mcp_config.py +0 -0
  198. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/mcp_server.py +0 -0
  199. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/mcp_server_connection.py +0 -0
  200. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/mcp_server_query_result.py +0 -0
  201. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/memory_options.py +0 -0
  202. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/messaging_connector_response.py +0 -0
  203. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/model.py +0 -0
  204. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/model_artifacts_export.py +0 -0
  205. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/model_blueprint_export.py +0 -0
  206. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/model_blueprint_stage.py +0 -0
  207. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/model_location.py +0 -0
  208. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/model_metrics.py +0 -0
  209. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/model_monitor.py +0 -0
  210. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/model_monitor_org_summary.py +0 -0
  211. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/model_monitor_summary.py +0 -0
  212. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/model_monitor_summary_from_org.py +0 -0
  213. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/model_monitor_version.py +0 -0
  214. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/model_monitor_version_metric_data.py +0 -0
  215. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/model_training_type_for_deployment.py +0 -0
  216. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/model_upload.py +0 -0
  217. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/model_version.py +0 -0
  218. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/model_version_feature_group_schema.py +0 -0
  219. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/modification_lock_info.py +0 -0
  220. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/module.py +0 -0
  221. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/monitor_alert.py +0 -0
  222. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/monitor_alert_version.py +0 -0
  223. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/monitor_drift_and_distributions.py +0 -0
  224. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/natural_language_explanation.py +0 -0
  225. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/nested_feature.py +0 -0
  226. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/nested_feature_schema.py +0 -0
  227. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/news_search_result.py +0 -0
  228. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/nlp_chat_response.py +0 -0
  229. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/notebook_completion.py +0 -0
  230. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/notebook_template.py +0 -0
  231. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/null_violation.py +0 -0
  232. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/organization_external_application_settings.py +0 -0
  233. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/organization_group.py +0 -0
  234. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/organization_search_result.py +0 -0
  235. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/organization_secret.py +0 -0
  236. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/page_data.py +0 -0
  237. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/pipeline.py +0 -0
  238. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/pipeline_reference.py +0 -0
  239. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/pipeline_step.py +0 -0
  240. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/pipeline_step_version.py +0 -0
  241. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/pipeline_step_version_logs.py +0 -0
  242. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/pipeline_step_version_reference.py +0 -0
  243. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/pipeline_version.py +0 -0
  244. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/pipeline_version_logs.py +0 -0
  245. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/playground_text.py +0 -0
  246. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/point_in_time_feature.py +0 -0
  247. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/point_in_time_feature_info.py +0 -0
  248. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/point_in_time_group.py +0 -0
  249. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/point_in_time_group_feature.py +0 -0
  250. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/prediction_dataset.py +0 -0
  251. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/prediction_feature_group.py +0 -0
  252. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/prediction_input.py +0 -0
  253. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/prediction_log_record.py +0 -0
  254. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/prediction_operator.py +0 -0
  255. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/prediction_operator_version.py +0 -0
  256. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/presentation_export_result.py +0 -0
  257. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/problem_type.py +0 -0
  258. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/project.py +0 -0
  259. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/project_config.py +0 -0
  260. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/project_feature_group.py +0 -0
  261. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/project_feature_group_schema.py +0 -0
  262. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/project_feature_group_schema_version.py +0 -0
  263. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/project_validation.py +0 -0
  264. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/python_function.py +0 -0
  265. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/python_function_validator.py +0 -0
  266. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/python_plot_function.py +0 -0
  267. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/range_violation.py +0 -0
  268. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/realtime_monitor.py +0 -0
  269. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/refresh_pipeline_run.py +0 -0
  270. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/refresh_policy.py +0 -0
  271. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/refresh_schedule.py +0 -0
  272. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/regenerate_llm_external_application.py +0 -0
  273. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/resolved_feature_group_template.py +0 -0
  274. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/return_class.py +0 -0
  275. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/routing_action.py +0 -0
  276. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/schema.py +0 -0
  277. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/session_summary.py +0 -0
  278. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/session_transcript.py +0 -0
  279. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/session_transcripts.py +0 -0
  280. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/sftp_key.py +0 -0
  281. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/streaming_auth_token.py +0 -0
  282. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/streaming_client.py +0 -0
  283. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/streaming_connector.py +0 -0
  284. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/streaming_row_count.py +0 -0
  285. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/streaming_sample_code.py +0 -0
  286. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/sts_gen_settings.py +0 -0
  287. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/stt_gen_model.py +0 -0
  288. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/stt_gen_model_options.py +0 -0
  289. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/stt_gen_settings.py +0 -0
  290. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/template_node_details.py +0 -0
  291. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/test_point_predictions.py +0 -0
  292. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/tone_details.py +0 -0
  293. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/training_config_options.py +0 -0
  294. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/tts_gen_settings.py +0 -0
  295. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/twitter_search_result.py +0 -0
  296. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/unified_connector.py +0 -0
  297. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/upload.py +0 -0
  298. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/upload_part.py +0 -0
  299. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/use_case.py +0 -0
  300. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/use_case_requirements.py +0 -0
  301. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/user.py +0 -0
  302. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/user_exception.py +0 -0
  303. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/video_gen_costs.py +0 -0
  304. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/video_gen_model.py +0 -0
  305. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/video_gen_model_options.py +0 -0
  306. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/video_gen_settings.py +0 -0
  307. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/video_search_result.py +0 -0
  308. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/voice_gen_details.py +0 -0
  309. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/web_app_conversation.py +0 -0
  310. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/web_app_domain.py +0 -0
  311. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/web_page_response.py +0 -0
  312. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/web_search_response.py +0 -0
  313. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/web_search_result.py +0 -0
  314. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/webhook.py +0 -0
  315. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/workflow_graph_node_details.py +0 -0
  316. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai/workflow_node_template.py +0 -0
  317. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai.egg-info/dependency_links.txt +0 -0
  318. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai.egg-info/requires.txt +0 -0
  319. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai.egg-info/top_level.txt +0 -0
  320. {abacusai-1.4.66 → abacusai-1.4.67}/abacusai.egg-info/zip-safe +0 -0
  321. {abacusai-1.4.66 → abacusai-1.4.67}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: abacusai
3
- Version: 1.4.66
3
+ Version: 1.4.67
4
4
  Summary: Abacus.AI Python Client Library
5
5
  Home-page: https://github.com/abacusai/api-python
6
6
  Author: Abacus.AI
@@ -21,6 +21,7 @@ from .app_user_group_sign_in_token import AppUserGroupSignInToken
21
21
  from .application_connector import ApplicationConnector
22
22
  from .audio_gen_settings import AudioGenSettings
23
23
  from .audio_url_result import AudioUrlResult
24
+ from .audit_log import AuditLog
24
25
  from .batch_prediction import BatchPrediction
25
26
  from .batch_prediction_version import BatchPredictionVersion
26
27
  from .batch_prediction_version_logs import BatchPredictionVersionLogs
@@ -83,6 +84,7 @@ from .document_data import DocumentData
83
84
  from .document_retriever import DocumentRetriever
84
85
  from .document_retriever_lookup_result import DocumentRetrieverLookupResult
85
86
  from .document_retriever_version import DocumentRetrieverVersion
87
+ from .document_retriever_version_logs import DocumentRetrieverVersionLogs
86
88
  from .drift_distribution import DriftDistribution
87
89
  from .drift_distributions import DriftDistributions
88
90
  from .eda import Eda
@@ -266,6 +268,7 @@ from .use_case import UseCase
266
268
  from .use_case_requirements import UseCaseRequirements
267
269
  from .user import User
268
270
  from .user_exception import UserException
271
+ from .user_group_object_permission import UserGroupObjectPermission
269
272
  from .video_gen_costs import VideoGenCosts
270
273
  from .video_gen_model import VideoGenModel
271
274
  from .video_gen_model_options import VideoGenModelOptions
@@ -282,4 +285,4 @@ from .workflow_graph_node_details import WorkflowGraphNodeDetails
282
285
  from .workflow_node_template import WorkflowNodeTemplate
283
286
 
284
287
 
285
- __version__ = "1.4.66"
288
+ __version__ = "1.4.67"
@@ -9,11 +9,15 @@ from .abstract import ApiClass, get_clean_function_source_code_for_agent, valida
9
9
  MIN_AGENT_SLEEP_TIME = 300
10
10
 
11
11
 
12
- def validate_input_dict_param(dict_object, friendly_class_name, must_contain=[]):
12
+ def validate_input_dict_param(dict_object, friendly_class_name, must_contain=[], schema={}):
13
13
  if not isinstance(dict_object, dict):
14
14
  raise ValueError(friendly_class_name, 'Invalid argument. Provided argument should be a dictionary.')
15
15
  if any(field not in dict_object for field in must_contain):
16
16
  raise ValueError(friendly_class_name, f'One or more keys are missing in the argument provided. Must contain keys - {must_contain}.')
17
+ for key, value_type in schema.items():
18
+ value = dict_object.get(key)
19
+ if value and not isinstance(value, value_type):
20
+ raise ValueError(friendly_class_name, f'Invalid parameter "{key}". It should be of type {value_type.__name__}.')
17
21
 
18
22
 
19
23
  @dataclasses.dataclass
@@ -766,7 +770,7 @@ class WorkflowGraph(ApiClass):
766
770
 
767
771
  @classmethod
768
772
  def from_dict(cls, graph: dict):
769
- validate_input_dict_param(graph, friendly_class_name='workflow_graph')
773
+ validate_input_dict_param(graph, friendly_class_name='workflow_graph', schema={'nodes': list, 'edges': list, 'primary_start_node': str, 'common_source_code': str, 'specification_type': str})
770
774
  if graph.get('__return_filter'):
771
775
  for node in graph.get('nodes', []):
772
776
  node['__return_filter'] = True
@@ -486,6 +486,7 @@ class ChatLLMTrainingConfig(TrainingConfig):
486
486
  data_prompt_column_context (Dict[str, str]): Dict of 'table_name.column_name' and 'column_context' pairs to provide column context for some selected columns in the selected structured data table. This replaces the default auto-generated information about the column data.
487
487
  hide_sql_and_code (bool): When running data queries, this will hide the generated SQL and Code in the response.
488
488
  disable_data_summarization (bool): After executing a query summarize the reponse and reply back with only the table and query run.
489
+ disable_data_fetch_for_training (bool): Train using only table and column schema metadata without fetching sample data. This speeds up training but may result in less context for the model.
489
490
  data_columns_to_ignore (List[str]): Columns to ignore while encoding information about structured data tables in context for the LLM. A list of strings of format "<table_name>.<column_name>"
490
491
  search_score_cutoff (float): Minimum search score to consider a document as a valid search result.
491
492
  include_bm25_retrieval (bool): Combine BM25 search score with vector search using reciprocal rank fusion.
@@ -525,6 +526,7 @@ class ChatLLMTrainingConfig(TrainingConfig):
525
526
  data_prompt_column_context: Dict[str, str] = dataclasses.field(default=None)
526
527
  hide_sql_and_code: bool = dataclasses.field(default=None)
527
528
  disable_data_summarization: bool = dataclasses.field(default=None)
529
+ disable_data_fetch_for_training: bool = dataclasses.field(default=None)
528
530
  data_columns_to_ignore: List[str] = dataclasses.field(default=None)
529
531
  search_score_cutoff: float = dataclasses.field(default=None)
530
532
  include_bm25_retrieval: bool = dataclasses.field(default=None)
@@ -14,9 +14,10 @@ class ApiEndpoint(AbstractApiClass):
14
14
  externalChatEndpoint (str): The URI that can be used to access the external chat
15
15
  dashboardEndpoint (str): The URI that the external chat will use to go back to the dashboard
16
16
  hostingDomain (str): The domain for hosted app deployments
17
+ publicHostingDomain (str): The domain for publicly hosted app deployments
17
18
  """
18
19
 
19
- def __init__(self, client, apiEndpoint=None, predictEndpoint=None, proxyEndpoint=None, llmEndpoint=None, externalChatEndpoint=None, dashboardEndpoint=None, hostingDomain=None):
20
+ def __init__(self, client, apiEndpoint=None, predictEndpoint=None, proxyEndpoint=None, llmEndpoint=None, externalChatEndpoint=None, dashboardEndpoint=None, hostingDomain=None, publicHostingDomain=None):
20
21
  super().__init__(client, None)
21
22
  self.api_endpoint = apiEndpoint
22
23
  self.predict_endpoint = predictEndpoint
@@ -25,11 +26,12 @@ class ApiEndpoint(AbstractApiClass):
25
26
  self.external_chat_endpoint = externalChatEndpoint
26
27
  self.dashboard_endpoint = dashboardEndpoint
27
28
  self.hosting_domain = hostingDomain
29
+ self.public_hosting_domain = publicHostingDomain
28
30
  self.deprecated_keys = {}
29
31
 
30
32
  def __repr__(self):
31
- repr_dict = {f'api_endpoint': repr(self.api_endpoint), f'predict_endpoint': repr(self.predict_endpoint), f'proxy_endpoint': repr(self.proxy_endpoint), f'llm_endpoint': repr(
32
- self.llm_endpoint), f'external_chat_endpoint': repr(self.external_chat_endpoint), f'dashboard_endpoint': repr(self.dashboard_endpoint), f'hosting_domain': repr(self.hosting_domain)}
33
+ repr_dict = {f'api_endpoint': repr(self.api_endpoint), f'predict_endpoint': repr(self.predict_endpoint), f'proxy_endpoint': repr(self.proxy_endpoint), f'llm_endpoint': repr(self.llm_endpoint), f'external_chat_endpoint': repr(
34
+ self.external_chat_endpoint), f'dashboard_endpoint': repr(self.dashboard_endpoint), f'hosting_domain': repr(self.hosting_domain), f'public_hosting_domain': repr(self.public_hosting_domain)}
33
35
  class_name = "ApiEndpoint"
34
36
  repr_str = ',\n '.join([f'{key}={value}' for key, value in repr_dict.items(
35
37
  ) if getattr(self, key, None) is not None and key not in self.deprecated_keys])
@@ -43,5 +45,5 @@ class ApiEndpoint(AbstractApiClass):
43
45
  dict: The dict value representation of the class parameters
44
46
  """
45
47
  resp = {'api_endpoint': self.api_endpoint, 'predict_endpoint': self.predict_endpoint, 'proxy_endpoint': self.proxy_endpoint, 'llm_endpoint': self.llm_endpoint,
46
- 'external_chat_endpoint': self.external_chat_endpoint, 'dashboard_endpoint': self.dashboard_endpoint, 'hosting_domain': self.hosting_domain}
48
+ 'external_chat_endpoint': self.external_chat_endpoint, 'dashboard_endpoint': self.dashboard_endpoint, 'hosting_domain': self.hosting_domain, 'public_hosting_domain': self.public_hosting_domain}
47
49
  return {key: value for key, value in resp.items() if value is not None and key not in self.deprecated_keys}
@@ -0,0 +1,47 @@
1
+ from .return_class import AbstractApiClass
2
+
3
+
4
+ class AuditLog(AbstractApiClass):
5
+ """
6
+ An audit log entry
7
+
8
+ Args:
9
+ client (ApiClient): An authenticated API Client instance
10
+ createdAt (str): The timestamp when the audit log entry was created
11
+ userId (str): The hashed ID of the user who performed the action
12
+ objectId (str): The hashed ID of the object that was affected by the action
13
+ action (str): The action performed (create, modify, start, stop, delete, share, hide, credential_change, login)
14
+ source (str): The source of the action (api, ui, pipeline, cli, system)
15
+ refreshPolicyId (str): The hashed ID of the refresh policy if applicable
16
+ pipelineId (str): The hashed ID of the pipeline if applicable
17
+ """
18
+
19
+ def __init__(self, client, createdAt=None, userId=None, objectId=None, action=None, source=None, refreshPolicyId=None, pipelineId=None):
20
+ super().__init__(client, None)
21
+ self.created_at = createdAt
22
+ self.user_id = userId
23
+ self.object_id = objectId
24
+ self.action = action
25
+ self.source = source
26
+ self.refresh_policy_id = refreshPolicyId
27
+ self.pipeline_id = pipelineId
28
+ self.deprecated_keys = {}
29
+
30
+ def __repr__(self):
31
+ repr_dict = {f'created_at': repr(self.created_at), f'user_id': repr(self.user_id), f'object_id': repr(self.object_id), f'action': repr(
32
+ self.action), f'source': repr(self.source), f'refresh_policy_id': repr(self.refresh_policy_id), f'pipeline_id': repr(self.pipeline_id)}
33
+ class_name = "AuditLog"
34
+ repr_str = ',\n '.join([f'{key}={value}' for key, value in repr_dict.items(
35
+ ) if getattr(self, key, None) is not None and key not in self.deprecated_keys])
36
+ return f"{class_name}({repr_str})"
37
+
38
+ def to_dict(self):
39
+ """
40
+ Get a dict representation of the parameters in this class
41
+
42
+ Returns:
43
+ dict: The dict value representation of the class parameters
44
+ """
45
+ resp = {'created_at': self.created_at, 'user_id': self.user_id, 'object_id': self.object_id, 'action': self.action,
46
+ 'source': self.source, 'refresh_policy_id': self.refresh_policy_id, 'pipeline_id': self.pipeline_id}
47
+ return {key: value for key, value in resp.items() if value is not None and key not in self.deprecated_keys}
@@ -180,6 +180,7 @@ from .upload_part import UploadPart
180
180
  from .use_case import UseCase
181
181
  from .use_case_requirements import UseCaseRequirements
182
182
  from .user import User
183
+ from .user_group_object_permission import UserGroupObjectPermission
183
184
  from .web_page_response import WebPageResponse
184
185
  from .web_search_response import WebSearchResponse
185
186
  from .webhook import Webhook
@@ -218,17 +219,20 @@ async def sse_asynchronous_generator(endpoint: str, headers: dict, body: dict):
218
219
  async with aiohttp.request('POST', endpoint, json=body, headers=headers, timeout=aiohttp.ClientTimeout(total=0)) as response:
219
220
  async for line in response.content:
220
221
  if line:
221
- streamed_responses = line.decode('utf-8').split('\n\n')
222
+ streamed_responses = line.decode('utf-8').split('\n')
222
223
  for resp in streamed_responses:
223
224
  if resp:
224
225
  resp = resp.strip()
225
226
  if resp:
226
- resp = json.loads(resp)
227
- resp = {snake_case(
228
- key): value for key, value in resp.items()}
229
- if 'ping' in resp:
230
- continue
231
- yield resp
227
+ try:
228
+ resp = json.loads(resp)
229
+ resp = {snake_case(
230
+ key): value for key, value in resp.items()}
231
+ if 'ping' in resp:
232
+ continue
233
+ yield resp
234
+ except Exception:
235
+ pass
232
236
 
233
237
 
234
238
  def _requests_retry_session(retries=5, backoff_factor=0.1, status_forcelist=(502, 503, 504), session=None, retry_500: bool = False):
@@ -663,7 +667,7 @@ class BaseApiClient:
663
667
  client_options (ClientOptions): Optional API client configurations
664
668
  skip_version_check (bool): If true, will skip checking the server's current API version on initializing the client
665
669
  """
666
- client_version = '1.4.66'
670
+ client_version = '1.4.67'
667
671
 
668
672
  def __init__(self, api_key: str = None, server: str = None, client_options: ClientOptions = None, skip_version_check: bool = False, include_tb: bool = False):
669
673
  self.api_key = api_key
@@ -2777,6 +2781,14 @@ class ReadOnlyClient(BaseApiClient):
2777
2781
  DeploymentConversation: The deployment conversation."""
2778
2782
  return self._proxy_request('getDeploymentConversation', 'GET', query_params={'deploymentConversationId': deployment_conversation_id, 'externalSessionId': external_session_id, 'deploymentId': deployment_id, 'filterIntermediateConversationEvents': filter_intermediate_conversation_events, 'getUnusedDocumentUploads': get_unused_document_uploads, 'start': start, 'limit': limit, 'includeAllVersions': include_all_versions}, parse_type=DeploymentConversation, is_sync=True)
2779
2783
 
2784
+ def get_deployment_conversation_file(self, deployment_conversation_id: str, file_path: str) -> io.BytesIO:
2785
+ """Gets a deployment conversation file.
2786
+
2787
+ Args:
2788
+ deployment_conversation_id (str): Unique ID of the conversation.
2789
+ file_path (str): The path of the file to get."""
2790
+ return self._proxy_request('getDeploymentConversationFile', 'GET', query_params={'deploymentConversationId': deployment_conversation_id, 'filePath': file_path}, is_sync=True, streamable_response=True)
2791
+
2780
2792
  def list_deployment_conversations(self, deployment_id: str = None, external_application_id: str = None, conversation_type: Union[DeploymentConversationType, str] = None, fetch_last_llm_info: bool = False, limit: int = None, search: str = None) -> List[DeploymentConversation]:
2781
2793
  """Lists all conversations for the given deployment and current user.
2782
2794
 
@@ -2803,6 +2815,16 @@ class ReadOnlyClient(BaseApiClient):
2803
2815
  DeploymentConversationExport: The deployment conversation html export."""
2804
2816
  return self._proxy_request('exportDeploymentConversation', 'GET', query_params={'deploymentConversationId': deployment_conversation_id, 'externalSessionId': external_session_id}, parse_type=DeploymentConversationExport, is_sync=True)
2805
2817
 
2818
+ def list_user_group_object_permissions(self) -> List[UserGroupObjectPermission]:
2819
+ """List all user groups permissions associated with the objects in the organization.
2820
+
2821
+ If no associated user groups, the object is public among developers and admins.
2822
+
2823
+
2824
+ Returns:
2825
+ list[UserGroupObjectPermission]: List of user group object permissions in the organization."""
2826
+ return self._call_api('listUserGroupObjectPermissions', 'GET', query_params={}, parse_type=UserGroupObjectPermission)
2827
+
2806
2828
  def get_app_user_group(self, user_group_id: str) -> AppUserGroup:
2807
2829
  """Gets an App User Group.
2808
2830
 
@@ -7691,6 +7713,14 @@ class ApiClient(ReadOnlyClient):
7691
7713
  deployment_id, deployment_token) if deployment_token else None
7692
7714
  return self._call_api('getConversationResponseWithBinaryData', 'POST', query_params={'deploymentId': deployment_id, 'deploymentToken': deployment_token}, data={'message': json.dumps(message) if (message is not None and not isinstance(message, str)) else message, 'deploymentConversationId': json.dumps(deployment_conversation_id) if (deployment_conversation_id is not None and not isinstance(deployment_conversation_id, str)) else deployment_conversation_id, 'externalSessionId': json.dumps(external_session_id) if (external_session_id is not None and not isinstance(external_session_id, str)) else external_session_id, 'llmName': json.dumps(llm_name) if (llm_name is not None and not isinstance(llm_name, str)) else llm_name, 'numCompletionTokens': json.dumps(num_completion_tokens) if (num_completion_tokens is not None and not isinstance(num_completion_tokens, str)) else num_completion_tokens, 'systemMessage': json.dumps(system_message) if (system_message is not None and not isinstance(system_message, str)) else system_message, 'temperature': json.dumps(temperature) if (temperature is not None and not isinstance(temperature, str)) else temperature, 'filterKeyValues': json.dumps(filter_key_values) if (filter_key_values is not None and not isinstance(filter_key_values, str)) else filter_key_values, 'searchScoreCutoff': json.dumps(search_score_cutoff) if (search_score_cutoff is not None and not isinstance(search_score_cutoff, str)) else search_score_cutoff, 'chatConfig': json.dumps(chat_config) if (chat_config is not None and not isinstance(chat_config, str)) else chat_config}, files=attachments, server_override=prediction_url)
7693
7715
 
7716
+ def get_deep_agent_response(self, message: str, deployment_conversation_id: str = None) -> Dict:
7717
+ """Return a DeepAgent response with generated files if any, based on the input message.
7718
+
7719
+ Args:
7720
+ message (str): The user's message/task for DeepAgent to complete
7721
+ deployment_conversation_id (str): The unique identifier of a deployment conversation to continue. If not specified, a new one will be created."""
7722
+ return self._proxy_request('getDeepAgentResponse', 'POST', query_params={}, body={'message': message, 'deploymentConversationId': deployment_conversation_id}, is_sync=True)
7723
+
7694
7724
  def get_search_results(self, deployment_token: str, deployment_id: str, query_data: dict, num: int = 15) -> Dict:
7695
7725
  """Return the most relevant search results to the search query from the uploaded documents.
7696
7726
 
@@ -118,6 +118,15 @@ class DeploymentConversation(AbstractApiClass):
118
118
  """
119
119
  return self.client.get_deployment_conversation(self.deployment_conversation_id, external_session_id, deployment_id, filter_intermediate_conversation_events, get_unused_document_uploads, start, limit, include_all_versions)
120
120
 
121
+ def get_file(self, file_path: str):
122
+ """
123
+ Gets a deployment conversation file.
124
+
125
+ Args:
126
+ file_path (str): The path of the file to get.
127
+ """
128
+ return self.client.get_deployment_conversation_file(self.deployment_conversation_id, file_path)
129
+
121
130
  def delete(self, deployment_id: str = None):
122
131
  """
123
132
  Delete a Deployment Conversation.
@@ -0,0 +1,33 @@
1
+ from .return_class import AbstractApiClass
2
+
3
+
4
+ class DocumentRetrieverVersionLogs(AbstractApiClass):
5
+ """
6
+ Logs from document retriever version.
7
+
8
+ Args:
9
+ client (ApiClient): An authenticated API Client instance
10
+ logs (list[str]): List of logs from document retriever version.
11
+ """
12
+
13
+ def __init__(self, client, logs=None):
14
+ super().__init__(client, None)
15
+ self.logs = logs
16
+ self.deprecated_keys = {}
17
+
18
+ def __repr__(self):
19
+ repr_dict = {f'logs': repr(self.logs)}
20
+ class_name = "DocumentRetrieverVersionLogs"
21
+ repr_str = ',\n '.join([f'{key}={value}' for key, value in repr_dict.items(
22
+ ) if getattr(self, key, None) is not None and key not in self.deprecated_keys])
23
+ return f"{class_name}({repr_str})"
24
+
25
+ def to_dict(self):
26
+ """
27
+ Get a dict representation of the parameters in this class
28
+
29
+ Returns:
30
+ dict: The dict value representation of the class parameters
31
+ """
32
+ resp = {'logs': self.logs}
33
+ return {key: value for key, value in resp.items() if value is not None and key not in self.deprecated_keys}
@@ -23,6 +23,7 @@ class HostedAppContainer(AbstractApiClass):
23
23
  lifecycle (str): Container lifecycle status (PENDING/DEPLOYING/ACTIVE/FAILED/STOPPED/DELETING)
24
24
  status (str): Container status (RUNNING/STOPPED/DEPLOYING/FAILED)
25
25
  deployedStatus (str): Deployment status (PENDING/ACTIVE/STOPPED/NOT_DEPLOYED)
26
+ accessLevel (str): Access Level (PUBLIC/PRIVATE/DEDICATED)
26
27
  hostname (str): Hostname of the deployed app
27
28
  llmArtifactId (id): The ID of the LLM artifact
28
29
  artifactType (str): The type of the artifact
@@ -33,7 +34,7 @@ class HostedAppContainer(AbstractApiClass):
33
34
  parentConversationId (id): The ID of the parent conversation
34
35
  """
35
36
 
36
- def __init__(self, client, hostedAppContainerId=None, hostedAppId=None, deploymentConversationId=None, hostedAppVersion=None, name=None, createdAt=None, updatedAt=None, containerImage=None, route=None, appConfig=None, isDev=None, isDeployable=None, isPreviewAvailable=None, lifecycle=None, status=None, deployedStatus=None, hostname=None, llmArtifactId=None, artifactType=None, deployedLlmArtifactId=None, hasDatabase=None, hasStorage=None, webAppProjectId=None, parentConversationId=None):
37
+ def __init__(self, client, hostedAppContainerId=None, hostedAppId=None, deploymentConversationId=None, hostedAppVersion=None, name=None, createdAt=None, updatedAt=None, containerImage=None, route=None, appConfig=None, isDev=None, isDeployable=None, isPreviewAvailable=None, lifecycle=None, status=None, deployedStatus=None, accessLevel=None, hostname=None, llmArtifactId=None, artifactType=None, deployedLlmArtifactId=None, hasDatabase=None, hasStorage=None, webAppProjectId=None, parentConversationId=None):
37
38
  super().__init__(client, hostedAppContainerId)
38
39
  self.hosted_app_container_id = hostedAppContainerId
39
40
  self.hosted_app_id = hostedAppId
@@ -51,6 +52,7 @@ class HostedAppContainer(AbstractApiClass):
51
52
  self.lifecycle = lifecycle
52
53
  self.status = status
53
54
  self.deployed_status = deployedStatus
55
+ self.access_level = accessLevel
54
56
  self.hostname = hostname
55
57
  self.llm_artifact_id = llmArtifactId
56
58
  self.artifact_type = artifactType
@@ -63,7 +65,7 @@ class HostedAppContainer(AbstractApiClass):
63
65
 
64
66
  def __repr__(self):
65
67
  repr_dict = {f'hosted_app_container_id': repr(self.hosted_app_container_id), f'hosted_app_id': repr(self.hosted_app_id), f'deployment_conversation_id': repr(self.deployment_conversation_id), f'hosted_app_version': repr(self.hosted_app_version), f'name': repr(self.name), f'created_at': repr(self.created_at), f'updated_at': repr(self.updated_at), f'container_image': repr(self.container_image), f'route': repr(self.route), f'app_config': repr(self.app_config), f'is_dev': repr(self.is_dev), f'is_deployable': repr(self.is_deployable), f'is_preview_available': repr(
66
- self.is_preview_available), f'lifecycle': repr(self.lifecycle), f'status': repr(self.status), f'deployed_status': repr(self.deployed_status), f'hostname': repr(self.hostname), f'llm_artifact_id': repr(self.llm_artifact_id), f'artifact_type': repr(self.artifact_type), f'deployed_llm_artifact_id': repr(self.deployed_llm_artifact_id), f'has_database': repr(self.has_database), f'has_storage': repr(self.has_storage), f'web_app_project_id': repr(self.web_app_project_id), f'parent_conversation_id': repr(self.parent_conversation_id)}
68
+ self.is_preview_available), f'lifecycle': repr(self.lifecycle), f'status': repr(self.status), f'deployed_status': repr(self.deployed_status), f'access_level': repr(self.access_level), f'hostname': repr(self.hostname), f'llm_artifact_id': repr(self.llm_artifact_id), f'artifact_type': repr(self.artifact_type), f'deployed_llm_artifact_id': repr(self.deployed_llm_artifact_id), f'has_database': repr(self.has_database), f'has_storage': repr(self.has_storage), f'web_app_project_id': repr(self.web_app_project_id), f'parent_conversation_id': repr(self.parent_conversation_id)}
67
69
  class_name = "HostedAppContainer"
68
70
  repr_str = ',\n '.join([f'{key}={value}' for key, value in repr_dict.items(
69
71
  ) if getattr(self, key, None) is not None and key not in self.deprecated_keys])
@@ -76,6 +78,6 @@ class HostedAppContainer(AbstractApiClass):
76
78
  Returns:
77
79
  dict: The dict value representation of the class parameters
78
80
  """
79
- resp = {'hosted_app_container_id': self.hosted_app_container_id, 'hosted_app_id': self.hosted_app_id, 'deployment_conversation_id': self.deployment_conversation_id, 'hosted_app_version': self.hosted_app_version, 'name': self.name, 'created_at': self.created_at, 'updated_at': self.updated_at, 'container_image': self.container_image, 'route': self.route, 'app_config': self.app_config, 'is_dev': self.is_dev, 'is_deployable': self.is_deployable,
80
- 'is_preview_available': self.is_preview_available, 'lifecycle': self.lifecycle, 'status': self.status, 'deployed_status': self.deployed_status, 'hostname': self.hostname, 'llm_artifact_id': self.llm_artifact_id, 'artifact_type': self.artifact_type, 'deployed_llm_artifact_id': self.deployed_llm_artifact_id, 'has_database': self.has_database, 'has_storage': self.has_storage, 'web_app_project_id': self.web_app_project_id, 'parent_conversation_id': self.parent_conversation_id}
81
+ resp = {'hosted_app_container_id': self.hosted_app_container_id, 'hosted_app_id': self.hosted_app_id, 'deployment_conversation_id': self.deployment_conversation_id, 'hosted_app_version': self.hosted_app_version, 'name': self.name, 'created_at': self.created_at, 'updated_at': self.updated_at, 'container_image': self.container_image, 'route': self.route, 'app_config': self.app_config, 'is_dev': self.is_dev, 'is_deployable': self.is_deployable, 'is_preview_available': self.is_preview_available,
82
+ 'lifecycle': self.lifecycle, 'status': self.status, 'deployed_status': self.deployed_status, 'access_level': self.access_level, 'hostname': self.hostname, 'llm_artifact_id': self.llm_artifact_id, 'artifact_type': self.artifact_type, 'deployed_llm_artifact_id': self.deployed_llm_artifact_id, 'has_database': self.has_database, 'has_storage': self.has_storage, 'web_app_project_id': self.web_app_project_id, 'parent_conversation_id': self.parent_conversation_id}
81
83
  return {key: value for key, value in resp.items() if value is not None and key not in self.deprecated_keys}
@@ -425,6 +425,14 @@ class PredictionClient(BaseApiClient):
425
425
  deployment_id, deployment_token) if deployment_token else None
426
426
  return self._call_api('getConversationResponseWithBinaryData', 'POST', query_params={'deploymentId': deployment_id, 'deploymentToken': deployment_token}, data={'message': json.dumps(message) if (message is not None and not isinstance(message, str)) else message, 'deploymentConversationId': json.dumps(deployment_conversation_id) if (deployment_conversation_id is not None and not isinstance(deployment_conversation_id, str)) else deployment_conversation_id, 'externalSessionId': json.dumps(external_session_id) if (external_session_id is not None and not isinstance(external_session_id, str)) else external_session_id, 'llmName': json.dumps(llm_name) if (llm_name is not None and not isinstance(llm_name, str)) else llm_name, 'numCompletionTokens': json.dumps(num_completion_tokens) if (num_completion_tokens is not None and not isinstance(num_completion_tokens, str)) else num_completion_tokens, 'systemMessage': json.dumps(system_message) if (system_message is not None and not isinstance(system_message, str)) else system_message, 'temperature': json.dumps(temperature) if (temperature is not None and not isinstance(temperature, str)) else temperature, 'filterKeyValues': json.dumps(filter_key_values) if (filter_key_values is not None and not isinstance(filter_key_values, str)) else filter_key_values, 'searchScoreCutoff': json.dumps(search_score_cutoff) if (search_score_cutoff is not None and not isinstance(search_score_cutoff, str)) else search_score_cutoff, 'chatConfig': json.dumps(chat_config) if (chat_config is not None and not isinstance(chat_config, str)) else chat_config}, files=attachments, server_override=prediction_url)
427
427
 
428
+ def get_deep_agent_response(self, message: str, deployment_conversation_id: str = None) -> Dict:
429
+ """Return a DeepAgent response with generated files if any, based on the input message.
430
+
431
+ Args:
432
+ message (str): The user's message/task for DeepAgent to complete
433
+ deployment_conversation_id (str): The unique identifier of a deployment conversation to continue. If not specified, a new one will be created."""
434
+ return self._proxy_request('getDeepAgentResponse', 'POST', query_params={}, body={'message': message, 'deploymentConversationId': deployment_conversation_id}, is_sync=True)
435
+
428
436
  def get_search_results(self, deployment_token: str, deployment_id: str, query_data: dict, num: int = 15) -> Dict:
429
437
  """Return the most relevant search results to the search query from the uploaded documents.
430
438
 
@@ -0,0 +1,41 @@
1
+ from .return_class import AbstractApiClass
2
+
3
+
4
+ class UserGroupObjectPermission(AbstractApiClass):
5
+ """
6
+ A user group object permission
7
+
8
+ Args:
9
+ client (ApiClient): An authenticated API Client instance
10
+ userGroupId (str): The unique identifier of the user group.
11
+ userGroupName (str): The name of the user group.
12
+ objectId (str): The unique identifier of the object.
13
+ permission (str): The permission level (e.g., 'ALL').
14
+ """
15
+
16
+ def __init__(self, client, userGroupId=None, userGroupName=None, objectId=None, permission=None):
17
+ super().__init__(client, None)
18
+ self.user_group_id = userGroupId
19
+ self.user_group_name = userGroupName
20
+ self.object_id = objectId
21
+ self.permission = permission
22
+ self.deprecated_keys = {}
23
+
24
+ def __repr__(self):
25
+ repr_dict = {f'user_group_id': repr(self.user_group_id), f'user_group_name': repr(
26
+ self.user_group_name), f'object_id': repr(self.object_id), f'permission': repr(self.permission)}
27
+ class_name = "UserGroupObjectPermission"
28
+ repr_str = ',\n '.join([f'{key}={value}' for key, value in repr_dict.items(
29
+ ) if getattr(self, key, None) is not None and key not in self.deprecated_keys])
30
+ return f"{class_name}({repr_str})"
31
+
32
+ def to_dict(self):
33
+ """
34
+ Get a dict representation of the parameters in this class
35
+
36
+ Returns:
37
+ dict: The dict value representation of the class parameters
38
+ """
39
+ resp = {'user_group_id': self.user_group_id, 'user_group_name': self.user_group_name,
40
+ 'object_id': self.object_id, 'permission': self.permission}
41
+ return {key: value for key, value in resp.items() if value is not None and key not in self.deprecated_keys}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: abacusai
3
- Version: 1.4.66
3
+ Version: 1.4.67
4
4
  Summary: Abacus.AI Python Client Library
5
5
  Home-page: https://github.com/abacusai/api-python
6
6
  Author: Abacus.AI
@@ -26,6 +26,7 @@ abacusai/app_user_group_sign_in_token.py
26
26
  abacusai/application_connector.py
27
27
  abacusai/audio_gen_settings.py
28
28
  abacusai/audio_url_result.py
29
+ abacusai/audit_log.py
29
30
  abacusai/batch_prediction.py
30
31
  abacusai/batch_prediction_version.py
31
32
  abacusai/batch_prediction_version_logs.py
@@ -89,6 +90,7 @@ abacusai/document_data.py
89
90
  abacusai/document_retriever.py
90
91
  abacusai/document_retriever_lookup_result.py
91
92
  abacusai/document_retriever_version.py
93
+ abacusai/document_retriever_version_logs.py
92
94
  abacusai/drift_distribution.py
93
95
  abacusai/drift_distributions.py
94
96
  abacusai/eda.py
@@ -275,6 +277,7 @@ abacusai/use_case.py
275
277
  abacusai/use_case_requirements.py
276
278
  abacusai/user.py
277
279
  abacusai/user_exception.py
280
+ abacusai/user_group_object_permission.py
278
281
  abacusai/video_gen_costs.py
279
282
  abacusai/video_gen_model.py
280
283
  abacusai/video_gen_model_options.py
@@ -1,7 +1,7 @@
1
1
  from setuptools import find_packages, setup
2
2
 
3
3
 
4
- __version__ = '1.4.66'
4
+ __version__ = '1.4.67'
5
5
 
6
6
 
7
7
  setup(name='abacusai',
File without changes
File without changes
File without changes
File without changes
File without changes