-
Notifications
You must be signed in to change notification settings - Fork 114
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Use astral-sh/setup-uv in "pytest" GHA workflow
- Discard commented workflow contents for pandas 2.0.0 pre-release. - Reduce scope of exclusion for ts-graphviz/setup-graphviz#630 workaround. - Use Python location from setup-uv instead of $pythonLocation. - Drop workaround for pyam-iamc exclusion of Python 3.13. - Add --durations=20 to pytest invocation.
- Loading branch information
Showing
1 changed file
with
25 additions
and
50 deletions.
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -30,16 +30,7 @@ jobs: | |
- "3.12" | ||
- "3.13" # Latest supported by ixmp | ||
gams-version: | ||
# Version used until 2024-07; disabled | ||
# - 25.1.1 | ||
# First version including a macOS arm64 distribution | ||
- 43.4.1 | ||
|
||
# commented: force a specific version of pandas, for e.g. pre-release | ||
# testing | ||
# pandas-version: | ||
# - "" | ||
# - "==2.0.0rc0" | ||
- "43.4.1" # First version including a macOS arm64 distribution | ||
|
||
exclude: | ||
# Specific version combinations that are invalid / not to be used | ||
|
@@ -55,29 +46,26 @@ jobs: | |
|
||
runs-on: ${{ matrix.os }} | ||
name: ${{ matrix.os }}-py${{ matrix.python-version }} | ||
# commented: use with "pandas-version" in the matrix, above | ||
# name: ${{ matrix.os }}-py${{ matrix.python-version }}-pandas${{ matrix.pandas-version }} | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: ${{ env.depth }} | ||
fetch-tags: true | ||
|
||
- uses: actions/setup-python@v5 | ||
- name: Set up uv, Python | ||
uses: astral-sh/setup-uv@v5 | ||
with: | ||
cache-dependency-glob: "**/pyproject.toml" | ||
python-version: ${{ matrix.python-version }} | ||
cache: pip | ||
cache-dependency-path: "**/pyproject.toml" | ||
|
||
- uses: ts-graphviz/setup-graphviz@v2 | ||
# TEMPORARY Work around ts-graphviz/setup-graphviz#630 | ||
if: ${{ ! startswith(matrix.os, 'macos-') }} | ||
# Work around ts-graphviz/setup-graphviz#630 | ||
if: matrix.os != 'macos-13' | ||
|
||
- uses: r-lib/actions/setup-r@v2 | ||
id: setup-r | ||
with: | ||
r-version: "4.4.1" | ||
with: { r-version: "4.4.1" } | ||
|
||
- name: Cache GAMS installer and R packages | ||
uses: actions/cache@v4 | ||
|
@@ -95,21 +83,13 @@ jobs: | |
license: ${{ secrets.GAMS_LICENSE }} | ||
|
||
- name: Set RETICULATE_PYTHON | ||
# Use the environment variable set by the setup-python action, above. | ||
run: echo "RETICULATE_PYTHON=$pythonLocation" >> $GITHUB_ENV | ||
# Retrieve the Python executable set up above | ||
run: echo "RETICULATE_PYTHON=$(uv python find)" >> $GITHUB_ENV | ||
shell: bash | ||
|
||
- name: Install Python package and dependencies | ||
# [docs] contains [tests], which contains [report,tutorial] | ||
run: | | ||
pip install .[docs] | ||
# commented: use with "pandas-version" in the matrix, above | ||
# pip install --upgrade pandas${{ matrix.pandas-version }} | ||
# TEMPORARY With Python 3.13 pyam-iamc resolves to 1.3.1, which in turn | ||
# limits pint < 0.17. Override. cf. iiasa/ixmp#544 | ||
pip install --upgrade pint | ||
- name: Install the package and dependencies | ||
# [docs] requires [tests] which requires [report,tutorial] | ||
run: uv pip install .[docs] | ||
|
||
- name: Install R dependencies and tutorial requirements | ||
run: | | ||
|
@@ -127,23 +107,19 @@ jobs: | |
# reticulate::py_run_string("import os; print(os.environ)") | ||
shell: Rscript {0} | ||
|
||
- name: Run test suite using pytest | ||
- name: Run tests | ||
run: | | ||
pytest ixmp \ | ||
uv run --no-sync \ | ||
pytest ixmp \ | ||
-m "not performance" \ | ||
--color=yes -rA --verbose \ | ||
--color=yes --durations=20 -rA --verbose \ | ||
--cov-report=xml \ | ||
--numprocesses=auto --dist=loadgroup | ||
shell: bash | ||
|
||
- name: Upload test coverage to Codecov.io | ||
uses: codecov/codecov-action@v5 | ||
# FIXME Limit runtime until | ||
# https://github.com/codecov/codecov-action/issues/1316 is resolved | ||
timeout-minutes: 1 | ||
continue-on-error: true | ||
with: | ||
token: ${{ secrets.CODECOV_TOKEN }} # required | ||
with: { token: ${{ secrets.CODECOV_TOKEN}} } | ||
|
||
pre-commit: | ||
name: Code quality | ||
|
@@ -152,12 +128,11 @@ jobs: | |
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/setup-python@v5 | ||
with: { python-version: "3.12" } | ||
|
||
- name: Force recreation of pre-commit virtual environment for mypy | ||
if: github.event_name == 'schedule' | ||
run: gh cache list -L 999 | cut -f2 | grep pre-commit | xargs -I{} gh cache delete "{}" || true | ||
env: { GH_TOKEN: "${{ github.token }}" } | ||
|
||
- uses: pre-commit/[email protected] | ||
- uses: astral-sh/setup-uv@v5 | ||
with: { cache-dependency-glob: "**/pyproject.toml" } | ||
- uses: actions/cache@v4 | ||
with: | ||
path: ~/.cache/pre-commit | ||
key: pre-commit|${{ env.UV_PYTHON }}|${{ hashFiles('.pre-commit-config.yaml') }} | ||
lookup-only: ${{ github.event_name == 'schedule' }} # Set 'true' to recreate cache | ||
- run: uvx pre-commit run --all-files --color=always --show-diff-on-failure |