Skip to content

DelegateParameter infer methods to find root parameters, instruments, and channels #14463

DelegateParameter infer methods to find root parameters, instruments, and channels

DelegateParameter infer methods to find root parameters, instruments, and channels #14463

Workflow file for this run

name: Run mypy and pytest
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
push:
branches:
- 'main'
- 'release/*'
tags:
- 'v*'
pull_request:
merge_group:
branches: ['main']
permissions:
contents: read
jobs:
pytestmypy:
runs-on: ${{ matrix.os }}
strategy:
# don't stop other jobs if one fails
# this is often due to network issues
# and or flaky tests
# and the time lost in such cases
# is bigger than the gain from canceling the job
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
python-version: ["3.9", "3.10", "3.11", "3.12"]
min-version: [false]
include:
- os: ubuntu-latest
python-version: "3.9"
min-version: true
exclude:
- os: ubuntu-latest
python-version: "3.9"
- os: windows-latest
python-version: "3.11"
- os: windows-latest
python-version: "3.12"
env:
OS: ${{ matrix.os }}
PYTHON: ${{ matrix.python-version }}
steps:
- name: Harden Runner
uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0
with:
egress-policy: audit
- uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
with:
submodules: true
# we need full history with tags for the version number
fetch-depth: '0'
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
cache-dependency-path: |
pyproject.toml
requirements.txt
- name: upgrade pip setuptools wheel
run: python -m pip install --upgrade pip setuptools wheel
shell: bash
- name: install qcodes with minimum requirements
run: |
pip install uv
uv pip compile pyproject.toml --extra test --resolution=lowest-direct --output-file min-requirements.txt
pip install -r min-requirements.txt
pip install .[test]
if: ${{ matrix.min-version }}
- name: install qcodes
run: |
pip install .[test] -c requirements.txt
if: ${{ !matrix.min-version }}
- name: Get Pyright Version
id: pyright-version
run: |
PYRIGHT_VERSION=$(jq -r '.devDependencies.pyright' < package.json)
echo $PYRIGHT_VERSION
echo "version=$PYRIGHT_VERSION" >> $GITHUB_OUTPUT
working-directory: .github
shell: bash
- uses: jakebailey/pyright-action@3bdde3b31d26f0f1f5de051b1fbd7a536a9a4e7f # v2.3.1
with:
version: ${{ steps.pyright-version.outputs.version }}
if: ${{ !matrix.min-version }}
- name: Run Mypy
run: mypy -p qcodes
if: ${{ !matrix.min-version }}
- name: Run parallel tests
run: |
pytest -m "not serial" --cov=qcodes --cov-report xml --hypothesis-profile ci --durations=20 tests
# a subset of the tests fails when run in parallel on Windows so run those in serial here
- name: Run serial tests
run: |
pytest -m "serial" -n 0 --dist no --cov=qcodes --cov-report xml --cov-append --hypothesis-profile ci tests
- name: Upload coverage to Codecov
uses: codecov/codecov-action@84508663e988701840491b86de86b666e8a86bed # v4.3.0
with:
file: ./coverage.xml
env_vars: OS,PYTHON
token: ${{ secrets.CODECOV_TOKEN }}
if: ${{ github.event_name != 'merge_group' }}
# we don't trigger coverage from merge groups since that would
# make twice the number of coverage reports be uploded from a given commit