Skip to content

Switch to using pyproject.toml for all project metadata #413

Switch to using pyproject.toml for all project metadata

Switch to using pyproject.toml for all project metadata #413

Workflow file for this run

name: Build, test, and lint
on:
push:
branches:
- main
tags:
- "v[0-9]+.*"
pull_request:
branches:
- "*"
workflow_dispatch:
env:
python-version: "3.12"
jobs:
build:
runs-on: ubuntu-latest
outputs:
artifact-name: ${{ steps.build.outputs.artifact-name }}
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/build-python-package
id: build
with:
python-version: ${{ env.python-version }}
- name: "Check py.typed file is included in wheel"
shell: bash -l {0}
run: unzip -l dist/*.whl | grep -q py.typed
build_conda:
runs-on: ubuntu-latest
timeout-minutes: 20
needs: ['build']
continue-on-error: true
if: startsWith(github.head_ref, 'release-')
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v3
with:
repository: conda-forge/emsarray-feedstock
path: emsarray-feedstock
- uses: ./.github/actions/environment
with:
python-version: ${{ env.python-version }}
package-artifact-name: ${{ needs.build.outputs.artifact-name }}
- run: |
conda install conda-build
./scripts/build-local-conda-package.sh
test:
name: python ${{ matrix.python-version }}, ${{ matrix.dependencies }} dependencies
runs-on: ubuntu-latest
timeout-minutes: 10
needs: ["build"]
# Allow failures for the latest versions
continue-on-error: ${{ matrix.dependencies == 'latest' }}
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12"]
dependencies: ["pinned"]
include:
- python-version: "3.12"
dependencies: "latest"
- python-version: "3.10"
dependencies: "minimum"
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/environment
with:
python-version: ${{ matrix.python-version }}
package-artifact-name: ${{ needs.build.outputs.artifact-name }}
dependencies: ${{ matrix.dependencies }}
strict: "true"
- name: Run tests
shell: bash -l {0}
run: |
pytest -v \
--mpl \
--mpl-results-path=./mpl-results \
--mpl-generate-summary html \
--junitxml=junit-py${{ matrix.python-version }}.xml \
--cov --cov-report term \
--cov-report xml:coverage-${{ matrix.python-version }}.xml
- name: JUnit Report
uses: mikepenz/action-junit-report@v3
if: always()
with:
report_paths: 'junit-py*.xml'
check_name: "JUnit Test Report - python ${{ matrix.python-version }}, ${{ matrix.dependencies }} dependencies"
- name: MPL image comparison report
uses: actions/upload-artifact@v3
if: ${{ failure() }}
with:
name: "MPL image comparison report - python ${{ matrix.python-version }}, ${{ matrix.dependencies }} dependencies"
path: './mpl-results'
# No guarantee that the test failures were due to image comparisons
if-no-files-found: 'ignore'
- uses: actions/upload-artifact@v3
with:
name: Code coverage for Python ${{ matrix.python-version }}
path: coverage-*.xml
lint:
runs-on: ubuntu-latest
timeout-minutes: 10
needs: ["build"]
defaults:
run:
shell: bash -l {0}
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/environment
with:
python-version: ${{ env.python-version }}
package-artifact-name: ${{ needs.build.outputs.artifact-name }}
- name: 'mypy cache'
uses: actions/cache@v3
with:
path: '.mypy_cache'
key: mypy-${{ runner.os }}-py${{ env.python-version }}-${{ hashFiles('requirements.txt') }}
- run: flake8 src/ tests/
- run: isort --diff --check-only src/ tests/
- run: mypy --junit-xml report-mypy.xml src/
docs:
runs-on: ubuntu-latest
timeout-minutes: 10
needs: ["build"]
defaults:
run:
shell: bash -l {0}
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/environment
with:
python-version: ${{ env.python-version }}
extras: docs
package-artifact-name: ${{ needs.build.outputs.artifact-name }}
- run: |
cd docs/
sphinx-build -b dirhtml -aEW . _build/dirhtml
- uses: actions/upload-artifact@v3
with:
name: Docs
path: docs/_build/dirhtml