--- name: CI on: push: branches: - master - patch pull_request: branches: - master - patch - 'feat/**' - 'fix/**' - 'janitor/**' workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: lint: name: Perform Lint Checks runs-on: ubuntu-latest strategy: matrix: python-version: [3.14] steps: - name: Checkout Source Files id: checkout uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - name: Setup Environment id: setup-environment uses: ./.github/actions/setup with: python-version: ${{ matrix.python-version }} cache-pre-commit: true uv-install-options: --all-extras - name: Run pre-commit Checks id: run-pre-commit shell: bash run: | uv run pre-commit run --all-files --verbose tests: name: Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} needs: lint runs-on: ${{ matrix.os }} strategy: matrix: python-version: [3.11, 3.12, 3.13, 3.14] os: [ubuntu-latest, macos-latest, windows-latest] extras: [false, true] exclude: - os: macos-latest extras: true - os: windows-latest extras: true steps: - name: Checkout Source Files id: checkout uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - name: Setup Environment id: setup-environment uses: ./.github/actions/setup with: python-version: ${{ matrix.python-version }} uv-install-options: ${{ matrix.extras == true && '--all-extras' || '' }} - name: Run PyTests with Code Coverage id: run-pytests-with-code-coverage shell: bash run: | if [[ "${{ runner.os }}" == "Windows" ]]; then uv run pytest -n0 --cov kasa --cov-report xml else uv run pytest -n auto --cov kasa --cov-report xml fi - name: Upload Code Coverage to Codecov id: upload-code-coverage-to-codecov uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0 with: token: ${{ secrets.CODECOV_TOKEN }}