⛔ Gated on server Arrow support shipping (see #49, planning/arrow-read-path-decision.md).
Handle the staggered 6-cluster rollout: the same client version will talk to Arrow-capable and JSON-only clusters at the same time.
Scope
fetch(format=...) control — give the caller a way to request Arrow explicitly, and a sensible default.
- Suggested default: if
pyarrow is installed ([arrow] extra), fetch() negotiates Arrow transparently and JSON is the fallback; if not, stays JSON. Users get the speedup by installing clappform[arrow] and changing nothing else.
- Confirm with the team: transparent-when-installed vs. explicit opt-in
fetch(format="arrow").
- Check what you actually received, don't assume. The enum is additive and unset ⇒ JSON, so a client that requests Arrow against a server that ignores the field gets JSON back. If you asked for Arrow and got JSON, decode as JSON (the Phase 0 path handles this) — don't crash, don't byte-sniff.
- Have the server echo the chosen format (response field or trailing metadata) so the check is a lookup, not a guess.
Why this matters
This staggered-rollout reality is exactly why the Phase 0 format-aware _codec (#58) exists.
Depends on: #49, #58.
Source: planning/pypi-arrow-handoff.md §4.3.
Handle the staggered 6-cluster rollout: the same client version will talk to Arrow-capable and JSON-only clusters at the same time.
Scope
fetch(format=...)control — give the caller a way to request Arrow explicitly, and a sensible default.pyarrowis installed ([arrow]extra),fetch()negotiates Arrow transparently and JSON is the fallback; if not, stays JSON. Users get the speedup by installingclappform[arrow]and changing nothing else.fetch(format="arrow").Why this matters
This staggered-rollout reality is exactly why the Phase 0 format-aware
_codec(#58) exists.Depends on: #49, #58.
Source:
planning/pypi-arrow-handoff.md§4.3.