pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

py-docutils: add upgrade candidate, with an upstream patch included



Module Name:	pkgsrc-wip
Committed By:	Thomas Klausner <wiz%NetBSD.org@localhost>
Pushed By:	wiz
Date:		Fri Aug 8 22:57:16 2025 +0200
Changeset:	a31db71ff564e69934823f8b9786e1083762eba2

Modified Files:
	Makefile
Added Files:
	py-docutils/ALTERNATIVES
	py-docutils/DESCR
	py-docutils/Makefile
	py-docutils/PLIST
	py-docutils/distinfo
	py-docutils/patches/patch-docutils_parsers_rst_states.py

Log Message:
py-docutils: add upgrade candidate, with an upstream patch included

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=a31db71ff564e69934823f8b9786e1083762eba2

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 Makefile                                           |   1 +
 py-docutils/ALTERNATIVES                           |   9 +
 py-docutils/DESCR                                  |   3 +
 py-docutils/Makefile                               |  41 ++
 py-docutils/PLIST                                  | 482 +++++++++++++++++++++
 py-docutils/distinfo                               |   6 +
 .../patches/patch-docutils_parsers_rst_states.py   |  60 +++
 7 files changed, 602 insertions(+)

diffs:
diff --git a/Makefile b/Makefile
index 758e506ac1..9439f4fc6f 100644
--- a/Makefile
+++ b/Makefile
@@ -3748,6 +3748,7 @@ SUBDIR+=	py-docker-hub
 SUBDIR+=	py-docker-interface
 SUBDIR+=	py-docker-ssh
 SUBDIR+=	py-docplex
+SUBDIR+=	py-docutils
 SUBDIR+=	py-doh-proxy
 SUBDIR+=	py-dolo
 SUBDIR+=	py-dot2tex
diff --git a/py-docutils/ALTERNATIVES b/py-docutils/ALTERNATIVES
new file mode 100644
index 0000000000..cd01d484e2
--- /dev/null
+++ b/py-docutils/ALTERNATIVES
@@ -0,0 +1,9 @@
+bin/docutils @PREFIX@/bin/docutils-@PYVERSSUFFIX@
+bin/rst2html.py @PREFIX@/bin/rst2html-@PYVERSSUFFIX@
+bin/rst2latex.py @PREFIX@/bin/rst2latex-@PYVERSSUFFIX@
+bin/rst2man.py @PREFIX@/bin/rst2man-@PYVERSSUFFIX@
+bin/rst2odt.py @PREFIX@/bin/rst2odt-@PYVERSSUFFIX@
+bin/rst2pseudoxml.py @PREFIX@/bin/rst2pseudoxml-@PYVERSSUFFIX@
+bin/rst2s5.py @PREFIX@/bin/rst2s5-@PYVERSSUFFIX@
+bin/rst2xetex.py @PREFIX@/bin/rst2xetex-@PYVERSSUFFIX@
+bin/rst2xml.py @PREFIX@/bin/rst2xml-@PYVERSSUFFIX@
diff --git a/py-docutils/DESCR b/py-docutils/DESCR
new file mode 100644
index 0000000000..45fb65a446
--- /dev/null
+++ b/py-docutils/DESCR
@@ -0,0 +1,3 @@
+The purpose of the Docutils project is to create a set of tools
+for processing plaintext documentation into useful formats, such
+as HTML, XML, and TeX.
diff --git a/py-docutils/Makefile b/py-docutils/Makefile
new file mode 100644
index 0000000000..dd4029a56e
--- /dev/null
+++ b/py-docutils/Makefile
@@ -0,0 +1,41 @@
+# $NetBSD: Makefile,v 1.67 2025/08/03 10:06:37 wiz Exp $
+
+DISTNAME=	docutils-0.22
+PKGNAME=	${PYPKGPREFIX}-${DISTNAME}
+CATEGORIES=	textproc python
+MASTER_SITES=	${MASTER_SITE_PYPI:=d/docutils/}
+
+MAINTAINER=	pkgsrc-users%NetBSD.org@localhost
+HOMEPAGE=	https://docutils.sourceforge.io/
+COMMENT=	Python tool to generate documents
+LICENSE=	public-domain AND 2-clause-bsd
+
+TOOL_DEPENDS+=	${PYPKGPREFIX}-flit_core>=3.11:../../devel/py-flit_core
+DEPENDS+=	${PYPKGPREFIX}-pygments>=0:../../textproc/py-pygments
+
+USE_LANGUAGES=	# none
+
+REPLACE_PYTHON+=	docutils/__main__.py
+REPLACE_PYTHON+=	docutils/utils/math/math2html.py
+REPLACE_PYTHON+=	docutils/utils/smartquotes.py
+REPLACE_PYTHON+=	docutils/writers/odf_odt/prepstyles.py
+REPLACE_PYTHON+=	docutils/writers/xetex/__init__.py
+
+post-install:
+	cd ${DESTDIR}${PREFIX}/bin && \
+	${MV} docutils docutils-${PYVERSSUFFIX} || ${TRUE}
+.for bin in rst2html rst2html4 rst2html5 rst2latex rst2man rst2odt \
+	rst2pseudoxml rst2s5 rst2xetex rst2xml
+	cd ${DESTDIR}${PREFIX}/bin && \
+	${MV} ${bin} ${bin}-${PYVERSSUFFIX} || ${TRUE}
+.endfor
+# due to patches/patch-docutils_parsers_rst_states.py
+	${RM} -f ${DESTDIR}${PREFIX}/${PYSITELIB}/docutils/parsers/rst/states.py.orig
+
+do-test:
+	cd ${WRKSRC} && ${PYTHONBIN} test/alltests.py
+
+.include "../../lang/python/batteries-included.mk"
+.include "../../lang/python/application.mk"
+.include "../../lang/python/wheel.mk"
+.include "../../mk/bsd.pkg.mk"
diff --git a/py-docutils/PLIST b/py-docutils/PLIST
new file mode 100644
index 0000000000..9c2a17d31d
--- /dev/null
+++ b/py-docutils/PLIST
@@ -0,0 +1,482 @@
+@comment $NetBSD: PLIST,v 1.34 2025/08/03 10:06:37 wiz Exp $
+bin/docutils-${PYVERSSUFFIX}
+bin/rst2html-${PYVERSSUFFIX}
+bin/rst2html4-${PYVERSSUFFIX}
+bin/rst2html5-${PYVERSSUFFIX}
+bin/rst2latex-${PYVERSSUFFIX}
+bin/rst2man-${PYVERSSUFFIX}
+bin/rst2odt-${PYVERSSUFFIX}
+bin/rst2pseudoxml-${PYVERSSUFFIX}
+bin/rst2s5-${PYVERSSUFFIX}
+bin/rst2xetex-${PYVERSSUFFIX}
+bin/rst2xml-${PYVERSSUFFIX}
+${PYSITELIB}/${WHEEL_INFODIR}/METADATA
+${PYSITELIB}/${WHEEL_INFODIR}/RECORD
+${PYSITELIB}/${WHEEL_INFODIR}/WHEEL
+${PYSITELIB}/${WHEEL_INFODIR}/entry_points.txt
+${PYSITELIB}/${WHEEL_INFODIR}/licenses/COPYING.rst
+${PYSITELIB}/${WHEEL_INFODIR}/licenses/licenses/BSD-0-Clause.rst
+${PYSITELIB}/${WHEEL_INFODIR}/licenses/licenses/BSD-2-Clause.rst
+${PYSITELIB}/${WHEEL_INFODIR}/licenses/licenses/gpl-3-0.txt
+${PYSITELIB}/docutils/__init__.py
+${PYSITELIB}/docutils/__init__.pyc
+${PYSITELIB}/docutils/__init__.pyo
+${PYSITELIB}/docutils/__main__.py
+${PYSITELIB}/docutils/__main__.pyc
+${PYSITELIB}/docutils/__main__.pyo
+${PYSITELIB}/docutils/core.py
+${PYSITELIB}/docutils/core.pyc
+${PYSITELIB}/docutils/core.pyo
+${PYSITELIB}/docutils/docutils.conf
+${PYSITELIB}/docutils/examples.py
+${PYSITELIB}/docutils/examples.pyc
+${PYSITELIB}/docutils/examples.pyo
+${PYSITELIB}/docutils/frontend.py
+${PYSITELIB}/docutils/frontend.pyc
+${PYSITELIB}/docutils/frontend.pyo
+${PYSITELIB}/docutils/io.py
+${PYSITELIB}/docutils/io.pyc
+${PYSITELIB}/docutils/io.pyo
+${PYSITELIB}/docutils/languages/__init__.py
+${PYSITELIB}/docutils/languages/__init__.pyc
+${PYSITELIB}/docutils/languages/__init__.pyo
+${PYSITELIB}/docutils/languages/af.py
+${PYSITELIB}/docutils/languages/af.pyc
+${PYSITELIB}/docutils/languages/af.pyo
+${PYSITELIB}/docutils/languages/ar.py
+${PYSITELIB}/docutils/languages/ar.pyc
+${PYSITELIB}/docutils/languages/ar.pyo
+${PYSITELIB}/docutils/languages/ca.py
+${PYSITELIB}/docutils/languages/ca.pyc
+${PYSITELIB}/docutils/languages/ca.pyo
+${PYSITELIB}/docutils/languages/cs.py
+${PYSITELIB}/docutils/languages/cs.pyc
+${PYSITELIB}/docutils/languages/cs.pyo
+${PYSITELIB}/docutils/languages/da.py
+${PYSITELIB}/docutils/languages/da.pyc
+${PYSITELIB}/docutils/languages/da.pyo
+${PYSITELIB}/docutils/languages/de.py
+${PYSITELIB}/docutils/languages/de.pyc
+${PYSITELIB}/docutils/languages/de.pyo
+${PYSITELIB}/docutils/languages/en.py
+${PYSITELIB}/docutils/languages/en.pyc
+${PYSITELIB}/docutils/languages/en.pyo
+${PYSITELIB}/docutils/languages/eo.py
+${PYSITELIB}/docutils/languages/eo.pyc
+${PYSITELIB}/docutils/languages/eo.pyo
+${PYSITELIB}/docutils/languages/es.py
+${PYSITELIB}/docutils/languages/es.pyc
+${PYSITELIB}/docutils/languages/es.pyo
+${PYSITELIB}/docutils/languages/fa.py
+${PYSITELIB}/docutils/languages/fa.pyc
+${PYSITELIB}/docutils/languages/fa.pyo
+${PYSITELIB}/docutils/languages/fi.py
+${PYSITELIB}/docutils/languages/fi.pyc
+${PYSITELIB}/docutils/languages/fi.pyo
+${PYSITELIB}/docutils/languages/fr.py
+${PYSITELIB}/docutils/languages/fr.pyc
+${PYSITELIB}/docutils/languages/fr.pyo
+${PYSITELIB}/docutils/languages/gl.py
+${PYSITELIB}/docutils/languages/gl.pyc
+${PYSITELIB}/docutils/languages/gl.pyo
+${PYSITELIB}/docutils/languages/he.py
+${PYSITELIB}/docutils/languages/he.pyc
+${PYSITELIB}/docutils/languages/he.pyo
+${PYSITELIB}/docutils/languages/it.py
+${PYSITELIB}/docutils/languages/it.pyc
+${PYSITELIB}/docutils/languages/it.pyo
+${PYSITELIB}/docutils/languages/ja.py
+${PYSITELIB}/docutils/languages/ja.pyc
+${PYSITELIB}/docutils/languages/ja.pyo
+${PYSITELIB}/docutils/languages/ka.py
+${PYSITELIB}/docutils/languages/ka.pyc
+${PYSITELIB}/docutils/languages/ka.pyo
+${PYSITELIB}/docutils/languages/ko.py
+${PYSITELIB}/docutils/languages/ko.pyc
+${PYSITELIB}/docutils/languages/ko.pyo
+${PYSITELIB}/docutils/languages/lt.py
+${PYSITELIB}/docutils/languages/lt.pyc
+${PYSITELIB}/docutils/languages/lt.pyo
+${PYSITELIB}/docutils/languages/lv.py
+${PYSITELIB}/docutils/languages/lv.pyc
+${PYSITELIB}/docutils/languages/lv.pyo
+${PYSITELIB}/docutils/languages/nl.py
+${PYSITELIB}/docutils/languages/nl.pyc
+${PYSITELIB}/docutils/languages/nl.pyo
+${PYSITELIB}/docutils/languages/pl.py
+${PYSITELIB}/docutils/languages/pl.pyc
+${PYSITELIB}/docutils/languages/pl.pyo
+${PYSITELIB}/docutils/languages/pt_br.py
+${PYSITELIB}/docutils/languages/pt_br.pyc
+${PYSITELIB}/docutils/languages/pt_br.pyo
+${PYSITELIB}/docutils/languages/ru.py
+${PYSITELIB}/docutils/languages/ru.pyc
+${PYSITELIB}/docutils/languages/ru.pyo
+${PYSITELIB}/docutils/languages/sk.py
+${PYSITELIB}/docutils/languages/sk.pyc
+${PYSITELIB}/docutils/languages/sk.pyo
+${PYSITELIB}/docutils/languages/sv.py
+${PYSITELIB}/docutils/languages/sv.pyc
+${PYSITELIB}/docutils/languages/sv.pyo
+${PYSITELIB}/docutils/languages/uk.py
+${PYSITELIB}/docutils/languages/uk.pyc
+${PYSITELIB}/docutils/languages/uk.pyo
+${PYSITELIB}/docutils/languages/zh_cn.py
+${PYSITELIB}/docutils/languages/zh_cn.pyc
+${PYSITELIB}/docutils/languages/zh_cn.pyo
+${PYSITELIB}/docutils/languages/zh_tw.py
+${PYSITELIB}/docutils/languages/zh_tw.pyc
+${PYSITELIB}/docutils/languages/zh_tw.pyo
+${PYSITELIB}/docutils/nodes.py
+${PYSITELIB}/docutils/nodes.pyc
+${PYSITELIB}/docutils/nodes.pyo
+${PYSITELIB}/docutils/parsers/__init__.py
+${PYSITELIB}/docutils/parsers/__init__.pyc
+${PYSITELIB}/docutils/parsers/__init__.pyo
+${PYSITELIB}/docutils/parsers/commonmark_wrapper.py
+${PYSITELIB}/docutils/parsers/commonmark_wrapper.pyc
+${PYSITELIB}/docutils/parsers/commonmark_wrapper.pyo
+${PYSITELIB}/docutils/parsers/docutils_xml.py
+${PYSITELIB}/docutils/parsers/docutils_xml.pyc
+${PYSITELIB}/docutils/parsers/docutils_xml.pyo
+${PYSITELIB}/docutils/parsers/null.py
+${PYSITELIB}/docutils/parsers/null.pyc
+${PYSITELIB}/docutils/parsers/null.pyo
+${PYSITELIB}/docutils/parsers/recommonmark_wrapper.py
+${PYSITELIB}/docutils/parsers/recommonmark_wrapper.pyc
+${PYSITELIB}/docutils/parsers/recommonmark_wrapper.pyo
+${PYSITELIB}/docutils/parsers/rst/__init__.py
+${PYSITELIB}/docutils/parsers/rst/__init__.pyc
+${PYSITELIB}/docutils/parsers/rst/__init__.pyo
+${PYSITELIB}/docutils/parsers/rst/directives/__init__.py
+${PYSITELIB}/docutils/parsers/rst/directives/__init__.pyc
+${PYSITELIB}/docutils/parsers/rst/directives/__init__.pyo
+${PYSITELIB}/docutils/parsers/rst/directives/admonitions.py
+${PYSITELIB}/docutils/parsers/rst/directives/admonitions.pyc
+${PYSITELIB}/docutils/parsers/rst/directives/admonitions.pyo
+${PYSITELIB}/docutils/parsers/rst/directives/body.py
+${PYSITELIB}/docutils/parsers/rst/directives/body.pyc
+${PYSITELIB}/docutils/parsers/rst/directives/body.pyo
+${PYSITELIB}/docutils/parsers/rst/directives/html.py
+${PYSITELIB}/docutils/parsers/rst/directives/html.pyc
+${PYSITELIB}/docutils/parsers/rst/directives/html.pyo
+${PYSITELIB}/docutils/parsers/rst/directives/images.py
+${PYSITELIB}/docutils/parsers/rst/directives/images.pyc
+${PYSITELIB}/docutils/parsers/rst/directives/images.pyo
+${PYSITELIB}/docutils/parsers/rst/directives/misc.py
+${PYSITELIB}/docutils/parsers/rst/directives/misc.pyc
+${PYSITELIB}/docutils/parsers/rst/directives/misc.pyo
+${PYSITELIB}/docutils/parsers/rst/directives/parts.py
+${PYSITELIB}/docutils/parsers/rst/directives/parts.pyc
+${PYSITELIB}/docutils/parsers/rst/directives/parts.pyo
+${PYSITELIB}/docutils/parsers/rst/directives/references.py
+${PYSITELIB}/docutils/parsers/rst/directives/references.pyc
+${PYSITELIB}/docutils/parsers/rst/directives/references.pyo
+${PYSITELIB}/docutils/parsers/rst/directives/tables.py
+${PYSITELIB}/docutils/parsers/rst/directives/tables.pyc
+${PYSITELIB}/docutils/parsers/rst/directives/tables.pyo
+${PYSITELIB}/docutils/parsers/rst/include/README.rst
+${PYSITELIB}/docutils/parsers/rst/include/html-roles.txt
+${PYSITELIB}/docutils/parsers/rst/include/isoamsa.txt
+${PYSITELIB}/docutils/parsers/rst/include/isoamsb.txt
+${PYSITELIB}/docutils/parsers/rst/include/isoamsc.txt
+${PYSITELIB}/docutils/parsers/rst/include/isoamsn.txt
+${PYSITELIB}/docutils/parsers/rst/include/isoamso.txt
+${PYSITELIB}/docutils/parsers/rst/include/isoamsr.txt
+${PYSITELIB}/docutils/parsers/rst/include/isobox.txt
+${PYSITELIB}/docutils/parsers/rst/include/isocyr1.txt
+${PYSITELIB}/docutils/parsers/rst/include/isocyr2.txt
+${PYSITELIB}/docutils/parsers/rst/include/isodia.txt
+${PYSITELIB}/docutils/parsers/rst/include/isogrk1.txt
+${PYSITELIB}/docutils/parsers/rst/include/isogrk2.txt
+${PYSITELIB}/docutils/parsers/rst/include/isogrk3.txt
+${PYSITELIB}/docutils/parsers/rst/include/isogrk4-wide.txt
+${PYSITELIB}/docutils/parsers/rst/include/isogrk4.txt
+${PYSITELIB}/docutils/parsers/rst/include/isolat1.txt
+${PYSITELIB}/docutils/parsers/rst/include/isolat2.txt
+${PYSITELIB}/docutils/parsers/rst/include/isomfrk-wide.txt
+${PYSITELIB}/docutils/parsers/rst/include/isomfrk.txt
+${PYSITELIB}/docutils/parsers/rst/include/isomopf-wide.txt
+${PYSITELIB}/docutils/parsers/rst/include/isomopf.txt
+${PYSITELIB}/docutils/parsers/rst/include/isomscr-wide.txt
+${PYSITELIB}/docutils/parsers/rst/include/isomscr.txt
+${PYSITELIB}/docutils/parsers/rst/include/isonum.txt
+${PYSITELIB}/docutils/parsers/rst/include/isopub.txt
+${PYSITELIB}/docutils/parsers/rst/include/isotech.txt
+${PYSITELIB}/docutils/parsers/rst/include/mmlalias.txt
+${PYSITELIB}/docutils/parsers/rst/include/mmlextra-wide.txt
+${PYSITELIB}/docutils/parsers/rst/include/mmlextra.txt
+${PYSITELIB}/docutils/parsers/rst/include/s5defs.txt
+${PYSITELIB}/docutils/parsers/rst/include/xhtml1-lat1.txt
+${PYSITELIB}/docutils/parsers/rst/include/xhtml1-special.txt
+${PYSITELIB}/docutils/parsers/rst/include/xhtml1-symbol.txt
+${PYSITELIB}/docutils/parsers/rst/languages/__init__.py
+${PYSITELIB}/docutils/parsers/rst/languages/__init__.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/__init__.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/af.py
+${PYSITELIB}/docutils/parsers/rst/languages/af.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/af.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/ar.py
+${PYSITELIB}/docutils/parsers/rst/languages/ar.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/ar.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/ca.py
+${PYSITELIB}/docutils/parsers/rst/languages/ca.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/ca.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/cs.py
+${PYSITELIB}/docutils/parsers/rst/languages/cs.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/cs.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/da.py
+${PYSITELIB}/docutils/parsers/rst/languages/da.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/da.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/de.py
+${PYSITELIB}/docutils/parsers/rst/languages/de.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/de.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/en.py
+${PYSITELIB}/docutils/parsers/rst/languages/en.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/en.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/eo.py
+${PYSITELIB}/docutils/parsers/rst/languages/eo.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/eo.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/es.py
+${PYSITELIB}/docutils/parsers/rst/languages/es.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/es.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/fa.py
+${PYSITELIB}/docutils/parsers/rst/languages/fa.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/fa.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/fi.py
+${PYSITELIB}/docutils/parsers/rst/languages/fi.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/fi.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/fr.py
+${PYSITELIB}/docutils/parsers/rst/languages/fr.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/fr.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/gl.py
+${PYSITELIB}/docutils/parsers/rst/languages/gl.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/gl.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/he.py
+${PYSITELIB}/docutils/parsers/rst/languages/he.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/he.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/it.py
+${PYSITELIB}/docutils/parsers/rst/languages/it.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/it.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/ja.py
+${PYSITELIB}/docutils/parsers/rst/languages/ja.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/ja.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/ka.py
+${PYSITELIB}/docutils/parsers/rst/languages/ka.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/ka.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/ko.py
+${PYSITELIB}/docutils/parsers/rst/languages/ko.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/ko.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/lt.py
+${PYSITELIB}/docutils/parsers/rst/languages/lt.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/lt.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/lv.py
+${PYSITELIB}/docutils/parsers/rst/languages/lv.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/lv.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/nl.py
+${PYSITELIB}/docutils/parsers/rst/languages/nl.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/nl.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/pl.py
+${PYSITELIB}/docutils/parsers/rst/languages/pl.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/pl.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/pt_br.py
+${PYSITELIB}/docutils/parsers/rst/languages/pt_br.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/pt_br.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/ru.py
+${PYSITELIB}/docutils/parsers/rst/languages/ru.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/ru.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/sk.py
+${PYSITELIB}/docutils/parsers/rst/languages/sk.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/sk.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/sv.py
+${PYSITELIB}/docutils/parsers/rst/languages/sv.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/sv.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/uk.py
+${PYSITELIB}/docutils/parsers/rst/languages/uk.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/uk.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/zh_cn.py
+${PYSITELIB}/docutils/parsers/rst/languages/zh_cn.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/zh_cn.pyo
+${PYSITELIB}/docutils/parsers/rst/languages/zh_tw.py
+${PYSITELIB}/docutils/parsers/rst/languages/zh_tw.pyc
+${PYSITELIB}/docutils/parsers/rst/languages/zh_tw.pyo
+${PYSITELIB}/docutils/parsers/rst/roles.py
+${PYSITELIB}/docutils/parsers/rst/roles.pyc
+${PYSITELIB}/docutils/parsers/rst/roles.pyo
+${PYSITELIB}/docutils/parsers/rst/states.py
+${PYSITELIB}/docutils/parsers/rst/states.pyc
+${PYSITELIB}/docutils/parsers/rst/states.pyo
+${PYSITELIB}/docutils/parsers/rst/tableparser.py
+${PYSITELIB}/docutils/parsers/rst/tableparser.pyc
+${PYSITELIB}/docutils/parsers/rst/tableparser.pyo
+${PYSITELIB}/docutils/readers/__init__.py
+${PYSITELIB}/docutils/readers/__init__.pyc
+${PYSITELIB}/docutils/readers/__init__.pyo
+${PYSITELIB}/docutils/readers/doctree.py
+${PYSITELIB}/docutils/readers/doctree.pyc
+${PYSITELIB}/docutils/readers/doctree.pyo
+${PYSITELIB}/docutils/readers/pep.py
+${PYSITELIB}/docutils/readers/pep.pyc
+${PYSITELIB}/docutils/readers/pep.pyo
+${PYSITELIB}/docutils/readers/standalone.py
+${PYSITELIB}/docutils/readers/standalone.pyc
+${PYSITELIB}/docutils/readers/standalone.pyo
+${PYSITELIB}/docutils/statemachine.py
+${PYSITELIB}/docutils/statemachine.pyc
+${PYSITELIB}/docutils/statemachine.pyo
+${PYSITELIB}/docutils/transforms/__init__.py
+${PYSITELIB}/docutils/transforms/__init__.pyc
+${PYSITELIB}/docutils/transforms/__init__.pyo
+${PYSITELIB}/docutils/transforms/components.py
+${PYSITELIB}/docutils/transforms/components.pyc
+${PYSITELIB}/docutils/transforms/components.pyo
+${PYSITELIB}/docutils/transforms/frontmatter.py
+${PYSITELIB}/docutils/transforms/frontmatter.pyc
+${PYSITELIB}/docutils/transforms/frontmatter.pyo
+${PYSITELIB}/docutils/transforms/misc.py
+${PYSITELIB}/docutils/transforms/misc.pyc
+${PYSITELIB}/docutils/transforms/misc.pyo
+${PYSITELIB}/docutils/transforms/parts.py
+${PYSITELIB}/docutils/transforms/parts.pyc
+${PYSITELIB}/docutils/transforms/parts.pyo
+${PYSITELIB}/docutils/transforms/peps.py
+${PYSITELIB}/docutils/transforms/peps.pyc
+${PYSITELIB}/docutils/transforms/peps.pyo
+${PYSITELIB}/docutils/transforms/references.py
+${PYSITELIB}/docutils/transforms/references.pyc
+${PYSITELIB}/docutils/transforms/references.pyo
+${PYSITELIB}/docutils/transforms/universal.py
+${PYSITELIB}/docutils/transforms/universal.pyc
+${PYSITELIB}/docutils/transforms/universal.pyo
+${PYSITELIB}/docutils/transforms/writer_aux.py
+${PYSITELIB}/docutils/transforms/writer_aux.pyc
+${PYSITELIB}/docutils/transforms/writer_aux.pyo
+${PYSITELIB}/docutils/utils/__init__.py
+${PYSITELIB}/docutils/utils/__init__.pyc
+${PYSITELIB}/docutils/utils/__init__.pyo
+${PYSITELIB}/docutils/utils/_roman_numerals.py
+${PYSITELIB}/docutils/utils/_roman_numerals.pyc
+${PYSITELIB}/docutils/utils/_roman_numerals.pyo
+${PYSITELIB}/docutils/utils/_typing.py
+${PYSITELIB}/docutils/utils/_typing.pyc
+${PYSITELIB}/docutils/utils/_typing.pyo
+${PYSITELIB}/docutils/utils/code_analyzer.py
+${PYSITELIB}/docutils/utils/code_analyzer.pyc
+${PYSITELIB}/docutils/utils/code_analyzer.pyo
+${PYSITELIB}/docutils/utils/math/__init__.py
+${PYSITELIB}/docutils/utils/math/__init__.pyc
+${PYSITELIB}/docutils/utils/math/__init__.pyo
+${PYSITELIB}/docutils/utils/math/latex2mathml.py
+${PYSITELIB}/docutils/utils/math/latex2mathml.pyc
+${PYSITELIB}/docutils/utils/math/latex2mathml.pyo
+${PYSITELIB}/docutils/utils/math/math2html.py
+${PYSITELIB}/docutils/utils/math/math2html.pyc
+${PYSITELIB}/docutils/utils/math/math2html.pyo
+${PYSITELIB}/docutils/utils/math/mathalphabet2unichar.py
+${PYSITELIB}/docutils/utils/math/mathalphabet2unichar.pyc
+${PYSITELIB}/docutils/utils/math/mathalphabet2unichar.pyo
+${PYSITELIB}/docutils/utils/math/mathml_elements.py
+${PYSITELIB}/docutils/utils/math/mathml_elements.pyc
+${PYSITELIB}/docutils/utils/math/mathml_elements.pyo
+${PYSITELIB}/docutils/utils/math/tex2mathml_extern.py
+${PYSITELIB}/docutils/utils/math/tex2mathml_extern.pyc
+${PYSITELIB}/docutils/utils/math/tex2mathml_extern.pyo
+${PYSITELIB}/docutils/utils/math/tex2unichar.py
+${PYSITELIB}/docutils/utils/math/tex2unichar.pyc
+${PYSITELIB}/docutils/utils/math/tex2unichar.pyo
+${PYSITELIB}/docutils/utils/math/unichar2tex.py
+${PYSITELIB}/docutils/utils/math/unichar2tex.pyc
+${PYSITELIB}/docutils/utils/math/unichar2tex.pyo
+${PYSITELIB}/docutils/utils/punctuation_chars.py
+${PYSITELIB}/docutils/utils/punctuation_chars.pyc
+${PYSITELIB}/docutils/utils/punctuation_chars.pyo
+${PYSITELIB}/docutils/utils/smartquotes.py
+${PYSITELIB}/docutils/utils/smartquotes.pyc
+${PYSITELIB}/docutils/utils/smartquotes.pyo
+${PYSITELIB}/docutils/utils/urischemes.py
+${PYSITELIB}/docutils/utils/urischemes.pyc
+${PYSITELIB}/docutils/utils/urischemes.pyo
+${PYSITELIB}/docutils/writers/__init__.py
+${PYSITELIB}/docutils/writers/__init__.pyc
+${PYSITELIB}/docutils/writers/__init__.pyo
+${PYSITELIB}/docutils/writers/_html_base.py
+${PYSITELIB}/docutils/writers/_html_base.pyc
+${PYSITELIB}/docutils/writers/_html_base.pyo
+${PYSITELIB}/docutils/writers/docutils_xml.py
+${PYSITELIB}/docutils/writers/docutils_xml.pyc
+${PYSITELIB}/docutils/writers/docutils_xml.pyo
+${PYSITELIB}/docutils/writers/html4css1/__init__.py
+${PYSITELIB}/docutils/writers/html4css1/__init__.pyc
+${PYSITELIB}/docutils/writers/html4css1/__init__.pyo
+${PYSITELIB}/docutils/writers/html4css1/html4css1.css
+${PYSITELIB}/docutils/writers/html4css1/template.txt
+${PYSITELIB}/docutils/writers/html5_polyglot/__init__.py
+${PYSITELIB}/docutils/writers/html5_polyglot/__init__.pyc
+${PYSITELIB}/docutils/writers/html5_polyglot/__init__.pyo
+${PYSITELIB}/docutils/writers/html5_polyglot/italic-field-names.css
+${PYSITELIB}/docutils/writers/html5_polyglot/math.css
+${PYSITELIB}/docutils/writers/html5_polyglot/minimal.css
+${PYSITELIB}/docutils/writers/html5_polyglot/plain.css
+${PYSITELIB}/docutils/writers/html5_polyglot/responsive.css
+${PYSITELIB}/docutils/writers/html5_polyglot/template.txt
+${PYSITELIB}/docutils/writers/html5_polyglot/tuftig.css
+${PYSITELIB}/docutils/writers/latex2e/__init__.py
+${PYSITELIB}/docutils/writers/latex2e/__init__.pyc
+${PYSITELIB}/docutils/writers/latex2e/__init__.pyo
+${PYSITELIB}/docutils/writers/latex2e/default.tex
+${PYSITELIB}/docutils/writers/latex2e/docutils.sty
+${PYSITELIB}/docutils/writers/latex2e/titlepage.tex
+${PYSITELIB}/docutils/writers/latex2e/titlingpage.tex
+${PYSITELIB}/docutils/writers/latex2e/xelatex.tex
+${PYSITELIB}/docutils/writers/manpage.py
+${PYSITELIB}/docutils/writers/manpage.pyc
+${PYSITELIB}/docutils/writers/manpage.pyo
+${PYSITELIB}/docutils/writers/null.py
+${PYSITELIB}/docutils/writers/null.pyc
+${PYSITELIB}/docutils/writers/null.pyo
+${PYSITELIB}/docutils/writers/odf_odt/__init__.py
+${PYSITELIB}/docutils/writers/odf_odt/__init__.pyc
+${PYSITELIB}/docutils/writers/odf_odt/__init__.pyo
+${PYSITELIB}/docutils/writers/odf_odt/prepstyles.py
+${PYSITELIB}/docutils/writers/odf_odt/prepstyles.pyc
+${PYSITELIB}/docutils/writers/odf_odt/prepstyles.pyo
+${PYSITELIB}/docutils/writers/odf_odt/pygmentsformatter.py
+${PYSITELIB}/docutils/writers/odf_odt/pygmentsformatter.pyc
+${PYSITELIB}/docutils/writers/odf_odt/pygmentsformatter.pyo
+${PYSITELIB}/docutils/writers/odf_odt/styles.odt
+${PYSITELIB}/docutils/writers/pep_html/__init__.py
+${PYSITELIB}/docutils/writers/pep_html/__init__.pyc
+${PYSITELIB}/docutils/writers/pep_html/__init__.pyo
+${PYSITELIB}/docutils/writers/pep_html/pep.css
+${PYSITELIB}/docutils/writers/pep_html/template.txt
+${PYSITELIB}/docutils/writers/pseudoxml.py
+${PYSITELIB}/docutils/writers/pseudoxml.pyc
+${PYSITELIB}/docutils/writers/pseudoxml.pyo
+${PYSITELIB}/docutils/writers/s5_html/__init__.py
+${PYSITELIB}/docutils/writers/s5_html/__init__.pyc
+${PYSITELIB}/docutils/writers/s5_html/__init__.pyo
+${PYSITELIB}/docutils/writers/s5_html/themes/README.rst
+${PYSITELIB}/docutils/writers/s5_html/themes/big-black/__base__
+${PYSITELIB}/docutils/writers/s5_html/themes/big-black/framing.css
+${PYSITELIB}/docutils/writers/s5_html/themes/big-black/pretty.css
+${PYSITELIB}/docutils/writers/s5_html/themes/big-white/framing.css
+${PYSITELIB}/docutils/writers/s5_html/themes/big-white/pretty.css
+${PYSITELIB}/docutils/writers/s5_html/themes/default/framing.css
+${PYSITELIB}/docutils/writers/s5_html/themes/default/opera.css
+${PYSITELIB}/docutils/writers/s5_html/themes/default/outline.css
+${PYSITELIB}/docutils/writers/s5_html/themes/default/pretty.css
+${PYSITELIB}/docutils/writers/s5_html/themes/default/print.css
+${PYSITELIB}/docutils/writers/s5_html/themes/default/s5-core.css
+${PYSITELIB}/docutils/writers/s5_html/themes/default/slides.css
+${PYSITELIB}/docutils/writers/s5_html/themes/default/slides.js
+${PYSITELIB}/docutils/writers/s5_html/themes/medium-black/__base__
+${PYSITELIB}/docutils/writers/s5_html/themes/medium-black/pretty.css
+${PYSITELIB}/docutils/writers/s5_html/themes/medium-white/framing.css
+${PYSITELIB}/docutils/writers/s5_html/themes/medium-white/pretty.css
+${PYSITELIB}/docutils/writers/s5_html/themes/small-black/__base__
+${PYSITELIB}/docutils/writers/s5_html/themes/small-black/pretty.css
+${PYSITELIB}/docutils/writers/s5_html/themes/small-white/framing.css
+${PYSITELIB}/docutils/writers/s5_html/themes/small-white/pretty.css
+${PYSITELIB}/docutils/writers/xetex/__init__.py
+${PYSITELIB}/docutils/writers/xetex/__init__.pyc
+${PYSITELIB}/docutils/writers/xetex/__init__.pyo
diff --git a/py-docutils/distinfo b/py-docutils/distinfo
new file mode 100644
index 0000000000..6e35654c46
--- /dev/null
+++ b/py-docutils/distinfo
@@ -0,0 +1,6 @@
+$NetBSD: distinfo,v 1.33 2025/08/03 10:06:37 wiz Exp $
+
+BLAKE2s (docutils-0.22.tar.gz) = 20d7b105f2af0a2417ab1e3800120565ef7c3fc77da8dd4ebef852624b7b3eaa
+SHA512 (docutils-0.22.tar.gz) = 09082eb3bdd5f9b3e977d356740efee47725a50fbaca7bf35c7fddff06003c2b2177a38d160a9956f9e96261f881c0d870c0aa9fef84f90d0cac079ccc73669d
+Size (docutils-0.22.tar.gz) = 2277984 bytes
+SHA1 (patch-docutils_parsers_rst_states.py) = b1c6bcd67d117267847d79516711f3c61dd11c3a
diff --git a/py-docutils/patches/patch-docutils_parsers_rst_states.py b/py-docutils/patches/patch-docutils_parsers_rst_states.py
new file mode 100644
index 0000000000..15a69f2ff4
--- /dev/null
+++ b/py-docutils/patches/patch-docutils_parsers_rst_states.py
@@ -0,0 +1,60 @@
+$NetBSD$
+
+https://sourceforge.net/p/docutils/bugs/508/
+
+--- docutils/parsers/rst/states.py.orig	2025-07-29 14:37:37.894344600 +0000
++++ docutils/parsers/rst/states.py
+@@ -331,30 +331,42 @@ class RSTState(StateWS):
+         title_styles = self.memo.title_styles
+         parent_sections = self.parent.section_hierarchy()
+         # current section level: (0 document, 1 section, 2 subsection, ...)
+-        mylevel = len(parent_sections)
+-        # Determine the level of the new section:
++        oldlevel = len(parent_sections)
++        # new section level:
+         try:  # check for existing title style
+-            level = title_styles.index(style) + 1
++            newlevel = title_styles.index(style) + 1
+         except ValueError:  # new title style
+             title_styles.append(style)
+-            level = len(title_styles)
++            newlevel = len(title_styles)
+         # The new level must not be deeper than an immediate child
+         # of the current level:
+-        if level > mylevel + 1:
+-            styles = " ".join("/".join(s for s in style)
+-                              for style in title_styles)
++        if newlevel > oldlevel + 1:
++            styles = ' '.join('/'.join(style) for style in title_styles)
+             self.parent += self.reporter.severe(
+                 'Inconsistent title style:'
+-                f' skip from level {mylevel} to {level}.',
++                f' skip from level {oldlevel} to {newlevel}.',
+                 nodes.literal_block('', source),
+                 nodes.paragraph('', f'Established title styles: {styles}'),
+                 line=lineno)
+             return False
+         # Update parent state:
+-        self.memo.section_level = level
+-        if level <= mylevel:
++        self.memo.section_level = newlevel
++        if newlevel <= oldlevel:
+             # new section is sibling or higher up in the section hierarchy
+-            self.parent = parent_sections[level-1].parent
++            new_parent = parent_sections[newlevel-1].parent
++            if new_parent is None:
++                styles = ' '.join('/'.join(style) for style in title_styles)
++                self.parent += self.reporter.severe(
++                    f'Cannot skip from level {oldlevel} to {newlevel}.'
++                    ' Current element has only {len(self.parent_sections)'
++                    ' parent sections.'
++                    ' (Mismatch of `memo.section_styles`,'
++                    ' and the root node of a nested parser?)',
++                    nodes.literal_block('', source),
++                    nodes.paragraph('', f'Established title styles: {styles}'),
++                    line=lineno)
++                return False
++            self.parent = new_parent
+         return True
+ 
+     def title_inconsistent(self, sourcetext, lineno):


Home | Main Index | Thread Index | Old Index