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