Feature/initial example tl regression benchmark #3949
This file contains hidden or 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: Continuous Integration | |
on: | |
push: | |
branches: | |
- main | |
- 'dev/**' | |
pull_request: | |
branches: | |
- main | |
- 'dev/**' | |
workflow_dispatch: | |
env: | |
COVERAGE_OVERALL_THRESH: 70 # threshold for overall coverage check | |
COVERAGE_INDIVIDUAL_THRESH: 45 # threshold for individual coverage check | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
changelog: | |
name: "Changelog" | |
runs-on: ubuntu-latest | |
if: ${{ github.event_name == 'pull_request' }} | |
continue-on-error: true | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Assert Changelog Edit | |
run: | | |
git fetch origin main:main | |
NUM_ADDED=`git diff --numstat main HEAD CHANGELOG.md | cut -d$'\t' -f1` | |
echo "Changelog differences: $NUM_ADDED" | |
if [ "$NUM_ADDED" -gt "0" ]; then | |
echo "SUCCESS" | |
exit 0 | |
else | |
echo "ERROR - Nothing has been added to CHANGELOG.md" | |
exit 1 | |
fi | |
reminder: | |
runs-on: ubuntu-latest | |
name: "Reminder" | |
continue-on-error: true | |
permissions: | |
issues: write | |
steps: | |
- name: check reminders and notify | |
uses: agrc/reminder-action@v1 | |
lint: | |
strategy: | |
matrix: | |
py-version: [ {semantic: '3.13', tox: 'py313'} ] | |
name: Lint ${{ matrix.py-version.semantic }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
id: setup-python | |
with: | |
python-version: ${{ matrix.py-version.semantic }} | |
- name: Run linting | |
run: | | |
pip install tox-uv | |
tox -e lint-${{ matrix.py-version.tox }} | |
build-docs: | |
name: "Build Docs" | |
runs-on: ubuntu-latest | |
needs: [lint] | |
permissions: | |
contents: read | |
pages: write | |
id-token: write | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: {python-version: "3.10"} | |
- name: Build Docs | |
run: | | |
pip install tox-uv | |
tox -e docs-py310 -- -r | |
typecheck: | |
needs: [lint] | |
strategy: | |
matrix: | |
py-version: [ {semantic: '3.13', tox: 'py313'} ] | |
name: Type Check ${{ matrix.py-version.semantic }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
id: setup-python | |
with: | |
python-version: ${{ matrix.py-version.semantic }} | |
- name: Run type check | |
run: | | |
pip install tox-uv | |
tox -e mypy-${{ matrix.py-version.tox }} | |
audit: | |
needs: [lint] | |
strategy: | |
matrix: | |
py-version: [ {semantic: '3.13', tox: 'py313'} ] | |
name: Audit ${{ matrix.py-version.semantic }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
id: setup-python | |
with: | |
python-version: ${{ matrix.py-version.semantic }} | |
- name: Run pip-audit | |
run: | | |
pip install tox-uv | |
tox -e audit-${{ matrix.py-version.tox }} | |
coretest: | |
needs: [typecheck] | |
strategy: | |
matrix: | |
py-version: [ {semantic: '3.10', tox: 'py310'} ] | |
name: Core Tests ${{ matrix.py-version.semantic }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
id: setup-python | |
with: | |
python-version: ${{ matrix.py-version.semantic }} | |
- uses: actions/cache@v4 | |
with: | |
path: .tox/coretest-${{ matrix.py-version.tox }} | |
key: coretest-${{ matrix.py-version.tox }}-${{ hashFiles('pyproject.toml') }}-${{ hashFiles('tox.ini') }} | |
- name: Run core tests | |
run: | | |
pip install tox-uv | |
tox -e coretest-${{ matrix.py-version.tox }} | |
fulltest: | |
needs: [typecheck] | |
strategy: | |
fail-fast: false # Remove once we have solved the regular "LinAlgErrors" | |
matrix: | |
py-version: [ {semantic: '3.10', tox: 'py310'}, {semantic: '3.13', tox: 'py313'} ] | |
name: Full Tests ${{ matrix.py-version.semantic }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
id: setup-python | |
with: | |
python-version: ${{ matrix.py-version.semantic }} | |
- uses: actions/cache@v4 | |
with: | |
path: .tox/fulltest-${{ matrix.py-version.tox }} | |
key: fulltest-${{ matrix.py-version.tox }}-${{ hashFiles('pyproject.toml') }}-${{ hashFiles('tox.ini') }} | |
- name: Run full tests | |
run: | | |
pip install tox-uv | |
tox -e fulltest-${{ matrix.py-version.tox }} -- --cov-report=xml | |
- name: "Assert Overall Coverage" | |
run: | | |
pip install coverage | |
coverage report --fail-under=${{ env.COVERAGE_OVERALL_THRESH }} | |
- name: "Assert Individual Coverage" | |
shell: bash | |
run: | | |
coverage report | | |
grep -E -o '[0-9]+%' | | |
tr -d '%' | | |
sed '$d' | | |
awk '{if ( $1<${{ env.COVERAGE_INDIVIDUAL_THRESH }} ) exit 1 }' |