Use pre-commit to invoke ruff, mypy #1092
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
name: Test | |
on: | |
push: | |
branches: [ main ] | |
pull_request: | |
branches: [ main ] | |
schedule: | |
- cron: "0 5 * * *" | |
# Cancel previous runs that have not completed | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
env: | |
# See description in lint.yml | |
depth: 100 | |
jobs: | |
pytest: | |
strategy: | |
matrix: | |
os: | |
- macos-latest | |
- ubuntu-latest | |
- windows-latest | |
python-version: | |
- "3.7" # Earliest version supported by ixmp | |
- "3.8" | |
- "3.9" | |
- "3.10" | |
- "3.11" # Latest supported by ixmp | |
# commented: force a specific version of pandas, for e.g. pre-release | |
# testing | |
# pandas-version: | |
# - "" | |
# - "==2.0.0rc0" | |
exclude: [ ] | |
# # Specific version combinations that are invalid, e.g. pandas 2.0 | |
# # requires Python >= 3.8 | |
# - python-version: "3.7" | |
# pandas-version: "==2.0.0rc0" | |
fail-fast: false | |
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@v3 | |
with: | |
fetch-depth: ${{ env.depth }} | |
- name: Fetch tags (for setuptools-scm) | |
run: git fetch --tags --depth=${{ env.depth }} | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
cache: pip | |
cache-dependency-path: "**/pyproject.toml" | |
- uses: ts-graphviz/[email protected] | |
with: | |
macos-skip-brew-update: true | |
- uses: r-lib/actions/setup-r@v2 | |
id: setup-r | |
with: | |
r-version: '4.2.3' | |
- name: Cache GAMS installer and R packages | |
uses: actions/cache@v3 | |
with: | |
path: | | |
gams | |
${{ env.R_LIBS_USER }} | |
key: ${{ matrix.os }}-R${{ steps.setup-r.outputs.installed-r-version }} | |
restore-keys: | | |
${{ matrix.os }}- | |
- uses: iiasa/actions/setup-gams@main | |
with: | |
version: 25.1.1 | |
- name: Set RETICULATE_PYTHON | |
# Use the environment variable set by the setup-python action, above. | |
run: echo "RETICULATE_PYTHON=$pythonLocation" >> $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 }} | |
- name: TEMPORARY Work around iiasa/ixmp#463 | |
if: matrix.python-version != '3.11' | |
run: pip install "JPype1 != 1.4.1" | |
- name: Install R dependencies and tutorial requirements | |
run: | | |
install.packages(c("remotes", "Rcpp")) | |
remotes::install_cran( | |
c("IRkernel", "reticulate"), | |
dependencies = TRUE, | |
# force = TRUE, | |
) | |
IRkernel::installspec() | |
# commented: for debugging | |
# print(reticulate::py_config()) | |
# reticulate::py_run_string("import os; print(os.environ)") | |
shell: Rscript {0} | |
- name: Run test suite using pytest | |
run: pytest ixmp -m "not performance" --verbose -rA --cov-report=xml --color=yes | |
- name: Test documentation build using Sphinx | |
env: | |
# For pull_request triggers, GitHub creates a temporary merge commit | |
# with a hash that does not match the head of the branch. Tell it which | |
# branch to use. | |
SPHINXOPTS: -D linkcode_github_remote_head=${{ github.head_ref }} | |
run: make --directory=doc html | |
- name: Upload test coverage to Codecov.io | |
uses: codecov/codecov-action@v3 | |
pre-commit: | |
name: Code quality | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
- uses: pre-commit/[email protected] |