All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Regenerate the client from the updated Hotdata OpenAPI spec
- chore: remove datasets API and related job types
Configurationnow defaults to a retry policy that transparently retries pre-response connection resets (stale pooled keep-alive connections, e.g.ProtocolError('Connection aborted.', ConnectionResetError)) on every method, includingPOST. Such a reset happens before the request reaches the server, so retrying on a fresh connection cannot double-execute. Read timeouts and status retries stay idempotent-only. Pass an explicitretriesto override (#118).- chore: make api doc language end-user focused
hotdata.query.QueryApi: enhanced query client that transparently retries HTTP 429 (OVERLOADED) admission shedding honoringRetry-After, and auto-follows truncated results to materialize the full row set, guarded by configurablemax_auto_rows(default 1M) andmax_auto_bytes(default 64 MiB) ceilings (#688).ResultErrorbase class for the result-lifecycle exceptions (ResultFailedError,ResultTimeoutError,ResultTooLargeError,ResultIncompleteError,ResultUnavailableError) so callers can catch them with a singleexcept.
from hotdata import QueryApi/ResultsApinow resolve to the enhanced clients (429 retry + truncation auto-follow; Arrow IPC fetch) instead of the bare generated classes, so the default happy path gets the safe behavior the query contract needs. The raw generated classes remain importable fromhotdata.api.query_api/hotdata.api.results_api.
- feat(queries): add preview and total row count fields
- chore: regenerate client, drop orphaned sandbox files
- Raised dependency floors to patched releases:
pyarrow >= 14.0.1(CVE-2023-47248, RCE via unsafe deserialization) andpydantic >= 2.4.0(CVE-2024-3772, regex denial of service).
- Transparent API-token → JWT exchange: the client now exchanges an opaque API token for a short-lived JWT on first use and keeps it refreshed, so the wire always carries a current token. Credentials already shaped like a JWT pass through unchanged. Set
HOTDATA_DISABLE_JWT_EXCHANGEto an affirmative value (1,true,yes,on) as a hard escape hatch. - Managed-catalog editing endpoints:
add_managed_schemaandadd_managed_tableonConnectionsApiandDatabasesApi, with new modelsAddManagedSchemaRequest,AddManagedTableDecl,AddManagedTableRequest,ManagedSchemaResponse, andManagedTableResponse. - Typed
x_database_idparameter onSavedQueriesApi.execute_saved_query(required) andDatasetsApi.create_dataset, scoping execution to a database the same wayQueryApi.querydoes — no more_headersoverride. database_idfield onQueryRequestas a body-level alternative to theX-Database-Idheader.storage_backendfield onCreateDatabaseRequestto select the default catalog's physical backend (parquetorducklake).default_catalogfield onCreateDatabaseRequestto name the database's auto-created default catalog within its query scope, surfaced onCreateDatabaseResponse,DatabaseDetailResponse, andDatabaseSummary.
default_cataloganddefault_schemafields onQueryRequestto control how unqualified table references resolve within anX-Database-Idscope.
- Release 0.2.5
- Release 0.2.4
- Databases API client (
DatabasesApi) — create, get, list, delete databases and manage catalog attachments. - New models:
CreateDatabaseRequest,CreateDatabaseResponse,DatabaseDetailResponse,DatabaseSummary,DatabaseAttachmentInfo,DatabaseDefaultSchemaDecl,DatabaseDefaultTableDecl,ListDatabasesResponse,AttachDatabaseCatalogRequest. expires_atfield onCreateDatabaseRequestfor setting database expiry.connection_typesfield onListConnectionTypesResponse; updatedConnectionTypeDetailandConnectionTypeSummarymodels.
- Add
ApiClient.close()andRESTClientObject.close()so callers can release urllib3 connection pools and use context managers safely.
- Regenerated Results API client from the latest OpenAPI spec.
- Managed database API updates and publish workflow.
- Initial published release.