name: Test on: [push, pull_request] env: FORCE_COLOR: 1 jobs: test: runs-on: ${{ matrix.os }} strategy: matrix: python-version: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.15-dev"] numpy: [0, 1] os: [ubuntu-latest, macos-latest, windows-latest, macos-14] steps: - uses: actions/checkout@v7 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v6 with: python-version: ${{ matrix.python-version }} allow-prereleases: true cache: pip cache-dependency-path: pyproject.toml - name: Install dependencies run: | pip install . --group dev - name: Optionally install numpy if: matrix.numpy == 1 run: pip install numpy - name: Install SpatiaLite if: matrix.os == 'ubuntu-latest' run: sudo apt-get install libsqlite3-mod-spatialite - name: Build extension for --load-extension test if: matrix.os == 'ubuntu-latest' run: |- (cd tests && gcc ext.c -fPIC -shared -o ext.so && ls -lah) - name: Run tests run: | pytest -v - name: Run autocommit tests just on 3.14/Ubuntu if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.14' run: pytest --sqlite-autocommit - name: run mypy run: mypy sqlite_utils tests - name: run flake8 run: flake8 - name: run ty if: matrix.os != 'windows-latest' && matrix.python-version == '3.14' run: | pip install uv uv run ty check sqlite_utils - name: Check formatting run: black . --check - name: Check if cog needs to be run run: | cog --check --diff README.md docs/*.rst