From bf01d5dce910859e6aa2e096816c5f8b6ea00ff1 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Mon, 9 Mar 2026 11:41:11 -0400 Subject: [PATCH 1/2] Add Python 3.14 support, make it the default CI version Bump requires-python upper bound from <3.14 to <3.15 and update CI matrix to test on 3.12 (smoke) + 3.14 (full). Co-Authored-By: Claude Opus 4.6 --- .github/workflows/pr_code_changes.yaml | 28 +++++++++++++------------- changelog.d/python-3.14.changed.md | 1 + pyproject.toml | 2 +- 3 files changed, 16 insertions(+), 15 deletions(-) create mode 100644 changelog.d/python-3.14.changed.md diff --git a/.github/workflows/pr_code_changes.yaml b/.github/workflows/pr_code_changes.yaml index 648e1c6..ad06f16 100644 --- a/.github/workflows/pr_code_changes.yaml +++ b/.github/workflows/pr_code_changes.yaml @@ -11,7 +11,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v4 with: - python-version: "3.13" + python-version: "3.14" - name: Install uv uses: astral-sh/setup-uv@v5 - name: Install relevant dependencies @@ -50,7 +50,7 @@ jobs: strategy: matrix: os: [ ubuntu-latest ] - python-version: ["3.12", "3.13"] + python-version: ["3.12", "3.14"] fail-fast: false runs-on: ${{ matrix.os }} steps: @@ -65,30 +65,30 @@ jobs: - name: Install slim version run: | uv pip install -e "." --system - - name: Install R and dependencies (Python 3.13 only) - if: matrix.python-version == '3.13' + - name: Install R and dependencies (Python 3.14 only) + if: matrix.python-version == '3.14' run: | sudo apt-get update sudo apt-get install -y r-base r-base-dev libtirpc-dev - - name: Install R packages (Python 3.13 only) - if: matrix.python-version == '3.13' + - name: Install R packages (Python 3.14 only) + if: matrix.python-version == '3.14' run: | sudo Rscript -e 'install.packages("StatMatch", repos="https://cloud.r-project.org")' sudo Rscript -e 'install.packages("clue", repos="https://cloud.r-project.org")' - - name: Install full test dependencies without MDN (Python 3.13) - if: matrix.python-version == '3.13' && needs.Check-MDN-Changes.outputs.mdn_changed != 'true' + - name: Install full test dependencies without MDN (Python 3.14) + if: matrix.python-version == '3.14' && needs.Check-MDN-Changes.outputs.mdn_changed != 'true' run: | uv pip install -e ".[dev,matching]" --system - - name: Install full test dependencies with MDN (Python 3.13) - if: matrix.python-version == '3.13' && needs.Check-MDN-Changes.outputs.mdn_changed == 'true' + - name: Install full test dependencies with MDN (Python 3.14) + if: matrix.python-version == '3.14' && needs.Check-MDN-Changes.outputs.mdn_changed == 'true' run: | uv pip install -e ".[dev,matching,mdn]" --system - name: Install minimal test dependencies (Python 3.12) if: matrix.python-version == '3.12' run: | uv pip install -e ".[dev]" --system - - name: Run full tests with coverage (Python 3.13) - if: matrix.python-version == '3.13' + - name: Run full tests with coverage (Python 3.14) + if: matrix.python-version == '3.14' run: make test - name: Run smoke test only (Python 3.12) if: matrix.python-version == '3.12' @@ -96,11 +96,11 @@ jobs: python -m pytest tests/test_smoke_qrf.py -v python -m pytest tests/test_basic.py -v - name: Run pipeline example - if: matrix.python-version == '3.13' + if: matrix.python-version == '3.14' run: | python examples/pipeline.py - name: Upload microimputation results - if: always() && matrix.python-version == '3.13' + if: always() && matrix.python-version == '3.14' uses: actions/upload-artifact@v4 with: name: microimputation-results-${{ github.sha }} diff --git a/changelog.d/python-3.14.changed.md b/changelog.d/python-3.14.changed.md new file mode 100644 index 0000000..052825b --- /dev/null +++ b/changelog.d/python-3.14.changed.md @@ -0,0 +1 @@ +Added Python 3.14 support and made it the default CI version. diff --git a/pyproject.toml b/pyproject.toml index 4e86bbd..6cfc373 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,7 +14,7 @@ authors = [ { name = "María Juaristi", email = "juaristi@uni.minerva.edu" }, { name = "Nikhil Woodruff", email = "nikhil.woodruff@outlook.com" } ] -requires-python = ">=3.12,<3.14" +requires-python = ">=3.12,<3.15" dependencies = [ "numpy>=2.0.0,<3.0.0", "pandas>=2.2.0,<3.0.0", From 53d140ededd2d1307fe104175a6f22635b11bc89 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Mon, 9 Mar 2026 11:45:44 -0400 Subject: [PATCH 2/2] Add Python 3.14 support, bump deps, upgrade GitHub Actions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Bump requires-python from <3.14 to <3.15 - Update CI matrix: 3.12 (smoke) + 3.14 (full) across all workflows - Widen dependency upper bounds: - pandas: <3.0.0 → <4.0.0 - plotly: <6.0.0 → <7.0.0 - scipy: <1.17.0 → <2.0.0 - pytest: <9.0.0 → <10.0.0 - pytest-cov: <7.0.0 → <8.0.0 - Upgrade GitHub Actions: - checkout v3 → v4 - setup-python v4 → v5 - codecov-action v3 → v5 Co-Authored-By: Claude Opus 4.6 --- .github/workflows/pr_code_changes.yaml | 12 ++++++------ .github/workflows/pr_docs_changes.yaml | 2 +- .github/workflows/versioning.yaml | 4 ++-- changelog.d/python-3.14.changed.md | 2 +- pyproject.toml | 12 ++++++------ 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/pr_code_changes.yaml b/.github/workflows/pr_code_changes.yaml index ad06f16..5b6dc7b 100644 --- a/.github/workflows/pr_code_changes.yaml +++ b/.github/workflows/pr_code_changes.yaml @@ -7,9 +7,9 @@ jobs: Lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: "3.14" - name: Install uv @@ -25,7 +25,7 @@ jobs: outputs: mdn_changed: ${{ steps.check.outputs.mdn_changed }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Check for MDN-related file changes @@ -55,11 +55,11 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Checkout repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install uv uses: astral-sh/setup-uv@v5 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Install slim version @@ -106,7 +106,7 @@ jobs: name: microimputation-results-${{ github.sha }} path: microimputation-dashboard/public/microimputation_results.csv - name: Upload coverage to Codecov - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v5 with: file: ./coverage.xml fail_ci_if_error: false diff --git a/.github/workflows/pr_docs_changes.yaml b/.github/workflows/pr_docs_changes.yaml index 81de3a7..4e9ad01 100644 --- a/.github/workflows/pr_docs_changes.yaml +++ b/.github/workflows/pr_docs_changes.yaml @@ -24,7 +24,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: '3.13' + python-version: '3.14' - name: Install R and dependencies run: | diff --git a/.github/workflows/versioning.yaml b/.github/workflows/versioning.yaml index f63ce58..f7d9d6b 100644 --- a/.github/workflows/versioning.yaml +++ b/.github/workflows/versioning.yaml @@ -24,7 +24,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: 3.13 + python-version: 3.14 - name: Bump version and build changelog run: | pip install towncrier @@ -41,7 +41,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ["3.13"] + python-version: ["3.14"] steps: - name: Checkout code uses: actions/checkout@v4 diff --git a/changelog.d/python-3.14.changed.md b/changelog.d/python-3.14.changed.md index 052825b..6bf77e5 100644 --- a/changelog.d/python-3.14.changed.md +++ b/changelog.d/python-3.14.changed.md @@ -1 +1 @@ -Added Python 3.14 support and made it the default CI version. +Added Python 3.14 support, bumped dependency upper bounds (pandas, plotly, scipy, pytest, pytest-cov), and upgraded GitHub Actions versions. diff --git a/pyproject.toml b/pyproject.toml index 6cfc373..4d1ab49 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,10 +17,10 @@ authors = [ requires-python = ">=3.12,<3.15" dependencies = [ "numpy>=2.0.0,<3.0.0", - "pandas>=2.2.0,<3.0.0", - "plotly>=5.24.0,<6.0.0", + "pandas>=2.2.0,<4.0.0", + "plotly>=5.24.0,<7.0.0", "scikit-learn>=1.7.0,<2.0.0", - "scipy>=1.16.0,<1.17.0", + "scipy>=1.16.0,<2.0.0", "requests>=2.32.0,<3.0.0", "tqdm>=4.65.0,<5.0.0", "statsmodels>=0.14.5,<0.16.0", @@ -33,8 +33,8 @@ dependencies = [ [project.optional-dependencies] dev = [ - "pytest>=8.0.0,<9.0.0", - "pytest-cov>=6.0.0,<7.0.0", + "pytest>=8.0.0,<10.0.0", + "pytest-cov>=6.0.0,<8.0.0", "ruff>=0.9.0", "mypy>=1.2.3,<2.0.0", "build>=1.2.0,<2.0.0", @@ -54,7 +54,7 @@ docs = [ "jupyter-book", "furo>=2024.0.0", # Sphinx theme for documentation "ipywidgets>=8.0.0,<9.0.0", - "plotly>=5.24.0,<6.0.0", + "plotly>=5.24.0,<7.0.0", "h5py>=3.1.0,<4.0.0", ]