Skip to content

improve tests for python 3.14 #3906

Description

@mattijn

What is your suggestion?

  • Re enable altair tests for python 3.14 that include geopandas cc64b11
  • Re enable altair tests for python 3.14 that include duckdb bf2dfe2
  • Enable tests for python 3.14t (threaded) if pyarrow is supported bd7b91d

Have you considered any alternative solutions?

No response

Activity

  1. cclauss commented on Nov 6, 2025

    @cclauss
    Contributor

    To be confident about free-threaded compatibility, it is recommended to test with pytest-run-parallel.

    Something like:
    % uvx --with=pytest-run-parallel pytest --iterations=8 --parallel-threads=auto

  2. mattijn commented on Nov 7, 2025

    @mattijn
    ContributorAuthor

    Thanks @cclauss! I have added another workflow to test the free-threaded version of python 3.14 in #3907. The workflow is currently, as expected, failing, see https://github.com/vega/altair/actions/runs/19181574029/job/54839362746#step:6:1. But hopefully in coming period can check which dev dependencies are the culprit and which tests shall be skipped in this process. Do you have a free-threaded version of python locally to test this a bit more? Otherwise will continue testing through the github action workflow, albeit more cumbersome.

  3. cclauss commented on Nov 8, 2025

    @cclauss
    Contributor

    % uv run pytest -o addopts= --pyargs --doctest-modules --doctest-ignore-import-errors --iterations=8 --parallel-threads=auto tests
    --> # Add the dependencies needed...
    % uv run --python=3.14t --with=numpy,pandas pytest -o addopts= --pyargs --doctest-modules --doctest-ignore-import-errors --iterations=8 --parallel-threads=auto tests

  4. axelray-dev commented on Jun 4, 2026

    @axelray-dev
    Contributor

    I took a look at the current state of this.

    The first two bullets seem to be handled already by #3975: geopandas and duckdb are no longer pinned away from Python 3.14 in pyproject.toml.

    The remaining open question looks like the free-threaded Python 3.14 workflow from #3907. It is currently manual-only, and several optional dependencies are still commented out. From current wheel availability, pyarrow, pandas, and numpy appear to have 3.14t wheels, while duckdb and polars still do not.

    Would you prefer a PR that enables partial 3.14t coverage now, keeping unsupported optional deps skipped, or should this wait until the remaining optional dependencies publish 3.14t wheels?

  5. joelostblom commented on Jun 5, 2026

    @joelostblom
    Contributor

    Thanks for looking into this @axelray-dev. Maybe a PR that enables partial 3.14t coverage would be helpful now already; particularly if it also documents what is required / what is blocking to get to full covereage. E.g. linking some of the issues to watch (ie pola-rs/polars#21889 for polars) and maybe even includes what code to add when these become available?

  6. cclauss commented on Jun 24, 2026

    @cclauss
    Contributor

    Status?

  7. joelostblom commented on Jun 24, 2026

    @joelostblom
    Contributor

    The latest updates are in the PR linked above: #4038

  8. cclauss commented on Jun 24, 2026

    @cclauss
    Contributor

    Should testing begin on Python 3.15 beta 3?

  9. joelostblom commented on Jun 24, 2026

    @joelostblom
    Contributor

    I think we can keep this open since there are still blockers listed in that PR that prevents full support for our test suite:

    Should testing begin on Python 3.15 beta 3?

    Thanks for linking, it seems like it could; feel free to open a PR.

  10. cclauss commented on Jun 24, 2026

    @cclauss
    Contributor

    ruff: no cp314t wheels available yet

    I am confused. Ruff is released as a Rust binary executable that runs just fine without Python installed.

  11. joelostblom commented on Jun 24, 2026

    @joelostblom
    Contributor

    Good catch, I think the reason there is no wheel tagged specifically with cp314t is that they use the py3-none-... tags for each platform to indicate that the wheel is not tied to a CPython ABI since it is a separate binary, so the cp314t free-threaded ABI distinction should not matter for installing Ruff.

    @axelray-dev Can you confirm if you tested to install ruff and it didn't work with py 3.14t in #4038 or if you only looked for the presence of the tag on pypi?

  12. axelray-dev commented on Jun 25, 2026

    @axelray-dev
    Contributor

    Good catch. I did not verify Ruff by installing it under Python 3.14t; I only checked for a cp314t-specific wheel tag, so that blocker note was likely too conservative.

    Since Ruff publishes Python-ABI-independent wheels/binaries, it should not need a cp314t tag. I think the next step is to uncomment the Ruff install in the free-threaded workflow and validate it via workflow_dispatch. DuckDB and Polars still look like the real blockers.

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

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions