hotdata 0.6.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 (311) hide show
  1. {hotdata-0.6.0 → hotdata-0.7.0}/PKG-INFO +1 -1
  2. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/api/connections_api.py +6 -6
  3. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/api/databases_api.py +6 -6
  4. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/add_managed_table_decl.py +5 -3
  5. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/add_managed_table_request.py +5 -3
  6. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/database_default_table_decl.py +5 -3
  7. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/database_detail_response.py +8 -1
  8. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/database_summary.py +8 -1
  9. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/load_managed_table_request.py +17 -5
  10. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata.egg-info/PKG-INFO +1 -1
  11. {hotdata-0.6.0 → hotdata-0.7.0}/pyproject.toml +1 -1
  12. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_add_managed_schema_request.py +3 -0
  13. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_add_managed_table_decl.py +3 -0
  14. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_add_managed_table_request.py +3 -0
  15. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_connections_api.py +1 -1
  16. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_create_database_request.py +3 -0
  17. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_database_default_schema_decl.py +3 -0
  18. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_database_default_table_decl.py +3 -0
  19. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_database_detail_response.py +1 -0
  20. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_database_summary.py +1 -0
  21. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_databases_api.py +1 -1
  22. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_list_databases_response.py +2 -0
  23. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_load_managed_table_request.py +1 -1
  24. {hotdata-0.6.0 → hotdata-0.7.0}/README.md +0 -0
  25. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/__init__.py +0 -0
  26. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/_auth.py +0 -0
  27. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/_retry.py +0 -0
  28. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/_upload_watchdog.py +0 -0
  29. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/api/__init__.py +0 -0
  30. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/api/connection_types_api.py +0 -0
  31. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/api/database_context_api.py +0 -0
  32. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/api/embedding_providers_api.py +0 -0
  33. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/api/indexes_api.py +0 -0
  34. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/api/information_schema_api.py +0 -0
  35. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/api/jobs_api.py +0 -0
  36. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/api/query_api.py +0 -0
  37. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/api/query_runs_api.py +0 -0
  38. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/api/refresh_api.py +0 -0
  39. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/api/results_api.py +0 -0
  40. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/api/saved_queries_api.py +0 -0
  41. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/api/secrets_api.py +0 -0
  42. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/api/uploads_api.py +0 -0
  43. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/api/usage_api.py +0 -0
  44. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/api/workspaces_api.py +0 -0
  45. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/api_client.py +0 -0
  46. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/api_response.py +0 -0
  47. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/arrow.py +0 -0
  48. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/configuration.py +0 -0
  49. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/exceptions.py +0 -0
  50. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/__init__.py +0 -0
  51. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/add_managed_schema_request.py +0 -0
  52. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/api_error_detail.py +0 -0
  53. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/api_error_response.py +0 -0
  54. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/async_query_response.py +0 -0
  55. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/attach_database_catalog_request.py +0 -0
  56. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/batch_create_upload_request.py +0 -0
  57. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/batch_create_upload_response.py +0 -0
  58. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/boolean_profile_detail.py +0 -0
  59. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/categorical_profile_detail.py +0 -0
  60. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/category_value_info.py +0 -0
  61. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/column_info.py +0 -0
  62. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/column_profile_detail.py +0 -0
  63. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/column_profile_detail_one_of.py +0 -0
  64. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/column_profile_detail_one_of1.py +0 -0
  65. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/column_profile_detail_one_of2.py +0 -0
  66. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/column_profile_detail_one_of3.py +0 -0
  67. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/column_profile_detail_one_of4.py +0 -0
  68. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/column_profile_info.py +0 -0
  69. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/connection_health_response.py +0 -0
  70. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/connection_info.py +0 -0
  71. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/connection_refresh_result.py +0 -0
  72. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/connection_schema_error.py +0 -0
  73. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/connection_type_detail.py +0 -0
  74. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/connection_type_summary.py +0 -0
  75. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/create_connection_request.py +0 -0
  76. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/create_connection_response.py +0 -0
  77. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/create_database_request.py +0 -0
  78. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/create_database_response.py +0 -0
  79. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/create_embedding_provider_request.py +0 -0
  80. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/create_embedding_provider_response.py +0 -0
  81. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/create_index_request.py +0 -0
  82. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/create_saved_query_request.py +0 -0
  83. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/create_secret_request.py +0 -0
  84. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/create_secret_response.py +0 -0
  85. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/create_upload_request.py +0 -0
  86. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/create_workspace_request.py +0 -0
  87. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/create_workspace_response.py +0 -0
  88. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/database_attachment_info.py +0 -0
  89. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/database_context_entry.py +0 -0
  90. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/database_default_schema_decl.py +0 -0
  91. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/discovery_status.py +0 -0
  92. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/embedding_provider_response.py +0 -0
  93. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/error.py +0 -0
  94. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/execute_saved_query_request.py +0 -0
  95. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/finalize_upload_part.py +0 -0
  96. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/finalize_upload_request.py +0 -0
  97. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/finalize_upload_response.py +0 -0
  98. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/get_connection_response.py +0 -0
  99. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/get_database_context_response.py +0 -0
  100. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/get_result_response.py +0 -0
  101. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/get_secret_response.py +0 -0
  102. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/index_entry_response.py +0 -0
  103. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/index_info_response.py +0 -0
  104. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/index_status.py +0 -0
  105. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/information_schema_response.py +0 -0
  106. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/job_result.py +0 -0
  107. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/job_status.py +0 -0
  108. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/job_status_response.py +0 -0
  109. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/job_type.py +0 -0
  110. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/list_connection_types_response.py +0 -0
  111. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/list_connections_response.py +0 -0
  112. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/list_database_contexts_response.py +0 -0
  113. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/list_databases_response.py +0 -0
  114. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/list_embedding_providers_response.py +0 -0
  115. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/list_indexes_page_response.py +0 -0
  116. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/list_indexes_response.py +0 -0
  117. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/list_jobs_response.py +0 -0
  118. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/list_query_runs_response.py +0 -0
  119. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/list_results_response.py +0 -0
  120. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/list_saved_queries_response.py +0 -0
  121. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/list_saved_query_versions_response.py +0 -0
  122. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/list_secrets_response.py +0 -0
  123. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/list_uploads_response.py +0 -0
  124. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/list_workspaces_response.py +0 -0
  125. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/load_managed_table_response.py +0 -0
  126. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/managed_schema_response.py +0 -0
  127. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/managed_table_response.py +0 -0
  128. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/mint_upload_parts_request.py +0 -0
  129. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/mint_upload_parts_response.py +0 -0
  130. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/minted_upload_part_response.py +0 -0
  131. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/numeric_profile_detail.py +0 -0
  132. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/query_request.py +0 -0
  133. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/query_response.py +0 -0
  134. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/query_run_info.py +0 -0
  135. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/refresh_request.py +0 -0
  136. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/refresh_response.py +0 -0
  137. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/refresh_warning.py +0 -0
  138. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/result_info.py +0 -0
  139. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/results_format_query.py +0 -0
  140. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/saved_query_detail.py +0 -0
  141. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/saved_query_summary.py +0 -0
  142. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/saved_query_version_info.py +0 -0
  143. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/schema_refresh_result.py +0 -0
  144. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/secret_metadata_response.py +0 -0
  145. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/submit_job_response.py +0 -0
  146. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/table_info.py +0 -0
  147. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/table_profile_response.py +0 -0
  148. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/table_refresh_error.py +0 -0
  149. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/table_refresh_result.py +0 -0
  150. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/temporal_profile_detail.py +0 -0
  151. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/text_profile_detail.py +0 -0
  152. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/update_embedding_provider_request.py +0 -0
  153. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/update_embedding_provider_response.py +0 -0
  154. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/update_saved_query_request.py +0 -0
  155. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/update_secret_request.py +0 -0
  156. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/update_secret_response.py +0 -0
  157. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/upload_info.py +0 -0
  158. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/upload_response.py +0 -0
  159. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/upload_session_response.py +0 -0
  160. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/upsert_database_context_request.py +0 -0
  161. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/upsert_database_context_response.py +0 -0
  162. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/workspace_detail.py +0 -0
  163. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/workspace_list_item.py +0 -0
  164. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/models/workspace_usage_response.py +0 -0
  165. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/py.typed +0 -0
  166. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/query.py +0 -0
  167. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/rest.py +0 -0
  168. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata/uploads.py +0 -0
  169. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata.egg-info/SOURCES.txt +0 -0
  170. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata.egg-info/dependency_links.txt +0 -0
  171. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata.egg-info/requires.txt +0 -0
  172. {hotdata-0.6.0 → hotdata-0.7.0}/hotdata.egg-info/top_level.txt +0 -0
  173. {hotdata-0.6.0 → hotdata-0.7.0}/setup.cfg +0 -0
  174. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_api_client_close.py +0 -0
  175. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_api_error_detail.py +0 -0
  176. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_api_error_response.py +0 -0
  177. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_async_query_response.py +0 -0
  178. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_attach_database_catalog_request.py +0 -0
  179. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_batch_create_upload_request.py +0 -0
  180. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_batch_create_upload_response.py +0 -0
  181. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_boolean_profile_detail.py +0 -0
  182. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_categorical_profile_detail.py +0 -0
  183. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_category_value_info.py +0 -0
  184. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_column_info.py +0 -0
  185. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_column_profile_detail.py +0 -0
  186. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_column_profile_detail_one_of.py +0 -0
  187. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_column_profile_detail_one_of1.py +0 -0
  188. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_column_profile_detail_one_of2.py +0 -0
  189. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_column_profile_detail_one_of3.py +0 -0
  190. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_column_profile_detail_one_of4.py +0 -0
  191. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_column_profile_info.py +0 -0
  192. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_connection_health_response.py +0 -0
  193. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_connection_info.py +0 -0
  194. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_connection_refresh_result.py +0 -0
  195. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_connection_schema_error.py +0 -0
  196. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_connection_type_detail.py +0 -0
  197. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_connection_type_summary.py +0 -0
  198. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_connection_types_api.py +0 -0
  199. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_create_connection_request.py +0 -0
  200. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_create_connection_response.py +0 -0
  201. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_create_database_response.py +0 -0
  202. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_create_embedding_provider_request.py +0 -0
  203. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_create_embedding_provider_response.py +0 -0
  204. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_create_index_request.py +0 -0
  205. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_create_saved_query_request.py +0 -0
  206. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_create_secret_request.py +0 -0
  207. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_create_secret_response.py +0 -0
  208. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_create_upload_request.py +0 -0
  209. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_create_workspace_request.py +0 -0
  210. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_create_workspace_response.py +0 -0
  211. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_database_attachment_info.py +0 -0
  212. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_database_context_api.py +0 -0
  213. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_database_context_entry.py +0 -0
  214. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_discovery_status.py +0 -0
  215. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_embedding_provider_response.py +0 -0
  216. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_embedding_providers_api.py +0 -0
  217. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_error.py +0 -0
  218. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_execute_saved_query_request.py +0 -0
  219. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_finalize_upload_part.py +0 -0
  220. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_finalize_upload_request.py +0 -0
  221. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_finalize_upload_response.py +0 -0
  222. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_get_connection_response.py +0 -0
  223. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_get_database_context_response.py +0 -0
  224. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_get_result_response.py +0 -0
  225. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_get_secret_response.py +0 -0
  226. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_index_entry_response.py +0 -0
  227. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_index_info_response.py +0 -0
  228. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_index_status.py +0 -0
  229. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_indexes_api.py +0 -0
  230. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_information_schema_api.py +0 -0
  231. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_information_schema_response.py +0 -0
  232. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_job_result.py +0 -0
  233. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_job_status.py +0 -0
  234. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_job_status_response.py +0 -0
  235. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_job_type.py +0 -0
  236. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_jobs_api.py +0 -0
  237. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_list_connection_types_response.py +0 -0
  238. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_list_connections_response.py +0 -0
  239. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_list_database_contexts_response.py +0 -0
  240. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_list_embedding_providers_response.py +0 -0
  241. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_list_indexes_page_response.py +0 -0
  242. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_list_indexes_response.py +0 -0
  243. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_list_jobs_response.py +0 -0
  244. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_list_query_runs_response.py +0 -0
  245. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_list_results_response.py +0 -0
  246. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_list_saved_queries_response.py +0 -0
  247. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_list_saved_query_versions_response.py +0 -0
  248. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_list_secrets_response.py +0 -0
  249. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_list_uploads_response.py +0 -0
  250. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_list_workspaces_response.py +0 -0
  251. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_load_managed_table_response.py +0 -0
  252. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_managed_schema_response.py +0 -0
  253. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_managed_table_response.py +0 -0
  254. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_mint_upload_parts_request.py +0 -0
  255. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_mint_upload_parts_response.py +0 -0
  256. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_minted_upload_part_response.py +0 -0
  257. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_numeric_profile_detail.py +0 -0
  258. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_query_api.py +0 -0
  259. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_query_request.py +0 -0
  260. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_query_response.py +0 -0
  261. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_query_run_info.py +0 -0
  262. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_query_runs_api.py +0 -0
  263. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_refresh_api.py +0 -0
  264. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_refresh_request.py +0 -0
  265. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_refresh_response.py +0 -0
  266. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_refresh_warning.py +0 -0
  267. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_result_info.py +0 -0
  268. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_results_api.py +0 -0
  269. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_results_format_query.py +0 -0
  270. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_saved_queries_api.py +0 -0
  271. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_saved_query_detail.py +0 -0
  272. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_saved_query_summary.py +0 -0
  273. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_saved_query_version_info.py +0 -0
  274. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_schema_refresh_result.py +0 -0
  275. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_secret_metadata_response.py +0 -0
  276. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_secrets_api.py +0 -0
  277. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_submit_job_response.py +0 -0
  278. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_table_info.py +0 -0
  279. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_table_profile_response.py +0 -0
  280. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_table_refresh_error.py +0 -0
  281. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_table_refresh_result.py +0 -0
  282. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_temporal_profile_detail.py +0 -0
  283. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_text_profile_detail.py +0 -0
  284. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_update_embedding_provider_request.py +0 -0
  285. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_update_embedding_provider_response.py +0 -0
  286. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_update_saved_query_request.py +0 -0
  287. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_update_secret_request.py +0 -0
  288. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_update_secret_response.py +0 -0
  289. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_upload_info.py +0 -0
  290. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_upload_response.py +0 -0
  291. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_upload_session_response.py +0 -0
  292. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_uploads_api.py +0 -0
  293. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_upsert_database_context_request.py +0 -0
  294. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_upsert_database_context_response.py +0 -0
  295. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_usage_api.py +0 -0
  296. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_workspace_detail.py +0 -0
  297. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_workspace_list_item.py +0 -0
  298. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_workspace_usage_response.py +0 -0
  299. {hotdata-0.6.0 → hotdata-0.7.0}/test/test_workspaces_api.py +0 -0
  300. {hotdata-0.6.0 → hotdata-0.7.0}/tests/test_arrow.py +0 -0
  301. {hotdata-0.6.0 → hotdata-0.7.0}/tests/test_auth.py +0 -0
  302. {hotdata-0.6.0 → hotdata-0.7.0}/tests/test_query.py +0 -0
  303. {hotdata-0.6.0 → hotdata-0.7.0}/tests/test_retry.py +0 -0
  304. {hotdata-0.6.0 → hotdata-0.7.0}/tests/test_update_changelog.py +0 -0
  305. {hotdata-0.6.0 → hotdata-0.7.0}/tests/test_upload_codex_fixes.py +0 -0
  306. {hotdata-0.6.0 → hotdata-0.7.0}/tests/test_upload_multipart_resilient.py +0 -0
  307. {hotdata-0.6.0 → hotdata-0.7.0}/tests/test_upload_parity_fixes.py +0 -0
  308. {hotdata-0.6.0 → hotdata-0.7.0}/tests/test_upload_resilient.py +0 -0
  309. {hotdata-0.6.0 → hotdata-0.7.0}/tests/test_upload_retry_policy.py +0 -0
  310. {hotdata-0.6.0 → hotdata-0.7.0}/tests/test_upload_watchdog.py +0 -0
  311. {hotdata-0.6.0 → hotdata-0.7.0}/tests/test_uploads.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hotdata
3
- Version: 0.6.0
3
+ Version: 0.7.0
4
4
  Summary: Hotdata API
5
5
  Author-email: Hotdata <developers@hotdata.dev>
6
6
  License: MIT
@@ -2601,9 +2601,9 @@ class ConnectionsApi:
2601
2601
  _headers: Optional[Dict[StrictStr, Any]] = None,
2602
2602
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2603
2603
  ) -> LoadManagedTableResponse:
2604
- """Load managed table from upload
2604
+ """Load managed table from upload or query result
2605
2605
 
2606
- Publish a previously-uploaded file as the new contents of a managed table. CSV, JSON, and Parquet uploads are supported; the format is auto-detected from the upload's `Content-Type` and file contents, or set explicitly via the `format` field. If the target table (or its schema) has not been declared yet, it is created automatically as part of the load — declaring tables up front is optional. `mode` selects how the upload is applied: `replace` overwrites the table's contents, `append` inserts the uploaded rows on top of the existing data. Concurrent loads against the same upload return 409. Set `async` to run the load in the background and get back a job ID to poll; add `async_after_ms` to wait briefly for it to finish before falling back to a job ID.
2606
+ Publish data as the new contents of a managed table from one of two sources — provide exactly one. With `upload_id`, a previously-uploaded file is published: CSV, JSON, and Parquet are supported; the format is auto-detected from the upload's `Content-Type` and file contents, or set explicitly via the `format` field. With `result_id`, a persisted query result is copied into the table, so the table keeps its data even after the result expires; a result can be loaded into any number of tables. If the target table (or its schema) has not been declared yet, it is created automatically as part of the load — declaring tables up front is optional. `mode` selects how the data is applied: `replace` overwrites the table's contents, `append` inserts the new rows on top of the existing data. Concurrent loads against the same upload return 409. For an upload, set `async` to run the load in the background and get back a job ID to poll; add `async_after_ms` to wait briefly for it to finish before falling back to a job ID. A `result_id` load runs synchronously.
2607
2607
 
2608
2608
  :param connection_id: Connection ID (required)
2609
2609
  :type connection_id: str
@@ -2684,9 +2684,9 @@ class ConnectionsApi:
2684
2684
  _headers: Optional[Dict[StrictStr, Any]] = None,
2685
2685
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2686
2686
  ) -> ApiResponse[LoadManagedTableResponse]:
2687
- """Load managed table from upload
2687
+ """Load managed table from upload or query result
2688
2688
 
2689
- Publish a previously-uploaded file as the new contents of a managed table. CSV, JSON, and Parquet uploads are supported; the format is auto-detected from the upload's `Content-Type` and file contents, or set explicitly via the `format` field. If the target table (or its schema) has not been declared yet, it is created automatically as part of the load — declaring tables up front is optional. `mode` selects how the upload is applied: `replace` overwrites the table's contents, `append` inserts the uploaded rows on top of the existing data. Concurrent loads against the same upload return 409. Set `async` to run the load in the background and get back a job ID to poll; add `async_after_ms` to wait briefly for it to finish before falling back to a job ID.
2689
+ Publish data as the new contents of a managed table from one of two sources — provide exactly one. With `upload_id`, a previously-uploaded file is published: CSV, JSON, and Parquet are supported; the format is auto-detected from the upload's `Content-Type` and file contents, or set explicitly via the `format` field. With `result_id`, a persisted query result is copied into the table, so the table keeps its data even after the result expires; a result can be loaded into any number of tables. If the target table (or its schema) has not been declared yet, it is created automatically as part of the load — declaring tables up front is optional. `mode` selects how the data is applied: `replace` overwrites the table's contents, `append` inserts the new rows on top of the existing data. Concurrent loads against the same upload return 409. For an upload, set `async` to run the load in the background and get back a job ID to poll; add `async_after_ms` to wait briefly for it to finish before falling back to a job ID. A `result_id` load runs synchronously.
2690
2690
 
2691
2691
  :param connection_id: Connection ID (required)
2692
2692
  :type connection_id: str
@@ -2767,9 +2767,9 @@ class ConnectionsApi:
2767
2767
  _headers: Optional[Dict[StrictStr, Any]] = None,
2768
2768
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2769
2769
  ) -> RESTResponseType:
2770
- """Load managed table from upload
2770
+ """Load managed table from upload or query result
2771
2771
 
2772
- Publish a previously-uploaded file as the new contents of a managed table. CSV, JSON, and Parquet uploads are supported; the format is auto-detected from the upload's `Content-Type` and file contents, or set explicitly via the `format` field. If the target table (or its schema) has not been declared yet, it is created automatically as part of the load — declaring tables up front is optional. `mode` selects how the upload is applied: `replace` overwrites the table's contents, `append` inserts the uploaded rows on top of the existing data. Concurrent loads against the same upload return 409. Set `async` to run the load in the background and get back a job ID to poll; add `async_after_ms` to wait briefly for it to finish before falling back to a job ID.
2772
+ Publish data as the new contents of a managed table from one of two sources — provide exactly one. With `upload_id`, a previously-uploaded file is published: CSV, JSON, and Parquet are supported; the format is auto-detected from the upload's `Content-Type` and file contents, or set explicitly via the `format` field. With `result_id`, a persisted query result is copied into the table, so the table keeps its data even after the result expires; a result can be loaded into any number of tables. If the target table (or its schema) has not been declared yet, it is created automatically as part of the load — declaring tables up front is optional. `mode` selects how the data is applied: `replace` overwrites the table's contents, `append` inserts the new rows on top of the existing data. Concurrent loads against the same upload return 409. For an upload, set `async` to run the load in the background and get back a job ID to poll; add `async_after_ms` to wait briefly for it to finish before falling back to a job ID. A `result_id` load runs synchronously.
2773
2773
 
2774
2774
  :param connection_id: Connection ID (required)
2775
2775
  :type connection_id: str
@@ -2315,9 +2315,9 @@ class DatabasesApi:
2315
2315
  _headers: Optional[Dict[StrictStr, Any]] = None,
2316
2316
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2317
2317
  ) -> LoadManagedTableResponse:
2318
- """Load database table from upload
2318
+ """Load database table from upload or query result
2319
2319
 
2320
- Publish a previously-uploaded file as the new contents of a table on the database's default catalog. The database-scoped equivalent of the connection-scoped managed-table load — addressed by `database_id`, so no `default_connection_id` is needed. CSV, JSON, and Parquet uploads are supported; the format is auto-detected or set via `format`. If the target table (or its schema) has not been declared yet, it is created automatically as part of the load — declaring tables up front is optional. `mode` selects how the upload is applied: `replace` overwrites the table's contents, `append` inserts the uploaded rows on top of the existing data. Concurrent loads against the same upload return 409. Set `async` to run the load in the background and get back a job ID to poll; add `async_after_ms` to wait briefly for it to finish before falling back to a job ID.
2320
+ Publish data as the new contents of a table on the database's default catalog, from one of two sources — provide exactly one. The database-scoped equivalent of the connection-scoped managed-table load — addressed by `database_id`, so no `default_connection_id` is needed. With `upload_id`, a previously-uploaded file is published: CSV, JSON, and Parquet are supported; the format is auto-detected or set via `format`. With `result_id`, a persisted query result is copied into the table, so the table keeps its data even after the result expires. If the target table (or its schema) has not been declared yet, it is created automatically as part of the load — declaring tables up front is optional. `mode` selects how the data is applied: `replace` overwrites the table's contents, `append` inserts the new rows on top of the existing data. Concurrent loads against the same upload return 409. For an upload, set `async` to run the load in the background and get back a job ID to poll; add `async_after_ms` to wait briefly for it to finish before falling back to a job ID. A `result_id` load runs synchronously.
2321
2321
 
2322
2322
  :param database_id: Database ID (required)
2323
2323
  :type database_id: str
@@ -2398,9 +2398,9 @@ class DatabasesApi:
2398
2398
  _headers: Optional[Dict[StrictStr, Any]] = None,
2399
2399
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2400
2400
  ) -> ApiResponse[LoadManagedTableResponse]:
2401
- """Load database table from upload
2401
+ """Load database table from upload or query result
2402
2402
 
2403
- Publish a previously-uploaded file as the new contents of a table on the database's default catalog. The database-scoped equivalent of the connection-scoped managed-table load — addressed by `database_id`, so no `default_connection_id` is needed. CSV, JSON, and Parquet uploads are supported; the format is auto-detected or set via `format`. If the target table (or its schema) has not been declared yet, it is created automatically as part of the load — declaring tables up front is optional. `mode` selects how the upload is applied: `replace` overwrites the table's contents, `append` inserts the uploaded rows on top of the existing data. Concurrent loads against the same upload return 409. Set `async` to run the load in the background and get back a job ID to poll; add `async_after_ms` to wait briefly for it to finish before falling back to a job ID.
2403
+ Publish data as the new contents of a table on the database's default catalog, from one of two sources — provide exactly one. The database-scoped equivalent of the connection-scoped managed-table load — addressed by `database_id`, so no `default_connection_id` is needed. With `upload_id`, a previously-uploaded file is published: CSV, JSON, and Parquet are supported; the format is auto-detected or set via `format`. With `result_id`, a persisted query result is copied into the table, so the table keeps its data even after the result expires. If the target table (or its schema) has not been declared yet, it is created automatically as part of the load — declaring tables up front is optional. `mode` selects how the data is applied: `replace` overwrites the table's contents, `append` inserts the new rows on top of the existing data. Concurrent loads against the same upload return 409. For an upload, set `async` to run the load in the background and get back a job ID to poll; add `async_after_ms` to wait briefly for it to finish before falling back to a job ID. A `result_id` load runs synchronously.
2404
2404
 
2405
2405
  :param database_id: Database ID (required)
2406
2406
  :type database_id: str
@@ -2481,9 +2481,9 @@ class DatabasesApi:
2481
2481
  _headers: Optional[Dict[StrictStr, Any]] = None,
2482
2482
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2483
2483
  ) -> RESTResponseType:
2484
- """Load database table from upload
2484
+ """Load database table from upload or query result
2485
2485
 
2486
- Publish a previously-uploaded file as the new contents of a table on the database's default catalog. The database-scoped equivalent of the connection-scoped managed-table load — addressed by `database_id`, so no `default_connection_id` is needed. CSV, JSON, and Parquet uploads are supported; the format is auto-detected or set via `format`. If the target table (or its schema) has not been declared yet, it is created automatically as part of the load — declaring tables up front is optional. `mode` selects how the upload is applied: `replace` overwrites the table's contents, `append` inserts the uploaded rows on top of the existing data. Concurrent loads against the same upload return 409. Set `async` to run the load in the background and get back a job ID to poll; add `async_after_ms` to wait briefly for it to finish before falling back to a job ID.
2486
+ Publish data as the new contents of a table on the database's default catalog, from one of two sources — provide exactly one. The database-scoped equivalent of the connection-scoped managed-table load — addressed by `database_id`, so no `default_connection_id` is needed. With `upload_id`, a previously-uploaded file is published: CSV, JSON, and Parquet are supported; the format is auto-detected or set via `format`. With `result_id`, a persisted query result is copied into the table, so the table keeps its data even after the result expires. If the target table (or its schema) has not been declared yet, it is created automatically as part of the load — declaring tables up front is optional. `mode` selects how the data is applied: `replace` overwrites the table's contents, `append` inserts the new rows on top of the existing data. Concurrent loads against the same upload return 409. For an upload, set `async` to run the load in the background and get back a job ID to poll; add `async_after_ms` to wait briefly for it to finish before falling back to a job ID. A `result_id` load runs synchronously.
2487
2487
 
2488
2488
  :param database_id: Database ID (required)
2489
2489
  :type database_id: str
@@ -18,8 +18,8 @@ import pprint
18
18
  import re # noqa: F401
19
19
  import json
20
20
 
21
- from pydantic import BaseModel, ConfigDict, StrictStr
22
- from typing import Any, ClassVar, Dict, List
21
+ from pydantic import BaseModel, ConfigDict, Field, StrictStr
22
+ from typing import Any, ClassVar, Dict, List, Optional
23
23
  from typing import Optional, Set
24
24
  from typing_extensions import Self
25
25
 
@@ -27,8 +27,9 @@ class AddManagedTableDecl(BaseModel):
27
27
  """
28
28
  One table declaration inside an add-schema request body.
29
29
  """ # noqa: E501
30
+ key: Optional[List[StrictStr]] = Field(default=None, description="Columns that uniquely identify a row, enabling the key-based load modes (`delete`, `update`, `upsert`) on this table: those loads match rows by these columns' values. Omit (the default) to declare no key; the table can still be loaded with `replace` and `append`, but key-based modes are then rejected.")
30
31
  name: StrictStr
31
- __properties: ClassVar[List[str]] = ["name"]
32
+ __properties: ClassVar[List[str]] = ["key", "name"]
32
33
 
33
34
  model_config = ConfigDict(
34
35
  populate_by_name=True,
@@ -81,6 +82,7 @@ class AddManagedTableDecl(BaseModel):
81
82
  return cls.model_validate(obj)
82
83
 
83
84
  _obj = cls.model_validate({
85
+ "key": obj.get("key"),
84
86
  "name": obj.get("name")
85
87
  })
86
88
  return _obj
@@ -18,8 +18,8 @@ import pprint
18
18
  import re # noqa: F401
19
19
  import json
20
20
 
21
- from pydantic import BaseModel, ConfigDict, StrictStr
22
- from typing import Any, ClassVar, Dict, List
21
+ from pydantic import BaseModel, ConfigDict, Field, StrictStr
22
+ from typing import Any, ClassVar, Dict, List, Optional
23
23
  from typing import Optional, Set
24
24
  from typing_extensions import Self
25
25
 
@@ -27,8 +27,9 @@ class AddManagedTableRequest(BaseModel):
27
27
  """
28
28
  Request body for adding a table to an existing schema: `POST /v1/connections/{id}/schemas/{schema}/tables` and `POST /v1/databases/{id}/schemas/{schema}/tables`.
29
29
  """ # noqa: E501
30
+ key: Optional[List[StrictStr]] = Field(default=None, description="Columns that uniquely identify a row, enabling the key-based load modes (`delete`, `update`, `upsert`) on this table: those loads match rows by these columns' values. Omit (the default) to declare no key; the table can still be loaded with `replace` and `append`, but key-based modes are then rejected.")
30
31
  name: StrictStr
31
- __properties: ClassVar[List[str]] = ["name"]
32
+ __properties: ClassVar[List[str]] = ["key", "name"]
32
33
 
33
34
  model_config = ConfigDict(
34
35
  populate_by_name=True,
@@ -81,6 +82,7 @@ class AddManagedTableRequest(BaseModel):
81
82
  return cls.model_validate(obj)
82
83
 
83
84
  _obj = cls.model_validate({
85
+ "key": obj.get("key"),
84
86
  "name": obj.get("name")
85
87
  })
86
88
  return _obj
@@ -18,8 +18,8 @@ import pprint
18
18
  import re # noqa: F401
19
19
  import json
20
20
 
21
- from pydantic import BaseModel, ConfigDict, StrictStr
22
- from typing import Any, ClassVar, Dict, List
21
+ from pydantic import BaseModel, ConfigDict, Field, StrictStr
22
+ from typing import Any, ClassVar, Dict, List, Optional
23
23
  from typing import Optional, Set
24
24
  from typing_extensions import Self
25
25
 
@@ -27,8 +27,9 @@ class DatabaseDefaultTableDecl(BaseModel):
27
27
  """
28
28
  One table declaration inside a default-catalog schema, supplied at database-create time.
29
29
  """ # noqa: E501
30
+ key: Optional[List[StrictStr]] = Field(default=None, description="Columns that uniquely identify a row, enabling the key-based load modes (`delete`, `update`, `upsert`) on this table: those loads match rows by these columns' values. Omit (the default) to declare no key; the table can still be loaded with `replace` and `append`, but key-based modes are then rejected.")
30
31
  name: StrictStr
31
- __properties: ClassVar[List[str]] = ["name"]
32
+ __properties: ClassVar[List[str]] = ["key", "name"]
32
33
 
33
34
  model_config = ConfigDict(
34
35
  populate_by_name=True,
@@ -81,6 +82,7 @@ class DatabaseDefaultTableDecl(BaseModel):
81
82
  return cls.model_validate(obj)
82
83
 
83
84
  _obj = cls.model_validate({
85
+ "key": obj.get("key"),
84
86
  "name": obj.get("name")
85
87
  })
86
88
  return _obj
@@ -30,12 +30,13 @@ class DatabaseDetailResponse(BaseModel):
30
30
  Response body for GET /databases/{database_id}
31
31
  """ # noqa: E501
32
32
  attachments: List[DatabaseAttachmentInfo]
33
+ created_at: Optional[datetime] = Field(default=None, description="When the database was created.")
33
34
  default_catalog: StrictStr = Field(description="Name the database's default catalog answers to inside its query scope (`default` unless overridden at create time).")
34
35
  default_connection_id: StrictStr
35
36
  expires_at: Optional[datetime] = Field(default=None, description="When this database expires.")
36
37
  id: StrictStr
37
38
  name: Optional[StrictStr] = None
38
- __properties: ClassVar[List[str]] = ["attachments", "default_catalog", "default_connection_id", "expires_at", "id", "name"]
39
+ __properties: ClassVar[List[str]] = ["attachments", "created_at", "default_catalog", "default_connection_id", "expires_at", "id", "name"]
39
40
 
40
41
  model_config = ConfigDict(
41
42
  populate_by_name=True,
@@ -83,6 +84,11 @@ class DatabaseDetailResponse(BaseModel):
83
84
  if _item_attachments:
84
85
  _items.append(_item_attachments.to_dict())
85
86
  _dict['attachments'] = _items
87
+ # set to None if created_at (nullable) is None
88
+ # and model_fields_set contains the field
89
+ if self.created_at is None and "created_at" in self.model_fields_set:
90
+ _dict['created_at'] = None
91
+
86
92
  # set to None if expires_at (nullable) is None
87
93
  # and model_fields_set contains the field
88
94
  if self.expires_at is None and "expires_at" in self.model_fields_set:
@@ -106,6 +112,7 @@ class DatabaseDetailResponse(BaseModel):
106
112
 
107
113
  _obj = cls.model_validate({
108
114
  "attachments": [DatabaseAttachmentInfo.from_dict(_item) for _item in obj["attachments"]] if obj.get("attachments") is not None else None,
115
+ "created_at": obj.get("created_at"),
109
116
  "default_catalog": obj.get("default_catalog"),
110
117
  "default_connection_id": obj.get("default_connection_id"),
111
118
  "expires_at": obj.get("expires_at"),
@@ -28,11 +28,12 @@ class DatabaseSummary(BaseModel):
28
28
  """
29
29
  Summary item in GET /databases
30
30
  """ # noqa: E501
31
+ created_at: Optional[datetime] = Field(default=None, description="When the database was created.")
31
32
  default_catalog: StrictStr = Field(description="Name the database's default catalog answers to inside its query scope.")
32
33
  expires_at: Optional[datetime] = None
33
34
  id: StrictStr
34
35
  name: Optional[StrictStr] = None
35
- __properties: ClassVar[List[str]] = ["default_catalog", "expires_at", "id", "name"]
36
+ __properties: ClassVar[List[str]] = ["created_at", "default_catalog", "expires_at", "id", "name"]
36
37
 
37
38
  model_config = ConfigDict(
38
39
  populate_by_name=True,
@@ -73,6 +74,11 @@ class DatabaseSummary(BaseModel):
73
74
  exclude=excluded_fields,
74
75
  exclude_none=True,
75
76
  )
77
+ # set to None if created_at (nullable) is None
78
+ # and model_fields_set contains the field
79
+ if self.created_at is None and "created_at" in self.model_fields_set:
80
+ _dict['created_at'] = None
81
+
76
82
  # set to None if expires_at (nullable) is None
77
83
  # and model_fields_set contains the field
78
84
  if self.expires_at is None and "expires_at" in self.model_fields_set:
@@ -95,6 +101,7 @@ class DatabaseSummary(BaseModel):
95
101
  return cls.model_validate(obj)
96
102
 
97
103
  _obj = cls.model_validate({
104
+ "created_at": obj.get("created_at"),
98
105
  "default_catalog": obj.get("default_catalog"),
99
106
  "expires_at": obj.get("expires_at"),
100
107
  "id": obj.get("id"),
@@ -26,14 +26,15 @@ from typing_extensions import Self
26
26
 
27
27
  class LoadManagedTableRequest(BaseModel):
28
28
  """
29
- Request body for the managed-table load endpoints — the connection-scoped `POST /v1/connections/{connection_id}/schemas/{schema}/tables/{table}/loads` and the database-scoped equivalent. Publishes a previously-uploaded file to the named table. CSV and JSON uploads are converted to columnar storage on load; Parquet uploads are published directly. `mode` selects whether the upload replaces the table's contents or is appended on top of them.
29
+ Request body for the managed-table load endpoints — the connection-scoped `POST /v1/connections/{connection_id}/schemas/{schema}/tables/{table}/loads` and the database-scoped equivalent. Publishes data to the named table from one of two sources: a previously uploaded file (`upload_id`) or a persisted query result (`result_id`). Provide exactly one. CSV and JSON uploads are converted to columnar storage on load; Parquet uploads and query results are published directly. `mode` selects whether the data replaces the table's contents or is appended on top of them.
30
30
  """ # noqa: E501
31
31
  var_async: Optional[StrictBool] = Field(default=None, description="When true, run the load as a background job and return a job ID to poll instead of blocking until it finishes. Recommended for large uploads, which can take longer than an HTTP request should stay open.", alias="async")
32
32
  async_after_ms: Optional[Annotated[int, Field(strict=True, ge=1000)]] = Field(default=None, description="If set (requires `async` = true), wait up to this many milliseconds for the load to finish: if it completes in time the full result is returned (200), otherwise a 202 with a job ID to poll. Must be between 1000 and the server maximum; a value out of that range, or set without `async` = true, is rejected with 400.")
33
- format: Optional[StrictStr] = Field(default=None, description="File format of the upload: `\"csv\"`, `\"json\"`, or `\"parquet\"`. Optional — when omitted, the format is auto-detected from the upload's `Content-Type` and, failing that, from the file contents. Provide it explicitly to override detection or when the contents are ambiguous. `\"json\"` expects newline-delimited JSON (one object per line), not a JSON array.")
34
- mode: StrictStr = Field(description="How the upload is applied: `\"replace\"` overwrites the table's contents, `\"append\"` inserts the uploaded rows on top of the existing data.")
35
- upload_id: StrictStr = Field(description="ID of a previously-staged upload (see `POST /v1/files`). The upload is claimed atomically; concurrent loads against the same `upload_id` return 409.")
36
- __properties: ClassVar[List[str]] = ["async", "async_after_ms", "format", "mode", "upload_id"]
33
+ format: Optional[StrictStr] = Field(default=None, description="File format of the upload: `\"csv\"`, `\"json\"`, or `\"parquet\"`. Optional — when omitted, the format is auto-detected from the upload's `Content-Type` and, failing that, from the file contents. Provide it explicitly to override detection or when the contents are ambiguous. `\"json\"` expects newline-delimited JSON (one object per line), not a JSON array. Only applies to `upload_id`; query results are always parquet.")
34
+ mode: StrictStr = Field(description="How the data is applied: `\"replace\"` overwrites the table's contents, `\"append\"` inserts the new rows on top of the existing data.")
35
+ result_id: Optional[StrictStr] = Field(default=None, description="ID of a persisted query result (see `GET /v1/results/{result_id}`) to publish as the table's contents. The result is copied into the table, so the table keeps its data even after the result expires. A result can be loaded into any number of tables. Provide either this or `upload_id`, not both.")
36
+ upload_id: Optional[StrictStr] = Field(default=None, description="ID of a previously-staged upload (see `POST /v1/files`). The upload is claimed atomically; concurrent loads against the same `upload_id` return 409. Provide either this or `result_id`, not both.")
37
+ __properties: ClassVar[List[str]] = ["async", "async_after_ms", "format", "mode", "result_id", "upload_id"]
37
38
 
38
39
  model_config = ConfigDict(
39
40
  populate_by_name=True,
@@ -84,6 +85,16 @@ class LoadManagedTableRequest(BaseModel):
84
85
  if self.format is None and "format" in self.model_fields_set:
85
86
  _dict['format'] = None
86
87
 
88
+ # set to None if result_id (nullable) is None
89
+ # and model_fields_set contains the field
90
+ if self.result_id is None and "result_id" in self.model_fields_set:
91
+ _dict['result_id'] = None
92
+
93
+ # set to None if upload_id (nullable) is None
94
+ # and model_fields_set contains the field
95
+ if self.upload_id is None and "upload_id" in self.model_fields_set:
96
+ _dict['upload_id'] = None
97
+
87
98
  return _dict
88
99
 
89
100
  @classmethod
@@ -100,6 +111,7 @@ class LoadManagedTableRequest(BaseModel):
100
111
  "async_after_ms": obj.get("async_after_ms"),
101
112
  "format": obj.get("format"),
102
113
  "mode": obj.get("mode"),
114
+ "result_id": obj.get("result_id"),
103
115
  "upload_id": obj.get("upload_id")
104
116
  })
105
117
  return _obj
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hotdata
3
- Version: 0.6.0
3
+ Version: 0.7.0
4
4
  Summary: Hotdata API
5
5
  Author-email: Hotdata <developers@hotdata.dev>
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "hotdata"
3
- version = "0.6.0"
3
+ version = "0.7.0"
4
4
  description = "Hotdata API"
5
5
  authors = [
6
6
  {name = "Hotdata",email = "developers@hotdata.dev"},
@@ -39,6 +39,9 @@ class TestAddManagedSchemaRequest(unittest.TestCase):
39
39
  name = '',
40
40
  tables = [
41
41
  hotdata.models.add_managed_table_decl.AddManagedTableDecl(
42
+ key = [
43
+ ''
44
+ ],
42
45
  name = '', )
43
46
  ]
44
47
  )
@@ -36,6 +36,9 @@ class TestAddManagedTableDecl(unittest.TestCase):
36
36
  model = AddManagedTableDecl()
37
37
  if include_optional:
38
38
  return AddManagedTableDecl(
39
+ key = [
40
+ ''
41
+ ],
39
42
  name = ''
40
43
  )
41
44
  else:
@@ -36,6 +36,9 @@ class TestAddManagedTableRequest(unittest.TestCase):
36
36
  model = AddManagedTableRequest()
37
37
  if include_optional:
38
38
  return AddManagedTableRequest(
39
+ key = [
40
+ ''
41
+ ],
39
42
  name = ''
40
43
  )
41
44
  else:
@@ -93,7 +93,7 @@ class TestConnectionsApi(unittest.TestCase):
93
93
  def test_load_managed_table(self) -> None:
94
94
  """Test case for load_managed_table
95
95
 
96
- Load managed table from upload
96
+ Load managed table from upload or query result
97
97
  """
98
98
  pass
99
99
 
@@ -44,6 +44,9 @@ class TestCreateDatabaseRequest(unittest.TestCase):
44
44
  name = '',
45
45
  tables = [
46
46
  hotdata.models.database_default_table_decl.DatabaseDefaultTableDecl(
47
+ key = [
48
+ ''
49
+ ],
47
50
  name = '', )
48
51
  ], )
49
52
  ]
@@ -39,6 +39,9 @@ class TestDatabaseDefaultSchemaDecl(unittest.TestCase):
39
39
  name = '',
40
40
  tables = [
41
41
  hotdata.models.database_default_table_decl.DatabaseDefaultTableDecl(
42
+ key = [
43
+ ''
44
+ ],
42
45
  name = '', )
43
46
  ]
44
47
  )
@@ -36,6 +36,9 @@ class TestDatabaseDefaultTableDecl(unittest.TestCase):
36
36
  model = DatabaseDefaultTableDecl()
37
37
  if include_optional:
38
38
  return DatabaseDefaultTableDecl(
39
+ key = [
40
+ ''
41
+ ],
39
42
  name = ''
40
43
  )
41
44
  else:
@@ -41,6 +41,7 @@ class TestDatabaseDetailResponse(unittest.TestCase):
41
41
  alias = '',
42
42
  connection_id = '', )
43
43
  ],
44
+ created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'),
44
45
  default_catalog = '',
45
46
  default_connection_id = '',
46
47
  expires_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'),
@@ -36,6 +36,7 @@ class TestDatabaseSummary(unittest.TestCase):
36
36
  model = DatabaseSummary()
37
37
  if include_optional:
38
38
  return DatabaseSummary(
39
+ created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'),
39
40
  default_catalog = '',
40
41
  expires_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'),
41
42
  id = '',
@@ -86,7 +86,7 @@ class TestDatabasesApi(unittest.TestCase):
86
86
  def test_load_database_table(self) -> None:
87
87
  """Test case for load_database_table
88
88
 
89
- Load database table from upload
89
+ Load database table from upload or query result
90
90
  """
91
91
  pass
92
92
 
@@ -38,6 +38,7 @@ class TestListDatabasesResponse(unittest.TestCase):
38
38
  return ListDatabasesResponse(
39
39
  databases = [
40
40
  hotdata.models.database_summary.DatabaseSummary(
41
+ created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'),
41
42
  default_catalog = '',
42
43
  expires_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'),
43
44
  id = '',
@@ -48,6 +49,7 @@ class TestListDatabasesResponse(unittest.TestCase):
48
49
  return ListDatabasesResponse(
49
50
  databases = [
50
51
  hotdata.models.database_summary.DatabaseSummary(
52
+ created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'),
51
53
  default_catalog = '',
52
54
  expires_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'),
53
55
  id = '',
@@ -40,12 +40,12 @@ class TestLoadManagedTableRequest(unittest.TestCase):
40
40
  async_after_ms = 1000,
41
41
  format = '',
42
42
  mode = '',
43
+ result_id = '',
43
44
  upload_id = ''
44
45
  )
45
46
  else:
46
47
  return LoadManagedTableRequest(
47
48
  mode = '',
48
- upload_id = '',
49
49
  )
50
50
  """
51
51
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes