Skip to content

Publication

Publication #62

# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python
name: Code Quality and Tests
on:
push:
branches: ["main", "dev"]
pull_request:
branches: ["main"]
permissions:
contents: write
jobs:
build:
permissions: write-all
name: ${{ matrix.os }} / ${{ matrix.python-version }}
runs-on: ${{ matrix.os }}-latest
strategy:
fail-fast: false # allow other jobs in matrix if one fails
matrix:
os: [Ubuntu, macOS, Windows]
python-version: ["3.10", "3.11", "3.12"]
steps:
- uses: actions/checkout@main
with:
persist-credentials: false # otherwise, the token used is the GITHUB_TOKEN, instead of your personal access token.
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@main
with:
python-version: ${{ matrix.python-version }}
cache: "pip" # caching pip dependencies
- name: Install Rust on ubuntu
if: matrix.os == 'Ubuntu'
run: |
curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain=nightly --profile=minimal -y && rustup show
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install flake8 setuptools-rust
pip install -r requirements.txt -r requirements-dev.txt -r examples/requirements.txt -r app/requirements.txt
- name: Check with ruff
uses: chartboost/ruff-action@main
with:
version: 0.4.10
args: --line-length=79
- name: Lint with flake8
run: |
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
mkdir -p reports/flake8/report
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
# Configurations in pytest.ini and reports/.coveragerc
pytest .
# - name: Update Coverage Badges
# run: |
# genbadge flake8 -o reports/flake8-badge.svg
# genbadge tests -o reports/test-badge.svg
# genbadge coverage -o reports/coverage-badge.svg
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@main
with:
files: reports/coverage/coverage.xml
token: ${{ secrets.CODECOV_TOKEN }}
slug: MarekWadinger/odmd-subid-cpd