diff --git a/.github/workflows/pr_code_changes.yaml b/.github/workflows/pr_code_changes.yaml index 648e1c6..5b6dc7b 100644 --- a/.github/workflows/pr_code_changes.yaml +++ b/.github/workflows/pr_code_changes.yaml @@ -7,11 +7,11 @@ 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.13" + python-version: "3.14" - name: Install uv uses: astral-sh/setup-uv@v5 - name: Install relevant dependencies @@ -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 @@ -50,45 +50,45 @@ 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: - 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 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,17 +96,17 @@ 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 }} 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 new file mode 100644 index 0000000..6bf77e5 --- /dev/null +++ b/changelog.d/python-3.14.changed.md @@ -0,0 +1 @@ +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 4e86bbd..4d1ab49 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,13 +14,13 @@ 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", - "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", ]