Skip to content

Modernize Python and Django support: Drop Python 3.9, add Python 3.14 and Django 6.0 #1400

Modernize Python and Django support: Drop Python 3.9, add Python 3.14 and Django 6.0

Modernize Python and Django support: Drop Python 3.9, add Python 3.14 and Django 6.0 #1400

Workflow file for this run

name: CodeCov
on: [pull_request]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
sqlite:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: [ "3.10", "3.11", "3.12", "3.13", "3.14" ]
requirements-file: [
dj42_cms41.txt,
dj50_cms41.txt,
dj51_cms41.txt,
dj52_cms41.txt,
dj52_cms50.txt,
dj60_cms50.txt,
]
exclude:
- requirements-file: dj52_cms41.txt
python-version: "3.10"
- requirements-file: dj52_cms50.txt
python-version: "3.10"
- requirements-file: dj60_cms50.txt
python-version: "3.10"
- requirements-file: dj60_cms50.txt
python-version: "3.11"
- requirements-file: dj42_cms41.txt
python-version: "3.14"
- requirements-file: dj50_cms41.txt
python-version: "3.14"
- requirements-file: dj51_cms41.txt
python-version: "3.14"
- requirements-file: dj52_cms41.txt
python-version: "3.14"
- requirements-file: dj52_cms50.txt
python-version: "3.14"
steps:
- uses: actions/checkout@v5
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install uv
uses: astral-sh/setup-uv@v5
- name: Install dependencies
run: |
sudo apt install gettext gcc -y
sudo apt install gettext gcc -y
sudo apt install gettext gcc -y
python -m pip install --upgrade pip uv
python -m pip install --upgrade pip uv
python -m pip install --upgrade pip uv
uv pip install --system -r tests/requirements/${{ matrix.requirements-file }}
uv pip install --system -e .
- name: Run coverage
run: coverage run ./test_settings.py
- name: Upload Coverage to Codecov
uses: codecov/codecov-action@v5
postgres:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: [ "3.10", "3.11", "3.12", "3.13", "3.14" ]
requirements-file: [
dj42_cms41.txt,
dj50_cms41.txt,
dj51_cms41.txt,
dj52_cms41.txt,
dj52_cms50.txt,
dj60_cms50.txt,
]
exclude:
- requirements-file: dj52_cms41.txt
python-version: "3.10"
- requirements-file: dj52_cms50.txt
python-version: "3.10"
- requirements-file: dj60_cms50.txt
python-version: "3.10"
- requirements-file: dj60_cms50.txt
python-version: "3.11"
- requirements-file: dj42_cms41.txt
python-version: "3.14"
- requirements-file: dj50_cms41.txt
python-version: "3.14"
- requirements-file: dj51_cms41.txt
python-version: "3.14"
- requirements-file: dj52_cms41.txt
python-version: "3.14"
- requirements-file: dj52_cms50.txt
python-version: "3.14"
- requirements-file: dj60_cms50.txt
python-version: "3.14"
services:
postgres:
image: postgres:latest
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
ports:
- 5432:5432
# needed because the postgres container does not provide a healthcheck
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
steps:
- uses: actions/checkout@v5
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install uv
uses: astral-sh/setup-uv@v5
- name: Install dependencies
run: |
uv pip install --system -r tests/requirements/${{ matrix.requirements-file }}
uv pip install --system .
- name: Run coverage
run: coverage run ./test_settings.py
env:
DATABASE_URL: postgres://postgres:[email protected]/postgres
- name: Upload Coverage to Codecov
uses: codecov/codecov-action@v5
mysql:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: [ "3.10", "3.11", "3.12", "3.13", "3.14" ]
requirements-file: [
dj42_cms41.txt,
dj50_cms41.txt,
dj51_cms41.txt,
dj52_cms41.txt,
dj52_cms50.txt,
dj60_cms50.txt,
]
exclude:
- requirements-file: dj52_cms41.txt
python-version: "3.10"
- requirements-file: dj52_cms50.txt
python-version: "3.10"
- requirements-file: dj60_cms50.txt
python-version: "3.10"
- requirements-file: dj60_cms50.txt
python-version: "3.11"
- requirements-file: dj42_cms41.txt
python-version: "3.14"
- requirements-file: dj50_cms41.txt
python-version: "3.14"
- requirements-file: dj51_cms41.txt
python-version: "3.14"
- requirements-file: dj52_cms41.txt
python-version: "3.14"
- requirements-file: dj52_cms50.txt
python-version: "3.14"
- requirements-file: dj60_cms50.txt
python-version: "3.14"
services:
mysql:
image: mysql:8.4
env:
MYSQL_ALLOW_EMPTY_PASSWORD: yes
MYSQL_DATABASE: djangocms_test
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
steps:
- uses: actions/checkout@v5
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install uv
uses: astral-sh/setup-uv@v5
- name: Install dependencies
run: |
uv pip install --system -r tests/requirements/${{ matrix.requirements-file }}
uv pip install --system .
- name: Run coverage
run: coverage run ./test_settings.py
env:
DATABASE_URL: mysql://[email protected]/djangocms_test
- name: Upload Coverage to Codecov
uses: codecov/codecov-action@v5
cms-develop-sqlite:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
python-version: ['3.12']
requirements-file: ['dj52_cms50.txt']
cms-version: [
'https://github.com/django-cms/django-cms/archive/main.tar.gz'
]
os: [
ubuntu-latest,
]
steps:
- uses: actions/checkout@v5
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install uv
uses: astral-sh/setup-uv@v5
- name: Install dependencies
run: |
uv pip install --system -r tests/requirements/${{ matrix.requirements-file }}
uv pip uninstall --system django-cms
uv pip install --system ${{ matrix.cms-version }}
uv pip install --system .
- name: Run coverage
run: coverage run ./test_settings.py
- name: Upload Coverage to Codecov
uses: codecov/codecov-action@v5
sqlite-django-main:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: [ "3.13" ]
cms-version: [
'https://github.com/django-cms/django-cms/archive/main.tar.gz'
]
django-version: [
'https://github.com/django/django/archive/main.tar.gz'
]
requirements-file: ['dj60_cms50.txt']
steps:
- uses: actions/checkout@v5
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install uv
uses: astral-sh/setup-uv@v5
- name: Install dependencies
run: |
uv pip install --system -r tests/requirements/${{ matrix.requirements-file }}
uv pip uninstall --system Django django-cms
uv pip install --system ${{ matrix.cms-version }} ${{ matrix.django-version }}
uv pip install --system .
- name: Run coverage
run: coverage run ./test_settings.py
- name: Upload Coverage to Codecov
uses: codecov/codecov-action@v5