CI: try free-threaded Python 3.14t (DRAFT — documenting failures) #29247
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: "build" | |
| on: | |
| pull_request: | |
| schedule: | |
| - cron: "0 0 * * *" # Run everyday | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - run: sudo apt-get update && sudo apt-get install -y libhdf5-dev | |
| - uses: actions/checkout@v7 | |
| - uses: astral-sh/setup-uv@v7 | |
| with: | |
| enable-cache: true | |
| cache-dependency-glob: uv.lock | |
| - uses: actions/setup-python@v7 | |
| with: | |
| python-version: 3.14t | |
| allow-prereleases: true | |
| - run: uv sync --group=test | |
| - name: Run tests | |
| # TODO: #8818 Re-enable quantum tests | |
| # opencv-python is gated out on 3.14t (no cp314t wheel yet), so skip the | |
| # files that import cv2. Pure-Python algorithms in computer_vision/ and | |
| # data_compression/ still run; digital_image_processing/ is almost entirely | |
| # cv2-based so it is skipped as a tree. Re-enable when a cp314t wheel ships. | |
| # --ignore-gil-enabled: some compiled deps (sklearn, xgboost, ...) don't | |
| # yet ship the Py_mod_gil slot, so importing them re-enables the GIL under | |
| # 3.14t. That's an upstream-wheel gap, not our code; the flag lets the suite | |
| # run anyway and pytest-run-parallel still reports which tests are not | |
| # thread-safe. Drop the flag once the scientific stack ships free-threaded wheels. | |
| run: uv run --with=pytest-run-parallel pytest | |
| --iterations=8 --parallel-threads=auto --ignore-gil-enabled | |
| --ignore=computer_vision/cnn_classification.py | |
| --ignore=computer_vision/flip_augmentation.py | |
| --ignore=computer_vision/harris_corner.py | |
| --ignore=computer_vision/mosaic_augmentation.py | |
| --ignore=data_compression/peak_signal_to_noise_ratio.py | |
| --ignore=digital_image_processing/ | |
| --ignore=docs/conf.py | |
| --ignore=dynamic_programming/k_means_clustering_tensorflow.py | |
| --ignore=machine_learning/local_weighted_learning/local_weighted_learning.py | |
| --ignore=machine_learning/lstm/lstm_prediction.py | |
| --ignore=neural_network/input_data.py | |
| --ignore=project_euler/ | |
| --ignore=quantum/q_fourier_transform.py | |
| --ignore=scripts/validate_solutions.py | |
| --ignore=web_programming/current_stock_price.py | |
| --ignore=web_programming/fetch_anime_and_play.py | |
| --cov-report=term-missing:skip-covered | |
| --cov=. . | |
| - if: ${{ success() }} | |
| run: scripts/build_directory_md.py 2>&1 | tee DIRECTORY.md |