summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNatalia <124304+nessita@users.noreply.github.com>2025-08-01 09:48:51 -0300
committernessita <124304+nessita@users.noreply.github.com>2025-08-04 21:52:25 -0300
commit9cec8d9f55d90fbc162fde23d6ea7a34e322fcae (patch)
treeb2d1696b4e14194d8fde0b10d3186671873f70c8
parentdca8284a376128c64bd0e0792ad12391ae3e7202 (diff)
Fixed #36535 -- Ensured compatibility with docutils 0.19 through 0.22.
Regression in 65ab92f6a83644bbb555d0eff3a02d8d9301aba4.
-rw-r--r--django/contrib/admindocs/utils.py6
-rw-r--r--docs/releases/5.2.5.txt2
2 files changed, 7 insertions, 1 deletions
diff --git a/django/contrib/admindocs/utils.py b/django/contrib/admindocs/utils.py
index 334d9907ea..4d9403a6f7 100644
--- a/django/contrib/admindocs/utils.py
+++ b/django/contrib/admindocs/utils.py
@@ -13,6 +13,7 @@ try:
import docutils.core
import docutils.nodes
import docutils.parsers.rst.roles
+ import docutils.writers
except ImportError:
docutils_is_available = False
else:
@@ -78,11 +79,14 @@ def parse_rst(text, default_reference_context, thing_being_parsed=None):
.. default-role::
"""
+ # In docutils < 0.22, the `writer` param must be an instance. Passing a
+ # string writer name like "html" is only supported in 0.22+.
+ writer_instance = docutils.writers.get_writer_class("html")()
parts = docutils.core.publish_parts(
source % text,
source_path=thing_being_parsed,
destination_path=None,
- writer="html",
+ writer=writer_instance,
settings_overrides=overrides,
)
return mark_safe(parts["fragment"])
diff --git a/docs/releases/5.2.5.txt b/docs/releases/5.2.5.txt
index bdb78d0c63..6791983aad 100644
--- a/docs/releases/5.2.5.txt
+++ b/docs/releases/5.2.5.txt
@@ -19,3 +19,5 @@ Bugfixes
* Fixed a crash in Django 5.2 when validating a model that uses
``GeneratedField`` or constraints composed of ``Q`` and ``Case`` lookups
(:ticket:`36518`).
+
+* Added compatibility for ``docutils`` 0.22 (:ticket:`36535`).