hotdata 0.5.0__tar.gz → 0.7.0__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 (313) hide show
  1. {hotdata-0.5.0 → hotdata-0.7.0}/PKG-INFO +42 -16
  2. {hotdata-0.5.0 → hotdata-0.7.0}/README.md +41 -15
  3. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/__init__.py +41 -0
  4. hotdata-0.7.0/hotdata/_upload_watchdog.py +462 -0
  5. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/api/connections_api.py +9 -6
  6. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/api/databases_api.py +9 -6
  7. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/api/indexes_api.py +3 -0
  8. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/api/query_runs_api.py +45 -3
  9. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/api/refresh_api.py +6 -0
  10. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/api/results_api.py +39 -0
  11. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/api/uploads_api.py +322 -6
  12. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/arrow.py +20 -3
  13. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/__init__.py +3 -0
  14. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/add_managed_table_decl.py +5 -3
  15. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/add_managed_table_request.py +5 -3
  16. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/async_query_response.py +2 -2
  17. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/create_index_request.py +8 -1
  18. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/create_upload_request.py +6 -1
  19. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/database_default_table_decl.py +5 -3
  20. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/database_detail_response.py +8 -1
  21. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/database_summary.py +8 -1
  22. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/job_result.py +22 -8
  23. hotdata-0.7.0/hotdata/models/load_managed_table_request.py +119 -0
  24. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/load_managed_table_response.py +2 -2
  25. hotdata-0.7.0/hotdata/models/mint_upload_parts_request.py +88 -0
  26. hotdata-0.7.0/hotdata/models/mint_upload_parts_response.py +96 -0
  27. hotdata-0.7.0/hotdata/models/minted_upload_part_response.py +90 -0
  28. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/query_request.py +1 -1
  29. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/refresh_request.py +9 -1
  30. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/refresh_response.py +8 -22
  31. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/upload_session_response.py +2 -2
  32. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/query.py +37 -7
  33. hotdata-0.7.0/hotdata/uploads.py +1690 -0
  34. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata.egg-info/PKG-INFO +42 -16
  35. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata.egg-info/SOURCES.txt +13 -0
  36. {hotdata-0.5.0 → hotdata-0.7.0}/pyproject.toml +1 -1
  37. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_add_managed_schema_request.py +3 -0
  38. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_add_managed_table_decl.py +3 -0
  39. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_add_managed_table_request.py +3 -0
  40. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_connections_api.py +1 -1
  41. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_create_database_request.py +3 -0
  42. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_create_index_request.py +1 -0
  43. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_create_upload_request.py +0 -1
  44. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_database_default_schema_decl.py +3 -0
  45. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_database_default_table_decl.py +3 -0
  46. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_database_detail_response.py +1 -0
  47. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_database_summary.py +1 -0
  48. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_databases_api.py +1 -1
  49. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_job_result.py +5 -1
  50. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_list_databases_response.py +2 -0
  51. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_load_managed_table_request.py +3 -1
  52. hotdata-0.7.0/test/test_mint_upload_parts_request.py +57 -0
  53. hotdata-0.7.0/test/test_mint_upload_parts_response.py +61 -0
  54. hotdata-0.7.0/test/test_minted_upload_part_response.py +55 -0
  55. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_refresh_request.py +1 -0
  56. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_refresh_response.py +1 -7
  57. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_uploads_api.py +7 -0
  58. {hotdata-0.5.0 → hotdata-0.7.0}/tests/test_arrow.py +8 -6
  59. {hotdata-0.5.0 → hotdata-0.7.0}/tests/test_auth.py +106 -0
  60. {hotdata-0.5.0 → hotdata-0.7.0}/tests/test_query.py +71 -0
  61. hotdata-0.7.0/tests/test_upload_codex_fixes.py +427 -0
  62. hotdata-0.7.0/tests/test_upload_multipart_resilient.py +354 -0
  63. hotdata-0.7.0/tests/test_upload_parity_fixes.py +512 -0
  64. hotdata-0.7.0/tests/test_upload_resilient.py +233 -0
  65. hotdata-0.7.0/tests/test_upload_retry_policy.py +201 -0
  66. hotdata-0.7.0/tests/test_upload_watchdog.py +441 -0
  67. {hotdata-0.5.0 → hotdata-0.7.0}/tests/test_uploads.py +30 -8
  68. hotdata-0.5.0/hotdata/models/load_managed_table_request.py +0 -97
  69. hotdata-0.5.0/hotdata/uploads.py +0 -981
  70. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/_auth.py +0 -0
  71. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/_retry.py +0 -0
  72. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/api/__init__.py +0 -0
  73. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/api/connection_types_api.py +0 -0
  74. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/api/database_context_api.py +0 -0
  75. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/api/embedding_providers_api.py +0 -0
  76. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/api/information_schema_api.py +0 -0
  77. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/api/jobs_api.py +0 -0
  78. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/api/query_api.py +0 -0
  79. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/api/saved_queries_api.py +0 -0
  80. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/api/secrets_api.py +0 -0
  81. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/api/usage_api.py +0 -0
  82. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/api/workspaces_api.py +0 -0
  83. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/api_client.py +0 -0
  84. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/api_response.py +0 -0
  85. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/configuration.py +0 -0
  86. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/exceptions.py +0 -0
  87. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/add_managed_schema_request.py +0 -0
  88. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/api_error_detail.py +0 -0
  89. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/api_error_response.py +0 -0
  90. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/attach_database_catalog_request.py +0 -0
  91. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/batch_create_upload_request.py +0 -0
  92. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/batch_create_upload_response.py +0 -0
  93. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/boolean_profile_detail.py +0 -0
  94. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/categorical_profile_detail.py +0 -0
  95. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/category_value_info.py +0 -0
  96. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/column_info.py +0 -0
  97. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/column_profile_detail.py +0 -0
  98. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/column_profile_detail_one_of.py +0 -0
  99. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/column_profile_detail_one_of1.py +0 -0
  100. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/column_profile_detail_one_of2.py +0 -0
  101. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/column_profile_detail_one_of3.py +0 -0
  102. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/column_profile_detail_one_of4.py +0 -0
  103. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/column_profile_info.py +0 -0
  104. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/connection_health_response.py +0 -0
  105. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/connection_info.py +0 -0
  106. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/connection_refresh_result.py +0 -0
  107. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/connection_schema_error.py +0 -0
  108. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/connection_type_detail.py +0 -0
  109. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/connection_type_summary.py +0 -0
  110. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/create_connection_request.py +0 -0
  111. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/create_connection_response.py +0 -0
  112. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/create_database_request.py +0 -0
  113. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/create_database_response.py +0 -0
  114. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/create_embedding_provider_request.py +0 -0
  115. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/create_embedding_provider_response.py +0 -0
  116. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/create_saved_query_request.py +0 -0
  117. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/create_secret_request.py +0 -0
  118. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/create_secret_response.py +0 -0
  119. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/create_workspace_request.py +0 -0
  120. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/create_workspace_response.py +0 -0
  121. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/database_attachment_info.py +0 -0
  122. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/database_context_entry.py +0 -0
  123. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/database_default_schema_decl.py +0 -0
  124. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/discovery_status.py +0 -0
  125. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/embedding_provider_response.py +0 -0
  126. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/error.py +0 -0
  127. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/execute_saved_query_request.py +0 -0
  128. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/finalize_upload_part.py +0 -0
  129. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/finalize_upload_request.py +0 -0
  130. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/finalize_upload_response.py +0 -0
  131. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/get_connection_response.py +0 -0
  132. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/get_database_context_response.py +0 -0
  133. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/get_result_response.py +0 -0
  134. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/get_secret_response.py +0 -0
  135. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/index_entry_response.py +0 -0
  136. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/index_info_response.py +0 -0
  137. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/index_status.py +0 -0
  138. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/information_schema_response.py +0 -0
  139. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/job_status.py +0 -0
  140. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/job_status_response.py +0 -0
  141. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/job_type.py +0 -0
  142. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/list_connection_types_response.py +0 -0
  143. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/list_connections_response.py +0 -0
  144. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/list_database_contexts_response.py +0 -0
  145. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/list_databases_response.py +0 -0
  146. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/list_embedding_providers_response.py +0 -0
  147. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/list_indexes_page_response.py +0 -0
  148. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/list_indexes_response.py +0 -0
  149. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/list_jobs_response.py +0 -0
  150. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/list_query_runs_response.py +0 -0
  151. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/list_results_response.py +0 -0
  152. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/list_saved_queries_response.py +0 -0
  153. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/list_saved_query_versions_response.py +0 -0
  154. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/list_secrets_response.py +0 -0
  155. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/list_uploads_response.py +0 -0
  156. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/list_workspaces_response.py +0 -0
  157. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/managed_schema_response.py +0 -0
  158. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/managed_table_response.py +0 -0
  159. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/numeric_profile_detail.py +0 -0
  160. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/query_response.py +0 -0
  161. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/query_run_info.py +0 -0
  162. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/refresh_warning.py +0 -0
  163. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/result_info.py +0 -0
  164. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/results_format_query.py +0 -0
  165. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/saved_query_detail.py +0 -0
  166. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/saved_query_summary.py +0 -0
  167. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/saved_query_version_info.py +0 -0
  168. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/schema_refresh_result.py +0 -0
  169. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/secret_metadata_response.py +0 -0
  170. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/submit_job_response.py +0 -0
  171. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/table_info.py +0 -0
  172. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/table_profile_response.py +0 -0
  173. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/table_refresh_error.py +0 -0
  174. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/table_refresh_result.py +0 -0
  175. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/temporal_profile_detail.py +0 -0
  176. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/text_profile_detail.py +0 -0
  177. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/update_embedding_provider_request.py +0 -0
  178. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/update_embedding_provider_response.py +0 -0
  179. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/update_saved_query_request.py +0 -0
  180. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/update_secret_request.py +0 -0
  181. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/update_secret_response.py +0 -0
  182. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/upload_info.py +0 -0
  183. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/upload_response.py +0 -0
  184. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/upsert_database_context_request.py +0 -0
  185. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/upsert_database_context_response.py +0 -0
  186. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/workspace_detail.py +0 -0
  187. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/workspace_list_item.py +0 -0
  188. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/models/workspace_usage_response.py +0 -0
  189. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/py.typed +0 -0
  190. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata/rest.py +0 -0
  191. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata.egg-info/dependency_links.txt +0 -0
  192. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata.egg-info/requires.txt +0 -0
  193. {hotdata-0.5.0 → hotdata-0.7.0}/hotdata.egg-info/top_level.txt +0 -0
  194. {hotdata-0.5.0 → hotdata-0.7.0}/setup.cfg +0 -0
  195. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_api_client_close.py +0 -0
  196. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_api_error_detail.py +0 -0
  197. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_api_error_response.py +0 -0
  198. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_async_query_response.py +0 -0
  199. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_attach_database_catalog_request.py +0 -0
  200. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_batch_create_upload_request.py +0 -0
  201. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_batch_create_upload_response.py +0 -0
  202. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_boolean_profile_detail.py +0 -0
  203. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_categorical_profile_detail.py +0 -0
  204. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_category_value_info.py +0 -0
  205. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_column_info.py +0 -0
  206. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_column_profile_detail.py +0 -0
  207. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_column_profile_detail_one_of.py +0 -0
  208. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_column_profile_detail_one_of1.py +0 -0
  209. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_column_profile_detail_one_of2.py +0 -0
  210. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_column_profile_detail_one_of3.py +0 -0
  211. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_column_profile_detail_one_of4.py +0 -0
  212. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_column_profile_info.py +0 -0
  213. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_connection_health_response.py +0 -0
  214. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_connection_info.py +0 -0
  215. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_connection_refresh_result.py +0 -0
  216. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_connection_schema_error.py +0 -0
  217. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_connection_type_detail.py +0 -0
  218. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_connection_type_summary.py +0 -0
  219. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_connection_types_api.py +0 -0
  220. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_create_connection_request.py +0 -0
  221. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_create_connection_response.py +0 -0
  222. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_create_database_response.py +0 -0
  223. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_create_embedding_provider_request.py +0 -0
  224. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_create_embedding_provider_response.py +0 -0
  225. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_create_saved_query_request.py +0 -0
  226. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_create_secret_request.py +0 -0
  227. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_create_secret_response.py +0 -0
  228. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_create_workspace_request.py +0 -0
  229. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_create_workspace_response.py +0 -0
  230. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_database_attachment_info.py +0 -0
  231. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_database_context_api.py +0 -0
  232. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_database_context_entry.py +0 -0
  233. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_discovery_status.py +0 -0
  234. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_embedding_provider_response.py +0 -0
  235. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_embedding_providers_api.py +0 -0
  236. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_error.py +0 -0
  237. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_execute_saved_query_request.py +0 -0
  238. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_finalize_upload_part.py +0 -0
  239. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_finalize_upload_request.py +0 -0
  240. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_finalize_upload_response.py +0 -0
  241. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_get_connection_response.py +0 -0
  242. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_get_database_context_response.py +0 -0
  243. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_get_result_response.py +0 -0
  244. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_get_secret_response.py +0 -0
  245. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_index_entry_response.py +0 -0
  246. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_index_info_response.py +0 -0
  247. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_index_status.py +0 -0
  248. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_indexes_api.py +0 -0
  249. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_information_schema_api.py +0 -0
  250. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_information_schema_response.py +0 -0
  251. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_job_status.py +0 -0
  252. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_job_status_response.py +0 -0
  253. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_job_type.py +0 -0
  254. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_jobs_api.py +0 -0
  255. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_list_connection_types_response.py +0 -0
  256. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_list_connections_response.py +0 -0
  257. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_list_database_contexts_response.py +0 -0
  258. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_list_embedding_providers_response.py +0 -0
  259. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_list_indexes_page_response.py +0 -0
  260. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_list_indexes_response.py +0 -0
  261. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_list_jobs_response.py +0 -0
  262. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_list_query_runs_response.py +0 -0
  263. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_list_results_response.py +0 -0
  264. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_list_saved_queries_response.py +0 -0
  265. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_list_saved_query_versions_response.py +0 -0
  266. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_list_secrets_response.py +0 -0
  267. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_list_uploads_response.py +0 -0
  268. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_list_workspaces_response.py +0 -0
  269. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_load_managed_table_response.py +0 -0
  270. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_managed_schema_response.py +0 -0
  271. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_managed_table_response.py +0 -0
  272. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_numeric_profile_detail.py +0 -0
  273. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_query_api.py +0 -0
  274. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_query_request.py +0 -0
  275. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_query_response.py +0 -0
  276. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_query_run_info.py +0 -0
  277. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_query_runs_api.py +0 -0
  278. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_refresh_api.py +0 -0
  279. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_refresh_warning.py +0 -0
  280. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_result_info.py +0 -0
  281. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_results_api.py +0 -0
  282. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_results_format_query.py +0 -0
  283. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_saved_queries_api.py +0 -0
  284. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_saved_query_detail.py +0 -0
  285. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_saved_query_summary.py +0 -0
  286. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_saved_query_version_info.py +0 -0
  287. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_schema_refresh_result.py +0 -0
  288. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_secret_metadata_response.py +0 -0
  289. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_secrets_api.py +0 -0
  290. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_submit_job_response.py +0 -0
  291. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_table_info.py +0 -0
  292. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_table_profile_response.py +0 -0
  293. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_table_refresh_error.py +0 -0
  294. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_table_refresh_result.py +0 -0
  295. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_temporal_profile_detail.py +0 -0
  296. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_text_profile_detail.py +0 -0
  297. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_update_embedding_provider_request.py +0 -0
  298. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_update_embedding_provider_response.py +0 -0
  299. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_update_saved_query_request.py +0 -0
  300. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_update_secret_request.py +0 -0
  301. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_update_secret_response.py +0 -0
  302. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_upload_info.py +0 -0
  303. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_upload_response.py +0 -0
  304. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_upload_session_response.py +0 -0
  305. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_upsert_database_context_request.py +0 -0
  306. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_upsert_database_context_response.py +0 -0
  307. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_usage_api.py +0 -0
  308. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_workspace_detail.py +0 -0
  309. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_workspace_list_item.py +0 -0
  310. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_workspace_usage_response.py +0 -0
  311. {hotdata-0.5.0 → hotdata-0.7.0}/test/test_workspaces_api.py +0 -0
  312. {hotdata-0.5.0 → hotdata-0.7.0}/tests/test_retry.py +0 -0
  313. {hotdata-0.5.0 → hotdata-0.7.0}/tests/test_update_changelog.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hotdata
3
- Version: 0.5.0
3
+ Version: 0.7.0
4
4
  Summary: Hotdata API
5
5
  Author-email: Hotdata <developers@hotdata.dev>
6
6
  License: MIT
@@ -95,17 +95,21 @@ from hotdata.arrow import ResultsApi
95
95
  with ApiClient(Configuration(api_key="...", workspace_id="...")) as client:
96
96
  results = ResultsApi(client)
97
97
 
98
+ # Results are scoped to a database via the required `X-Database-Id` header,
99
+ # so pass the id of the database the query ran in.
100
+ database_id = "your_database_id"
101
+
98
102
  # Buffered: returns a pyarrow.Table.
99
- table = results.get_result_arrow(result_id)
103
+ table = results.get_result_arrow(result_id, database_id)
100
104
 
101
105
  # Streaming: yields a pyarrow.RecordBatchStreamReader without
102
106
  # materializing the full table in memory.
103
- with results.stream_result_arrow(result_id) as reader:
107
+ with results.stream_result_arrow(result_id, database_id) as reader:
104
108
  for batch in reader:
105
109
  ...
106
110
  ```
107
111
 
108
- Both methods accept `offset` and `limit` for pagination. They raise `hotdata.arrow.ResultNotReadyError` if the result is still pending or processing — poll `results.get_result(result_id)` until `status == "ready"` first.
112
+ Both methods accept `offset` and `limit` for pagination. They raise `hotdata.arrow.ResultNotReadyError` if the result is still pending or processing — poll `results.get_result(result_id, database_id)` until `status == "ready"` first.
109
113
 
110
114
  ## File uploads
111
115
 
@@ -135,18 +139,40 @@ with ApiClient(Configuration(api_key="...", workspace_id="...")) as client:
135
139
  (`size` is inferred for all three; a file object is read from its current
136
140
  position to the end). The SDK picks single vs. multipart from the size,
137
141
  auto-scales the part size, and bounds part concurrency to a peak-memory budget
138
- (override with `part_size` / `max_concurrency` / `part_retry`). Storage `PUT`s go
139
- through a dedicated, header-isolated connection pool, so the SDK's auth and
140
- workspace headers never reach object storage (which would otherwise reject the
141
- upload). Finalize is sent with retries disabled so the exactly-once call is never
142
- accidentally replayed.
143
-
144
- Failures surface as a typed hierarchy under `hotdata.uploads.UploadError`:
145
- `StorageError` (storage returned a non-2xx), `StorageTransportError` (the PUT
146
- failed before any response), `MissingETagError`, `MalformedSessionError`, and
147
- `SizeLimitError`. Opening the session or finalizing raises the usual
148
- `hotdata.exceptions.ApiException` for example a `501` `PRESIGN_UNSUPPORTED`,
149
- meaning the backend cannot issue upload URLs.
142
+ (override with `part_size` / `max_concurrency` / `part_retry`). A file larger than
143
+ 8 MiB uploads via a **streaming** session the SDK mints each part's URL just
144
+ before its `PUT`, so a presigned URL can't expire mid-transfer on a slow upload.
145
+ Storage `PUT`s go through a dedicated, header-isolated connection pool (auth and
146
+ workspace headers never reach object storage, which would otherwise reject the
147
+ upload) with a 30s connect timeout so a dead endpoint fails fast. Finalize is sent
148
+ with retries disabled so the exactly-once call is never accidentally replayed.
149
+
150
+ Every failure is a subclass of `hotdata.uploads.UploadError` (also importable as
151
+ `from hotdata import UploadError`), so a single `except UploadError` catches the
152
+ whole flow: `SessionCreateError` (opening the session check `.status` for a
153
+ `501` `PRESIGN_UNSUPPORTED`), `StorageError` (storage returned a non-2xx; `.exhausted`
154
+ is `True` if it outlived every retry round), `StorageTransportError` (the PUT
155
+ failed before any response), `MissingETagError`, `MintPartError` (minting a part
156
+ URL), `FinalizeError`, `MalformedSessionError`, `SizeLimitError`, and
157
+ `UploadCancelledError`. The phase errors that wrap a control-plane call chain the
158
+ underlying `hotdata.exceptions.ApiException` as `__cause__` (and expose it as
159
+ `.api_exception` / `.status`). A local file read error surfaces as `OSError`.
160
+
161
+ The `progress` callback receives a **cumulative** `(bytes_done, total)` — for a
162
+ tqdm bar (whose `update(n)` wants a delta, and which isn't thread-safe under
163
+ multipart) use the ready-made adapter:
164
+
165
+ ```python
166
+ from hotdata import tqdm_progress
167
+ from tqdm import tqdm
168
+
169
+ with tqdm(total=size, unit="B", unit_scale=True) as bar:
170
+ uploads.upload_file("data.parquet", progress=tqdm_progress(bar))
171
+ ```
172
+
173
+ Pass a `threading.Event` as `cancel_event` to abort an in-flight upload; tune the
174
+ control-plane calls with `request_timeout` (storage-PUT timeouts are automatic and
175
+ size-scaled).
150
176
 
151
177
  For that fallback (or to upload from a non-seekable stream), use `upload_stream`,
152
178
  which sends the bytes to the legacy `POST /v1/files` endpoint in one request,
@@ -77,17 +77,21 @@ from hotdata.arrow import ResultsApi
77
77
  with ApiClient(Configuration(api_key="...", workspace_id="...")) as client:
78
78
  results = ResultsApi(client)
79
79
 
80
+ # Results are scoped to a database via the required `X-Database-Id` header,
81
+ # so pass the id of the database the query ran in.
82
+ database_id = "your_database_id"
83
+
80
84
  # Buffered: returns a pyarrow.Table.
81
- table = results.get_result_arrow(result_id)
85
+ table = results.get_result_arrow(result_id, database_id)
82
86
 
83
87
  # Streaming: yields a pyarrow.RecordBatchStreamReader without
84
88
  # materializing the full table in memory.
85
- with results.stream_result_arrow(result_id) as reader:
89
+ with results.stream_result_arrow(result_id, database_id) as reader:
86
90
  for batch in reader:
87
91
  ...
88
92
  ```
89
93
 
90
- Both methods accept `offset` and `limit` for pagination. They raise `hotdata.arrow.ResultNotReadyError` if the result is still pending or processing — poll `results.get_result(result_id)` until `status == "ready"` first.
94
+ Both methods accept `offset` and `limit` for pagination. They raise `hotdata.arrow.ResultNotReadyError` if the result is still pending or processing — poll `results.get_result(result_id, database_id)` until `status == "ready"` first.
91
95
 
92
96
  ## File uploads
93
97
 
@@ -117,18 +121,40 @@ with ApiClient(Configuration(api_key="...", workspace_id="...")) as client:
117
121
  (`size` is inferred for all three; a file object is read from its current
118
122
  position to the end). The SDK picks single vs. multipart from the size,
119
123
  auto-scales the part size, and bounds part concurrency to a peak-memory budget
120
- (override with `part_size` / `max_concurrency` / `part_retry`). Storage `PUT`s go
121
- through a dedicated, header-isolated connection pool, so the SDK's auth and
122
- workspace headers never reach object storage (which would otherwise reject the
123
- upload). Finalize is sent with retries disabled so the exactly-once call is never
124
- accidentally replayed.
125
-
126
- Failures surface as a typed hierarchy under `hotdata.uploads.UploadError`:
127
- `StorageError` (storage returned a non-2xx), `StorageTransportError` (the PUT
128
- failed before any response), `MissingETagError`, `MalformedSessionError`, and
129
- `SizeLimitError`. Opening the session or finalizing raises the usual
130
- `hotdata.exceptions.ApiException` for example a `501` `PRESIGN_UNSUPPORTED`,
131
- meaning the backend cannot issue upload URLs.
124
+ (override with `part_size` / `max_concurrency` / `part_retry`). A file larger than
125
+ 8 MiB uploads via a **streaming** session the SDK mints each part's URL just
126
+ before its `PUT`, so a presigned URL can't expire mid-transfer on a slow upload.
127
+ Storage `PUT`s go through a dedicated, header-isolated connection pool (auth and
128
+ workspace headers never reach object storage, which would otherwise reject the
129
+ upload) with a 30s connect timeout so a dead endpoint fails fast. Finalize is sent
130
+ with retries disabled so the exactly-once call is never accidentally replayed.
131
+
132
+ Every failure is a subclass of `hotdata.uploads.UploadError` (also importable as
133
+ `from hotdata import UploadError`), so a single `except UploadError` catches the
134
+ whole flow: `SessionCreateError` (opening the session check `.status` for a
135
+ `501` `PRESIGN_UNSUPPORTED`), `StorageError` (storage returned a non-2xx; `.exhausted`
136
+ is `True` if it outlived every retry round), `StorageTransportError` (the PUT
137
+ failed before any response), `MissingETagError`, `MintPartError` (minting a part
138
+ URL), `FinalizeError`, `MalformedSessionError`, `SizeLimitError`, and
139
+ `UploadCancelledError`. The phase errors that wrap a control-plane call chain the
140
+ underlying `hotdata.exceptions.ApiException` as `__cause__` (and expose it as
141
+ `.api_exception` / `.status`). A local file read error surfaces as `OSError`.
142
+
143
+ The `progress` callback receives a **cumulative** `(bytes_done, total)` — for a
144
+ tqdm bar (whose `update(n)` wants a delta, and which isn't thread-safe under
145
+ multipart) use the ready-made adapter:
146
+
147
+ ```python
148
+ from hotdata import tqdm_progress
149
+ from tqdm import tqdm
150
+
151
+ with tqdm(total=size, unit="B", unit_scale=True) as bar:
152
+ uploads.upload_file("data.parquet", progress=tqdm_progress(bar))
153
+ ```
154
+
155
+ Pass a `threading.Event` as `cancel_event` to abort an in-flight upload; tune the
156
+ control-plane calls with `request_timeout` (storage-PUT timeouts are automatic and
157
+ size-scaled).
132
158
 
133
159
  For that fallback (or to upload from a non-seekable stream), use `upload_stream`,
134
160
  which sends the bytes to the legacy `POST /v1/files` endpoint in one request,
@@ -133,6 +133,9 @@ __all__ = [
133
133
  "LoadManagedTableResponse",
134
134
  "ManagedSchemaResponse",
135
135
  "ManagedTableResponse",
136
+ "MintUploadPartsRequest",
137
+ "MintUploadPartsResponse",
138
+ "MintedUploadPartResponse",
136
139
  "NumericProfileDetail",
137
140
  "QueryRequest",
138
141
  "QueryResponse",
@@ -283,6 +286,9 @@ from hotdata.models.load_managed_table_request import LoadManagedTableRequest as
283
286
  from hotdata.models.load_managed_table_response import LoadManagedTableResponse as LoadManagedTableResponse
284
287
  from hotdata.models.managed_schema_response import ManagedSchemaResponse as ManagedSchemaResponse
285
288
  from hotdata.models.managed_table_response import ManagedTableResponse as ManagedTableResponse
289
+ from hotdata.models.mint_upload_parts_request import MintUploadPartsRequest as MintUploadPartsRequest
290
+ from hotdata.models.mint_upload_parts_response import MintUploadPartsResponse as MintUploadPartsResponse
291
+ from hotdata.models.minted_upload_part_response import MintedUploadPartResponse as MintedUploadPartResponse
286
292
  from hotdata.models.numeric_profile_detail import NumericProfileDetail as NumericProfileDetail
287
293
  from hotdata.models.query_request import QueryRequest as QueryRequest
288
294
  from hotdata.models.query_response import QueryResponse as QueryResponse
@@ -328,3 +334,38 @@ from hotdata.models.workspace_usage_response import WorkspaceUsageResponse as Wo
328
334
  from hotdata.query import QueryApi as QueryApi # noqa: E402,F811
329
335
  from hotdata.arrow import ResultsApi as ResultsApi # noqa: E402,F811
330
336
  from hotdata.uploads import UploadsApi as UploadsApi # noqa: E402,F811
337
+ # The upload error hierarchy + option/helper types, so `from hotdata import
338
+ # UploadError` / `StorageError` / ... works (they otherwise live only under
339
+ # hotdata.uploads and are invisible to autocomplete on `hotdata.`).
340
+ from hotdata.uploads import ( # noqa: E402,F401
341
+ UploadError as UploadError,
342
+ SessionCreateError as SessionCreateError,
343
+ MalformedSessionError as MalformedSessionError,
344
+ SizeLimitError as SizeLimitError,
345
+ StorageError as StorageError,
346
+ StorageTransportError as StorageTransportError,
347
+ MissingETagError as MissingETagError,
348
+ MintPartError as MintPartError,
349
+ FinalizeError as FinalizeError,
350
+ UploadCancelledError as UploadCancelledError,
351
+ UploadOptions as UploadOptions,
352
+ UploadProgress as UploadProgress,
353
+ UploadSource as UploadSource,
354
+ tqdm_progress as tqdm_progress,
355
+ )
356
+ __all__ += [ # noqa: F405
357
+ "UploadError",
358
+ "SessionCreateError",
359
+ "MalformedSessionError",
360
+ "SizeLimitError",
361
+ "StorageError",
362
+ "StorageTransportError",
363
+ "MissingETagError",
364
+ "MintPartError",
365
+ "FinalizeError",
366
+ "UploadCancelledError",
367
+ "UploadOptions",
368
+ "UploadProgress",
369
+ "UploadSource",
370
+ "tqdm_progress",
371
+ ]