diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 9558bffd..88cbd8fb 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,8 +1,8 @@ // For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: // https://github.com/microsoft/vscode-dev-containers/tree/v0.245.0/containers/python-3 { - // Uncomment to run Python 3.13 or other specific version - // "image": "mcr.microsoft.com/devcontainers/python:3.13-bullseye", + // Uncomment to run Python 3.14 or other specific version + // "image": "mcr.microsoft.com/devcontainers/python:3.14-bullseye", // Configure tool-specific properties. "customizations": { diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 7b876413..62fcb715 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -74,7 +74,7 @@ The package provides custom Django management commands: ### CI/CD Information - GitHub Actions workflow: `.github/workflows/tests.yml` -- Tests run on Python 3.8-3.13 with Django 4.2-5.2 +- Tests run on Python 3.8-3.14 with Django 4.2-5.2 - Includes Playwright browser testing (requires `playwright install chromium --with-deps`) - Documentation building uses mkdocs - Pre-commit hooks run ruff diff --git a/.github/workflows/maint-docs-people.yml b/.github/workflows/maint-docs-people.yml index 4186c867..39f19b20 100644 --- a/.github/workflows/maint-docs-people.yml +++ b/.github/workflows/maint-docs-people.yml @@ -22,7 +22,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v6 with: - python-version: "3.13" + python-version: "3.14" - name: Install dependencies run: pip install -U PyGithub pyyaml pydantic pydantic-settings httpx diff --git a/.github/workflows/maint-supported-versions.yml b/.github/workflows/maint-supported-versions.yml index 246c7ef0..2142b258 100644 --- a/.github/workflows/maint-supported-versions.yml +++ b/.github/workflows/maint-supported-versions.yml @@ -21,7 +21,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v6 with: - python-version: "3.13" + python-version: "3.14" cache: "pip" - name: Install dependencies diff --git a/.github/workflows/pr-benchmark-generate.yml b/.github/workflows/pr-benchmark-generate.yml index f5087193..9eebd7b2 100644 --- a/.github/workflows/pr-benchmark-generate.yml +++ b/.github/workflows/pr-benchmark-generate.yml @@ -33,7 +33,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v6 with: - python-version: '3.13' + python-version: '3.14' cache: 'pip' - name: Install dependencies diff --git a/.github/workflows/release-docs.yml b/.github/workflows/release-docs.yml index ac4aef17..ed4d721e 100644 --- a/.github/workflows/release-docs.yml +++ b/.github/workflows/release-docs.yml @@ -50,7 +50,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v6 with: - python-version: "3.13" + python-version: "3.14" cache: 'pip' - name: Install dependencies diff --git a/.github/workflows/release-pypi.yml b/.github/workflows/release-pypi.yml index 01777f14..89e380c5 100644 --- a/.github/workflows/release-pypi.yml +++ b/.github/workflows/release-pypi.yml @@ -20,7 +20,7 @@ jobs: - name: Setup python uses: actions/setup-python@v6 with: - python-version: '3.13' + python-version: '3.14' - name: Install pypa/build run: >- diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index f622f0fb..d2ac6c49 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -13,7 +13,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] + python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] os: [ubuntu-latest, windows-latest] steps: @@ -48,7 +48,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ['3.13'] + python-version: ['3.14'] steps: - uses: actions/checkout@v5 @@ -73,7 +73,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ['3.13'] + python-version: ['4'] steps: - uses: actions/checkout@v5 diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ab2ef9b..4d5f76b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -107,6 +107,8 @@ #### Refactor +- Add support for Python 3.14 + - Extension authors: The `ExtensionComponentConfig` can be instantiated with `None` instead of a component instance. This allows to call component-level extension methods outside of the normal rendering lifecycle. diff --git a/asv.conf.json b/asv.conf.json index 0ae16e29..768214da 100644 --- a/asv.conf.json +++ b/asv.conf.json @@ -71,7 +71,7 @@ // The Pythons you'd like to test against. If not provided, defaults // to the current version of Python used to run `asv`. "pythons": [ - "3.13" + "3.14" ], // The list of conda channel names to be searched for benchmark diff --git a/docs/community/development.md b/docs/community/development.md index 20700aae..c47efc96 100644 --- a/docs/community/development.md +++ b/docs/community/development.md @@ -37,7 +37,8 @@ pyenv install -s 3.10 pyenv install -s 3.11 pyenv install -s 3.12 pyenv install -s 3.13 -pyenv local 3.8 3.9 3.10 3.11 3.12 3.13 +pyenv install -s 3.14 +pyenv local 3.8 3.9 3.10 3.11 3.12 3.13 3.14 tox -p ``` diff --git a/docs/overview/compatibility.md b/docs/overview/compatibility.md index 7bdf543f..f4a79eca 100644 --- a/docs/overview/compatibility.md +++ b/docs/overview/compatibility.md @@ -8,6 +8,7 @@ Django-components supports all supported combinations versions of [Django](https | 3.11 | 4.2, 5.1, 5.2 | | 3.12 | 4.2, 5.1, 5.2 | | 3.13 | 5.1, 5.2 | +| 3.14 | 5.2 | ### Operating systems diff --git a/pyproject.toml b/pyproject.toml index 65e1c909..84451e26 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,10 +27,11 @@ classifiers = [ "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", ] dependencies = [ 'Django>=4.2', - 'djc-core-html-parser>=1.0.2', + 'djc-core-html-parser>=1.0.3', 'typing-extensions>=4.12.2', ] license = { text = "MIT" } diff --git a/requirements-dev.txt b/requirements-dev.txt index e252d0c6..01c86bfe 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -36,7 +36,7 @@ django==4.2.25 # django-template-partials django-template-partials==25.2 # via -r requirements-dev.in -djc-core-html-parser==1.0.2 +djc-core-html-parser==1.0.3 # via -r requirements-dev.in exceptiongroup==1.3.0 # via pytest diff --git a/requirements-docs.txt b/requirements-docs.txt index 9d60ac75..ddeacb02 100644 --- a/requirements-docs.txt +++ b/requirements-docs.txt @@ -42,7 +42,7 @@ defusedxml==0.7.1 # via cairosvg django==5.2.5 # via -r requirements-docs.in -djc-core-html-parser==1.0.2 +djc-core-html-parser==1.0.3 # via -r requirements-docs.in ghp-import==2.1.0 # via mkdocs diff --git a/tox.ini b/tox.ini index 07cd812e..c735d883 100644 --- a/tox.ini +++ b/tox.ini @@ -7,6 +7,7 @@ envlist = py{38,39}-django42 py{310,311,312}-django{42,51,52} py{313}-django{51,52} + py{314}-django{52} ruff coverage mypy @@ -18,7 +19,8 @@ python = 3.10: py310-django{42,51,52} 3.11: py311-django{42,51,52} 3.12: py312-django{42,51,52} - 3.13: py313-django{51,52}, ruff, coverage, mypy + 3.13: py313-django{51,52} + 3.14: py314-django{52}, ruff, coverage, mypy isolated_build = true @@ -29,7 +31,7 @@ deps = django42: Django>=4.2,<4.3 django51: Django>=5.1,<5.2 django52: Django>=5.2,<5.3 - djc-core-html-parser==1.0.2 + djc-core-html-parser==1.0.3 pytest pytest-xdist pytest-django