Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ Changelog style — terse "bullet + brief why":

- Require `hotdata-framework>=0.14.1,<0.15` (was `>=0.14.0`); 0.14.1 allows
`hotdata<0.12`, a prerequisite for adopting hotdata 0.11.
- Require `hotdata>=0.11,<0.12` (was `>=0.9.0,<0.10`) and, for the `[ibis]` extra,
`hotdata-ibis>=0.6,<0.7` (was `>=0.5.0,<0.6`); hotdata 0.10 drops the JWT key
exchange (the API token is sent as the bearer directly).
- Diagnostic CLI retry defaults aligned with the destination's: `max_retries` 8
(was 5), `retry_backoff_seconds` 1.5 (was 1.0).

Expand Down
10 changes: 5 additions & 5 deletions docs/sql-client-spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -346,13 +346,13 @@ moves between dlt **minors** — method signatures, the cursor's `iter_arrow`/`i
import location of `WithSqlClient`. A minor bump can change the base-class contract out from under us.
Built/verified against `dlt==1.28.1`.

**Why cap the Hotdata SDKs — `hotdata>=0.9.0,<0.10`,
`hotdata-framework>=0.13.0,<0.14`.** The read path uses query/result API models,
**Why cap the Hotdata SDKs — `hotdata>=0.11,<0.12`,
`hotdata-framework>=0.14.1,<0.15`.** The read path uses query/result API models,
managed-table layout metadata, and the framework load helpers that carry native
append/delete/update/upsert support. These SDKs move quickly, so the destination
tracks one tested minor at a time.

The framework floor sits at 0.13 because every load on the `append`/`replace`
The framework floor is ≥0.13 because every load on the `append`/`replace`
path goes out as `mode="append"`, and an earlier framework runs an append at most
once — leaving the loads this package issues most, dlt's `_dlt_pipeline_state` /
`_dlt_loads` / `_dlt_version` bookkeeping among them, outside the caller's retry
Expand All @@ -364,8 +364,8 @@ all: a transitive cap here bounds them whatever their own pin says.
```toml
dependencies = [
"dlt>=1.28.1,<1.29", # subclass dlt internals -> cap the minor
"hotdata>=0.9.0,<0.10", # generated client: query/results APIs
"hotdata-framework>=0.13.0,<0.14", # managed-table load and layout helpers
"hotdata>=0.11,<0.12", # generated client: query/results APIs
"hotdata-framework>=0.14.1,<0.15", # managed-table load and layout helpers
...
]
```
Expand Down
18 changes: 8 additions & 10 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ dependencies = [
# create_managed_database(keys=) / add_managed_table(key=) (framework 0.8.0),
# for native delete/update/upsert.
#
# The floors are held ABOVE that on purpose: hotdata 0.9 is where the rest of
# The floors are held ABOVE that on purpose: hotdata 0.11 is where the rest of
# the toolchain has moved, and admitting older versions would mean supporting
# a matrix nothing tests. The framework floor is the one with a hard reason.
#
Expand All @@ -40,7 +40,7 @@ dependencies = [
# The cap stays at the minor for the reason above it, and widening it is
# what lets a consumer of this package adopt a newer framework at all: a
# transitive cap here is what blocks them, not their own pin.
"hotdata>=0.9.0,<0.10",
"hotdata>=0.11,<0.12",
"hotdata-framework>=0.14.1,<0.15",
"pandas>=2.0",
"pyarrow>=14",
Expand All @@ -50,14 +50,12 @@ dependencies = [
# Live ibis backend for dataset().ibis(). Pulls the out-of-tree ibis.hotdata
# backend and ibis itself; the base install stays ibis-free.
#
# hotdata-ibis 0.5.0 is the first release without a `hotdata<0.9` cap. That cap
# is why this floor is worth recording: uv resolves a project's own extras into
# one universal lockfile, so hotdata-ibis bounded `hotdata` in uv.lock here even
# for `uv sync` without `--extra ibis`. A plain `pip install` of the base package
# is unaffected — pip reads an extra's requirements only when the extra is
# requested. So this cap blocked THIS repo from adopting hotdata 0.9; what blocked
# consumers downstream was the core `hotdata-framework` cap above.
ibis = ["hotdata-ibis>=0.5.0,<0.6", "ibis-framework>=12,<13"]
# hotdata-ibis caps `hotdata` (0.6 requires hotdata>=0.11,<0.12), and uv
# resolves a project's own extras into one universal lockfile, so that cap bounds
# `hotdata` in uv.lock here even for `uv sync` without `--extra ibis`. Bump the
# two together. A plain `pip install` of the base package is unaffected — pip
# reads an extra's requirements only when the extra is requested.
ibis = ["hotdata-ibis>=0.6,<0.7", "ibis-framework>=12,<13"]

[project.urls]
Homepage = "https://hotdata.dev"
Expand Down
16 changes: 8 additions & 8 deletions uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading