diff --git a/.circleci/config.yml b/.circleci/config.yml index 057fecf58..9eb63ece5 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -8,6 +8,10 @@ jobs: resource_class: large steps: - checkout + - run: + name: Update submodules + command: | + git submodule update --init --recursive - run: name: Set BASH_ENV command: | diff --git a/.github/workflows/build_tests.yml b/.github/workflows/build_tests.yml index 98d679152..2510004c1 100644 --- a/.github/workflows/build_tests.yml +++ b/.github/workflows/build_tests.yml @@ -31,9 +31,9 @@ jobs: with: submodules: true # Install Python & Packages - - uses: actions/setup-python@v4 + - uses: actions/setup-python@v6 with: - python-version: "3.10" + python-version: "3.14" - run: which python - name: Lint with pre-commit run: | @@ -51,7 +51,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: "3.12" + python-version: "3.14" - name: Build from source run: | python -m pip install --upgrade pip setuptools wheel @@ -66,7 +66,7 @@ jobs: strategy: max-parallel: 4 matrix: - python-version: ["3.10", "3.11", "3.12", "3.13"] + python-version: ["3.11", "3.12", "3.13", "3.14"] steps: - name: Free Disk Space (Ubuntu) @@ -79,7 +79,7 @@ jobs: submodules: true - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: ${{ matrix.python-version }} cache: 'pip' @@ -112,7 +112,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: "3.13" + python-version: "3.14" cache: 'pip' - name: Install dependencies run: | @@ -125,6 +125,31 @@ jobs: run: | python -m pytest --durations=20 -v test/ ot/ --color=yes --cov=./ --cov-report=xml + # linux-minimal-deps-ft: + + # runs-on: ubuntu-latest + # if: "!contains(github.event.head_commit.message, 'no ci')" + # steps: + # - uses: actions/checkout@v4 + # with: + # submodules: true + + # - name: Set up Python + # uses: actions/setup-python@v5 + # with: + # python-version: "3.14t" + # cache: 'pip' + # - name: Install dependencies + # run: | + # python -m pip install --upgrade pip setuptools + # pip install pytest pytest-cov + # - name: Install POT + # run: | + # pip install -e . + # - name: Run tests + # run: | + # python -m pytest --durations=20 -v test/ ot/ --color=yes --cov=./ --cov-report=xml + macos: runs-on: ${{ matrix.os }} if: "!contains(github.event.head_commit.message, 'no ci')" @@ -132,7 +157,7 @@ jobs: max-parallel: 4 matrix: os: [macos-latest] - python-version: ["3.12"] + python-version: ["3.13"] steps: - uses: actions/checkout@v4 @@ -162,7 +187,7 @@ jobs: strategy: max-parallel: 4 matrix: - python-version: ["3.12"] + python-version: ["3.13"] steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index 28c4c6785..3915b562c 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -15,7 +15,7 @@ jobs: if: "contains(github.event.head_commit.message, 'build wheels')" strategy: matrix: - os: [ubuntu-latest, macos-latest, windows-latest] + os: [ubuntu-latest, ubuntu-24.04-arm, macos-latest, windows-latest] steps: - uses: actions/checkout@v4 @@ -36,7 +36,7 @@ jobs: - name: Build wheels env: - CIBW_SKIP: "pp*-win* pp*-macosx* cp2* pp* cp36* cp37* cp38* cp*musl* *i686" # remove pypy on mac and win (wrong version) + CIBW_SKIP: "cp38* cp*musl* *i686 *win32" # remove pypy on mac and win (wrong version) run: | python -m cibuildwheel --output-dir wheelhouse @@ -46,47 +46,3 @@ jobs: path: ./wheelhouse - build_all_wheels: - name: ${{ matrix.os }} - runs-on: ${{ matrix.os }} - if: "contains(github.event.head_commit.message, 'build all wheels')" - strategy: - matrix: - os: [ubuntu-latest, macos-latest, windows-latest] - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - name: Set up Python 3.10 - uses: actions/setup-python@v5 - with: - python-version: "3.11" - - - name: Install dependencies - run: | - python -m pip install --upgrade pip setuptools - - - name: Install cibuildwheel - run: | - python -m pip install cibuildwheel==3.1.4 - - - name: Set up QEMU - if: runner.os == 'Linux' - uses: docker/setup-qemu-action@v1 - with: - platforms: all - - - name: Build wheels - env: - CIBW_SKIP: "pp*-win* pp*-macosx* cp2* pp* cp*musl* *i686" # remove pypy on mac and win (wrong version) - CIBW_ARCHS_LINUX: auto aarch64 # force aarch64 with QEMU - CIBW_ARCHS_MACOS: x86_64 universal2 arm64 - run: | - python -m cibuildwheel --output-dir wheelhouse - - - uses: actions/upload-artifact@v4 - with: - name: wheels-${{ strategy.job-index }} - path: ./wheelhouse - diff --git a/.github/workflows/build_wheels_weekly.yml b/.github/workflows/build_wheels_weekly.yml index 4fb0c377f..4f67d6680 100644 --- a/.github/workflows/build_wheels_weekly.yml +++ b/.github/workflows/build_wheels_weekly.yml @@ -14,7 +14,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-latest, macos-latest, windows-latest] + os: [ubuntu-latest, ubuntu-24.04-arm, macos-latest, windows-latest] steps: - uses: actions/checkout@v4 @@ -33,16 +33,9 @@ jobs: run: | python -m pip install cibuildwheel==3.1.4 - - name: Set up QEMU - if: runner.os == 'Linux' - uses: docker/setup-qemu-action@v1 - with: - platforms: all - - name: Build wheels env: - CIBW_SKIP: "pp*-win* pp*-macosx* cp2* pp* cp*musl* cp36* cp37* cp38* *i686" # remove pypy on mac and win (wrong version) - CIBW_ARCHS_LINUX: auto aarch64 # force aarch64 with QEMU + CIBW_SKIP: "cp*musl* cp38* *i686 *win32" # remove pypy on mac and win (wrong version) CIBW_ARCHS_MACOS: x86_64 universal2 arm64 run: | python -m cibuildwheel --output-dir wheelhouse diff --git a/RELEASES.md b/RELEASES.md index cf1d18aa5..fab059592 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -26,6 +26,7 @@ This new release adds support for sparse cost matrices and a new lazy EMD solver - Add cost functions between linear operators following [A Spectral-Grassmann Wasserstein metric for operator representations of dynamical systems](https://arxiv.org/pdf/2509.24920), implemented in `ot.sgot` (PR #792) +- Build wheels on ubuntu ARM to avoid QEMU emulation (PR #818) #### Closed issues @@ -42,6 +43,7 @@ This new release adds support for sparse cost matrices and a new lazy EMD solver - Reverting the openmp fix on macOS (PR #789) for macOS (PR #797) - Align documentation build dependencies and doc extras (PR #801) - Debug Debug linux test core dump (PR #815) +- Fix documentation build on master with submodules (PR #818) ## 0.9.6.post1 diff --git a/requirements_all.txt b/requirements_all.txt index 890d6ceb4..8a1a5f2f5 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -8,7 +8,7 @@ scikit-learn torch<=2.11 jax jaxlib -tensorflow +tensorflow; python_version < '3.14' pytest torch_geometric cvxpy