Skip to content

Raise the pandas and pyarrow minimum versions to tested versions #852

Description

@laughingman7743

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions