Skip to content

feat: add pandas 3 compatibility and fix CI (drop Python 3.9, pin polars <1.38)#3950

Merged
mattijn merged 11 commits intomainfrom
improve-build-workflow
Feb 12, 2026
Merged

feat: add pandas 3 compatibility and fix CI (drop Python 3.9, pin polars <1.38)#3950
mattijn merged 11 commits intomainfrom
improve-build-workflow

Conversation

@mattijn
Copy link
Copy Markdown
Contributor

@mattijn mattijn commented Feb 6, 2026

This PR adds pandas 3 compatibility and fixes a cascade of CI failures originally surfaced in #3949. The changes span three areas (1) pandas 3 support, (2) CI infrastructure, and (3) dependency pinning, which are bundled together because each group depends on the others for CI to pass.

Changes

pandas 3 compatibility

  • Handle the new str dtype introduced in pandas 3
  • Fix test_pandas_date_parse: loosen assertion to allow equal schemas when parse_dates=[]
  • Fix sanitize round-trip test: explicitly cast df2['o'] to object after read_json
  • Use float64 explicitly so DataFrames match read_json output
  • Add YE / Y frequency fallback in the test suite: pandas 2 introduced YE; pandas 1.x only knows Y, pandas 3 has deprecated Y frequency

CI / build infrastructure

  • Skip metadata.parquet from bit-identical comparison in build.yml, as Parquet files are not guaranteed to be reproducible across runs (SO ref)
  • Drop Python 3.9 from the test matrix (EOL since end of 2025; also triggers a ValueError: Invalid frequency: YE that cannot be cleanly worked around on that version)

Dependency pinning

  • Pin polars < 1.38 until the string_view regression is resolved upstream
  • Tighten minimum supported pandas version for Python 3.10
  • Tighten minimum supported numpy version for Python 3.10 (numpy supports 3.10 from 1.21.2)

Why one PR?

The pandas 3 support and CI fixes logically belong in separate PRs, but each group leaves CI in a failing state on its own. They are therefore submitted together so the branch can be merged, with the intention of splitting future follow-up work back into atomic PRs once the baseline is green.

@mattijn mattijn changed the title ci: improve build.yml to check changes on schema generation feat: add pandas 3 compatibility and fix CI (drop Python 3.9, pin polars <1.38) Feb 12, 2026
@mattijn mattijn merged commit e85e1e3 into main Feb 12, 2026
27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant