From a5aa0fdb3a4247ff913e3e993b688031819e454d Mon Sep 17 00:00:00 2001 From: Alex Tomkins Date: Fri, 27 Mar 2026 20:48:32 +0000 Subject: [PATCH 1/7] Update copyright year --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index f82098c..e813c56 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2019-2025, Developer Society Limited +Copyright (c) 2019-2026, Developer Society Limited All rights reserved. Redistribution and use in source and binary forms, with or without From 7a71ae891dbc51ec29d0040fce3a990c6c34148f Mon Sep 17 00:00:00 2001 From: Alex Tomkins Date: Fri, 27 Mar 2026 20:25:07 +0000 Subject: [PATCH 2/7] Drop support for Python 3.9 --- pyproject.toml | 5 ++--- tox.ini | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 68c8237..04bb391 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ version = '0.2' description = 'Django Postgres Lock' readme = 'README.md' maintainers = [{ name = 'The Developer Society', email = 'studio@dev.ngo' }] -requires-python = '>= 3.9' +requires-python = '>= 3.10' dependencies = [ 'Django>=3.2', ] @@ -19,7 +19,6 @@ classifiers = [ 'Operating System :: OS Independent', 'Programming Language :: Python', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', @@ -41,7 +40,7 @@ include = ['postgres_lock*'] [tool.ruff] line-length = 99 -target-version = 'py39' +target-version = 'py310' [tool.ruff.lint] extend-select = [ diff --git a/tox.ini b/tox.ini index 76ecfc4..cfa7ed6 100644 --- a/tox.ini +++ b/tox.ini @@ -2,8 +2,8 @@ envlist = check lint - py{39,310}-django3.2 - py{39,310,311,312}-django4.2 + py310-django3.2 + py{310,311,312}-django4.2 py{310,311,312,313}-django5.2 coverage no_package = true From 51986c67a569e4768d98fd63747b1503f5a78574 Mon Sep 17 00:00:00 2001 From: Alex Tomkins Date: Fri, 27 Mar 2026 20:27:23 +0000 Subject: [PATCH 3/7] Python dependency upgrades --- requirements/local.txt | 8 ++++---- requirements/testing.txt | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/requirements/local.txt b/requirements/local.txt index 2ed707f..52e9b37 100644 --- a/requirements/local.txt +++ b/requirements/local.txt @@ -1,7 +1,7 @@ -r testing.txt -bump-my-version==1.2.2 +bump-my-version==1.3.0 Django>=5.2,<6.0 -psycopg==3.2.10 -tox==4.30.2 -tox-uv==1.28.0 +psycopg==3.3.3 +tox==4.51.0 +tox-uv==1.33.4 diff --git a/requirements/testing.txt b/requirements/testing.txt index c5675e3..842404e 100644 --- a/requirements/testing.txt +++ b/requirements/testing.txt @@ -1,6 +1,6 @@ -build==1.3.0 -check-wheel-contents==0.6.1 -coverage==7.10.6 -pipdeptree==2.28.0 -ruff==0.13.0 +build==1.4.2 +check-wheel-contents==0.6.3 +coverage==7.13.5 +pipdeptree==2.34.0 +ruff==0.15.8 twine==6.2.0 From a442e5f7cf411764b1f9143ab03b1df1ab743f2f Mon Sep 17 00:00:00 2001 From: Alex Tomkins Date: Fri, 27 Mar 2026 20:47:30 +0000 Subject: [PATCH 4/7] Tighten CI permissions --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 76d26b8..dd9db07 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,6 +3,8 @@ on: pull_request concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true +permissions: + contents: read jobs: matrix: name: Build test matrix From 74eb0ff8e6d3383abb6c13d36819af5746d9f499 Mon Sep 17 00:00:00 2001 From: Alex Tomkins Date: Fri, 27 Mar 2026 20:50:02 +0000 Subject: [PATCH 5/7] Upgrade actions --- .github/workflows/ci.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dd9db07..dce879a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-24.04 steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: persist-credentials: false ref: ${{ github.event.pull_request.head.sha }} @@ -39,7 +39,7 @@ jobs: fail-fast: false steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: persist-credentials: false ref: ${{ github.event.pull_request.head.sha }} @@ -60,7 +60,7 @@ jobs: pip install $(grep -E "^(tox|tox-uv)==" requirements/local.txt) tox -e ${{ matrix.tox_env }} - name: Upload coverage data - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: coverage-data-${{ matrix.tox_env }} include-hidden-files: true @@ -82,7 +82,7 @@ jobs: if: always() steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: persist-credentials: false ref: ${{ github.event.pull_request.head.sha }} @@ -92,7 +92,7 @@ jobs: python-version: "3.13" cache: "pip" cache-dependency-path: "requirements/*.txt" - - uses: actions/download-artifact@v5 + - uses: actions/download-artifact@v8 with: pattern: coverage-data-* merge-multiple: true From b4efa1d836d17caa390b3322dc54f0668c3bc4c9 Mon Sep 17 00:00:00 2001 From: Alex Tomkins Date: Fri, 27 Mar 2026 20:50:40 +0000 Subject: [PATCH 6/7] Upgrade postgres image --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dce879a..f1b2f4d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -68,7 +68,7 @@ jobs: if-no-files-found: ignore services: postgres: - image: postgres:17-alpine + image: postgres:18-alpine env: POSTGRES_PASSWORD: password ports: From 4942b5956e2cfb8c230c4ea85449f2b8c63e7b68 Mon Sep 17 00:00:00 2001 From: Alex Tomkins Date: Fri, 27 Mar 2026 20:29:49 +0000 Subject: [PATCH 7/7] Add support for Python 3.14 --- .github/workflows/ci.yml | 4 ++-- .github/workflows/publish.yml | 2 +- pyproject.toml | 1 + tox.ini | 8 ++++---- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f1b2f4d..86f421b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,7 +18,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v6 with: - python-version: "3.13" + python-version: "3.14" cache: "pip" cache-dependency-path: "requirements/*.txt" - name: Run tox @@ -89,7 +89,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v6 with: - python-version: "3.13" + python-version: "3.14" cache: "pip" cache-dependency-path: "requirements/*.txt" - uses: actions/download-artifact@v8 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 74e0e26..037bae0 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -23,7 +23,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v6 with: - python-version: "3.13" + python-version: "3.14" - name: Build packages run: | pip install -r requirements/testing.txt diff --git a/pyproject.toml b/pyproject.toml index 04bb391..a76bc6a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,6 +23,7 @@ classifiers = [ 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', 'Programming Language :: Python :: 3.13', + 'Programming Language :: Python :: 3.14', ] [project.urls] diff --git a/tox.ini b/tox.ini index cfa7ed6..3656f7e 100644 --- a/tox.ini +++ b/tox.ini @@ -4,7 +4,7 @@ envlist = lint py310-django3.2 py{310,311,312}-django4.2 - py{310,311,312,313}-django5.2 + py{310,311,312,313,314}-django5.2 coverage no_package = true @@ -22,13 +22,13 @@ commands = make test package = editable [testenv:check] -basepython = python3.13 +basepython = python3.14 commands = make check [testenv:lint] -basepython = python3.13 +basepython = python3.14 commands = make lint [testenv:coverage] -basepython = python3.13 +basepython = python3.14 commands = make coverage-report