# https://docs.djangoproject.com/en/stable/faq/install/#what-python-version-can-i-use-with-django name: test "on": push: branches: - '**' pull_request: workflow_dispatch: jobs: test-matrix: runs-on: ubuntu-latest strategy: matrix: python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] django-version: ['4.2', '5.1', '5.2'] exclude: # Exclude Python 3.9 with Django 5.1 and 5.2 - python-version: '3.9' django-version: '5.1' - python-version: '3.9' django-version: '5.2' # Exclude Python 3.13 with Django 4.2 - python-version: '3.13' django-version: '4.2' steps: - uses: actions/checkout@v4 - name: Set up python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Install Poetry uses: snok/install-poetry@v1 with: version: 1.8.4 virtualenvs-create: true virtualenvs-in-project: true installer-parallel: true - name: Set up cache uses: actions/cache@v4 with: path: .venv key: venv-${{ matrix.python-version }}-${{ hashFiles('poetry.lock') }} - name: Install dependencies run: | poetry install poetry run pip install --upgrade pip poetry run pip install --upgrade "django==${{ matrix.django-version }}.*" - name: Run tests run: | poetry run pytest poetry check poetry run pip check - name: Upload coverage to Codecov uses: codecov/codecov-action@v5 with: file: ./coverage.xml