From e45039218200c145f2cc8c4d21271c4ea8737352 Mon Sep 17 00:00:00 2001 From: "riseproject-dev[bot]" <330740410+riseproject-dev[bot]@users.noreply.github.com> Date: Thu, 29 Oct 2026 08:58:47 +0000 Subject: [PATCH 1/3] djlint: Add version 1.47.1 Signed-off-by: riseproject-dev[bot] <330740410+riseproject-dev[bot]@users.noreply.github.com> --- docs/packages/djlint.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/packages/djlint.yaml b/docs/packages/djlint.yaml index 1a1db8c7f894..e34ede21791e 100644 --- a/docs/packages/djlint.yaml +++ b/docs/packages/djlint.yaml @@ -140,3 +140,4 @@ versions: - version: 1.46.5 - version: 1.46.6 - version: 1.47.0 +- version: 1.47.1 From 48d3805875f699b9ea0df09e6d640bf6a88c5b65 Mon Sep 17 00:00:00 2001 From: Ludovic Henry Date: Fri, 30 Oct 2026 02:59:40 +0100 Subject: [PATCH 2/3] djlint 1.47.1: preinstall the exact mypyc build dependencies upstream pins The build uses --no-isolation, so `build` checks the mypyc hook's dependencies against what is installed, and 1.47.1 pins them exactly (hatch-mypyc==0.16.0, click==8.5.0, mypy==2.4.0, ...: the wheels are compiled against the uv.lock versions). The preinstalled unpinned list plus "click<8.5" fails that check ("Unmet dependencies: click==8.5.0 wanted, 8.4.2 found; mypy==2.4.0 wanted, 2.4.1 found"). Read the dependency list from the checkout's own pyproject.toml and install exactly that, so it follows upstream's pins on every release. --- .github/workflows/build-djlint.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-djlint.yml b/.github/workflows/build-djlint.yml index fb3cdd070497..8ad0e5589edb 100644 --- a/.github/workflows/build-djlint.yml +++ b/.github/workflows/build-djlint.yml @@ -71,10 +71,15 @@ jobs: CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }} # Upstream's build[uv] frontend asserts a host uv in the audit step. CIBW_BUILD_FRONTEND: "build; args: --no-isolation" - # click 8.5 makes get_text_stream untyped, so mypyc rejects djlint's source. + # --no-isolation makes `build` check the mypyc hook's dependencies against what is + # installed, and since 1.47.1 upstream pins them exactly (hatch-mypyc, click, mypy, ...: + # the wheels are compiled against those versions), so install exactly the pins the + # checkout declares. (Before 1.47.1 the list was unpinned, and click 8.5 made + # get_text_stream untyped so mypyc rejected djlint's source: those versions need + # "click<8.5" on top.) CIBW_BEFORE_BUILD: >- - pip install hatchling hatch-mypyc "click<8.5" cssbeautifier jsbeautifier - json5 types-pyyaml types-regex typing-extensions + python -c "import tomllib; print(*tomllib.load(open('pyproject.toml', 'rb'))['tool']['hatch']['build']['targets']['wheel']['hooks']['mypyc']['dependencies'], sep='\n')" > /tmp/mypyc-requirements.txt + && pip install hatchling -r /tmp/mypyc-requirements.txt typing-extensions # Restates upstream's [tool.cibuildwheel] environment, which this replaces. CIBW_ENVIRONMENT: >- HATCH_BUILD_HOOK_ENABLE_MYPYC=1 From 2bd067e3174d7f0b7ce5c54849ecb9011297cca6 Mon Sep 17 00:00:00 2001 From: Ludovic Henry Date: Fri, 30 Oct 2026 17:45:13 +0100 Subject: [PATCH 3/3] djlint: stage uv.lock next to the tests test_mypyc_dependencies_match_the_lock (new in 1.47.1) reads uv.lock from the working directory. --- .github/workflows/build-djlint.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-djlint.yml b/.github/workflows/build-djlint.yml index 8ad0e5589edb..f8a1301fd082 100644 --- a/.github/workflows/build-djlint.yml +++ b/.github/workflows/build-djlint.yml @@ -98,7 +98,10 @@ jobs: # cibuildwheel errors out on a missing test source, so it is only # listed for the other versions. The non-empty value must sit in the # && branch because an empty string is falsy in `a && '' || b`. - CIBW_TEST_SOURCES: tests pytest.toml pyproject.toml docs README.md src/djlint/rules.yaml src/djlint/settings.py ${{ matrix.version != '1.46.5' && 'LICENSE-THIRD-PARTY' || '' }} + # uv.lock is read from the working directory by + # test_mypyc_dependencies_match_the_lock (new in 1.47.1), which compares the + # mypyc pins against the lock; every tag ships it. + CIBW_TEST_SOURCES: tests pytest.toml pyproject.toml uv.lock docs README.md src/djlint/rules.yaml src/djlint/settings.py ${{ matrix.version != '1.46.5' && 'LICENSE-THIRD-PARTY' || '' }} # Upstream never tests its wheels; run the suite its CI runs. # The import assert catches a silently-uncompiled (pure-Python) wheel. #