--- name: CI "on": [push] jobs: test: runs-on: ubuntu-latest strategy: matrix: python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - id: tox-env run: | VERSION=${{ matrix.python-version }} echo "environment=${VERSION//.}" >> $GITHUB_OUTPUT - name: Cache LLVM and Clang id: cache-llvm uses: actions/cache@v4 with: path: llvm/lib/libclang.so* key: llvm-17 - name: Install LLVM and Clang uses: KyleMayes/install-llvm-action@v2 with: version: "17.0" cached: ${{ steps.cache-llvm.outputs.cache-hit }} - name: Symlink libclang.so run: sudo ln -s ${{ env.LLVM_PATH }}/lib/libclang.so /usr/lib/x86_64-linux-gnu/libclang-17.so - name: Install uv uses: astral-sh/setup-uv@v3 with: version: "0.4.22" enable-cache: true cache-suffix: ${{ matrix.python-version }} - name: Install dependencies run: | uv tool install tox --with tox-uv - name: Test with tox run: | tox -e py${{ steps.tox-env.outputs.environment }} coverage: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Cache LLVM and Clang id: cache-llvm uses: actions/cache@v4 with: path: llvm/lib/libclang.so* key: llvm-17 - name: Install LLVM and Clang uses: KyleMayes/install-llvm-action@v2 with: version: "17.0" cached: ${{ steps.cache-llvm.outputs.cache-hit }} - name: Symlink libclang.so run: sudo ln -s ${{ env.LLVM_PATH }}/lib/libclang.so /usr/lib/x86_64-linux-gnu/libclang-17.so - name: Install uv uses: astral-sh/setup-uv@v3 with: version: "0.4.22" enable-cache: true cache-suffix: "coverage" - name: Install dependencies run: | uv tool install tox --with tox-uv - name: Test with tox run: | tox -e cov - name: Upload coverage to Codecov uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} files: ./coverage.xml verbose: true fail_ci_if_error: true check: runs-on: ubuntu-latest strategy: matrix: check: ["pylint", "pycodestyle", "black", "mypy"] steps: - uses: actions/checkout@v4 - name: Cache LLVM and Clang id: cache-llvm uses: actions/cache@v4 with: path: llvm/lib/libclang.so* key: llvm-17 - name: Install LLVM and Clang uses: KyleMayes/install-llvm-action@v2 with: version: "17.0" cached: ${{ steps.cache-llvm.outputs.cache-hit }} - name: Symlink libclang.so run: sudo ln -s ${{ env.LLVM_PATH }}/lib/libclang.so /usr/lib/x86_64-linux-gnu/libclang-17.so - name: Install uv uses: astral-sh/setup-uv@v3 with: version: "0.4.22" enable-cache: true cache-suffix: "check" - name: Install dependencies run: | uv tool install tox --with tox-uv - name: Static code checks run: | tox -e check-${{ matrix.check }} docs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Cache LLVM and Clang id: cache-llvm uses: actions/cache@v4 with: path: llvm/lib/libclang.so* key: llvm-17 - name: Install LLVM and Clang uses: KyleMayes/install-llvm-action@v2 with: version: "17.0" cached: ${{ steps.cache-llvm.outputs.cache-hit }} - name: Symlink libclang.so run: sudo ln -s ${{ env.LLVM_PATH }}/lib/libclang.so /usr/lib/x86_64-linux-gnu/libclang-17.so - name: Install uv uses: astral-sh/setup-uv@v3 with: version: "0.4.22" enable-cache: true cache-suffix: "docs" - name: Install dependencies run: | uv tool install tox --with tox-uv - name: Build docs run: | tox -e docs sphinx: runs-on: ubuntu-22.04 strategy: matrix: sphinx-version: ["four"] steps: - uses: actions/checkout@v4 - name: Cache LLVM and Clang id: cache-llvm uses: actions/cache@v4 with: path: llvm/lib/libclang.so* key: llvm-11 - name: Install LLVM and Clang uses: KyleMayes/install-llvm-action@v2 with: version: "11.0" cached: ${{ steps.cache-llvm.outputs.cache-hit }} - name: Symlink libclang.so run: | sudo ln -s ${{ env.LLVM_PATH }}/lib/libclang.so /usr/lib/x86_64-linux-gnu/libclang-11.so sudo apt-get update sudo apt install libtinfo5 - name: Install uv uses: astral-sh/setup-uv@v3 with: version: "0.4.22" enable-cache: true cache-suffix: ${{ matrix.sphinx-version }} - name: Install dependencies run: | uv tool install tox --with tox-uv - name: Test with tox run: | tox -e sphinx-${{ matrix.sphinx-version }}