hotdata 0.10.0__tar.gz → 0.12.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 (346) hide show
  1. {hotdata-0.10.0 → hotdata-0.12.0}/PKG-INFO +33 -4
  2. {hotdata-0.10.0 → hotdata-0.12.0}/README.md +31 -2
  3. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/__init__.py +28 -46
  4. hotdata-0.12.0/hotdata/_useragent.py +52 -0
  5. hotdata-0.12.0/hotdata/_workspace.py +84 -0
  6. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/api/__init__.py +0 -3
  7. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/api/connections_api.py +66 -567
  8. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/api/database_context_api.py +1 -1
  9. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/api/databases_api.py +1091 -192
  10. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/api/embedding_providers_api.py +1 -1
  11. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/api/indexes_api.py +31 -28
  12. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/api/information_schema_api.py +7 -4
  13. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/api/jobs_api.py +19 -16
  14. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/api/query_api.py +6 -5
  15. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/api/query_runs_api.py +1 -1
  16. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/api/results_api.py +13 -4
  17. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/api/saved_queries_api.py +1 -1
  18. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/api/uploads_api.py +10 -10
  19. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/api/usage_api.py +1 -1
  20. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/api/workspaces_api.py +1 -1
  21. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/api_client.py +17 -2
  22. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/arrow.py +10 -1
  23. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/configuration.py +15 -3
  24. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/exceptions.py +1 -1
  25. hotdata-0.12.0/hotdata/loads.py +273 -0
  26. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/__init__.py +7 -20
  27. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/add_managed_schema_request.py +5 -1
  28. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/add_managed_table_decl.py +9 -3
  29. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/add_managed_table_request.py +9 -3
  30. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/api_error_detail.py +1 -1
  31. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/api_error_response.py +1 -1
  32. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/async_query_response.py +1 -1
  33. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/attach_database_catalog_request.py +5 -1
  34. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/batch_create_upload_request.py +5 -1
  35. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/batch_create_upload_response.py +1 -1
  36. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/boolean_profile_detail.py +1 -1
  37. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/bulk_create_databases_request.py +6 -2
  38. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/bulk_create_databases_result.py +1 -1
  39. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/categorical_profile_detail.py +1 -1
  40. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/category_value_info.py +1 -1
  41. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/column_definition.py +1 -1
  42. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/column_info.py +1 -1
  43. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/column_profile_detail.py +1 -1
  44. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/column_profile_detail_one_of.py +1 -1
  45. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/column_profile_detail_one_of1.py +1 -1
  46. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/column_profile_detail_one_of2.py +1 -1
  47. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/column_profile_detail_one_of3.py +1 -1
  48. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/column_profile_detail_one_of4.py +1 -1
  49. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/column_profile_info.py +1 -1
  50. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/column_type_spec.py +5 -1
  51. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/connection_info.py +1 -1
  52. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/create_connection_request.py +7 -5
  53. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/create_connection_response.py +1 -1
  54. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/create_database_request.py +10 -4
  55. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/create_database_response.py +22 -4
  56. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/create_embedding_provider_request.py +6 -2
  57. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/create_embedding_provider_response.py +1 -1
  58. hotdata-0.12.0/hotdata/models/create_index_request.py +189 -0
  59. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/create_saved_query_request.py +5 -1
  60. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/create_upload_request.py +7 -3
  61. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/create_workspace_request.py +5 -1
  62. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/create_workspace_response.py +1 -1
  63. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/database_attachment_info.py +1 -1
  64. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/database_batch_response.py +1 -1
  65. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/database_context_entry.py +1 -1
  66. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/database_count_response.py +1 -1
  67. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/database_default_schema_decl.py +5 -1
  68. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/database_default_table_decl.py +9 -3
  69. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/database_detail_response.py +14 -3
  70. hotdata-0.12.0/hotdata/models/database_lineage_response.py +114 -0
  71. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/database_summary.py +13 -2
  72. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/delete_database_batch_response.py +1 -1
  73. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/discovery_status.py +1 -1
  74. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/embedding_provider_response.py +1 -1
  75. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/error.py +1 -1
  76. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/execute_saved_query_request.py +5 -1
  77. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/finalize_upload_part.py +5 -1
  78. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/finalize_upload_request.py +5 -1
  79. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/finalize_upload_response.py +1 -1
  80. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/fork_database_request.py +14 -3
  81. hotdata-0.12.0/hotdata/models/forked_from_info.py +117 -0
  82. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/get_connection_response.py +1 -1
  83. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/get_database_context_response.py +1 -1
  84. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/get_result_response.py +10 -3
  85. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/index_entry_response.py +13 -4
  86. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/index_info_response.py +34 -5
  87. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/index_status.py +1 -1
  88. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/information_schema_response.py +6 -6
  89. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/job_result.py +13 -41
  90. hotdata-0.12.0/hotdata/models/job_status.py +41 -0
  91. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/job_status_response.py +2 -2
  92. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/job_type.py +3 -3
  93. hotdata-0.12.0/hotdata/models/lineage_ancestor_info.py +119 -0
  94. hotdata-0.12.0/hotdata/models/lineage_fork_info.py +119 -0
  95. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/list_connections_response.py +1 -1
  96. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/list_database_contexts_response.py +1 -1
  97. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/list_databases_response.py +1 -1
  98. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/list_embedding_providers_response.py +1 -1
  99. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/list_indexes_page_response.py +1 -1
  100. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/list_indexes_response.py +1 -1
  101. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/list_jobs_response.py +1 -1
  102. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/list_query_runs_response.py +1 -1
  103. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/list_results_response.py +1 -1
  104. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/list_saved_queries_response.py +1 -1
  105. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/list_saved_query_versions_response.py +1 -1
  106. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/list_workspaces_response.py +1 -1
  107. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/load_managed_table_request.py +7 -3
  108. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/load_managed_table_response.py +1 -1
  109. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/managed_schema_response.py +1 -1
  110. hotdata-0.10.0/hotdata/models/table_refresh_result.py → hotdata-0.12.0/hotdata/models/managed_table_constant_per_key_response.py +14 -27
  111. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/managed_table_response.py +1 -1
  112. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/mint_upload_parts_request.py +5 -1
  113. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/mint_upload_parts_response.py +1 -1
  114. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/minted_upload_part_response.py +1 -1
  115. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/numeric_profile_detail.py +1 -1
  116. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/query_request.py +14 -3
  117. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/query_response.py +2 -2
  118. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/query_run_info.py +2 -2
  119. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/result_info.py +1 -1
  120. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/results_format_query.py +1 -1
  121. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/saved_query_detail.py +1 -1
  122. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/saved_query_summary.py +1 -1
  123. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/saved_query_version_info.py +1 -1
  124. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/submit_job_response.py +1 -1
  125. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/table_info.py +6 -4
  126. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/table_partition_key.py +5 -1
  127. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/table_profile_response.py +1 -1
  128. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/table_sort_key.py +5 -1
  129. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/temporal_profile_detail.py +1 -1
  130. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/text_profile_detail.py +1 -1
  131. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/update_embedding_provider_request.py +5 -1
  132. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/update_embedding_provider_response.py +1 -1
  133. hotdata-0.12.0/hotdata/models/update_managed_table_request.py +92 -0
  134. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/update_saved_query_request.py +5 -1
  135. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/upload_session_response.py +1 -1
  136. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/upsert_database_context_request.py +5 -1
  137. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/upsert_database_context_response.py +1 -1
  138. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/workspace_detail.py +1 -1
  139. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/workspace_list_item.py +1 -1
  140. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/models/workspace_usage_response.py +3 -3
  141. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/query.py +57 -6
  142. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/rest.py +21 -1
  143. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata.egg-info/PKG-INFO +33 -4
  144. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata.egg-info/SOURCES.txt +21 -45
  145. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata.egg-info/requires.txt +1 -1
  146. {hotdata-0.10.0 → hotdata-0.12.0}/pyproject.toml +2 -2
  147. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_add_managed_schema_request.py +2 -1
  148. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_add_managed_table_decl.py +2 -1
  149. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_add_managed_table_request.py +2 -1
  150. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_api_error_detail.py +1 -1
  151. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_api_error_response.py +1 -1
  152. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_async_query_response.py +1 -1
  153. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_attach_database_catalog_request.py +1 -1
  154. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_batch_create_upload_request.py +3 -3
  155. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_batch_create_upload_response.py +1 -1
  156. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_boolean_profile_detail.py +1 -1
  157. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_bulk_create_databases_request.py +2 -1
  158. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_bulk_create_databases_result.py +1 -1
  159. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_categorical_profile_detail.py +1 -1
  160. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_category_value_info.py +1 -1
  161. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_column_definition.py +1 -1
  162. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_column_info.py +1 -1
  163. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_column_profile_detail.py +1 -1
  164. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_column_profile_detail_one_of.py +1 -1
  165. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_column_profile_detail_one_of1.py +1 -1
  166. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_column_profile_detail_one_of2.py +1 -1
  167. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_column_profile_detail_one_of3.py +1 -1
  168. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_column_profile_detail_one_of4.py +1 -1
  169. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_column_profile_info.py +1 -1
  170. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_column_type_spec.py +1 -1
  171. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_connection_info.py +1 -1
  172. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_connections_api.py +4 -18
  173. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_create_connection_request.py +3 -4
  174. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_create_connection_response.py +1 -1
  175. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_create_database_request.py +3 -1
  176. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_create_database_response.py +8 -1
  177. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_create_embedding_provider_request.py +2 -2
  178. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_create_embedding_provider_response.py +1 -1
  179. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_create_index_request.py +6 -2
  180. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_create_saved_query_request.py +1 -1
  181. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_create_upload_request.py +1 -1
  182. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_create_workspace_request.py +1 -1
  183. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_create_workspace_response.py +1 -1
  184. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_database_attachment_info.py +1 -1
  185. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_database_batch_response.py +1 -1
  186. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_database_context_api.py +1 -1
  187. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_database_context_entry.py +1 -1
  188. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_database_count_response.py +1 -1
  189. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_database_default_schema_decl.py +2 -1
  190. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_database_default_table_decl.py +2 -1
  191. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_database_detail_response.py +7 -1
  192. hotdata-0.12.0/test/test_database_lineage_response.py +95 -0
  193. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_database_summary.py +7 -1
  194. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_databases_api.py +22 -1
  195. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_delete_database_batch_response.py +1 -1
  196. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_discovery_status.py +1 -1
  197. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_embedding_provider_response.py +1 -1
  198. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_embedding_providers_api.py +1 -1
  199. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_error.py +1 -1
  200. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_execute_saved_query_request.py +1 -1
  201. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_finalize_upload_part.py +1 -1
  202. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_finalize_upload_request.py +1 -1
  203. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_finalize_upload_response.py +1 -1
  204. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_fork_database_request.py +2 -1
  205. hotdata-0.12.0/test/test_forked_from_info.py +57 -0
  206. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_get_connection_response.py +1 -1
  207. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_get_database_context_response.py +1 -1
  208. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_get_result_response.py +3 -2
  209. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_index_entry_response.py +5 -1
  210. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_index_info_response.py +6 -2
  211. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_index_status.py +1 -1
  212. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_indexes_api.py +1 -1
  213. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_information_schema_api.py +1 -1
  214. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_information_schema_response.py +7 -1
  215. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_job_result.py +11 -29
  216. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_job_status.py +1 -1
  217. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_job_status_response.py +1 -1
  218. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_job_type.py +1 -1
  219. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_jobs_api.py +1 -1
  220. hotdata-0.12.0/test/test_lineage_ancestor_info.py +59 -0
  221. hotdata-0.12.0/test/test_lineage_fork_info.py +59 -0
  222. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_list_connections_response.py +1 -1
  223. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_list_database_contexts_response.py +1 -1
  224. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_list_databases_response.py +3 -1
  225. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_list_embedding_providers_response.py +1 -1
  226. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_list_indexes_page_response.py +1 -1
  227. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_list_indexes_response.py +11 -3
  228. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_list_jobs_response.py +1 -1
  229. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_list_query_runs_response.py +1 -1
  230. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_list_results_response.py +1 -1
  231. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_list_saved_queries_response.py +1 -1
  232. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_list_saved_query_versions_response.py +1 -1
  233. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_list_workspaces_response.py +1 -1
  234. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_load_managed_table_request.py +2 -2
  235. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_load_managed_table_response.py +1 -1
  236. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_managed_schema_response.py +1 -1
  237. hotdata-0.12.0/test/test_managed_table_constant_per_key_response.py +63 -0
  238. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_managed_table_response.py +1 -1
  239. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_mint_upload_parts_request.py +1 -1
  240. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_mint_upload_parts_response.py +1 -1
  241. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_minted_upload_part_response.py +1 -1
  242. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_numeric_profile_detail.py +1 -1
  243. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_query_api.py +1 -1
  244. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_query_request.py +3 -2
  245. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_query_response.py +1 -1
  246. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_query_run_info.py +1 -1
  247. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_query_runs_api.py +1 -1
  248. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_result_info.py +1 -1
  249. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_results_api.py +1 -1
  250. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_results_format_query.py +1 -1
  251. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_saved_queries_api.py +1 -1
  252. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_saved_query_detail.py +1 -1
  253. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_saved_query_summary.py +1 -1
  254. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_saved_query_version_info.py +1 -1
  255. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_submit_job_response.py +1 -1
  256. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_table_info.py +7 -1
  257. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_table_partition_key.py +1 -1
  258. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_table_profile_response.py +1 -1
  259. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_table_sort_key.py +1 -1
  260. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_temporal_profile_detail.py +1 -1
  261. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_text_profile_detail.py +1 -1
  262. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_update_embedding_provider_request.py +1 -1
  263. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_update_embedding_provider_response.py +1 -1
  264. hotdata-0.12.0/test/test_update_managed_table_request.py +52 -0
  265. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_update_saved_query_request.py +1 -1
  266. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_upload_session_response.py +1 -1
  267. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_uploads_api.py +1 -1
  268. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_upsert_database_context_request.py +1 -1
  269. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_upsert_database_context_response.py +1 -1
  270. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_usage_api.py +1 -1
  271. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_workspace_detail.py +1 -1
  272. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_workspace_list_item.py +1 -1
  273. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_workspace_usage_response.py +1 -1
  274. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_workspaces_api.py +1 -1
  275. {hotdata-0.10.0 → hotdata-0.12.0}/tests/test_arrow.py +4 -0
  276. hotdata-0.12.0/tests/test_config_env.py +104 -0
  277. hotdata-0.12.0/tests/test_loads.py +254 -0
  278. hotdata-0.12.0/tests/test_model_extra_forbid.py +110 -0
  279. {hotdata-0.10.0 → hotdata-0.12.0}/tests/test_query.py +58 -1
  280. hotdata-0.12.0/tests/test_request_defaults.py +191 -0
  281. hotdata-0.12.0/tests/test_workspace_guard.py +160 -0
  282. hotdata-0.10.0/hotdata/api/connection_types_api.py +0 -551
  283. hotdata-0.10.0/hotdata/api/refresh_api.py +0 -324
  284. hotdata-0.10.0/hotdata/api/secrets_api.py +0 -1385
  285. hotdata-0.10.0/hotdata/models/connection_health_response.py +0 -100
  286. hotdata-0.10.0/hotdata/models/connection_refresh_result.py +0 -117
  287. hotdata-0.10.0/hotdata/models/connection_schema_error.py +0 -90
  288. hotdata-0.10.0/hotdata/models/connection_type_detail.py +0 -104
  289. hotdata-0.10.0/hotdata/models/connection_type_summary.py +0 -90
  290. hotdata-0.10.0/hotdata/models/create_index_request.py +0 -147
  291. hotdata-0.10.0/hotdata/models/create_secret_request.py +0 -90
  292. hotdata-0.10.0/hotdata/models/create_secret_response.py +0 -93
  293. hotdata-0.10.0/hotdata/models/get_secret_response.py +0 -93
  294. hotdata-0.10.0/hotdata/models/job_status.py +0 -41
  295. hotdata-0.10.0/hotdata/models/list_connection_types_response.py +0 -96
  296. hotdata-0.10.0/hotdata/models/list_secrets_response.py +0 -96
  297. hotdata-0.10.0/hotdata/models/refresh_request.py +0 -121
  298. hotdata-0.10.0/hotdata/models/refresh_response.py +0 -152
  299. hotdata-0.10.0/hotdata/models/refresh_warning.py +0 -102
  300. hotdata-0.10.0/hotdata/models/schema_refresh_result.py +0 -107
  301. hotdata-0.10.0/hotdata/models/secret_metadata_response.py +0 -93
  302. hotdata-0.10.0/hotdata/models/table_refresh_error.py +0 -92
  303. hotdata-0.10.0/hotdata/models/update_secret_request.py +0 -88
  304. hotdata-0.10.0/hotdata/models/update_secret_response.py +0 -91
  305. hotdata-0.10.0/test/test_connection_health_response.py +0 -58
  306. hotdata-0.10.0/test/test_connection_refresh_result.py +0 -73
  307. hotdata-0.10.0/test/test_connection_schema_error.py +0 -55
  308. hotdata-0.10.0/test/test_connection_type_detail.py +0 -57
  309. hotdata-0.10.0/test/test_connection_type_summary.py +0 -55
  310. hotdata-0.10.0/test/test_connection_types_api.py +0 -46
  311. hotdata-0.10.0/test/test_create_secret_request.py +0 -55
  312. hotdata-0.10.0/test/test_create_secret_response.py +0 -57
  313. hotdata-0.10.0/test/test_get_secret_response.py +0 -57
  314. hotdata-0.10.0/test/test_list_connection_types_response.py +0 -61
  315. hotdata-0.10.0/test/test_list_secrets_response.py +0 -63
  316. hotdata-0.10.0/test/test_refresh_api.py +0 -39
  317. hotdata-0.10.0/test/test_refresh_request.py +0 -58
  318. hotdata-0.10.0/test/test_refresh_response.py +0 -89
  319. hotdata-0.10.0/test/test_refresh_warning.py +0 -55
  320. hotdata-0.10.0/test/test_schema_refresh_result.py +0 -66
  321. hotdata-0.10.0/test/test_secret_metadata_response.py +0 -57
  322. hotdata-0.10.0/test/test_secrets_api.py +0 -67
  323. hotdata-0.10.0/test/test_table_refresh_error.py +0 -57
  324. hotdata-0.10.0/test/test_table_refresh_result.py +0 -67
  325. hotdata-0.10.0/test/test_update_secret_request.py +0 -53
  326. hotdata-0.10.0/test/test_update_secret_response.py +0 -55
  327. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/_retry.py +0 -0
  328. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/_upload_watchdog.py +0 -0
  329. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/api_response.py +0 -0
  330. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/py.typed +0 -0
  331. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata/uploads.py +0 -0
  332. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata.egg-info/dependency_links.txt +0 -0
  333. {hotdata-0.10.0 → hotdata-0.12.0}/hotdata.egg-info/top_level.txt +0 -0
  334. {hotdata-0.10.0 → hotdata-0.12.0}/setup.cfg +0 -0
  335. {hotdata-0.10.0 → hotdata-0.12.0}/test/test_api_client_close.py +0 -0
  336. {hotdata-0.10.0 → hotdata-0.12.0}/tests/test_api_token_auth.py +0 -0
  337. {hotdata-0.10.0 → hotdata-0.12.0}/tests/test_config_auth_surface.py +0 -0
  338. {hotdata-0.10.0 → hotdata-0.12.0}/tests/test_retry.py +0 -0
  339. {hotdata-0.10.0 → hotdata-0.12.0}/tests/test_update_changelog.py +0 -0
  340. {hotdata-0.10.0 → hotdata-0.12.0}/tests/test_upload_codex_fixes.py +0 -0
  341. {hotdata-0.10.0 → hotdata-0.12.0}/tests/test_upload_multipart_resilient.py +0 -0
  342. {hotdata-0.10.0 → hotdata-0.12.0}/tests/test_upload_parity_fixes.py +0 -0
  343. {hotdata-0.10.0 → hotdata-0.12.0}/tests/test_upload_resilient.py +0 -0
  344. {hotdata-0.10.0 → hotdata-0.12.0}/tests/test_upload_retry_policy.py +0 -0
  345. {hotdata-0.10.0 → hotdata-0.12.0}/tests/test_upload_watchdog.py +0 -0
  346. {hotdata-0.10.0 → hotdata-0.12.0}/tests/test_uploads.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hotdata
3
- Version: 0.10.0
3
+ Version: 0.12.0
4
4
  Summary: Hotdata API
5
5
  Author-email: Hotdata <developers@hotdata.dev>
6
6
  License: MIT
@@ -9,7 +9,7 @@ Project-URL: Repository, https://github.com/hotdata-dev/sdk-python
9
9
  Keywords: hotdata,api-client,data-platform
10
10
  Requires-Python: >=3.10
11
11
  Description-Content-Type: text/markdown
12
- Requires-Dist: urllib3<3.0.0,>=2.7.0
12
+ Requires-Dist: urllib3<3.0.0,>=2.8.0
13
13
  Requires-Dist: python-dateutil>=2.8.2
14
14
  Requires-Dist: pydantic>=2.4.0
15
15
  Requires-Dist: typing-extensions>=4.7.1
@@ -18,7 +18,7 @@ Requires-Dist: pyarrow>=14.0.1; extra == "arrow"
18
18
 
19
19
  # hotdata
20
20
 
21
- Official Python client for the [Hotdata](https://www.hotdata.dev) HTTP API: workspaces, connections, datasets, SQL queries, results, secrets, uploads, indexes, jobs, embedding providers, and workspace context.
21
+ Official Python client for the [Hotdata](https://www.hotdata.dev) HTTP API: workspaces, connections, instant databases, SQL queries, results, uploads, indexes, jobs, embedding providers, and database context.
22
22
 
23
23
  ## Requirements
24
24
 
@@ -55,7 +55,17 @@ configuration = hotdata.Configuration(
55
55
  )
56
56
  ```
57
57
 
58
- `host` defaults to `https://api.hotdata.dev`. Override it if you target another environment.
58
+ Each of these can come from the environment instead, the same variables the
59
+ CLI uses: `HOTDATA_API_KEY`, `HOTDATA_WORKSPACE` and `HOTDATA_API_URL` fill in
60
+ `api_key`, `workspace_id` and `host` when the argument is not passed. An
61
+ explicit argument always wins.
62
+
63
+ `host` defaults to `https://api.hotdata.dev`. Override it (or set
64
+ `HOTDATA_API_URL`) if you target another environment.
65
+
66
+ Almost every call is workspace-scoped. If no workspace id is configured, the
67
+ SDK raises `hotdata.MissingWorkspaceError` before sending the request rather
68
+ than letting the server answer with an unexplained 404.
59
69
 
60
70
  ## Usage
61
71
 
@@ -78,6 +88,25 @@ with hotdata.ApiClient(configuration) as api_client:
78
88
 
79
89
  Each `Api` class groups endpoints by resource. Construct the client, then call the typed methods you need.
80
90
 
91
+ ## Loading tables
92
+
93
+ Loads are serialised per table on the server. `hotdata.DatabasesApi` and
94
+ `hotdata.ConnectionsApi` retry a load that hits a table another load still
95
+ holds (HTTP 409, error code `RESOURCE_LOCKED`), honouring the server's
96
+ `Retry-After`, for up to 60s by default:
97
+
98
+ ```python
99
+ from hotdata import DatabasesApi, LoadRetryPolicy, TableLockedError
100
+
101
+ databases = DatabasesApi(api_client, load_retry=LoadRetryPolicy(deadline_s=120))
102
+ try:
103
+ databases.load_database_table(db_id, "public", "events", request)
104
+ except TableLockedError as e:
105
+ print(f"gave up after {e.attempts} attempts: {e.reason}")
106
+ ```
107
+
108
+ Other 409s (`CONFLICT`, `IDEMPOTENCY_KEY_CONFLICT`) are raised immediately.
109
+
81
110
  ## Arrow results
82
111
 
83
112
  Query results can be fetched as an [Apache Arrow](https://arrow.apache.org/) IPC stream instead of JSON, which is faster and far more memory-efficient for large result sets. Install the optional extra:
@@ -1,6 +1,6 @@
1
1
  # hotdata
2
2
 
3
- Official Python client for the [Hotdata](https://www.hotdata.dev) HTTP API: workspaces, connections, datasets, SQL queries, results, secrets, uploads, indexes, jobs, embedding providers, and workspace context.
3
+ Official Python client for the [Hotdata](https://www.hotdata.dev) HTTP API: workspaces, connections, instant databases, SQL queries, results, uploads, indexes, jobs, embedding providers, and database context.
4
4
 
5
5
  ## Requirements
6
6
 
@@ -37,7 +37,17 @@ configuration = hotdata.Configuration(
37
37
  )
38
38
  ```
39
39
 
40
- `host` defaults to `https://api.hotdata.dev`. Override it if you target another environment.
40
+ Each of these can come from the environment instead, the same variables the
41
+ CLI uses: `HOTDATA_API_KEY`, `HOTDATA_WORKSPACE` and `HOTDATA_API_URL` fill in
42
+ `api_key`, `workspace_id` and `host` when the argument is not passed. An
43
+ explicit argument always wins.
44
+
45
+ `host` defaults to `https://api.hotdata.dev`. Override it (or set
46
+ `HOTDATA_API_URL`) if you target another environment.
47
+
48
+ Almost every call is workspace-scoped. If no workspace id is configured, the
49
+ SDK raises `hotdata.MissingWorkspaceError` before sending the request rather
50
+ than letting the server answer with an unexplained 404.
41
51
 
42
52
  ## Usage
43
53
 
@@ -60,6 +70,25 @@ with hotdata.ApiClient(configuration) as api_client:
60
70
 
61
71
  Each `Api` class groups endpoints by resource. Construct the client, then call the typed methods you need.
62
72
 
73
+ ## Loading tables
74
+
75
+ Loads are serialised per table on the server. `hotdata.DatabasesApi` and
76
+ `hotdata.ConnectionsApi` retry a load that hits a table another load still
77
+ holds (HTTP 409, error code `RESOURCE_LOCKED`), honouring the server's
78
+ `Retry-After`, for up to 60s by default:
79
+
80
+ ```python
81
+ from hotdata import DatabasesApi, LoadRetryPolicy, TableLockedError
82
+
83
+ databases = DatabasesApi(api_client, load_retry=LoadRetryPolicy(deadline_s=120))
84
+ try:
85
+ databases.load_database_table(db_id, "public", "events", request)
86
+ except TableLockedError as e:
87
+ print(f"gave up after {e.attempts} attempts: {e.reason}")
88
+ ```
89
+
90
+ Other 409s (`CONFLICT`, `IDEMPOTENCY_KEY_CONFLICT`) are raised immediately.
91
+
63
92
  ## Arrow results
64
93
 
65
94
  Query results can be fetched as an [Apache Arrow](https://arrow.apache.org/) IPC stream instead of JSON, which is faster and far more memory-efficient for large result sets. Install the optional extra:
@@ -5,7 +5,7 @@
5
5
  """
6
6
  Hotdata API
7
7
 
8
- Powerful data platform API for managed databases, queries, and analytics.
8
+ Powerful data platform API for instant databases, queries, and analytics.
9
9
 
10
10
  The version of the OpenAPI document: 1.0.0
11
11
  Contact: developers@hotdata.dev
@@ -24,7 +24,6 @@ except PackageNotFoundError: # running from a source checkout without install
24
24
 
25
25
  # Define package exports
26
26
  __all__ = [
27
- "ConnectionTypesApi",
28
27
  "ConnectionsApi",
29
28
  "DatabaseContextApi",
30
29
  "DatabasesApi",
@@ -34,10 +33,8 @@ __all__ = [
34
33
  "JobsApi",
35
34
  "QueryApi",
36
35
  "QueryRunsApi",
37
- "RefreshApi",
38
36
  "ResultsApi",
39
37
  "SavedQueriesApi",
40
- "SecretsApi",
41
38
  "UploadsApi",
42
39
  "UsageApi",
43
40
  "WorkspacesApi",
@@ -74,12 +71,7 @@ __all__ = [
74
71
  "ColumnProfileDetailOneOf4",
75
72
  "ColumnProfileInfo",
76
73
  "ColumnTypeSpec",
77
- "ConnectionHealthResponse",
78
74
  "ConnectionInfo",
79
- "ConnectionRefreshResult",
80
- "ConnectionSchemaError",
81
- "ConnectionTypeDetail",
82
- "ConnectionTypeSummary",
83
75
  "CreateConnectionRequest",
84
76
  "CreateConnectionResponse",
85
77
  "CreateDatabaseRequest",
@@ -88,8 +80,6 @@ __all__ = [
88
80
  "CreateEmbeddingProviderResponse",
89
81
  "CreateIndexRequest",
90
82
  "CreateSavedQueryRequest",
91
- "CreateSecretRequest",
92
- "CreateSecretResponse",
93
83
  "CreateUploadRequest",
94
84
  "CreateWorkspaceRequest",
95
85
  "CreateWorkspaceResponse",
@@ -100,6 +90,7 @@ __all__ = [
100
90
  "DatabaseDefaultSchemaDecl",
101
91
  "DatabaseDefaultTableDecl",
102
92
  "DatabaseDetailResponse",
93
+ "DatabaseLineageResponse",
103
94
  "DatabaseSummary",
104
95
  "DeleteDatabaseBatchResponse",
105
96
  "DiscoveryStatus",
@@ -110,10 +101,10 @@ __all__ = [
110
101
  "FinalizeUploadRequest",
111
102
  "FinalizeUploadResponse",
112
103
  "ForkDatabaseRequest",
104
+ "ForkedFromInfo",
113
105
  "GetConnectionResponse",
114
106
  "GetDatabaseContextResponse",
115
107
  "GetResultResponse",
116
- "GetSecretResponse",
117
108
  "IndexEntryResponse",
118
109
  "IndexInfoResponse",
119
110
  "IndexStatus",
@@ -122,7 +113,8 @@ __all__ = [
122
113
  "JobStatus",
123
114
  "JobStatusResponse",
124
115
  "JobType",
125
- "ListConnectionTypesResponse",
116
+ "LineageAncestorInfo",
117
+ "LineageForkInfo",
126
118
  "ListConnectionsResponse",
127
119
  "ListDatabaseContextsResponse",
128
120
  "ListDatabasesResponse",
@@ -134,11 +126,11 @@ __all__ = [
134
126
  "ListResultsResponse",
135
127
  "ListSavedQueriesResponse",
136
128
  "ListSavedQueryVersionsResponse",
137
- "ListSecretsResponse",
138
129
  "ListWorkspacesResponse",
139
130
  "LoadManagedTableRequest",
140
131
  "LoadManagedTableResponse",
141
132
  "ManagedSchemaResponse",
133
+ "ManagedTableConstantPerKeyResponse",
142
134
  "ManagedTableResponse",
143
135
  "MintUploadPartsRequest",
144
136
  "MintUploadPartsResponse",
@@ -147,30 +139,22 @@ __all__ = [
147
139
  "QueryRequest",
148
140
  "QueryResponse",
149
141
  "QueryRunInfo",
150
- "RefreshRequest",
151
- "RefreshResponse",
152
- "RefreshWarning",
153
142
  "ResultInfo",
154
143
  "ResultsFormatQuery",
155
144
  "SavedQueryDetail",
156
145
  "SavedQuerySummary",
157
146
  "SavedQueryVersionInfo",
158
- "SchemaRefreshResult",
159
- "SecretMetadataResponse",
160
147
  "SubmitJobResponse",
161
148
  "TableInfo",
162
149
  "TablePartitionKey",
163
150
  "TableProfileResponse",
164
- "TableRefreshError",
165
- "TableRefreshResult",
166
151
  "TableSortKey",
167
152
  "TemporalProfileDetail",
168
153
  "TextProfileDetail",
169
154
  "UpdateEmbeddingProviderRequest",
170
155
  "UpdateEmbeddingProviderResponse",
156
+ "UpdateManagedTableRequest",
171
157
  "UpdateSavedQueryRequest",
172
- "UpdateSecretRequest",
173
- "UpdateSecretResponse",
174
158
  "UploadSessionResponse",
175
159
  "UpsertDatabaseContextRequest",
176
160
  "UpsertDatabaseContextResponse",
@@ -180,7 +164,6 @@ __all__ = [
180
164
  ]
181
165
 
182
166
  # import apis into sdk package
183
- from hotdata.api.connection_types_api import ConnectionTypesApi as ConnectionTypesApi
184
167
  from hotdata.api.connections_api import ConnectionsApi as ConnectionsApi
185
168
  from hotdata.api.database_context_api import DatabaseContextApi as DatabaseContextApi
186
169
  from hotdata.api.databases_api import DatabasesApi as DatabasesApi
@@ -190,10 +173,8 @@ from hotdata.api.information_schema_api import InformationSchemaApi as Informati
190
173
  from hotdata.api.jobs_api import JobsApi as JobsApi
191
174
  from hotdata.api.query_api import QueryApi as QueryApi
192
175
  from hotdata.api.query_runs_api import QueryRunsApi as QueryRunsApi
193
- from hotdata.api.refresh_api import RefreshApi as RefreshApi
194
176
  from hotdata.api.results_api import ResultsApi as ResultsApi
195
177
  from hotdata.api.saved_queries_api import SavedQueriesApi as SavedQueriesApi
196
- from hotdata.api.secrets_api import SecretsApi as SecretsApi
197
178
  from hotdata.api.uploads_api import UploadsApi as UploadsApi
198
179
  from hotdata.api.usage_api import UsageApi as UsageApi
199
180
  from hotdata.api.workspaces_api import WorkspacesApi as WorkspacesApi
@@ -234,12 +215,7 @@ from hotdata.models.column_profile_detail_one_of3 import ColumnProfileDetailOneO
234
215
  from hotdata.models.column_profile_detail_one_of4 import ColumnProfileDetailOneOf4 as ColumnProfileDetailOneOf4
235
216
  from hotdata.models.column_profile_info import ColumnProfileInfo as ColumnProfileInfo
236
217
  from hotdata.models.column_type_spec import ColumnTypeSpec as ColumnTypeSpec
237
- from hotdata.models.connection_health_response import ConnectionHealthResponse as ConnectionHealthResponse
238
218
  from hotdata.models.connection_info import ConnectionInfo as ConnectionInfo
239
- from hotdata.models.connection_refresh_result import ConnectionRefreshResult as ConnectionRefreshResult
240
- from hotdata.models.connection_schema_error import ConnectionSchemaError as ConnectionSchemaError
241
- from hotdata.models.connection_type_detail import ConnectionTypeDetail as ConnectionTypeDetail
242
- from hotdata.models.connection_type_summary import ConnectionTypeSummary as ConnectionTypeSummary
243
219
  from hotdata.models.create_connection_request import CreateConnectionRequest as CreateConnectionRequest
244
220
  from hotdata.models.create_connection_response import CreateConnectionResponse as CreateConnectionResponse
245
221
  from hotdata.models.create_database_request import CreateDatabaseRequest as CreateDatabaseRequest
@@ -248,8 +224,6 @@ from hotdata.models.create_embedding_provider_request import CreateEmbeddingProv
248
224
  from hotdata.models.create_embedding_provider_response import CreateEmbeddingProviderResponse as CreateEmbeddingProviderResponse
249
225
  from hotdata.models.create_index_request import CreateIndexRequest as CreateIndexRequest
250
226
  from hotdata.models.create_saved_query_request import CreateSavedQueryRequest as CreateSavedQueryRequest
251
- from hotdata.models.create_secret_request import CreateSecretRequest as CreateSecretRequest
252
- from hotdata.models.create_secret_response import CreateSecretResponse as CreateSecretResponse
253
227
  from hotdata.models.create_upload_request import CreateUploadRequest as CreateUploadRequest
254
228
  from hotdata.models.create_workspace_request import CreateWorkspaceRequest as CreateWorkspaceRequest
255
229
  from hotdata.models.create_workspace_response import CreateWorkspaceResponse as CreateWorkspaceResponse
@@ -260,6 +234,7 @@ from hotdata.models.database_count_response import DatabaseCountResponse as Data
260
234
  from hotdata.models.database_default_schema_decl import DatabaseDefaultSchemaDecl as DatabaseDefaultSchemaDecl
261
235
  from hotdata.models.database_default_table_decl import DatabaseDefaultTableDecl as DatabaseDefaultTableDecl
262
236
  from hotdata.models.database_detail_response import DatabaseDetailResponse as DatabaseDetailResponse
237
+ from hotdata.models.database_lineage_response import DatabaseLineageResponse as DatabaseLineageResponse
263
238
  from hotdata.models.database_summary import DatabaseSummary as DatabaseSummary
264
239
  from hotdata.models.delete_database_batch_response import DeleteDatabaseBatchResponse as DeleteDatabaseBatchResponse
265
240
  from hotdata.models.discovery_status import DiscoveryStatus as DiscoveryStatus
@@ -270,10 +245,10 @@ from hotdata.models.finalize_upload_part import FinalizeUploadPart as FinalizeUp
270
245
  from hotdata.models.finalize_upload_request import FinalizeUploadRequest as FinalizeUploadRequest
271
246
  from hotdata.models.finalize_upload_response import FinalizeUploadResponse as FinalizeUploadResponse
272
247
  from hotdata.models.fork_database_request import ForkDatabaseRequest as ForkDatabaseRequest
248
+ from hotdata.models.forked_from_info import ForkedFromInfo as ForkedFromInfo
273
249
  from hotdata.models.get_connection_response import GetConnectionResponse as GetConnectionResponse
274
250
  from hotdata.models.get_database_context_response import GetDatabaseContextResponse as GetDatabaseContextResponse
275
251
  from hotdata.models.get_result_response import GetResultResponse as GetResultResponse
276
- from hotdata.models.get_secret_response import GetSecretResponse as GetSecretResponse
277
252
  from hotdata.models.index_entry_response import IndexEntryResponse as IndexEntryResponse
278
253
  from hotdata.models.index_info_response import IndexInfoResponse as IndexInfoResponse
279
254
  from hotdata.models.index_status import IndexStatus as IndexStatus
@@ -282,7 +257,8 @@ from hotdata.models.job_result import JobResult as JobResult
282
257
  from hotdata.models.job_status import JobStatus as JobStatus
283
258
  from hotdata.models.job_status_response import JobStatusResponse as JobStatusResponse
284
259
  from hotdata.models.job_type import JobType as JobType
285
- from hotdata.models.list_connection_types_response import ListConnectionTypesResponse as ListConnectionTypesResponse
260
+ from hotdata.models.lineage_ancestor_info import LineageAncestorInfo as LineageAncestorInfo
261
+ from hotdata.models.lineage_fork_info import LineageForkInfo as LineageForkInfo
286
262
  from hotdata.models.list_connections_response import ListConnectionsResponse as ListConnectionsResponse
287
263
  from hotdata.models.list_database_contexts_response import ListDatabaseContextsResponse as ListDatabaseContextsResponse
288
264
  from hotdata.models.list_databases_response import ListDatabasesResponse as ListDatabasesResponse
@@ -294,11 +270,11 @@ from hotdata.models.list_query_runs_response import ListQueryRunsResponse as Lis
294
270
  from hotdata.models.list_results_response import ListResultsResponse as ListResultsResponse
295
271
  from hotdata.models.list_saved_queries_response import ListSavedQueriesResponse as ListSavedQueriesResponse
296
272
  from hotdata.models.list_saved_query_versions_response import ListSavedQueryVersionsResponse as ListSavedQueryVersionsResponse
297
- from hotdata.models.list_secrets_response import ListSecretsResponse as ListSecretsResponse
298
273
  from hotdata.models.list_workspaces_response import ListWorkspacesResponse as ListWorkspacesResponse
299
274
  from hotdata.models.load_managed_table_request import LoadManagedTableRequest as LoadManagedTableRequest
300
275
  from hotdata.models.load_managed_table_response import LoadManagedTableResponse as LoadManagedTableResponse
301
276
  from hotdata.models.managed_schema_response import ManagedSchemaResponse as ManagedSchemaResponse
277
+ from hotdata.models.managed_table_constant_per_key_response import ManagedTableConstantPerKeyResponse as ManagedTableConstantPerKeyResponse
302
278
  from hotdata.models.managed_table_response import ManagedTableResponse as ManagedTableResponse
303
279
  from hotdata.models.mint_upload_parts_request import MintUploadPartsRequest as MintUploadPartsRequest
304
280
  from hotdata.models.mint_upload_parts_response import MintUploadPartsResponse as MintUploadPartsResponse
@@ -307,30 +283,22 @@ from hotdata.models.numeric_profile_detail import NumericProfileDetail as Numeri
307
283
  from hotdata.models.query_request import QueryRequest as QueryRequest
308
284
  from hotdata.models.query_response import QueryResponse as QueryResponse
309
285
  from hotdata.models.query_run_info import QueryRunInfo as QueryRunInfo
310
- from hotdata.models.refresh_request import RefreshRequest as RefreshRequest
311
- from hotdata.models.refresh_response import RefreshResponse as RefreshResponse
312
- from hotdata.models.refresh_warning import RefreshWarning as RefreshWarning
313
286
  from hotdata.models.result_info import ResultInfo as ResultInfo
314
287
  from hotdata.models.results_format_query import ResultsFormatQuery as ResultsFormatQuery
315
288
  from hotdata.models.saved_query_detail import SavedQueryDetail as SavedQueryDetail
316
289
  from hotdata.models.saved_query_summary import SavedQuerySummary as SavedQuerySummary
317
290
  from hotdata.models.saved_query_version_info import SavedQueryVersionInfo as SavedQueryVersionInfo
318
- from hotdata.models.schema_refresh_result import SchemaRefreshResult as SchemaRefreshResult
319
- from hotdata.models.secret_metadata_response import SecretMetadataResponse as SecretMetadataResponse
320
291
  from hotdata.models.submit_job_response import SubmitJobResponse as SubmitJobResponse
321
292
  from hotdata.models.table_info import TableInfo as TableInfo
322
293
  from hotdata.models.table_partition_key import TablePartitionKey as TablePartitionKey
323
294
  from hotdata.models.table_profile_response import TableProfileResponse as TableProfileResponse
324
- from hotdata.models.table_refresh_error import TableRefreshError as TableRefreshError
325
- from hotdata.models.table_refresh_result import TableRefreshResult as TableRefreshResult
326
295
  from hotdata.models.table_sort_key import TableSortKey as TableSortKey
327
296
  from hotdata.models.temporal_profile_detail import TemporalProfileDetail as TemporalProfileDetail
328
297
  from hotdata.models.text_profile_detail import TextProfileDetail as TextProfileDetail
329
298
  from hotdata.models.update_embedding_provider_request import UpdateEmbeddingProviderRequest as UpdateEmbeddingProviderRequest
330
299
  from hotdata.models.update_embedding_provider_response import UpdateEmbeddingProviderResponse as UpdateEmbeddingProviderResponse
300
+ from hotdata.models.update_managed_table_request import UpdateManagedTableRequest as UpdateManagedTableRequest
331
301
  from hotdata.models.update_saved_query_request import UpdateSavedQueryRequest as UpdateSavedQueryRequest
332
- from hotdata.models.update_secret_request import UpdateSecretRequest as UpdateSecretRequest
333
- from hotdata.models.update_secret_response import UpdateSecretResponse as UpdateSecretResponse
334
302
  from hotdata.models.upload_session_response import UploadSessionResponse as UploadSessionResponse
335
303
  from hotdata.models.upsert_database_context_request import UpsertDatabaseContextRequest as UpsertDatabaseContextRequest
336
304
  from hotdata.models.upsert_database_context_response import UpsertDatabaseContextResponse as UpsertDatabaseContextResponse
@@ -344,10 +312,21 @@ from hotdata.models.workspace_usage_response import WorkspaceUsageResponse as Wo
344
312
  # hotdata.query.QueryApi adds 429 retry + truncation auto-follow;
345
313
  # hotdata.arrow.ResultsApi adds Arrow IPC result fetch;
346
314
  # hotdata.uploads.UploadsApi adds transparent presigned direct-to-storage
347
- # uploads. The raw generated classes remain importable from hotdata.api.*.
315
+ # uploads; hotdata.loads.DatabasesApi / ConnectionsApi retry table loads
316
+ # while another load holds the table (409 RESOURCE_LOCKED). The raw
317
+ # generated classes remain importable from hotdata.api.*.
348
318
  from hotdata.query import QueryApi as QueryApi # noqa: E402,F811
349
319
  from hotdata.arrow import ResultsApi as ResultsApi # noqa: E402,F811
350
320
  from hotdata.uploads import UploadsApi as UploadsApi # noqa: E402,F811
321
+ from hotdata.loads import DatabasesApi as DatabasesApi # noqa: E402,F811
322
+ from hotdata.loads import ConnectionsApi as ConnectionsApi # noqa: E402,F811
323
+ from hotdata.loads import ( # noqa: E402,F401
324
+ LoadRetryPolicy as LoadRetryPolicy,
325
+ TableLockedError as TableLockedError,
326
+ )
327
+ # Raised client-side (scripts/patch_workspace_guard.py) when a workspace-
328
+ # scoped call has no workspace id configured.
329
+ from hotdata._workspace import MissingWorkspaceError as MissingWorkspaceError # noqa: E402,F401
351
330
  # The upload error hierarchy + option/helper types, so `from hotdata import
352
331
  # UploadError` / `StorageError` / ... works (they otherwise live only under
353
332
  # hotdata.uploads and are invisible to autocomplete on `hotdata.`).
@@ -382,4 +361,7 @@ __all__ += [ # noqa: F405
382
361
  "UploadProgress",
383
362
  "UploadSource",
384
363
  "tqdm_progress",
364
+ "LoadRetryPolicy",
365
+ "TableLockedError",
366
+ "MissingWorkspaceError",
385
367
  ]
@@ -0,0 +1,52 @@
1
+ """The SDK's default ``User-Agent``.
2
+
3
+ The generator's default is ``OpenAPI-Generator/1.0.0/python``, which identifies
4
+ neither the SDK nor its version — server-side telemetry cannot tell a hotdata
5
+ client from any other generated client, let alone one release from another.
6
+
7
+ openapi-generator *does* expose an ``httpUserAgent`` property for this, but it
8
+ bakes a literal string in at **generation** time. Regeneration is driven by
9
+ OpenAPI spec changes, not by releases, so a baked version string reports
10
+ whatever the version happened to be at the last regen — it would go stale
11
+ silently and misattribute traffic, which is worse than the generic default. The
12
+ version is therefore resolved at import time from installed package metadata,
13
+ the same source :mod:`hotdata.__init__` uses for ``__version__``.
14
+
15
+ This lives outside the generated modules (see ``.openapi-generator-ignore``) so
16
+ a regeneration cannot overwrite it; ``scripts/patch_request_defaults.py`` only
17
+ has to re-point ``ApiClient`` at the constant.
18
+ """
19
+
20
+ from __future__ import annotations
21
+
22
+ import importlib.metadata
23
+ import platform
24
+
25
+ import urllib3
26
+
27
+
28
+ def _default_user_agent() -> str:
29
+ """``hotdata-python/<version> (Python/<py>; urllib3/<urllib3>)``.
30
+
31
+ The runtime versions ride along because the transport stack is where
32
+ client-side failures usually originate: knowing which urllib3 a bug report
33
+ came from is the difference between reproducing a problem and guessing.
34
+ """
35
+ try:
36
+ sdk_version = importlib.metadata.version("hotdata")
37
+ except importlib.metadata.PackageNotFoundError:
38
+ # Running from a source checkout without an install.
39
+ sdk_version = "0.0.0+unknown"
40
+ return (
41
+ f"hotdata-python/{sdk_version} "
42
+ f"(Python/{platform.python_version()}; urllib3/{urllib3.__version__})"
43
+ )
44
+
45
+
46
+ #: Sent as ``User-Agent`` on every request. ``ApiClient.user_agent`` still
47
+ #: overrides it per client, which is the supported way for an application to
48
+ #: identify itself.
49
+ USER_AGENT = _default_user_agent()
50
+
51
+
52
+ __all__ = ["USER_AGENT", "_default_user_agent"]
@@ -0,0 +1,84 @@
1
+ """Fail fast when a workspace-scoped request has no workspace to go to.
2
+
3
+ Most operations are scoped to a workspace through the ``X-Workspace-Id``
4
+ header (the ``WorkspaceId`` security scheme). The generated client simply
5
+ skips a scheme that has no configured value, so a ``Configuration`` built
6
+ without ``workspace_id`` sends the request anyway and the server answers with
7
+ a bare 404 that says nothing about what was missing.
8
+
9
+ :func:`ensure_workspace` runs before the request is sent (wired into
10
+ ``ApiClient.update_params_for_auth`` by ``scripts/patch_workspace_guard.py``)
11
+ and raises :class:`MissingWorkspaceError` naming the constructor argument and
12
+ the environment variable. Operations whose security does not list
13
+ ``WorkspaceId`` (workspace management itself) are unaffected, as are calls
14
+ that supply the header explicitly or override auth per request.
15
+ """
16
+
17
+ from __future__ import annotations
18
+
19
+ from typing import Any, Iterable, Mapping, Optional
20
+
21
+ from hotdata.exceptions import ApiValueError
22
+
23
+ WORKSPACE_SCHEME = "WorkspaceId"
24
+ WORKSPACE_HEADER = "X-Workspace-Id"
25
+
26
+
27
+ class MissingWorkspaceError(ApiValueError):
28
+ """Raised before sending a workspace-scoped request when no workspace id
29
+ is configured.
30
+
31
+ Pass ``workspace_id=`` to :class:`hotdata.Configuration`, set the
32
+ ``HOTDATA_WORKSPACE`` environment variable, or send the ``X-Workspace-Id``
33
+ header explicitly for the call.
34
+ """
35
+
36
+ def __init__(self, resource_path: str, method: str) -> None:
37
+ self.resource_path = resource_path
38
+ self.method = method
39
+ super().__init__(
40
+ f"{method} {resource_path} is scoped to a workspace but no workspace id "
41
+ "is configured. Pass workspace_id=... to hotdata.Configuration(...), "
42
+ "set the HOTDATA_WORKSPACE environment variable, or send the "
43
+ f"{WORKSPACE_HEADER} header explicitly (_headers=...)."
44
+ )
45
+
46
+
47
+ def ensure_workspace(
48
+ configuration: Any,
49
+ auth_settings: Optional[Iterable[str]],
50
+ headers: Optional[Mapping[str, Any]],
51
+ resource_path: str,
52
+ method: str,
53
+ request_auth: Optional[Mapping[str, Any]] = None,
54
+ ) -> None:
55
+ """Raise :class:`MissingWorkspaceError` if the operation needs a workspace
56
+ id and none would be sent.
57
+
58
+ :param configuration: The client's :class:`hotdata.Configuration`.
59
+ :param auth_settings: The operation's security scheme names.
60
+ :param headers: Header params already assembled for the request.
61
+ :param request_auth: A per-request auth override; when given the
62
+ configuration is bypassed entirely, so the check is skipped.
63
+ """
64
+ if request_auth:
65
+ return
66
+ if not auth_settings or WORKSPACE_SCHEME not in auth_settings:
67
+ return
68
+ if headers and any(
69
+ str(name).lower() == WORKSPACE_HEADER.lower() for name in headers
70
+ ):
71
+ return
72
+ settings = configuration.auth_settings()
73
+ scheme = settings.get(WORKSPACE_SCHEME) if settings else None
74
+ if scheme and scheme.get("value"):
75
+ return
76
+ raise MissingWorkspaceError(resource_path, method)
77
+
78
+
79
+ __all__ = [
80
+ "WORKSPACE_HEADER",
81
+ "WORKSPACE_SCHEME",
82
+ "MissingWorkspaceError",
83
+ "ensure_workspace",
84
+ ]
@@ -1,7 +1,6 @@
1
1
  # flake8: noqa
2
2
 
3
3
  # import apis into api package
4
- from hotdata.api.connection_types_api import ConnectionTypesApi
5
4
  from hotdata.api.connections_api import ConnectionsApi
6
5
  from hotdata.api.database_context_api import DatabaseContextApi
7
6
  from hotdata.api.databases_api import DatabasesApi
@@ -11,10 +10,8 @@ from hotdata.api.information_schema_api import InformationSchemaApi
11
10
  from hotdata.api.jobs_api import JobsApi
12
11
  from hotdata.api.query_api import QueryApi
13
12
  from hotdata.api.query_runs_api import QueryRunsApi
14
- from hotdata.api.refresh_api import RefreshApi
15
13
  from hotdata.api.results_api import ResultsApi
16
14
  from hotdata.api.saved_queries_api import SavedQueriesApi
17
- from hotdata.api.secrets_api import SecretsApi
18
15
  from hotdata.api.uploads_api import UploadsApi
19
16
  from hotdata.api.usage_api import UsageApi
20
17
  from hotdata.api.workspaces_api import WorkspacesApi