From 13a586deba9b4ffb065901dbe392b3c881e80182 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pave=C5=82=20Ty=C5=9Blacki?= Date: Sun, 16 Feb 2025 12:27:02 +0000 Subject: [PATCH] add postgres 17 support and mark postgres 12 and 13 as deprecated --- CHANGES.md | 3 +++ Dockerfile | 17 ++++++++++------- README.md | 2 +- docker-compose.yml | 15 ++++++++++++--- tox.ini | 21 ++++++++++++++------- 5 files changed, 40 insertions(+), 18 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index ea62a33..64f12bd 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,9 +3,12 @@ ## 0.17 - added support for Python 3.13 - added support for Django 5.1 + - added postgres 17 support - dropped support for Python 3.6 and 3.7 - dropped support for Django 3.2, 4.0 and 4.1 - dropped `migrate_isnotnull_check_constraints` command + - marked postgres 12 support as deprecated + - marked postgres 13 support as deprecated ## 0.16 - changed `ADD COLUMN DEFAULT NULL` to safe operation for code default diff --git a/Dockerfile b/Dockerfile index 729e1c3..00b4364 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,11 +4,13 @@ ENV LC_ALL=C.UTF-8 ENV LANG C.UTF-8 ENV DEBIAN_FRONTEND=noninteractive -RUN apt-get update -RUN apt-get install -q -y --no-install-recommends software-properties-common git gpg-agent -RUN add-apt-repository ppa:deadsnakes/ppa -RUN apt-get update -RUN apt-get install -q -y --no-install-recommends \ +RUN apt-get update && \ + apt-get install -q -y --no-install-recommends software-properties-common git gpg-agent && \ + add-apt-repository ppa:deadsnakes/ppa && \ + echo "deb http://apt.postgresql.org/pub/repos/apt noble-pgdg main" > /etc/apt/sources.list.d/pgdg.list && \ + curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc > /etc/apt/trusted.gpg.d/apt.postgresql.org.asc && \ + apt-get update && \ + apt-get install -q -y --no-install-recommends \ python3.8 python3.8-distutils \ python3.9 python3.9-distutils \ python3.10 python3.10-distutils \ @@ -17,8 +19,9 @@ RUN apt-get install -q -y --no-install-recommends \ python3.13 \ python3-pip \ libgdal34 \ - postgresql-client -RUN pip3 install --break-system-packages setuptools tox + postgresql-client-17 && \ + rm -rf /var/lib/apt/lists/* && \ + pip3 install --break-system-packages setuptools tox ADD . /app WORKDIR /app diff --git a/README.md b/README.md index 1806b78..d2dc28e 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [![PyPI](https://img.shields.io/pypi/v/django-pg-zero-downtime-migrations.svg)](https://pypi.org/project/django-pg-zero-downtime-migrations/) ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/django-pg-zero-downtime-migrations.svg) ![PyPI - Django Version](https://img.shields.io/pypi/djversions/django-pg-zero-downtime-migrations.svg?label=django) -![Postgres Version](https://img.shields.io/badge/postgres-12%20|%2013%20|%2014%20|%2015%20|%2016%20-blue.svg) +![Postgres Version](https://img.shields.io/badge/postgres-12%20|%2013%20|%2014%20|%2015%20|%2016%20|%2017%20-blue.svg) [![PyPI - License](https://img.shields.io/pypi/l/django-pg-zero-downtime-migrations.svg)](https://raw.githubusercontent.com/tbicr/django-pg-zero-downtime-migrations/master/LICENSE) [![PyPI - Downloads](https://img.shields.io/pypi/dm/django-pg-zero-downtime-migrations.svg)](https://pypistats.org/packages/django-pg-zero-downtime-migrations) diff --git a/docker-compose.yml b/docker-compose.yml index 3ecba04..17a584a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,12 @@ services: + pg17: + image: postgres:17-alpine + environment: + POSTGRES_USER: root + POSTGRES_PASSWORD: root + volumes: + - ./docker_postgres_init.sql:/docker-entrypoint-initdb.d/docker_postgres_init.sql + pg16: image: postgres:16-alpine environment: @@ -47,8 +55,8 @@ services: volumes: - ./docker_postgres_init.sql:/docker-entrypoint-initdb.d/docker_postgres_init.sql - postgis16: - image: postgis/postgis:16-3.4-alpine + postgis17: + image: postgis/postgis:17-3.5-alpine environment: POSTGRES_USER: root POSTGRES_PASSWORD: root @@ -58,12 +66,13 @@ services: django-pg-zero-downtime-migrations-tests: build: . depends_on: + - pg17 - pg16 - pg15 - pg14 - pg13 - pg12 - pg11 - - postgis16 + - postgis17 volumes: - .:/app diff --git a/tox.ini b/tox.ini index 88e4315..77cc9a1 100644 --- a/tox.ini +++ b/tox.ini @@ -8,22 +8,29 @@ envlist = usedevelop = True allowlist_externals = bash commands = + # linters py{3.13}-django{5.1}-psycopg{3}: flake8 py{3.13}-django{5.1}-psycopg{3}: isort . --check --diff - py{3.8,3.9,3.10,3.11,3.12,3.13}-django{4.2,5.0,5.1}-psycopg{2,3}: bash -c "DB_HOST=pg16 DB_USER=test pytest tests/unit" - py{3.8,3.9,3.10,3.11,3.12,3.13}-django{4.2,5.0,5.1}-psycopg{2,3}: bash -c "DB_HOST=postgis16 DB_USER=root DB_ENGINE=django_zero_downtime_migrations.backends.postgis pytest tests/unit" + # unit tests + py{3.8,3.9,3.10,3.11,3.12,3.13}-django{4.2,5.0,5.1}-psycopg{2,3}: bash -c "DB_HOST=pg17 DB_USER=test pytest tests/unit" + py{3.8,3.9,3.10,3.11,3.12,3.13}-django{4.2,5.0,5.1}-psycopg{2,3}: bash -c "DB_HOST=postgis17 DB_USER=root DB_ENGINE=django_zero_downtime_migrations.backends.postgis pytest tests/unit" - py{3.13}-django{5.1}-psycopg{3}: bash -c "DB_HOST=pg16 DB_USER=test DB_ENGINE=django.db.backends.postgresql pytest tests/integration" - py{3.13}-django{5.1}-psycopg{3}: bash -c "DB_HOST=pg16 DB_USER=test DB_SUPER_USER=root pytest tests/integration" - py{3.13}-django{5.1}-psycopg{3}: bash -c "DB_HOST=postgis16 DB_USER=root DB_ENGINE=django_zero_downtime_migrations.backends.postgis pytest tests/integration" + # integration tests + py{3.13}-django{5.1}-psycopg{3}: bash -c "DB_HOST=pg17 DB_USER=test DB_ENGINE=django.db.backends.postgresql pytest tests/integration" + py{3.13}-django{5.1}-psycopg{3}: bash -c "DB_HOST=pg17 DB_USER=test DB_SUPER_USER=root pytest tests/integration" + py{3.13}-django{5.1}-psycopg{3}: bash -c "DB_HOST=postgis17 DB_USER=root DB_ENGINE=django_zero_downtime_migrations.backends.postgis pytest tests/integration" + # old postgres version support integration tests + py{3.13}-django{5.1}-psycopg{3}: bash -c "DB_HOST=pg16 DB_USER=test DB_SUPER_USER=root pytest tests/integration" py{3.13}-django{5.1}-psycopg{3}: bash -c "DB_HOST=pg15 DB_USER=test DB_SUPER_USER=root pytest tests/integration" py{3.13}-django{5.1}-psycopg{3}: bash -c "DB_HOST=pg14 DB_USER=test DB_SUPER_USER=root pytest tests/integration" py{3.13}-django{5.1}-psycopg{3}: bash -c "DB_HOST=pg13 DB_USER=test DB_SUPER_USER=root pytest tests/integration" - py{3.12}-django{5.0}-psycopg{3}: bash -c "DB_HOST=pg12 DB_USER=test DB_SUPER_USER=root pytest tests/integration" - py{3.12}-django{4.2}-psycopg{3}: bash -c "DB_HOST=pg16 DB_USER=test DB_SUPER_USER=root pytest tests/integration" + + # old django version support integration tests + py{3.12}-django{5.0}-psycopg{3}: bash -c "DB_HOST=pg17 DB_USER=test DB_SUPER_USER=root pytest tests/integration" + py{3.12}-django{4.2}-psycopg{3}: bash -c "DB_HOST=pg17 DB_USER=test DB_SUPER_USER=root pytest tests/integration" deps = py{3.13}-django{5.1}-psycopg{3}: flake8