Follow-up to #15157. h5py ships self-contained manylinux/musllinux
wheels (aarch64 included) that bundle their own HDF5, so no system
libhdf5 is needed to import or use it. Removing the apt-get step
speeds up CI and removes a network dependency; CI will confirm.
Modern wheels (pillow, lxml, h5py, numpy/scipy, matplotlib) ship
self-contained manylinux/musllinux wheels, so the long lists of -dev
system libraries (libtiff/libjpeg/libopenjp2/freetype/harfbuzz/xml/
xslt/openblas/tk, etc.) are no longer needed to install or import the
project's dependencies. Reduce each apt-get step to libhdf5-dev only
(kept for now as a first step) and switch the deprecated -y flag to
--yes. If CI stays green a follow-up can drop libhdf5-dev too, since
h5py 3.16 ships wheels with a bundled HDF5 and nothing imports h5py
directly.
* ci: switch default Python to free-threaded 3.14t
Change the interpreter used across CI workflows from 3.14 to the
free-threaded build 3.14t to surface which dependencies and tests are
not yet free-threading compatible. Opened as DRAFT for documentation
purposes per maintainer request (#15081).
* ci(3.14t): gate opencv-python into optional 'cv' group + skip cv2 files
opencv-python has no cp314t wheel yet and fails to build from source under
free-threaded 3.14t (CMake), blocking uv sync for every job. Move it to an
optional [dependency-groups] cv group so the ft CI installs everything else
and runs pytest-run-parallel on the pure-Python algorithms. Skip the 20 files
that import cv2 (computer_vision augmentations, data_compression PSNR, and the
mostly-cv2 digital_image_processing/ tree). Re-fold once a cp314t wheel ships
(upstream: opencv/opencv#27933).
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* ci(3.14t): add --ignore-gil-enabled so sklearn/xgboost imports don't abort the run
* ci(3.14t): gate qiskit into an optional group like opencv
qiskit re-enables the GIL under free-threaded CPython and the team is still scoping free-threading support (Qiskit/qiskit#16893), so move it out of the core deps into an optional 'quantum' group and ignore the one algorithm that imports it (quantum/q_fourier_transform.py) in the 3.14t test run. Mirrors the existing opencv 'cv' carve-out. Per cclauss: default all workflows to 3.14t except tests depending on OpenCV or Qiskit.
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* ci: single-source 3.14t via .python-version; declare Free Threading :: 2 - Beta
Un-ignore .python-version and pin it to 3.14t, then point all four
workflows at python-version-file: .python-version so the free-threaded
interpreter is selected from one place. Also add the
'Programming Language :: Python :: Free Threading :: 2 - Beta' trove
classifier to document our free-threaded support status per
https://py-free-threading.github.io/porting/#define-and-document-thread-safety-guarantees
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
- Add astral-sh/uv-pre-commit (uv-lock) so uv.lock stays in sync with
pyproject.toml automatically instead of relying on manual relocks.
- Replace 'python-version: 3.14' with 'python-version-file: pyproject.toml'
in every workflow that uses actions/setup-python (build, project_euler,
sphinx, directory_writer), making requires-python the single source of
truth for the interpreter version.
* Use Astral uv
* uvx vs uv run
* uv sync --group=euler-validate,test
* uv sync --group=euler-validate --group=test
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* --group=test
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Update validate solution script to fetch only submitted solution
* Update workflow file with the updated PE script
* Fix: do not fetch `validate_solutions.py` script
* Update script to use the requests package for API calls
* Fix: install requests module
* Pytest ignore scripts/ directory
* Add GitHub action for Project Euler only
* Add second job for Project Euler
* Remove Project Euler jobs from Travis CI
* Fix typo for actions/setup-python
* Rename the workflow file
* Change name of file in workflow
* Remove comments from Travis config file