From d5d9187017028cf4da62b90f6d80203aa8d85163fb4c4615f3717d93a5720e77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Schr=C3=B6ter?= Date: Fri, 13 Dec 2024 11:20:55 +0100 Subject: [PATCH] Sync from SUSE:SLFO:Main python-docutils revision 6d592406be79ba8aff54969b13a7be76 --- docutils-0.19.tar.gz | 3 - docutils-0.20.1.tar.gz | 3 + pygments-2.14.patch | 676 ---------------------------------------- python-docutils.changes | 53 ++++ python-docutils.spec | 55 ++-- 5 files changed, 84 insertions(+), 706 deletions(-) delete mode 100644 docutils-0.19.tar.gz create mode 100644 docutils-0.20.1.tar.gz delete mode 100644 pygments-2.14.patch diff --git a/docutils-0.19.tar.gz b/docutils-0.19.tar.gz deleted file mode 100644 index 1f4e38d..0000000 --- a/docutils-0.19.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:33995a6753c30b7f577febfc2c50411fec6aac7f7ffeb7c4cfe5991072dcf9e6 -size 2056383 diff --git a/docutils-0.20.1.tar.gz b/docutils-0.20.1.tar.gz new file mode 100644 index 0000000..c945fe4 --- /dev/null +++ b/docutils-0.20.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b +size 2058365 diff --git a/pygments-2.14.patch b/pygments-2.14.patch deleted file mode 100644 index 670ad18..0000000 --- a/pygments-2.14.patch +++ /dev/null @@ -1,676 +0,0 @@ -Index: docutils-0.19/test/test_parsers/test_rst/test_directives/test_code.py -=================================================================== ---- docutils-0.19.orig/test/test_parsers/test_rst/test_directives/test_code.py -+++ docutils-0.19/test/test_parsers/test_rst/test_directives/test_code.py -@@ -10,14 +10,20 @@ Test the 'code' directive in parsers/rst - - if __name__ == '__main__': - import __init__ # noqa: F401 -+from packaging.version import Version - from test_parsers import DocutilsTestSupport --from docutils.utils.code_analyzer import with_pygments -+from docutils.utils.code_analyzer import with_pygments, pygments_version - - - def suite(): - s = DocutilsTestSupport.ParserTestSuite() - if not with_pygments: - del(totest['code-parsing']) -+ del(totest['code-parsing-2-14']) -+ elif pygments_version >= Version('2.14.0'): -+ del(totest['code-parsing']) -+ else: -+ del(totest['code-parsing-2-14']) - s.generateTests(totest) - return s - -@@ -170,6 +176,165 @@ totest['code-parsing'] = [ - \n\ - - print -+ -+ ( -+ -+ 8 -+ -+ / -+ -+ 2 -+ -+ ) -+"""], -+["""\ -+.. code:: latex -+ :class: testclass -+ -+ hello \\emph{world} % emphasize -+""", -+"""\ -+ -+ -+ hello \n\ -+ -+ \\emph -+ -+ { -+ world -+ -+ } -+ \n\ -+ -+ % emphasize"""], -+["""\ -+.. code:: rst -+ :number-lines: -+ -+ This is a code block with text. -+""", -+"""\ -+ -+ -+ -+ 1 \n\ -+ This is a code block with text. -+"""], -+["""\ -+Code not parsed but warning silenced in ParserTestCase. -+ -+.. code:: s-lang -+ -+ % abc.sl -+ autoload("abc_mode", "abc"); -+""", -+"""\ -+ -+ -+ Code not parsed but warning silenced in ParserTestCase. -+ -+ % abc.sl -+ autoload("abc_mode", "abc"); -+"""], -+["""\ -+Place the language name in a class argument to avoid the no-lexer warning: -+ -+.. code:: -+ :class: s-lang -+ -+ % abc.sl -+ autoload("abc_mode", "abc"); -+""", -+"""\ -+ -+ -+ Place the language name in a class argument to avoid the no-lexer warning: -+ -+ % abc.sl -+ autoload("abc_mode", "abc"); -+"""], -+] -+ -+totest['code-parsing-2-14'] = [ -+["""\ -+.. code:: python3 -+ :class: testclass -+ -+ print('hello world') # to stdout -+""", -+"""\ -+ -+ -+ \n\ -+ -+ print -+ -+ ( -+ -+ 'hello world' -+ -+ ) -+ \n\ -+ -+ # to stdout -+"""], -+["""\ -+.. code:: python3 -+ :class: testclass -+ :name: my_function -+ :number-lines: 7 -+ -+ def my_function(): -+ '''Test the lexer. -+ ''' -+ -+ # and now for something completely different -+ print(8/2) -+""", -+"""\ -+ -+ -+ -+ 7 \n\ -+ -+ def -+ \n\ -+ -+ my_function -+ -+ (): -+ -+ \n\ -+ -+ 8 \n\ -+ -+ \n\ -+ -+ \'\'\'Test the lexer. -+ -+ 9 \n\ -+ -+ \'\'\' -+ -+ \n\ -+ -+ 10 \n\ -+ -+ \n\ -+ -+ 11 \n\ -+ -+ \n\ -+ -+ # and now for something completely different -+ -+ \n\ -+ -+ 12 \n\ -+ -+ \n\ -+ -+ print - - ( - -Index: docutils-0.19/test/test_parsers/test_rst/test_directives/test_code_long.py -=================================================================== ---- docutils-0.19.orig/test/test_parsers/test_rst/test_directives/test_code_long.py -+++ docutils-0.19/test/test_parsers/test_rst/test_directives/test_code_long.py -@@ -10,15 +10,22 @@ Test the 'code' directive in body.py wit - - if __name__ == '__main__': - import __init__ # noqa: F401 -+from packaging.version import Version - from test_parsers import DocutilsTestSupport --from docutils.utils.code_analyzer import with_pygments -+from docutils.utils.code_analyzer import with_pygments, pygments_version - - - def suite(): - settings = {'syntax_highlight': 'long'} - s = DocutilsTestSupport.ParserTestSuite(suite_settings=settings) - if with_pygments: -+ if pygments_version >= Version('2.14.0'): -+ del(totest['code-parsing-long']) -+ else: -+ del(totest['code-parsing-long-2-14']) -+ - s.generateTests(totest) -+ - return s - - -@@ -73,6 +80,94 @@ totest['code-parsing-long'] = [ - \n\ - - print -+ -+ ( -+ -+ 8 -+ -+ / -+ -+ 2 -+ -+ ) -+"""], -+["""\ -+.. code:: latex -+ -+ hello \\emph{world} % emphasize -+""", -+"""\ -+ -+ -+ hello \n\ -+ -+ \\emph -+ -+ { -+ world -+ -+ } -+ \n\ -+ -+ % emphasize"""], -+] -+ -+totest['code-parsing-long-2-14'] = [ -+["""\ -+.. code:: python3 -+ :number-lines: 7 -+ -+ def my_function(): -+ '''Test the lexer. -+ ''' -+ -+ # and now for something completely different -+ print(8/2) -+""", -+"""\ -+ -+ -+ -+ 7 \n\ -+ -+ def -+ \n\ -+ -+ my_function -+ -+ (): -+ -+ \n\ -+ -+ 8 \n\ -+ -+ \n\ -+ -+ \'\'\'Test the lexer. -+ -+ 9 \n\ -+ -+ \'\'\' -+ -+ \n\ -+ -+ 10 \n\ -+ -+ \n\ -+ -+ 11 \n\ -+ -+ \n\ -+ -+ # and now for something completely different -+ -+ \n\ -+ -+ 12 \n\ -+ -+ \n\ -+ -+ print - - ( - -Index: docutils-0.19/test/test_parsers/test_rst/test_directives/test_include.py -=================================================================== ---- docutils-0.19.orig/test/test_parsers/test_rst/test_directives/test_include.py -+++ docutils-0.19/test/test_parsers/test_rst/test_directives/test_include.py -@@ -10,9 +10,10 @@ Tests for misc.py "include" directive. - import os.path - if __name__ == '__main__': - import __init__ # noqa: F401 -+from packaging.version import Version - from test_parsers import DocutilsTestSupport - from docutils import parsers --from docutils.utils.code_analyzer import with_pygments -+from docutils.utils.code_analyzer import with_pygments, pygments_version - - # optional 3rd-party markdown parser - md_parser_name = 'recommonmark' -@@ -27,6 +28,11 @@ def suite(): - # eventually skip optional parts: - if not with_pygments: - del(totest['include-code']) -+ del(totest['include-code-2-14']) -+ elif pygments_version >= Version('2.14.0'): -+ del(totest['include-code']) -+ else: -+ del(totest['include-code-2-14']) - if not md_parser_class: - del(totest['include-markdown']) - s.generateTests(totest) -@@ -1191,6 +1197,313 @@ Including includes/include14.txt - - .. - \n\ -+ -+ include -+ -+ :: -+ ../sibling/include7.txt -+""" % reldir(include6)], -+["""\ -+Circular inclusion -+ -+.. include:: %s -+""" % include15, -+"""\ -+ -+ -+ Circular inclusion -+ -+ File "include15.txt": example of rekursive inclusion. -+ -+ File "include16.txt": example of rekursive inclusion. -+ -+ -+ circular inclusion in "include" directive: -+ %s -+ > %s -+ > %s -+ > test data -+ -+ .. include:: include15.txt -+ -+ No loop when clipping before the "include" directive: -+ -+ File "include15.txt": example of rekursive inclusion. -+""" % (reldir(include16), reldir(include15), -+ reldir(include16), reldir(include15))], -+["""\ -+Circular inclusion with clipping. -+ -+.. include:: %s -+ :start-line: 2 -+""" % include16, -+"""\ -+ -+ -+ Circular inclusion with clipping. -+ -+ File "include15.txt": example of rekursive inclusion. -+ -+ File "include16.txt": example of rekursive inclusion. -+ -+ -+ circular inclusion in "include" directive: -+ %s -+ > %s -+ > %s -+ > %s -+ > test data -+ -+ .. include:: include15.txt -+ -+ No loop when clipping before the "include" directive: -+ -+ File "include15.txt": example of rekursive inclusion. -+ -+ No loop when clipping before the "include" directive: -+ -+ File "include15.txt": example of rekursive inclusion. -+""" % (reldir(include16), reldir(include15), reldir(include16), -+ reldir(include15), reldir(include16))], -+["""\ -+Circular inclusion with specified parser. -+ -+.. include:: %s -+ :parser: rst -+""" % include15, -+"""\ -+ -+ -+ Circular inclusion with specified parser. -+ -+ File "include15.txt": example of rekursive inclusion. -+ -+ File "include16.txt": example of rekursive inclusion. -+ -+ -+ circular inclusion in "include" directive: -+ %s -+ > %s -+ > %s -+ > test data -+ -+ .. include:: include15.txt -+ -+ No loop when clipping before the "include" directive: -+ -+ File "include15.txt": example of rekursive inclusion. -+""" % (reldir(include16), reldir(include15), -+ reldir(include16), reldir(include15))], -+["""\ -+No circular inclusion. -+ -+============================= ============================= -+.. include:: data/include.txt .. include:: data/include.txt -+============================= ============================= -+""", -+"""\ -+ -+ -+ No circular inclusion. -+ -+ -+ -+ -+ -+ -+ -+ -+ Some include text. -+ -+ -+ Some include text."""], -+] -+ -+totest['include-code-2-14'] = [ -+["""\ -+Included code -+ -+.. include:: %s -+ :code: rst -+""" % include1, -+"""\ -+ -+ -+ Included code -+ -+ -+ Inclusion 1 -+ \n\ -+ -+ ----------- -+ \n\ -+ -+ \n\ -+ This file is used by \n\ -+ -+ ``test_include.py`` -+ . -+""" % reldir(include1)], -+["""\ -+Included code -+ -+.. include:: %s -+ :code: rst -+ :number-lines: -+""" % include1, -+"""\ -+ -+ -+ Included code -+ -+ -+ 1 \n\ -+ -+ Inclusion 1 -+ \n\ -+ -+ 2 \n\ -+ -+ ----------- -+ \n\ -+ -+ 3 \n\ -+ -+ \n\ -+ -+ 4 \n\ -+ -+ This file is used by \n\ -+ -+ ``test_include.py`` -+ . -+""" % reldir(include1)], -+["""\ -+TAB expansion with included code: -+ -+.. include:: %s -+ :code: rst -+""" % include_literal, -+"""\ -+ -+ -+ TAB expansion with included code: -+ -+ Literal included this should \n\ -+ -+ **not** -+ be \n\ -+ -+ *marked* -+ \n\ -+ -+ `up` -+ . -+ -+ \n\ -+ <- leading raw tab. -+ -+ \n\ -+ \n\ -+ Newlines -+ -+ \n\ -+ are -+ -+ \n\ -+ normalized. -+""" % include_literal], -+["""\ -+Custom TAB expansion with included code: -+ -+.. include:: %s -+ :code: rst -+ :tab-width: 2 -+""" % include_literal, -+"""\ -+ -+ -+ Custom TAB expansion with included code: -+ -+ Literal included this should \n\ -+ -+ **not** -+ be \n\ -+ -+ *marked* -+ \n\ -+ -+ `up` -+ . -+ -+ \n\ -+ <- leading raw tab. -+ -+ \n\ -+ \n\ -+ Newlines -+ -+ \n\ -+ are -+ -+ \n\ -+ normalized. -+""" % include_literal], -+["""\ -+Custom TAB expansion with included code: -+ -+.. include:: %s -+ :code: rst -+ :tab-width: -1 -+""" % include_literal, -+"""\ -+ -+ -+ Custom TAB expansion with included code: -+ -+ Literal included this should \n\ -+ -+ **not** -+ be \n\ -+ -+ *marked* -+ \n\ -+ -+ `up` -+ . -+ -+ \n\ -+ \t<- leading raw tab. -+ -+ \n\ -+ \n\ -+ Newlines -+ -+ \n\ -+ are -+ -+ \n\ -+ normalized. -+""" % include_literal], -+["""\ -+Including includes/include14.txt -+ -+.. include:: %s -+""" % include14, -+"""\ -+ -+ -+ Including includes/include14.txt -+ -+ Including more/include6.txt as rst-code from includes/include14.txt: -+ -+ In includes/more/include6.txt -+ -+ \n\ -+ \n\ -+ -+ .. -+ \n\ - - include - -Index: docutils-0.19/docutils/utils/code_analyzer.py -=================================================================== ---- docutils-0.19.orig/docutils/utils/code_analyzer.py -+++ docutils-0.19/docutils/utils/code_analyzer.py -@@ -9,11 +9,14 @@ - from docutils import ApplicationError - try: - import pygments -+ from packaging.version import Version - from pygments.lexers import get_lexer_by_name - from pygments.formatters.html import _get_ttype_class - with_pygments = True -+ pygments_version = Version(pygments.__version__) - except ImportError: - with_pygments = False -+ pygments_version = '0' - - # Filter the following token types from the list of class arguments: - unstyled_tokens = ['token', # Token (base token type) diff --git a/python-docutils.changes b/python-docutils.changes index 0be3d57..b893f2d 100644 --- a/python-docutils.changes +++ b/python-docutils.changes @@ -1,3 +1,56 @@ +------------------------------------------------------------------- +Sat Mar 30 15:15:42 UTC 2024 - Ben Greiner + +- Fix update-alternatives updates: docutils is the master but + rst2html from old installations can create update failures +- Fix bytecode cache errors: Don't modify python scripts after + install + +------------------------------------------------------------------- +Fri Feb 23 11:02:30 UTC 2024 - Dan Čermák + +- Drop obsolete Requires & BuildRequires on python-packaging & python-xml + +------------------------------------------------------------------- +Fri Nov 10 02:31:29 UTC 2023 - Steve Kowalik + +- Update to 0.20.1: + * Include tox.ini and docutils.conf in the source package + * Docutils 0.20 is the last version supporting Python 3.7 and 3.8. + * Support Python 3.11 (patch #198 by Hugo van Kemenade). + * New functions `rst2…()` for use as "console_scripts" `entry points`_. + * Fix `previous_sibling()` method that led to invalid HTML in some cases + * Fix bug #463. Spurious comma in deprecation warning. + * Improved mock Sphinx module. + * `Transformer.populate_from_components()` now silently ignores + components that are not instances of `docutils.TransformSpec`. + * Accept author names with initials like ``A. Einstein`` in the "author" + `bibliographic field`_ instead of rising an error + * `DanglingReferences` ignores `citation_reference` nodes if the + "use_bibex" setting is active. + * New utility function `xml_declaration()`. + * `DependencyList.add()` accepts `pathlib.Path` instances. + * Support "mod" notation for modulo operation / modulus arithmetic. + * Wrap definition lists with "details" class argument in a
+ with the "id" and "class" values of the list node. + * Use dpub-ARIA role "doc-footnote__" (instead of ARIA role "note") + for footnotes. + * Do not load the `inputenc` package in UTF-8 encoded LaTeX sources. + (UTF-8 is the default encoding for LaTeX2e since 2018). + * Fix behaviour of the use_bibtex_ setting. + * Outsource parts of `depart_document()` to new auxiliary methods + `make_title()` and `append_bibliography()`. + * Drop ``\usepackage{fixltx2e}`` from template. + * Fix SetuptoolsDeprecationWarning: ``Installing '' as data is deprecated`` + by adding data directories to package_data.packages list. + * Refactored tests to use common `unittest` idioms. +- Drop pygments-2.14.patch, no longer needed. + +------------------------------------------------------------------- +Fri Oct 13 22:59:14 UTC 2023 - Matej Cepl + +- python-roman is not actually necessary for testing. + ------------------------------------------------------------------- Fri Apr 21 12:24:23 UTC 2023 - Dirk Müller diff --git a/python-docutils.spec b/python-docutils.spec index c8be8af..ddf7c75 100644 --- a/python-docutils.spec +++ b/python-docutils.spec @@ -1,7 +1,7 @@ # -# spec file +# spec file for package python-docutils # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -26,34 +26,30 @@ %bcond_with test %endif Name: python-docutils%{psuffix} -Version: 0.19 +Version: 0.20.1 Release: 0 Summary: Python Documentation Utilities License: BSD-2-Clause AND Python-2.0 AND GPL-2.0-or-later AND GPL-3.0-or-later AND SUSE-Public-Domain URL: https://pypi.python.org/pypi/docutils/ Source: https://files.pythonhosted.org/packages/source/d/docutils/docutils-%{version}.tar.gz Source99: python-docutils-rpmlintrc -# PATCH-FIX-OPENSUSE pygments-2.14.patch shp#docutils#201 -Patch0: pygments-2.14.patch BuildRequires: %{python_module pip} BuildRequires: %{python_module setuptools} BuildRequires: %{python_module wheel} -BuildRequires: %{python_module xml} BuildRequires: fdupes BuildRequires: python-rpm-macros -Requires: python-xml +Requires(pre): update-alternatives Requires(post): update-alternatives -Requires(postun):update-alternatives +Requires(postun): update-alternatives Recommends: python-Pillow Recommends: python-Pygments -Requires: python-packaging Recommends: python-roman BuildArch: noarch %if %{with test} BuildRequires: %{python_module Pillow} BuildRequires: %{python_module Pygments} BuildRequires: %{python_module packaging} -BuildRequires: %{python_module roman} +# BuildRequires: %%{python_module roman} %endif %if "%{python_flavor}" == "python3" || "%{?python_provides}" == "python3" Provides: docutils = %{version} @@ -74,7 +70,20 @@ sed -i "s|'tools/\(rst.*\)\.py'|'tools/\1'|" setup.py find . -name \*.mp4 -print -exec chmod -x '{}' \; # Actually seems to work with Python 3.6 -sed -i -e '/python_requires/s/7/6/' setup.py +sed -i -e '/python_requires/ s/7/6/' setup.py + +# Remove shebang from non-executable files +sed -i '1{/^#!/d}' \ + docutils/__main__.py \ + docutils/parsers/commonmark_wrapper.py \ + docutils/parsers/recommonmark_wrapper.py \ + docutils/utils/error_reporting.py \ + docutils/utils/math/math2html.py \ + docutils/utils/math/tex2unichar.py \ + docutils/utils/smartquotes.py \ + docutils/writers/_html_base.py \ + docutils/writers/odf_odt/prepstyles.py \ + docutils/writers/xetex/__init__.py %build %pyproject_wheel @@ -85,17 +94,7 @@ sed -i -e '/python_requires/s/7/6/' setup.py for binary in docutils rst2html rst2latex rst2man rst2odt rst2odt_prepstyles rst2pseudoxml rst2s5 rst2xetex rst2xml rstpep2html rst2html4 rst2html5 ; do %python_clone -a %{buildroot}%{_bindir}/$binary done -%{python_expand %fdupes %{buildroot}%{$python_sitelib} - -# Remove shebang from non-executable files -for i in code_analyzer error_reporting punctuation_chars smartquotes math/latex2mathml math/math2html math/tex2mathml_extern ; do - sed -i -e '1{\@^#! *%{_bindir}.*python@d}' %{buildroot}%{$python_sitelib}/docutils/utils/$i.py -done -for i in writers/xetex/__init__ writers/_html_base __main__ parsers/commonmark_wrapper parsers/recommonmark_wrapper ; do - sed -i -e '1{\@^#! *%{_bindir}.*python@d}' %{buildroot}%{$python_sitelib}/docutils/$i.py -done -} - +%python_expand %fdupes %{buildroot}%{$python_sitelib} %endif %check @@ -104,14 +103,16 @@ done %endif %if !%{with test} +# sometime ago rst2html was the master which would let fail the upgrade with master docutils in post below +%pre +update-alternatives --query rst2html >/dev/null 2>&1 && update-alternatives --quiet --remove-all rst2html ||: + %post -%{python_install_alternative docutils rst2html rst2latex rst2man rst2odt rst2odt_prepstyles rst2pseudoxml rst2s5 rst2xetex rst2xml rstpep2html rst2html4 rst2html5} +%python_install_alternative docutils rst2html rst2latex rst2man rst2odt rst2odt_prepstyles rst2pseudoxml rst2s5 rst2xetex rst2xml rstpep2html rst2html4 rst2html5 %postun -%{python_uninstall_alternative docutils rst2html rst2latex rst2man rst2odt rst2odt_prepstyles rst2pseudoxml rst2s5 rst2xetex rst2xml rstpep2html rst2html4 rst2html5} -%endif +%python_uninstall_alternative docutils -%if !%{with test} %files %{python_files} %license COPYING.txt licenses/*.txt %doc FAQ.txt HISTORY.txt README.txt THANKS.txt BUGS.txt docs/* @@ -129,7 +130,7 @@ done %python_alternative %{_bindir}/rst2html4 %python_alternative %{_bindir}/rst2html5 %{python_sitelib}/docutils/ -%{python_sitelib}/docutils-%{version}*-info +%{python_sitelib}/docutils-%{version}.dist-info %endif %changelog