Use case
The optional dependency floors in pyproject.toml are far below the versions that CI tests:
| Extra |
Declared floor |
Locked and tested in CI (uv.lock) |
pandas |
pandas>=1.3.0 (Python < 3.13), pandas>=2.3.0 (Python ≥ 3.13) |
2.3.3 on Python 3.10, 3.0.6 on Python 3.11+ |
arrow |
pyarrow>=10.0.0 (Python < 3.14), pyarrow>=22.0.0 (Python ≥ 3.14) |
25.0.1 |
polars |
polars>=1.39.0 (raised in #828) |
1.44.2 |
The Test workflow installs only the locked versions, so the declared minimums of pandas and pyarrow are never exercised. The floors promise compatibility that is not verified: for example, pandas 1.x behaves differently from 2.x and 3.x in dtypes, NA handling, and copy semantics, and none of this is tested. #828 showed that an untested floor can hide real defects (Polars < 1.39 silently truncated results).
Proposed change
For 4.0.0, raise the pandas and pyarrow floors to versions the project is willing to support and verify:
- Choose floors that still install on every supported Python version (Python 3.10 until its EOL, per the support policy); pandas 3.x is not available on Python 3.10.
- Remove any compatibility code that exists only for the dropped versions.
- Consider verifying the floors: for example, a weekly or pre-release job that resolves the lowest allowed direct dependencies (
uv --resolution lowest-direct) and runs the pandas, Arrow, and Polars cursor tests. Keep it limited to those tests to bound the AWS cost.
- Document the new minimums in the release notes as a breaking change.
Validation plan (if implementing)
- Install each extra at its new floor on the oldest and newest supported Python versions and run the relevant cursor tests against AWS.
- Confirm
uv lock still resolves for all supported Python versions.
Use case
The optional dependency floors in
pyproject.tomlare far below the versions that CI tests:uv.lock)pandaspandas>=1.3.0(Python < 3.13),pandas>=2.3.0(Python ≥ 3.13)arrowpyarrow>=10.0.0(Python < 3.14),pyarrow>=22.0.0(Python ≥ 3.14)polarspolars>=1.39.0(raised in #828)The Test workflow installs only the locked versions, so the declared minimums of pandas and pyarrow are never exercised. The floors promise compatibility that is not verified: for example, pandas 1.x behaves differently from 2.x and 3.x in dtypes,
NAhandling, and copy semantics, and none of this is tested. #828 showed that an untested floor can hide real defects (Polars < 1.39 silently truncated results).Proposed change
For 4.0.0, raise the pandas and pyarrow floors to versions the project is willing to support and verify:
uv--resolution lowest-direct) and runs the pandas, Arrow, and Polars cursor tests. Keep it limited to those tests to bound the AWS cost.Validation plan (if implementing)
uv lockstill resolves for all supported Python versions.