diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f52a3d282..cc3a4ddf8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -21,7 +21,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: 3.8 + python-version: 3.9 - name: Get pip cache dir id: pip-cache diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index fe71352e8..7499876ef 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,11 +7,11 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] + python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] target: [pil, imagemagick, graphicsmagick, redis, wand, dbm] include: - - python-version: '3.8' + - python-version: '3.9' target: 'qa' steps: - uses: actions/checkout@v4 diff --git a/CHANGES.rst b/CHANGES.rst index b9e794ef5..aad223e5c 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -6,6 +6,8 @@ Unreleased ========== * ``THUMBNAIL_STORAGE`` should now be an alias in the Django ``STORAGES`` setting. The old way of specifying a dotted path to a Storage module is still supported. +* Confirmed support for Python 3.13 (on Django 5.1+). +* Drop support for Python 3.8. 12.11.0 ======= diff --git a/docs/requirements.rst b/docs/requirements.rst index c39851f69..6f170d766 100644 --- a/docs/requirements.rst +++ b/docs/requirements.rst @@ -4,7 +4,7 @@ Requirements Base requirements ================= -- `Python`_ 3.8+ +- `Python`_ 3.9+ - `Django`_ - :ref:`kvstore-requirements` - :ref:`image-library` diff --git a/pyproject.toml b/pyproject.toml index 4133e02d2..fbe7fd9f1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,7 +15,7 @@ authors = [ maintainers = [ {name = "Jazzband", email = "roadies@jazzband.co"} ] -requires-python = ">= 3.8" +requires-python = ">= 3.9" classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: Web Environment', @@ -23,11 +23,11 @@ classifiers=[ 'License :: OSI Approved :: BSD License', 'Operating System :: OS Independent', 'Programming Language :: Python', - 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', + 'Programming Language :: Python :: 3.13', 'Topic :: Internet :: WWW/HTTP :: Dynamic Content', 'Topic :: Multimedia :: Graphics', 'Framework :: Django', diff --git a/tox.ini b/tox.ini index af890bde0..744f79d07 100644 --- a/tox.ini +++ b/tox.ini @@ -1,10 +1,10 @@ [gh-actions] python = - 3.8: py38 3.9: py39 3.10: py310 3.11: py311 3.12: py312 + 3.13: py313 [gh-actions:env] DJANGO = @@ -23,9 +23,10 @@ TARGET = [tox] skipsdist = True envlist = - py38-qa, - py{38,39,310,311,312}-django{42}-{pil,imagemagick,graphicsmagick,redis,dynamodb,wand,pgmagick,dbm,vipsthumbnail} - py{310,311,312}-django{50,51}-{pil,imagemagick,graphicsmagick,redis,dynamodb,wand,pgmagick,dbm,vipsthumbnail} + py39-qa, + py{39,310,311,312}-django{42}-{pil,imagemagick,graphicsmagick,redis,dynamodb,wand,pgmagick,dbm,vipsthumbnail} + py{310,311,312}-django{50}-{pil,imagemagick,graphicsmagick,redis,dynamodb,wand,pgmagick,dbm,vipsthumbnail} + py{310,311,312,313}-django{51}-{pil,imagemagick,graphicsmagick,redis,dynamodb,wand,pgmagick,dbm,vipsthumbnail} [testenv] deps = @@ -55,7 +56,7 @@ commands = coverage report -m coverage xml -[testenv:py38-qa] +[testenv:py39-qa] skip_install = True deps = ruff