Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-django-coverage-plugin for 
openSUSE:Factory checked in at 2026-05-28 17:27:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-django-coverage-plugin (Old)
 and      /work/SRC/openSUSE:Factory/.python-django-coverage-plugin.new.1937 
(New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-django-coverage-plugin"

Thu May 28 17:27:56 2026 rev:11 rq:1355513 version:3.2.2

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-django-coverage-plugin/python-django-coverage-plugin.changes
      2026-01-29 17:49:40.049367394 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-django-coverage-plugin.new.1937/python-django-coverage-plugin.changes
    2026-05-28 17:29:09.441228065 +0200
@@ -1,0 +2,9 @@
+Thu May 28 05:35:17 UTC 2026 - Steve Kowalik <[email protected]>
+
+- Update to 3.2.2:
+  * Fix: {% endblock %} lines (and others) were falsely reported as
+    unexecuted when they appeared on their own indented line
+  * Dropped Django 3.x and 4.x.
+- Force ctrace to be the coverage core when running tests. (bsc#1266046)
+
+-------------------------------------------------------------------

Old:
----
  django_coverage_plugin-3.2.0.tar.gz

New:
----
  django_coverage_plugin-3.2.2.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-django-coverage-plugin.spec ++++++
--- /var/tmp/diff_new_pack.zK4HqJ/_old  2026-05-28 17:29:10.133256710 +0200
+++ /var/tmp/diff_new_pack.zK4HqJ/_new  2026-05-28 17:29:10.137256876 +0200
@@ -17,24 +17,25 @@
 
 
 Name:           python-django-coverage-plugin
-Version:        3.2.0
+Version:        3.2.2
 Release:        0
 Summary:        Django template coveragepy plugin
 License:        Apache-2.0
 URL:            https://github.com/nedbat/django_coverage_plugin
 Source:         
https://github.com/nedbat/django_coverage_plugin/archive/v%{version}.tar.gz#/django_coverage_plugin-%{version}.tar.gz
+BuildRequires:  %{python_module base >= 3.10}
 BuildRequires:  %{python_module pip}
 BuildRequires:  %{python_module setuptools}
 BuildRequires:  %{python_module wheel}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
-Requires:       python-Django
+Requires:       python-Django >= 5
 Requires:       python-coverage >= 4.0
 Provides:       python-django_coverage_plugin = %{version}
 Obsoletes:      python-django_coverage_plugin < %{version}
 BuildArch:      noarch
 # SECTION test requirements
-BuildRequires:  %{python_module Django}
+BuildRequires:  %{python_module Django >= 5}
 BuildRequires:  %{python_module coverage >= 4.0}
 BuildRequires:  %{python_module pytest}
 BuildRequires:  %{python_module unittest-mixins}
@@ -55,6 +56,8 @@
 %python_expand %fdupes %{buildroot}%{$python_sitelib}
 
 %check
+# Required for Python 3.12+
+export COVERAGE_CORE=ctrace
 %pytest
 
 %files %{python_files}

++++++ django_coverage_plugin-3.2.0.tar.gz -> 
django_coverage_plugin-3.2.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/.editorconfig 
new/django_coverage_plugin-3.2.2/.editorconfig
--- old/django_coverage_plugin-3.2.0/.editorconfig      2025-10-05 
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/.editorconfig      2026-04-04 
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
 # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
-# For details: 
https://github.com/nedbat/django_coverage_plugin/blob/master/NOTICE.txt
+# For details: 
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
 
 # This file is for unifying the coding style for different editors and IDEs.
 # More information at http://EditorConfig.org
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/.github/dependabot.yml 
new/django_coverage_plugin-3.2.2/.github/dependabot.yml
--- old/django_coverage_plugin-3.2.0/.github/dependabot.yml     1970-01-01 
01:00:00.000000000 +0100
+++ new/django_coverage_plugin-3.2.2/.github/dependabot.yml     2026-04-04 
22:41:26.000000000 +0200
@@ -0,0 +1,21 @@
+# From:
+# 
https://docs.github.com/en/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/keeping-your-actions-up-to-date-with-dependabot
+# Set update schedule for GitHub Actions
+
+version: 2
+updates:
+  - package-ecosystem: "github-actions"
+    directory: "/"
+    schedule:
+      # Check for updates to GitHub Actions once a week
+      interval: "weekly"
+      day: "sunday"
+    cooldown:
+      # 
https://blog.yossarian.net/2025/11/21/We-should-all-be-using-dependency-cooldowns
+      default-days: 7
+    groups:
+      action-dependencies:
+        patterns:
+          - "*"
+    commit-message:
+      prefix: "chore"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django_coverage_plugin-3.2.0/.github/workflows/publish.yml 
new/django_coverage_plugin-3.2.2/.github/workflows/publish.yml
--- old/django_coverage_plugin-3.2.0/.github/workflows/publish.yml      
1970-01-01 01:00:00.000000000 +0100
+++ new/django_coverage_plugin-3.2.2/.github/workflows/publish.yml      
2026-04-04 22:41:26.000000000 +0200
@@ -0,0 +1,68 @@
+# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
+# For details: 
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
+
+name: "Publish"
+
+on:
+  push:
+    tags:
+      - '*'
+
+permissions:
+  contents: read
+
+concurrency:
+  group: "${{ github.workflow }}-${{ github.ref }}"
+  cancel-in-progress: true
+
+jobs:
+  build_package:
+    name: "Build"
+    runs-on: ubuntu-latest
+
+    steps:
+      - name: "Check out the repo"
+        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
+        with:
+          persist-credentials: false
+
+      - name: "Set up Python"
+        uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # 
v6.2.0
+        with:
+          python-version: "3.14"
+
+      - name: "Install dependencies"
+        run: |
+          python -m pip install -r requirements.txt
+
+      - name: "Build dists"
+        run: |
+          python -m build --sdist --wheel
+          python -m twine check dist/*
+
+      - name: "Upload dists"
+        uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f 
# v7.0.0
+        with:
+          name: dists
+          path: dist/*
+          retention-days: 7
+
+  publish_package:
+    name: "Publish"
+    needs: build_package
+    runs-on: ubuntu-latest
+    environment:
+      name: pypi
+      deployment: false
+    permissions:
+      id-token: write # needed for publishing to PyPI
+
+    steps:
+      - name: "Download artifacts"
+        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
+        with:
+          name: dists
+          path: dist/
+
+      - name: "Publish to PyPI"
+        uses: 
pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django_coverage_plugin-3.2.0/.github/workflows/tests.yml 
new/django_coverage_plugin-3.2.2/.github/workflows/tests.yml
--- old/django_coverage_plugin-3.2.0/.github/workflows/tests.yml        
2025-10-05 22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/.github/workflows/tests.yml        
2026-04-04 22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
 # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
-# For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt
+# For details: 
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
 
 name: "Tests"
 
@@ -50,12 +50,12 @@
 
     steps:
       - name: "Check out the repo"
-        uses: "actions/checkout@v4"
+        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
         with:
           persist-credentials: false
 
       - name: "Set up Python"
-        uses: "actions/setup-python@v5"
+        uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # 
v6.2.0
         with:
           python-version: "${{ matrix.python-version }}"
           allow-prereleases: true
@@ -87,12 +87,12 @@
 
     steps:
       - name: "Check out the repo"
-        uses: "actions/checkout@v4"
+        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
         with:
           persist-credentials: false
 
       - name: "Set up Python"
-        uses: "actions/setup-python@v5"
+        uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # 
v6.2.0
         with:
           python-version: "3.10"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/AUTHORS.txt 
new/django_coverage_plugin-3.2.2/AUTHORS.txt
--- old/django_coverage_plugin-3.2.0/AUTHORS.txt        2025-10-05 
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/AUTHORS.txt        1970-01-01 
01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
-The Django coverage plugin was written by Ned Batchelder, with other
-contributions by:
-
-Andrew Pinkham
-Aron Griffis
-Bruno Alla
-Emil Madsen
-Federico Bond
-Jessamyn Smith
-Pamela McA'Nulty
-Simon Charette
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/MANIFEST.in 
new/django_coverage_plugin-3.2.2/MANIFEST.in
--- old/django_coverage_plugin-3.2.0/MANIFEST.in        2025-10-05 
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/MANIFEST.in        2026-04-04 
22:41:26.000000000 +0200
@@ -1,6 +1,6 @@
 # Licensed under the Apache 2.0 License
 # - http://www.apache.org/licenses/LICENSE-2.0
-# - https://github.com/nedbat/django_coverage_plugin/blob/master/NOTICE.txt
+# - https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
 
 include *.txt
 include .editorconfig
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/Makefile 
new/django_coverage_plugin-3.2.2/Makefile
--- old/django_coverage_plugin-3.2.0/Makefile   2025-10-05 22:05:10.000000000 
+0200
+++ new/django_coverage_plugin-3.2.2/Makefile   2026-04-04 22:41:26.000000000 
+0200
@@ -1,5 +1,5 @@
 # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
-# For details: 
https://github.com/nedbat/django_coverage_plugin/blob/master/NOTICE.txt
+# For details: 
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
 
 # Makefile for django_coverage_plugin
 
@@ -30,19 +30,13 @@
        python -m build
        python -m twine check dist/*
 
-pypi:                                  ## Upload the built distributions to 
PyPI.
-       python -m twine upload --verbose dist/*
-
-test_pypi:                             ## Upload the distributions to test 
PyPI.
-       python -m twine upload --verbose --repository testpypi --password 
$$TWINE_TEST_PASSWORD dist/*
-
 _install_e:
        python -m pip install -q -e .
 
 tag: _install_e                                ## Make a git tag with the 
version number.
        @export VER="$$(python -c "import django_coverage_plugin as me; 
print(me.__version__)")" && \
-       echo git tag -s -m "Version v$$VER" v$$VER
-       echo git push --all
+       git tag -s -m "Version v$$VER" v$$VER
+       git push --all
 
 ghrelease:                             ## Make a GitHub release for the latest 
version.
        python -m scriv github-release
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/NOTICE.txt 
new/django_coverage_plugin-3.2.2/NOTICE.txt
--- old/django_coverage_plugin-3.2.0/NOTICE.txt 2025-10-05 22:05:10.000000000 
+0200
+++ new/django_coverage_plugin-3.2.2/NOTICE.txt 2026-04-04 22:41:26.000000000 
+0200
@@ -1,4 +1,4 @@
-Copyright 2015-2025 Ned Batchelder.  All rights reserved.
+Copyright 2015-2026 Ned Batchelder.  All rights reserved.
 
 Except where noted otherwise, this software is licensed under the Apache
 License, Version 2.0 (the "License"); you may not use this work except in
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/README.rst 
new/django_coverage_plugin-3.2.2/README.rst
--- old/django_coverage_plugin-3.2.0/README.rst 2025-10-05 22:05:10.000000000 
+0200
+++ new/django_coverage_plugin-3.2.2/README.rst 2026-04-04 22:41:26.000000000 
+0200
@@ -20,8 +20,8 @@
 .. |versions| image:: 
https://img.shields.io/pypi/pyversions/django_coverage_plugin.svg
     :target: https://pypi.python.org/pypi/django_coverage_plugin
     :alt: Supported Python Versions
-.. the Django badge says: `3.2 | 4.2 | 5.2`
-.. |djversions| image:: 
https://img.shields.io/badge/Django-3.2%20%7C%204.2%20%7C%205.2-44b78b.svg
+.. the Django badge says: `5.2 | 6.0`
+.. |djversions| image:: 
https://img.shields.io/badge/Django-5.2%20%7C%206.0-44b78b.svg
     :target: https://pypi.python.org/pypi/django_coverage_plugin
     :alt: Supported Django Versions
 .. |sponsor| image:: 
https://img.shields.io/badge/%E2%9D%A4-Sponsor%20me-brightgreen?style=flat&logo=GitHub
@@ -40,7 +40,7 @@
 
 - Python: 3.10 through 3.14.
 
-- Django: 3.2 through 5.2.
+- Django: 5.2 through 6.0.
 
 - Coverage.py: 6.x or higher.
 
@@ -138,11 +138,43 @@
     $ tox
 
 
+Authors
+~~~~~~~
+
+The Django coverage plugin was written by Ned Batchelder,
+with contributions by:
+
+- Andrew Pinkham
+- Aron Griffis
+- Bruno Alla
+- Emil Madsen
+- Federico Bond
+- Jessamyn Smith
+- Marc Gibbons
+- Pamela McA'Nulty
+- Simon Charette
+
+
 History
 ~~~~~~~
 
 .. scriv-insert-here
 
+v3.2.2 — 2026-04-04
+-------------------
+
+Fix: ``{% endblock %}`` lines (and others) were falsely reported as unexecuted
+when they appeared on their own indented line (`issue 74`_). Thanks, Marc
+Gibbons (`pull 108`_).
+
+Dropped Django 3.x and 4.x.
+
+Switched to trusted publishing.
+
+.. _issue 74: https://github.com/coveragepy/django_coverage_plugin/issues/74
+.. _pull 108: https://github.com/coveragepy/django_coverage_plugin/pull/108
+
+
 v3.2.0 — 2025-10-05
 -------------------
 
@@ -191,7 +223,7 @@
 When using ``source=.``, an existing coverage HTML report directory would be
 found and believed to be unmeasured HTML template files.  This is now fixed.
 
-.. _issue 78: https://github.com/nedbat/django_coverage_plugin/issues/78
+.. _issue 78: https://github.com/coveragepy/django_coverage_plugin/issues/78
 
 
 v2.0.1 — 2021-10-06
@@ -214,9 +246,9 @@
 Fix an issue (`issue 63`_) where tag libraries can't be found if imported
 during test collection. Thanks to Daniel Izquierdo for the fix.
 
-.. _issue 46: https://github.com/nedbat/django_coverage_plugin/issues/46
-.. _issue 60: https://github.com/nedbat/django_coverage_plugin/issues/60
-.. _issue 63: https://github.com/nedbat/django_coverage_plugin/issues/63
+.. _issue 46: https://github.com/coveragepy/django_coverage_plugin/issues/46
+.. _issue 60: https://github.com/coveragepy/django_coverage_plugin/issues/60
+.. _issue 63: https://github.com/coveragepy/django_coverage_plugin/issues/63
 
 v1.8.0 — 2020-01-23
 -------------------
@@ -266,7 +298,7 @@
 Fixes another instance of `issue 32`_, which was the result of an
 initialization order problem.
 
-.. _issue 32: https://github.com/nedbat/django_coverage_plugin/issues/32
+.. _issue 32: https://github.com/coveragepy/django_coverage_plugin/issues/32
 
 
 v1.4.1 — 2017-01-25
@@ -288,8 +320,8 @@
 engine is supported, and it must be configured with
 ``['OPTIONS']['debug'] = True``. Fixes `issue 27`_.
 
-.. _issue 28: https://github.com/nedbat/django_coverage_plugin/issues/28
-.. _issue 27: https://github.com/nedbat/django_coverage_plugin/issues/27
+.. _issue 28: https://github.com/coveragepy/django_coverage_plugin/issues/28
+.. _issue 27: https://github.com/coveragepy/django_coverage_plugin/issues/27
 
 
 
@@ -299,7 +331,7 @@
 Settings are read slightly differently, so as to not interfere with
 programs that don't need settings.  Fixes `issue 18`_.
 
-.. _issue 18: https://github.com/nedbat/django_coverage_plugin/issues/18
+.. _issue 18: https://github.com/coveragepy/django_coverage_plugin/issues/18
 
 
 
@@ -335,7 +367,7 @@
 Potential Django 1.9 support is included, but the patch to Django hasn't
 been applied yet.
 
-.. _issue 17: https://github.com/nedbat/django_coverage_plugin/issues/17
+.. _issue 17: https://github.com/coveragepy/django_coverage_plugin/issues/17
 
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django_coverage_plugin-3.2.0/django_coverage_plugin/__init__.py 
new/django_coverage_plugin-3.2.2/django_coverage_plugin/__init__.py
--- old/django_coverage_plugin-3.2.0/django_coverage_plugin/__init__.py 
2025-10-05 22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/django_coverage_plugin/__init__.py 
2026-04-04 22:41:26.000000000 +0200
@@ -1,9 +1,9 @@
 # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
-# For details: 
https://github.com/nedbat/django_coverage_plugin/blob/master/NOTICE.txt
+# For details: 
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
 
 """Django Template Coverage Plugin"""
 
-__version__ = "3.2.0"
+__version__ = "3.2.2"
 
 from .plugin import DjangoTemplatePluginException  # noqa
 from .plugin import DjangoTemplatePlugin
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django_coverage_plugin-3.2.0/django_coverage_plugin/plugin.py 
new/django_coverage_plugin-3.2.2/django_coverage_plugin/plugin.py
--- old/django_coverage_plugin-3.2.0/django_coverage_plugin/plugin.py   
2025-10-05 22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/django_coverage_plugin/plugin.py   
2026-04-04 22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
 # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
-# For details: 
https://github.com/nedbat/django_coverage_plugin/blob/master/NOTICE.txt
+# For details: 
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
 
 """The Django template coverage plugin."""
 
@@ -349,6 +349,13 @@
                 if lines[0].isspace():
                     lineno += 1
                     num_lines -= 1
+                # When a tag is not at the start of a line, the preceding
+                # TEXT token ends with whitespace and no newline.
+                # That partial line is not executable content.
+                if num_lines > 0 and (
+                    lines[-1].isspace() and not lines[-1].endswith(("\n", 
"\r"))
+                ):
+                    num_lines -= 1
                 source_lines.update(range(lineno, lineno+num_lines))
 
             if SHOW_PARSING:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/howto.txt 
new/django_coverage_plugin-3.2.2/howto.txt
--- old/django_coverage_plugin-3.2.0/howto.txt  2025-10-05 22:05:10.000000000 
+0200
+++ new/django_coverage_plugin-3.2.2/howto.txt  2026-04-04 22:41:26.000000000 
+0200
@@ -3,14 +3,9 @@
 - Version number in __init__.py
 - Classifiers in pyproject.toml
     https://pypi.python.org/pypi?%3Aaction=list_classifiers
-    eg:
-      Development Status :: 3 - Alpha
-      Development Status :: 5 - Production/Stable
 - Copyright date in NOTICE.txt
 - Update README.rst with latest changes
 - Kits:
-    $ make clean dist
-    $ make test_pypi
-    $ make pypi
     $ make tag
+    # .github/workflows/publish.yml publishes with trusted publishing
     $ make ghrelease
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/pyproject.toml 
new/django_coverage_plugin-3.2.2/pyproject.toml
--- old/django_coverage_plugin-3.2.0/pyproject.toml     2025-10-05 
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/pyproject.toml     2026-04-04 
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
 # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
-# For details: 
https://github.com/nedbat/django_coverage_plugin/blob/master/NOTICE.txt
+# For details: 
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
 
 [build-system]
 requires = ["setuptools>=77.0", "wheel"]
@@ -17,9 +17,8 @@
     "Development Status :: 5 - Production/Stable",
     "Environment :: Console",
     "Framework :: Django",
-    "Framework :: Django :: 3.2",
-    "Framework :: Django :: 4.2",
     "Framework :: Django :: 5.2",
+    "Framework :: Django :: 6.0",
     "Intended Audience :: Developers",
     "Operating System :: OS Independent",
     "Programming Language :: Python :: 3.10",
@@ -40,9 +39,9 @@
 dynamic = ["version"]
 
 [project.urls]
-"Homepage" = "https://github.com/nedbat/django_coverage_plugin";
-"Bug Tracker" = "https://github.com/nedbat/django_coverage_plugin/issues";
-"Source" = "https://github.com/nedbat/django_coverage_plugin";
+"Homepage" = "https://github.com/coveragepy/django_coverage_plugin";
+"Bug Tracker" = "https://github.com/coveragepy/django_coverage_plugin/issues";
+"Source" = "https://github.com/coveragepy/django_coverage_plugin";
 
 [tool.setuptools.dynamic]
 version = {attr = "django_coverage_plugin.__version__"}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tests/__init__.py 
new/django_coverage_plugin-3.2.2/tests/__init__.py
--- old/django_coverage_plugin-3.2.0/tests/__init__.py  2025-10-05 
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/tests/__init__.py  2026-04-04 
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
 # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
-# For details: 
https://github.com/nedbat/django_coverage_plugin/blob/master/NOTICE.txt
+# For details: 
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
 
 """The tests for the Django Coverage Plugin."""
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tests/banner.py 
new/django_coverage_plugin-3.2.2/tests/banner.py
--- old/django_coverage_plugin-3.2.0/tests/banner.py    2025-10-05 
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/tests/banner.py    2026-04-04 
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
 # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
-# For details: 
https://github.com/nedbat/django_coverage_plugin/blob/master/NOTICE.txt
+# For details: 
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
 
 """For printing the versions from tox.ini."""
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tests/conftest.py 
new/django_coverage_plugin-3.2.2/tests/conftest.py
--- old/django_coverage_plugin-3.2.0/tests/conftest.py  2025-10-05 
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/tests/conftest.py  2026-04-04 
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
 # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
-# For details: 
https://github.com/nedbat/django_coverage_plugin/blob/master/NOTICE.txt
+# For details: 
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
 
 """
 Pytest auto configuration.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tests/plugin_test.py 
new/django_coverage_plugin-3.2.2/tests/plugin_test.py
--- old/django_coverage_plugin-3.2.0/tests/plugin_test.py       2025-10-05 
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/tests/plugin_test.py       2026-04-04 
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
 # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
-# For details: 
https://github.com/nedbat/django_coverage_plugin/blob/master/NOTICE.txt
+# For details: 
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
 
 """Base classes and helpers for testing the plugin."""
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tests/test_engines.py 
new/django_coverage_plugin-3.2.2/tests/test_engines.py
--- old/django_coverage_plugin-3.2.0/tests/test_engines.py      2025-10-05 
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/tests/test_engines.py      2026-04-04 
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
 # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
-# For details: 
https://github.com/nedbat/django_coverage_plugin/blob/master/NOTICE.txt
+# For details: 
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
 
 """Tests of multiple engines for django_coverage_plugin."""
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tests/test_extends.py 
new/django_coverage_plugin-3.2.2/tests/test_extends.py
--- old/django_coverage_plugin-3.2.0/tests/test_extends.py      2025-10-05 
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/tests/test_extends.py      2026-04-04 
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
 # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
-# For details: 
https://github.com/nedbat/django_coverage_plugin/blob/master/NOTICE.txt
+# For details: 
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
 
 """Tests of template inheritance for django_coverage_plugin."""
 
@@ -95,6 +95,74 @@
         self.assert_analysis([1, 2, 3], name="base.html")
         self.assert_analysis([1, 4, 8], [8], name="specific.html")
 
+    def test_empty_parent_block_on_new_line_when_extended(self):
+        """
+        When a block is empty and extended, endblock should not appear
+        as an uncovered line.
+
+        https://github.com/coveragepy/django_coverage_plugin/issues/74
+        """
+        self.make_template(name="base.html", text="""\
+            Hello
+              {% block content %}
+              {% endblock content %}
+            Goodbye
+            """)
+        self.make_template(name="child.html", text="""\
+            {% extends "base.html" %}
+            {% block content %}
+              Override
+            {% endblock %}
+            """)
+        text = self.run_django_coverage(name="child.html")
+        self.assert_analysis([1, 2, 4], name="base.html")
+        self.assert_analysis([1, 3], name="child.html")
+        self.assertEqual(text.strip(), "Hello\n  \n  Override\n\nGoodbye")
+
+    def test_non_empty_parent_block_when_extended(self):
+        self.make_template(name="base.html", text="""\
+            Hello
+              {% block content %}
+                This line should be reported as uncovered.
+              {% endblock content %}
+            Goodbye
+            """)
+        self.make_template(name="child.html", text="""\
+            {% extends "base.html" %}
+            {% block content %}
+              Override
+            {% endblock %}
+            """)
+        text = self.run_django_coverage(name="child.html")
+        self.assert_analysis([1, 2, 3, 5], missing=[3], name="base.html")
+        self.assert_analysis([1, 3], name="child.html")
+
+        self.assertEqual(text.strip(), "Hello\n  \n  Override\n\nGoodbye")
+
+    def test_nested_blocks_outer_endblock_on_its_own_line(self):
+        """
+        When blocks are nested, on their own lines, and extended,
+        then endblock should not appear as uncovered.
+
+        Ref: https://github.com/coveragepy/django_coverage_plugin/issues/74
+        """
+        self.make_template(name="base.html", text="""\
+            {% block outer %}
+              {% block inner %}
+              {% endblock inner %}
+            {% endblock outer %}
+            """)
+        self.make_template(name="child.html", text="""\
+            {% extends "base.html" %}
+            {% block inner %}
+              Override
+            {% endblock %}
+            """)
+        text = self.run_django_coverage(name="child.html")
+        self.assert_analysis([1, 2], missing=[], name="base.html")
+        self.assert_analysis([1, 3], name="child.html")
+        self.assertEqual(text.strip(), "Override")
+
 
 class LoadTest(DjangoPluginTestCase):
     def test_load(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tests/test_flow.py 
new/django_coverage_plugin-3.2.2/tests/test_flow.py
--- old/django_coverage_plugin-3.2.0/tests/test_flow.py 2025-10-05 
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/tests/test_flow.py 2026-04-04 
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
 # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
-# For details: 
https://github.com/nedbat/django_coverage_plugin/blob/master/NOTICE.txt
+# For details: 
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
 
 """Tests of control-flow structures for django_coverage_plugin."""
 
@@ -25,6 +25,31 @@
         self.assertEqual(text.strip(), '')
         self.assert_analysis([1, 2], [2])
 
+    def test_endif_not_at_start_of_line(self):
+        self.make_template("""\
+            <article>
+              {% if foo %}
+                Hello
+              {% endif %}
+              After
+            </article>
+            """)
+        self.run_django_coverage(context={'foo': False})
+        self.assert_analysis([1, 2, 3, 5, 6], missing=[3])
+
+    def test_else_not_at_start_of_line(self):
+        self.make_template("""\
+            <article>
+              {% if foo %}
+                Hello
+              {% else %}
+                Goodbye
+              {% endif %}
+            </article>
+            """)
+        self.run_django_coverage(context={'foo': True})
+        self.assert_analysis([1, 2, 3, 5, 7], missing=[5])
+
     def test_if_else(self):
         self.make_template("""\
             {% if foo %}
@@ -84,6 +109,17 @@
         self.assertEqual(text, "Before\n\nAfter\n")
         self.assert_analysis([1, 2, 3, 5], [3])
 
+    def test_endfor_not_at_start_of_line(self):
+        self.make_template("""\
+            <ul>
+              {% for item in items %}
+                <li>{{ item }}</li>
+              {% endfor %}
+            </ul>
+            """)
+        self.run_django_coverage(context={'items': []})
+        self.assert_analysis([1, 2, 3, 5], missing=[3])
+
     def test_loop_with_empty_clause(self):
         self.make_template("""\
             Before
@@ -135,7 +171,7 @@
                 <ul><li>New York: 20</li><li>Chicago: 7</li></ul></li><li>Japan
                 <ul><li>Tokyo: 33</li></ul></li></ul>
             """))
-        self.assert_analysis([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13])
+        self.assert_analysis([1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 13])
 
 
 class IfChangedTest(DjangoPluginTestCase):
@@ -154,7 +190,7 @@
             'items': [("A", "X"), ("A", "Y"), ("B", "Z"), ("B", "W")],
         })
         self.assertEqual(squashed(text), 'AXYBZW')
-        self.assert_analysis([1, 2, 3, 4, 5])
+        self.assert_analysis([1, 2, 3, 5])
 
     def test_ifchanged_variable(self):
         self.make_template("""\
@@ -170,7 +206,7 @@
             'items': [("A", "X"), ("A", "Y"), ("B", "Z"), ("B", "W")],
         })
         self.assertEqual(squashed(text), 'AXYBZW')
-        self.assert_analysis([1, 2, 3, 4, 5])
+        self.assert_analysis([1, 2, 3, 5])
 
 
 @django_stop_before(4, 0)
@@ -190,7 +226,7 @@
             'items': [(0, 'A'), (1, 'X'), (2, 'X'), (3, 'B')],
         })
         self.assertEqual(squashed(text), '0X1X23')
-        self.assert_analysis([1, 2, 3, 4, 5])
+        self.assert_analysis([1, 2, 3, 5])
 
     def test_ifnotequal(self):
         self.make_template("""\
@@ -206,4 +242,4 @@
             'items': [(0, 'A'), (1, 'X'), (2, 'X'), (3, 'B')],
         })
         self.assertEqual(squashed(text), 'X012X3')
-        self.assert_analysis([1, 2, 3, 4, 5])
+        self.assert_analysis([1, 2, 3, 5])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tests/test_helpers.py 
new/django_coverage_plugin-3.2.2/tests/test_helpers.py
--- old/django_coverage_plugin-3.2.0/tests/test_helpers.py      2025-10-05 
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/tests/test_helpers.py      2026-04-04 
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
 # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
-# For details: 
https://github.com/nedbat/django_coverage_plugin/blob/master/NOTICE.txt
+# For details: 
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
 
 """Test helpers for the django coverage plugin."""
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tests/test_html.py 
new/django_coverage_plugin-3.2.2/tests/test_html.py
--- old/django_coverage_plugin-3.2.0/tests/test_html.py 2025-10-05 
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/tests/test_html.py 2026-04-04 
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
 # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
-# For details: 
https://github.com/nedbat/django_coverage_plugin/blob/master/NOTICE.txt
+# For details: 
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
 
 """Tests of HTML reporting for django_coverage_plugin."""
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tests/test_i18n.py 
new/django_coverage_plugin-3.2.2/tests/test_i18n.py
--- old/django_coverage_plugin-3.2.0/tests/test_i18n.py 2025-10-05 
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/tests/test_i18n.py 2026-04-04 
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
 # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
-# For details: 
https://github.com/nedbat/django_coverage_plugin/blob/master/NOTICE.txt
+# For details: 
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
 
 """Tests of i18n tags for django_coverage_plugin."""
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tests/test_settings.py 
new/django_coverage_plugin-3.2.2/tests/test_settings.py
--- old/django_coverage_plugin-3.2.0/tests/test_settings.py     2025-10-05 
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/tests/test_settings.py     2026-04-04 
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
 # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
-# For details: 
https://github.com/nedbat/django_coverage_plugin/blob/master/NOTICE.txt
+# For details: 
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
 
 """Settings tests for django_coverage_plugin."""
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tests/test_simple.py 
new/django_coverage_plugin-3.2.2/tests/test_simple.py
--- old/django_coverage_plugin-3.2.0/tests/test_simple.py       2025-10-05 
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/tests/test_simple.py       2026-04-04 
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
 # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
-# For details: 
https://github.com/nedbat/django_coverage_plugin/blob/master/NOTICE.txt
+# For details: 
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
 
 """Simple tests for django_coverage_plugin."""
 
@@ -238,6 +238,17 @@
         self.assertEqual(text, "\nalpha = 1, beta = 2.\n\n")
         self.assert_analysis([1, 2])
 
+    def test_endwith_not_at_start_of_line(self):
+        self.make_template("""\
+            <div>
+              {% with alpha=1 %}
+                {{ alpha }}
+              {% endwith %}
+            </div>
+            """)
+        self.run_django_coverage()
+        self.assert_analysis([1, 2, 3, 5])
+
 
 class StringTemplateTest(DjangoPluginTestCase):
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tests/test_source.py 
new/django_coverage_plugin-3.2.2/tests/test_source.py
--- old/django_coverage_plugin-3.2.0/tests/test_source.py       2025-10-05 
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/tests/test_source.py       2026-04-04 
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
 # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
-# For details: 
https://github.com/nedbat/django_coverage_plugin/blob/master/NOTICE.txt
+# For details: 
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
 
 """Tests of template inheritance for django_coverage_plugin."""
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tox.ini 
new/django_coverage_plugin-3.2.2/tox.ini
--- old/django_coverage_plugin-3.2.0/tox.ini    2025-10-05 22:05:10.000000000 
+0200
+++ new/django_coverage_plugin-3.2.2/tox.ini    2026-04-04 22:41:26.000000000 
+0200
@@ -1,5 +1,5 @@
 # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
-# For details: 
https://github.com/nedbat/django_coverage_plugin/blob/master/NOTICE.txt
+# For details: 
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
 
 # tox configuration for django_coverage_plugin.
 #
@@ -15,21 +15,20 @@
 [tox]
 # When changing this, also update the classifiers in setup.py:
 envlist =
-    py310-django{32,42,52}-cov{6,7,tip},
-    py311-django{42,52}-cov{6,7,tip},
-    py312-django{52,tip}-cov{7,tip},
-    py313-django{52,tip}-cov{7,tip},
-    py314-django{52,tip}-cov{7,tip},
+    py310-django52-cov{6,7,tip},
+    py311-django52-cov{6,7,tip},
+    py312-django{52,60,tip}-cov{7,tip},
+    py313-django{52,60,tip}-cov{7,tip},
+    py314-django{52,60,tip}-cov{7,tip},
     check,pkgcheck,doc
 
 [testenv]
 deps =
     cov6: coverage>=6.0,<7.0
     cov7: coverage>=7.0,<8.0
-    covtip: git+https://github.com/nedbat/coveragepy.git
-    django32: Django>=3.2,<4.0
-    django42: Django>=4.2,<5.0
+    covtip: git+https://github.com/coveragepy/coveragepy.git
     django52: Django>=5.2,<6.0
+    django60: Django>=6.0,<7.0
     djangotip: git+https://github.com/django/django.git
     pytest
     unittest-mixins==1.6

Reply via email to