diff --git a/django/contrib/admindocs/utils.py b/django/contrib/admindocs/utils.py index 4d9403a6f7ee..334d9907eaee 100644 --- a/django/contrib/admindocs/utils.py +++ b/django/contrib/admindocs/utils.py @@ -13,7 +13,6 @@ import docutils.core import docutils.nodes import docutils.parsers.rst.roles - import docutils.writers except ImportError: docutils_is_available = False else: @@ -79,14 +78,11 @@ 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=writer_instance, + writer="html", settings_overrides=overrides, ) return mark_safe(parts["fragment"]) diff --git a/docs/internals/contributing/writing-code/unit-tests.txt b/docs/internals/contributing/writing-code/unit-tests.txt index 1c993f5fc646..f5d09358595a 100644 --- a/docs/internals/contributing/writing-code/unit-tests.txt +++ b/docs/internals/contributing/writing-code/unit-tests.txt @@ -316,7 +316,7 @@ dependencies: * :pypi:`asgiref` 3.9.1+ (required) * :pypi:`bcrypt` 4.1.1+ * :pypi:`colorama` 0.4.6+ -* :pypi:`docutils` 0.19+ +* :pypi:`docutils` 0.22+ * :pypi:`geoip2` 4.8.0+ * :pypi:`Jinja2` 2.11+ * :pypi:`numpy` 1.26.0+ diff --git a/docs/ref/contrib/admin/admindocs.txt b/docs/ref/contrib/admin/admindocs.txt index 5a605748ad55..b3c32716d0bc 100644 --- a/docs/ref/contrib/admin/admindocs.txt +++ b/docs/ref/contrib/admin/admindocs.txt @@ -23,7 +23,7 @@ the following: your ``urlpatterns``. Make sure it's included *before* the ``'admin/'`` entry, so that requests to ``/admin/doc/`` don't get handled by the latter entry. -* Install the :pypi:`docutils` 0.19+ package. +* Install the :pypi:`docutils` 0.22+ package. * **Optional:** Using the admindocs bookmarklets requires ``django.contrib.admindocs.middleware.XViewMiddleware`` to be installed. diff --git a/docs/releases/6.0.txt b/docs/releases/6.0.txt index 6e213f890aea..8ba1b456b397 100644 --- a/docs/releases/6.0.txt +++ b/docs/releases/6.0.txt @@ -399,6 +399,7 @@ of each library are the first to add or confirm compatibility with Python 3.12: * ``aiosmtpd`` 1.4.5 * ``argon2-cffi`` 23.1.0 * ``bcrypt`` 4.1.1 +* ``docutils`` 0.22 * ``geoip2`` 4.8.0 * ``Pillow`` 10.1.0 * ``mysqlclient`` 2.2.1 diff --git a/tests/requirements/py3.txt b/tests/requirements/py3.txt index 7ecc3ad0442d..311f4634f0ee 100644 --- a/tests/requirements/py3.txt +++ b/tests/requirements/py3.txt @@ -3,7 +3,7 @@ asgiref >= 3.9.1 argon2-cffi >= 23.1.0 bcrypt >= 4.1.1 black >= 25.1.0 -docutils >= 0.19 +docutils >= 0.22 geoip2 >= 4.8.0 jinja2 >= 2.11.0 numpy >= 1.26.0