Phase 0 of the Arrow read-path hand-off — build now, server-independent. Reserve the names so Phase 1 is purely additive.
Scope
pyproject.toml: keep [pandas] as the led-with extra; reserve [arrow] and [polars] extras.
- Stub (or document-as-reserved) on
ReadResult: to_arrow(), to_polars(), __arrow_c_stream__. For now they raise a clear error, e.g. "not available until server Arrow support ships / pip install clappform[arrow]".
- Lazy imports:
to_arrow/to_polars must lazy-import pyarrow/polars and raise a friendly pip install clappform[arrow] if missing — same pattern as to_pandas().
Definition of done
- The three method names exist on
ReadResult and fail loudly-but-friendly rather than AttributeError.
[arrow] / [polars] extras resolve (even if they only pin the optional dep).
Source: planning/pypi-arrow-handoff.md §3 (items 4–5).
Phase 0 of the Arrow read-path hand-off — build now, server-independent. Reserve the names so Phase 1 is purely additive.
Scope
pyproject.toml: keep[pandas]as the led-with extra; reserve[arrow]and[polars]extras.ReadResult:to_arrow(),to_polars(),__arrow_c_stream__. For now they raise a clear error, e.g. "not available until server Arrow support ships /pip install clappform[arrow]".to_arrow/to_polarsmust lazy-importpyarrow/polarsand raise a friendlypip install clappform[arrow]if missing — same pattern asto_pandas().Definition of done
ReadResultand fail loudly-but-friendly rather thanAttributeError.[arrow]/[polars]extras resolve (even if they only pin the optional dep).Source:
planning/pypi-arrow-handoff.md§3 (items 4–5).