$ the-wire · showcase
Join promotion learns XOR, docs build gains EPUBCheck
By RepoJournal · Filed · About Django · Composed from the cited sources · methodology
Django's ORM no longer drops rows when a negated XOR forces an INNER JOIN, and the docs toolchain picked up EPUB validation alongside a Sphinx floor bump to 9.1.
Fixed #37438 -- Fixed join promotion for XOR conditions. django/django
JoinPromoter had no rules for XOR conditions, so a negated XOR could be promoted to an INNER JOIN and silently drop rows that should have matched. The patch adds promotion rules for both negated and non-negated XOR, which means queries filtering on XOR now return the rows the SQL semantics promise.
Refs #35874 -- Added EPUBCheck to the documentation build. django/django
The docs makefiles and docs workflow gained an epubcheck target, kept out of the general make check target because EPUBCheck needs a Java runtime present. Documentation builds that touch the EPUB output can now be validated rather than eyeballed.
Fixed #37456 -- Converted contribution process diagram to plain SVG. django/django
The contribution process diagram was exported from draw.io with HTML labels inside foreignObject elements, including a font tag, which failed EPUBCheck and carried roughly 20KB of embedded draw.io source. Labels are now SVG text, so the diagram validates and its light-dark() colors are editable in Inkscape and similar editors.
Upgraded Sphinx to 9.1.1. django/djangoproject.com
djangoproject.com now requires Sphinx >=9.1.0, in preparation for the django/django docs change, and the author notes that 9.2.0 drops Python 3.12 compatibility while 9.1.1 still works. Treat 9.1.x as the ceiling if your docs build runs on 3.12.
Refs #35874 -- Fixed problems in accessible console tabs. django/django
The console-tabs CSS added in the earlier accessibility work is not EPUB-compatible, so it is now excluded from EPUB docs builds where console tabs are never output.