Skip to content

Releases: hotdata-dev/sdk-python

hotdata 0.5.0

Choose a tag to compare

@github-actions github-actions released this 28 Jun 16:28
c71e2c0

Added

  • hotdata.UploadsApi gains upload_file(source, ...), a transparent
    direct-to-storage upload. Give it a file path, raw bytes, or a seekable
    binary file object and it opens an upload session, sends the data straight
    to object storage
    (a single request for a small file, concurrent multipart
    for a large one), and finalizes — returning the FinalizeUploadResponse. Your
    bytes never round-trip through the API. Supports a progress callback, an
    auto-scaled (or caller-set) part size, bounded concurrency with a peak-memory
    budget, and idempotent per-part retry (tunable via part_retry). Failures
    raise a typed hierarchy under UploadError: StorageError,
    StorageTransportError, MissingETagError, MalformedSessionError, and
    SizeLimitError.
  • hotdata.UploadsApi.upload_stream uploads bytes or a binary stream
    (streamed without buffering) in a single request — the fallback for when
    direct-to-storage uploads aren't available or the source isn't seekable.
  • Table loads now accept CSV and JSON source files in addition to Parquet.

Changed

  • Regenerated the client from the updated Hotdata OpenAPI spec.
  • Documentation: removed stale datasets references and refreshed the MCP + CLI
    reference.

Removed

  • The datasets API and its related job types have been removed.

hotdata 0.4.1

Choose a tag to compare

@github-actions github-actions released this 19 Jun 15:12
8d67148

Changed

  • Configuration now 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, including POST. 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 explicit retries to
    override (#118).
  • chore: make api doc language end-user focused

hotdata 0.4.0

Choose a tag to compare

@github-actions github-actions released this 16 Jun 15:35
27133b5

Added

  • hotdata.query.QueryApi: enhanced query client that transparently retries
    HTTP 429 (OVERLOADED) admission shedding honoring Retry-After, and
    auto-follows truncated results to materialize the full row set, guarded by
    configurable max_auto_rows (default 1M) and max_auto_bytes (default
    64 MiB) ceilings (#688).
  • ResultError base class for the result-lifecycle exceptions
    (ResultFailedError, ResultTimeoutError, ResultTooLargeError,
    ResultIncompleteError, ResultUnavailableError) so callers can catch them
    with a single except.

Changed

  • from hotdata import QueryApi / ResultsApi now 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 from
    hotdata.api.query_api / hotdata.api.results_api.

hotdata 0.3.1

Choose a tag to compare

@github-actions github-actions released this 06 Jun 14:28
34e04c4

Security

  • Raised dependency floors to patched releases: pyarrow >= 14.0.1 (CVE-2023-47248, RCE via unsafe deserialization) and pydantic >= 2.4.0 (CVE-2024-3772, regex denial of service).

hotdata 0.3.0

Choose a tag to compare

@github-actions github-actions released this 05 Jun 21:17
1cb6338

Added

  • 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_EXCHANGE to an affirmative value (1, true, yes, on) as a hard escape hatch.
  • Managed-catalog editing endpoints: add_managed_schema and add_managed_table on ConnectionsApi and DatabasesApi, with new models AddManagedSchemaRequest, AddManagedTableDecl, AddManagedTableRequest, ManagedSchemaResponse, and ManagedTableResponse.
  • Typed x_database_id parameter on SavedQueriesApi.execute_saved_query (required) and DatasetsApi.create_dataset, scoping execution to a database the same way QueryApi.query does — no more _headers override.
  • database_id field on QueryRequest as a body-level alternative to the X-Database-Id header.
  • storage_backend field on CreateDatabaseRequest to select the default catalog's physical backend (parquet or ducklake).
  • default_catalog field on CreateDatabaseRequest to name the database's auto-created default catalog within its query scope, surfaced on CreateDatabaseResponse, DatabaseDetailResponse, and DatabaseSummary.

hotdata 0.2.6

Choose a tag to compare

@github-actions github-actions released this 29 May 21:20
09d662e

Added

  • default_catalog and default_schema fields on QueryRequest to control how unqualified table references resolve within an X-Database-Id scope.

hotdata 0.2.5

Choose a tag to compare

@github-actions github-actions released this 27 May 22:30
402efbc

Changed

  • Release 0.2.5

hotdata 0.2.4

Choose a tag to compare

@github-actions github-actions released this 27 May 22:04
be6fa87

Changed

  • Release 0.2.4

hotdata 0.2.3

Choose a tag to compare

@github-actions github-actions released this 23 May 04:40
d534189

Added

  • 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_at field on CreateDatabaseRequest for setting database expiry.
  • connection_types field on ListConnectionTypesResponse; updated ConnectionTypeDetail and ConnectionTypeSummary models.

hotdata 0.2.2

Choose a tag to compare

@eddietejeda eddietejeda released this 20 May 16:46
ff0b140

Fixed

  • Add ApiClient.close() and RESTClientObject.close() so callers can release urllib3 connection pools and use context managers safely.