diff --git a/.cvsignore b/.cvsignore deleted file mode 100644 index 11c96c5..0000000 --- a/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -Sphinx-0.6.5.tar.gz diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bf51472 --- /dev/null +++ b/.gitignore @@ -0,0 +1,51 @@ +/Sphinx-1.2.3.tar.gz +/Sphinx-1.3.1.tar.gz +/Sphinx-1.4.4.tar.gz +/Sphinx-1.4.5.tar.gz +/Sphinx-1.4.6.tar.gz +/Sphinx-1.4.8.tar.gz +/Sphinx-1.4.9.tar.gz +/Sphinx-1.5.1.tar.gz +/Sphinx-1.5.2.tar.gz +/Sphinx-1.6.3.tar.gz +/Sphinx-1.6.4.tar.gz +/Sphinx-1.6.5.tar.gz +/Sphinx-1.6.6.tar.gz +/Sphinx-1.7.1.tar.gz +/Sphinx-1.7.2.tar.gz +/Sphinx-1.7.5.tar.gz +/Sphinx-1.7.6.tar.gz +/Sphinx-1.8.4.tar.gz +/Sphinx-2.0.0b1.tar.gz +/Sphinx-2.0.0b2.tar.gz +/Sphinx-2.0.1.tar.gz +/Sphinx-2.1.2.tar.gz +/Sphinx-2.2.0.tar.gz +/Sphinx-2.2.2.tar.gz +/Sphinx-3.1.1.tar.gz +/Sphinx-3.1.2.tar.gz +/Sphinx-3.2.1.tar.gz +/Sphinx-3.3.1.tar.gz +/Sphinx-3.4.3.tar.gz +/Sphinx-3.5.2.tar.gz +/Sphinx-3.5.3.tar.gz +/Sphinx-3.5.4.tar.gz +/Sphinx-4.0.2.tar.gz +/Sphinx-4.1.2.tar.gz +/Sphinx-4.2.0.tar.gz +/Sphinx-4.3.0.tar.gz +/Sphinx-4.3.1.tar.gz +/Sphinx-4.4.0.tar.gz +/Sphinx-4.5.0.tar.gz +/Sphinx-5.0.2.tar.gz +/Sphinx-5.1.1.tar.gz +/Sphinx-5.2.3.tar.gz +/Sphinx-5.3.0.tar.gz +/Sphinx-6.1.3.tar.gz +/Sphinx-6.2.1.tar.gz +/Sphinx-7.0.1.tar.gz +/sphinx-7.1.2.tar.gz +/sphinx-7.2.6.tar.gz +/sphinx-7.3.7.tar.gz +/sphinx-8.1.3.tar.gz +/sphinx-8.2.3.tar.gz diff --git a/13527.patch b/13527.patch new file mode 100644 index 0000000..f253845 --- /dev/null +++ b/13527.patch @@ -0,0 +1,314 @@ +From 93312460e37be0ba1acbbefa553bfc25f4fc5ea9 Mon Sep 17 00:00:00 2001 +From: Adam Turner <9087854+aa-turner@users.noreply.github.com> +Date: Sun, 27 Apr 2025 21:00:40 +0100 +Subject: [PATCH 1/9] Fix tests for Python 3.14a7+ + +--- + tests/test_extensions/test_ext_autodoc.py | 2 +- + tests/test_extensions/test_ext_autodoc_configs.py | 1 - + 2 files changed, 1 insertion(+), 2 deletions(-) + +diff --git a/tests/test_extensions/test_ext_autodoc.py b/tests/test_extensions/test_ext_autodoc.py +index a06c1bbe30d..bdcd6ef2b95 100644 +--- a/tests/test_extensions/test_ext_autodoc.py ++++ b/tests/test_extensions/test_ext_autodoc.py +@@ -941,7 +941,7 @@ def test_autodoc_special_members(app): + actual = do_autodoc(app, 'class', 'target.Class', options) + assert list(filter(lambda l: '::' in l, actual)) == [ + '.. py:class:: Class(arg)', +- ' .. py:attribute:: Class.__annotations__', ++ ' .. py:attribute:: Class.__annotations_cache__', + ' .. py:attribute:: Class.__dict__', + ' .. py:method:: Class.__init__(arg)', + ' .. py:attribute:: Class.__module__', +diff --git a/tests/test_extensions/test_ext_autodoc_configs.py b/tests/test_extensions/test_ext_autodoc_configs.py +index ab7539190e0..d520e7f9cfe 100644 +--- a/tests/test_extensions/test_ext_autodoc_configs.py ++++ b/tests/test_extensions/test_ext_autodoc_configs.py +@@ -1368,7 +1368,6 @@ def test_autodoc_type_aliases(app: SphinxTestApp) -> None: + '', + ' .. py:attribute:: Foo.attr2', + ' :module: target.autodoc_type_aliases', +- ' :type: int', + '', + ' docstring', + '', + +From 523f290134f644b115e18e347dce093fa0fbd662 Mon Sep 17 00:00:00 2001 +From: Adam Turner <9087854+aa-turner@users.noreply.github.com> +Date: Sun, 27 Apr 2025 21:03:35 +0100 +Subject: [PATCH 2/9] Fix tests for Python 3.14a7+ + +--- + tests/test_extensions/test_ext_autodoc_configs.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/test_extensions/test_ext_autodoc_configs.py b/tests/test_extensions/test_ext_autodoc_configs.py +index d520e7f9cfe..2f8dc75d082 100644 +--- a/tests/test_extensions/test_ext_autodoc_configs.py ++++ b/tests/test_extensions/test_ext_autodoc_configs.py +@@ -1368,6 +1368,7 @@ def test_autodoc_type_aliases(app: SphinxTestApp) -> None: + '', + ' .. py:attribute:: Foo.attr2', + ' :module: target.autodoc_type_aliases', ++ ' :type: int', + '', + ' docstring', + '', +@@ -1440,7 +1441,6 @@ def test_autodoc_type_aliases(app: SphinxTestApp) -> None: + '', + ' .. py:attribute:: Foo.attr2', + ' :module: target.autodoc_type_aliases', +- ' :type: myint', + '', + ' docstring', + '', + +From a81bcf834822fac1cf96a2ab43c5b0d260ec532b Mon Sep 17 00:00:00 2001 +From: James Addison +Date: Tue, 6 May 2025 22:06:24 +0100 +Subject: [PATCH 3/9] Tests: make test expectations pyversion-conditional + +Relates-to commits 93312460e37be0ba1acbbefa553bfc25f4fc5ea9, 523f290134f644b115e18e347dce093fa0fbd662. +--- + tests/test_extensions/test_ext_autodoc.py | 6 +++++- + tests/test_extensions/test_ext_autodoc_configs.py | 10 +++++++++- + 2 files changed, 14 insertions(+), 2 deletions(-) + +diff --git a/tests/test_extensions/test_ext_autodoc.py b/tests/test_extensions/test_ext_autodoc.py +index bdcd6ef2b95..d7cef59056e 100644 +--- a/tests/test_extensions/test_ext_autodoc.py ++++ b/tests/test_extensions/test_ext_autodoc.py +@@ -938,10 +938,14 @@ def test_autodoc_special_members(app): + } + if sys.version_info >= (3, 13, 0, 'alpha', 5): + options['exclude-members'] = '__static_attributes__,__firstlineno__' ++ if sys.version_info >= (3, 14, 0, 'alpha', 7): ++ annotations_attributes = [' .. py:attribute:: Class.__annotations_cache__'] ++ else: ++ annotations_attributes = [' .. py:attribute:: Class.__annotations__'] + actual = do_autodoc(app, 'class', 'target.Class', options) + assert list(filter(lambda l: '::' in l, actual)) == [ + '.. py:class:: Class(arg)', +- ' .. py:attribute:: Class.__annotations_cache__', ++ ] + annotations_attributes + [ + ' .. py:attribute:: Class.__dict__', + ' .. py:method:: Class.__init__(arg)', + ' .. py:attribute:: Class.__module__', +diff --git a/tests/test_extensions/test_ext_autodoc_configs.py b/tests/test_extensions/test_ext_autodoc_configs.py +index 2f8dc75d082..f449bb57809 100644 +--- a/tests/test_extensions/test_ext_autodoc_configs.py ++++ b/tests/test_extensions/test_ext_autodoc_configs.py +@@ -1348,6 +1348,10 @@ def test_autodoc_type_aliases(app: SphinxTestApp) -> None: + # default + options = {'members': None} + actual = do_autodoc(app, 'module', 'target.autodoc_type_aliases', options) ++ if sys.version_info >= (3, 14, 0, 'alpha', 7): ++ attr2_typeinfo = [] ++ else: ++ attr2_typeinfo = [' :type: int'] + assert list(actual) == [ + '', + '.. py:module:: target.autodoc_type_aliases', +@@ -1368,7 +1372,6 @@ def test_autodoc_type_aliases(app: SphinxTestApp) -> None: + '', + ' .. py:attribute:: Foo.attr2', + ' :module: target.autodoc_type_aliases', +- ' :type: int', + '', + ' docstring', + '', +@@ -1421,6 +1424,10 @@ def test_autodoc_type_aliases(app: SphinxTestApp) -> None: + 'io.StringIO': 'my.module.StringIO', + } + actual = do_autodoc(app, 'module', 'target.autodoc_type_aliases', options) ++ if sys.version_info >= (3, 14, 0, 'alpha', 7): ++ attr2_typeinfo = [] ++ else: ++ attr2_typeinfo = [' :type: myint'] + assert list(actual) == [ + '', + '.. py:module:: target.autodoc_type_aliases', +@@ -1441,6 +1448,7 @@ def test_autodoc_type_aliases(app: SphinxTestApp) -> None: + '', + ' .. py:attribute:: Foo.attr2', + ' :module: target.autodoc_type_aliases', ++ ] + attr2_typeinfo + [ + '', + ' docstring', + '', + +From 26e7a6435ad9840345455f35f62c063cb588bba7 Mon Sep 17 00:00:00 2001 +From: James Addison +Date: Tue, 6 May 2025 22:16:42 +0100 +Subject: [PATCH 4/9] Tests: fixup: actually insert updated expectation + +Relates-to commit a81bcf834822fac1cf96a2ab43c5b0d260ec532b. +--- + tests/test_extensions/test_ext_autodoc_configs.py | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tests/test_extensions/test_ext_autodoc_configs.py b/tests/test_extensions/test_ext_autodoc_configs.py +index f449bb57809..fe2561aea00 100644 +--- a/tests/test_extensions/test_ext_autodoc_configs.py ++++ b/tests/test_extensions/test_ext_autodoc_configs.py +@@ -1372,6 +1372,7 @@ def test_autodoc_type_aliases(app: SphinxTestApp) -> None: + '', + ' .. py:attribute:: Foo.attr2', + ' :module: target.autodoc_type_aliases', ++ ] + attr2_typeinfo + [ + '', + ' docstring', + '', + +From 52c7010c4b673898af115d3a86728274a8dd620d Mon Sep 17 00:00:00 2001 +From: James Addison +Date: Tue, 6 May 2025 22:19:30 +0100 +Subject: [PATCH 5/9] Tests: linting: use iterable unpacking as suggested by + `ruff` + +--- + tests/test_extensions/test_ext_autodoc_configs.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/tests/test_extensions/test_ext_autodoc_configs.py b/tests/test_extensions/test_ext_autodoc_configs.py +index fe2561aea00..39fdc454e31 100644 +--- a/tests/test_extensions/test_ext_autodoc_configs.py ++++ b/tests/test_extensions/test_ext_autodoc_configs.py +@@ -1372,7 +1372,7 @@ def test_autodoc_type_aliases(app: SphinxTestApp) -> None: + '', + ' .. py:attribute:: Foo.attr2', + ' :module: target.autodoc_type_aliases', +- ] + attr2_typeinfo + [ ++ *attr2_typeinfo, + '', + ' docstring', + '', +@@ -1449,7 +1449,7 @@ def test_autodoc_type_aliases(app: SphinxTestApp) -> None: + '', + ' .. py:attribute:: Foo.attr2', + ' :module: target.autodoc_type_aliases', +- ] + attr2_typeinfo + [ ++ *attr2_typeinfo, + '', + ' docstring', + '', + +From 7b3ce9b642e636fe2ec58f1e090dc79d51b1f2f0 Mon Sep 17 00:00:00 2001 +From: James Addison +Date: Tue, 6 May 2025 22:21:24 +0100 +Subject: [PATCH 6/9] Tests: linting: use iterable unpacking as suggested by + `ruff` (uno mas) + +--- + tests/test_extensions/test_ext_autodoc.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/test_extensions/test_ext_autodoc.py b/tests/test_extensions/test_ext_autodoc.py +index d7cef59056e..4f38634cf51 100644 +--- a/tests/test_extensions/test_ext_autodoc.py ++++ b/tests/test_extensions/test_ext_autodoc.py +@@ -945,7 +945,7 @@ def test_autodoc_special_members(app): + actual = do_autodoc(app, 'class', 'target.Class', options) + assert list(filter(lambda l: '::' in l, actual)) == [ + '.. py:class:: Class(arg)', +- ] + annotations_attributes + [ ++ *annotations_attributes, + ' .. py:attribute:: Class.__dict__', + ' .. py:method:: Class.__init__(arg)', + ' .. py:attribute:: Class.__module__', + +From 386ba32af878b23c5857be588f932fe2af4a2d88 Mon Sep 17 00:00:00 2001 +From: Adam Turner <9087854+AA-Turner@users.noreply.github.com> +Date: Mon, 12 May 2025 17:36:04 +0100 +Subject: [PATCH 7/9] Style + +--- + tests/test_extensions/test_ext_autodoc.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/tests/test_extensions/test_ext_autodoc.py b/tests/test_extensions/test_ext_autodoc.py +index 4f38634cf51..012e708a2f3 100644 +--- a/tests/test_extensions/test_ext_autodoc.py ++++ b/tests/test_extensions/test_ext_autodoc.py +@@ -939,9 +939,9 @@ def test_autodoc_special_members(app): + if sys.version_info >= (3, 13, 0, 'alpha', 5): + options['exclude-members'] = '__static_attributes__,__firstlineno__' + if sys.version_info >= (3, 14, 0, 'alpha', 7): +- annotations_attributes = [' .. py:attribute:: Class.__annotations_cache__'] ++ annotations_attributes = (' .. py:attribute:: Class.__annotations_cache__',) + else: +- annotations_attributes = [' .. py:attribute:: Class.__annotations__'] ++ annotations_attributes = (' .. py:attribute:: Class.__annotations__',) + actual = do_autodoc(app, 'class', 'target.Class', options) + assert list(filter(lambda l: '::' in l, actual)) == [ + '.. py:class:: Class(arg)', + +From 1f381ec05015fcbc695d1f0991e77241daef49c7 Mon Sep 17 00:00:00 2001 +From: Adam Turner <9087854+aa-turner@users.noreply.github.com> +Date: Mon, 12 May 2025 17:38:28 +0100 +Subject: [PATCH 8/9] fstr + +--- + tests/test_extensions/test_ext_autodoc.py | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/tests/test_extensions/test_ext_autodoc.py b/tests/test_extensions/test_ext_autodoc.py +index 012e708a2f3..7aa12db3c32 100644 +--- a/tests/test_extensions/test_ext_autodoc.py ++++ b/tests/test_extensions/test_ext_autodoc.py +@@ -939,13 +939,13 @@ def test_autodoc_special_members(app): + if sys.version_info >= (3, 13, 0, 'alpha', 5): + options['exclude-members'] = '__static_attributes__,__firstlineno__' + if sys.version_info >= (3, 14, 0, 'alpha', 7): +- annotations_attributes = (' .. py:attribute:: Class.__annotations_cache__',) ++ ann_attr_name = '__annotations_cache__' + else: +- annotations_attributes = (' .. py:attribute:: Class.__annotations__',) ++ ann_attr_name = '__annotations__' + actual = do_autodoc(app, 'class', 'target.Class', options) + assert list(filter(lambda l: '::' in l, actual)) == [ + '.. py:class:: Class(arg)', +- *annotations_attributes, ++ f' .. py:attribute:: Class.{ann_attr_name}', + ' .. py:attribute:: Class.__dict__', + ' .. py:method:: Class.__init__(arg)', + ' .. py:attribute:: Class.__module__', + +From 0bd1f9d1615c20078677b48a09180c4b68e27796 Mon Sep 17 00:00:00 2001 +From: Adam Turner <9087854+aa-turner@users.noreply.github.com> +Date: Mon, 12 May 2025 17:40:13 +0100 +Subject: [PATCH 9/9] tuple + +--- + tests/test_extensions/test_ext_autodoc_configs.py | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/tests/test_extensions/test_ext_autodoc_configs.py b/tests/test_extensions/test_ext_autodoc_configs.py +index 39fdc454e31..c88496ee506 100644 +--- a/tests/test_extensions/test_ext_autodoc_configs.py ++++ b/tests/test_extensions/test_ext_autodoc_configs.py +@@ -1349,9 +1349,9 @@ def test_autodoc_type_aliases(app: SphinxTestApp) -> None: + options = {'members': None} + actual = do_autodoc(app, 'module', 'target.autodoc_type_aliases', options) + if sys.version_info >= (3, 14, 0, 'alpha', 7): +- attr2_typeinfo = [] ++ attr2_typeinfo = () + else: +- attr2_typeinfo = [' :type: int'] ++ attr2_typeinfo = (' :type: int',) + assert list(actual) == [ + '', + '.. py:module:: target.autodoc_type_aliases', +@@ -1426,9 +1426,9 @@ def test_autodoc_type_aliases(app: SphinxTestApp) -> None: + } + actual = do_autodoc(app, 'module', 'target.autodoc_type_aliases', options) + if sys.version_info >= (3, 14, 0, 'alpha', 7): +- attr2_typeinfo = [] ++ attr2_typeinfo = () + else: +- attr2_typeinfo = [' :type: myint'] ++ attr2_typeinfo = (' :type: myint',) + assert list(actual) == [ + '', + '.. py:module:: target.autodoc_type_aliases', diff --git a/13610.patch b/13610.patch new file mode 100644 index 0000000..7cebb25 --- /dev/null +++ b/13610.patch @@ -0,0 +1,49 @@ +From 69998bdf8848614eb52ddd80923ffde7af64c0a8 Mon Sep 17 00:00:00 2001 +From: James Addison +Date: Mon, 2 Jun 2025 21:55:15 +0100 +Subject: [PATCH] tests: update LaTeX label test expectations from docutils + r10151 + +--- + tests/test_builders/test_build_latex.py | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +diff --git a/tests/test_builders/test_build_latex.py b/tests/test_builders/test_build_latex.py +index 0d1c607462d..37e708a021e 100644 +--- a/tests/test_builders/test_build_latex.py ++++ b/tests/test_builders/test_build_latex.py +@@ -12,6 +12,7 @@ + from subprocess import CalledProcessError + from typing import TYPE_CHECKING + ++import docutils + import pygments + import pytest + +@@ -1959,10 +1960,16 @@ def test_latex_labels(app: SphinxTestApp) -> None: + + result = (app.outdir / 'projectnamenotset.tex').read_text(encoding='utf8') + ++ # ref: docutils r10151 ++ if docutils.__version_info__[:2] < (0, 22): ++ figure_id, table_id = 'id1', 'id2' ++ else: ++ figure_id, table_id = 'id2', 'id3' ++ + # figures + assert ( + r'\caption{labeled figure}' +- r'\label{\detokenize{index:id1}}' ++ r'\label{\detokenize{index:' + figure_id + '}}' + r'\label{\detokenize{index:figure2}}' + r'\label{\detokenize{index:figure1}}' + r'\end{figure}' +@@ -1988,7 +1995,7 @@ def test_latex_labels(app: SphinxTestApp) -> None: + # tables + assert ( + r'\sphinxcaption{table caption}' +- r'\label{\detokenize{index:id2}}' ++ r'\label{\detokenize{index:' + table_id + '}}' + r'\label{\detokenize{index:table2}}' + r'\label{\detokenize{index:table1}}' + ) in result diff --git a/13883.patch b/13883.patch new file mode 100644 index 0000000..480de01 --- /dev/null +++ b/13883.patch @@ -0,0 +1,30 @@ +From 4d842a2c4909fe360172826a46eb88b442f44858 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?G=C3=BCnter=20Milde?= +Date: Tue, 9 Sep 2025 16:17:15 +0200 +Subject: [PATCH] Fix test setup for directive tests. + +Set the "parent" attribute of RSTState instances to the `document` +instead of None. The attribute holds the state machines "current node" +which is initialized to the `document` in `RSTStateMachine.run()` and +required since Docutils 0.22.1 in `RSTState.nested_parse()` to correctly +support sections in nested parsing. +--- + tests/test_util/test_util_docutils_sphinx_directive.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/test_util/test_util_docutils_sphinx_directive.py b/tests/test_util/test_util_docutils_sphinx_directive.py +index ecfcab0..7a26e96 100644 +--- a/tests/test_util/test_util_docutils_sphinx_directive.py ++++ b/tests/test_util/test_util_docutils_sphinx_directive.py +@@ -38,7 +38,7 @@ def make_directive_and_state( + inliner = Inliner() + inliner.init_customizations(state.document.settings) + state.inliner = inliner +- state.parent = None ++ state.parent = state.document + state.memo = SimpleNamespace( + document=state.document, + language=english, +-- +2.51.1 + diff --git a/8962398b761c3d85a.patch b/8962398b761c3d85a.patch new file mode 100644 index 0000000..3b49f67 --- /dev/null +++ b/8962398b761c3d85a.patch @@ -0,0 +1,29 @@ +From 8962398b761c3d85a7c74b6f789b3ffb127bde0c Mon Sep 17 00:00:00 2001 +From: Adam Turner <9087854+AA-Turner@users.noreply.github.com> +Date: Thu, 6 Mar 2025 16:03:44 +0000 +Subject: [PATCH] autosummary: Update test for Python 3.14.0a5+ (#13418) + +`types.UnionType` and `typing.Union` have been merged. +--- + tests/test_extensions/test_ext_autosummary.py | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/tests/test_extensions/test_ext_autosummary.py b/tests/test_extensions/test_ext_autosummary.py +index 35dc7d180ef..c807ddba3d1 100644 +--- a/tests/test_extensions/test_ext_autosummary.py ++++ b/tests/test_extensions/test_ext_autosummary.py +@@ -447,8 +447,12 @@ def test_autosummary_generate_content_for_module_imported_members(app): + ] + assert context['functions'] == ['bar'] + assert context['all_functions'] == ['_quux', 'bar'] +- assert context['classes'] == ['Class', 'Foo'] +- assert context['all_classes'] == ['Class', 'Foo', '_Baz'] ++ if sys.version_info >= (3, 14, 0, 'alpha', 5): ++ assert context['classes'] == ['Class', 'Foo', 'Union'] ++ assert context['all_classes'] == ['Class', 'Foo', 'Union', '_Baz'] ++ else: ++ assert context['classes'] == ['Class', 'Foo'] ++ assert context['all_classes'] == ['Class', 'Foo', '_Baz'] + assert context['exceptions'] == ['Exc'] + assert context['all_exceptions'] == ['Exc', '_Exc'] + assert context['attributes'] == ['CONSTANT1', 'qux', 'quuz', 'non_imported_member'] diff --git a/Make-the-first-party-extensions-optional.patch b/Make-the-first-party-extensions-optional.patch new file mode 100644 index 0000000..d7b039e --- /dev/null +++ b/Make-the-first-party-extensions-optional.patch @@ -0,0 +1,205 @@ +From f3fba803e1c39232f86acc9a21657cad171ce71b Mon Sep 17 00:00:00 2001 +From: Karolina Surma +Date: Wed, 5 Mar 2025 12:14:49 +0100 +Subject: [PATCH] Make the first party extensions optional, add [extensions] + extra + +Co-authored-by: Miro Hrončok +--- + pyproject.toml | 33 ++++++++++++++++---- + sphinx/application.py | 6 ++-- + sphinx/registry.py | 10 +++--- + sphinx/testing/fixtures.py | 7 +++++ + tests/test_builders/test_build_html_maths.py | 3 ++ + tests/test_writers/test_api_translator.py | 2 ++ + 6 files changed, 48 insertions(+), 13 deletions(-) + +diff --git a/pyproject.toml b/pyproject.toml +index c4b1b6d..4e59e90 100644 +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -67,12 +67,6 @@ classifiers = [ + "Typing :: Typed", + ] + dependencies = [ +- "sphinxcontrib-applehelp>=1.0.7", +- "sphinxcontrib-devhelp>=1.0.6", +- "sphinxcontrib-htmlhelp>=2.0.6", +- "sphinxcontrib-jsmath>=1.0.1", +- "sphinxcontrib-qthelp>=1.0.6", +- "sphinxcontrib-serializinghtml>=1.1.9", + "Jinja2>=3.1", + "Pygments>=2.17", + "docutils>=0.20,<0.22", +@@ -88,8 +82,35 @@ dependencies = [ + dynamic = ["version"] + + [project.optional-dependencies] ++applehelp = [ ++ "sphinxcontrib-applehelp>=1.0.7", ++] ++devhelp = [ ++ "sphinxcontrib-devhelp>=1.0.6", ++] ++jsmath = [ ++ "sphinxcontrib-jsmath>=1.0.1", ++] ++htmlhelp = [ ++ "sphinxcontrib-htmlhelp>=2.0.6", ++] ++serializinghtml = [ ++ "sphinxcontrib-serializinghtml>=1.1.9", ++] ++qthelp = [ ++ "sphinxcontrib-qthelp>=1.0.6", ++] ++extensions = [ ++ "sphinx[applehelp]", ++ "sphinx[devhelp]", ++ "sphinx[jsmath]", ++ "sphinx[htmlhelp]", ++ "sphinx[serializinghtml]", ++ "sphinx[qthelp]", ++] + docs = [ + "sphinxcontrib-websupport", ++ "sphinx[extensions]", + ] + lint = [ + "ruff==0.9.9", +diff --git a/sphinx/application.py b/sphinx/application.py +index fe0e8bd..dcb3d75 100644 +--- a/sphinx/application.py ++++ b/sphinx/application.py +@@ -284,7 +284,7 @@ class Sphinx: + # load all built-in extension modules, first-party extension modules, + # and first-party themes + for extension in builtin_extensions: +- self.setup_extension(extension) ++ self.setup_extension(extension, skip_nonimportable=extension in _first_party_extensions) + + # load all user-given extension modules + for extension in self.config.extensions: +@@ -478,7 +478,7 @@ class Sphinx: + + # ---- general extensibility interface ------------------------------------- + +- def setup_extension(self, extname: str) -> None: ++ def setup_extension(self, extname: str, skip_nonimportable: bool = False) -> None: + """Import and setup a Sphinx extension module. + + Load the extension given by the module *name*. Use this if your +@@ -486,7 +486,7 @@ class Sphinx: + called twice. + """ + logger.debug('[app] setting up extension: %r', extname) +- self.registry.load_extension(self, extname) ++ self.registry.load_extension(self, extname, skip_nonimportable=skip_nonimportable) + + @staticmethod + def require_sphinx(version: tuple[int, int] | str) -> None: +diff --git a/sphinx/registry.py b/sphinx/registry.py +index ce52a03..3bc90d5 100644 +--- a/sphinx/registry.py ++++ b/sphinx/registry.py +@@ -519,7 +519,7 @@ class SphinxComponentRegistry: + def add_html_theme(self, name: str, theme_path: str | os.PathLike[str]) -> None: + self.html_themes[name] = _StrPath(theme_path) + +- def load_extension(self, app: Sphinx, extname: str) -> None: ++ def load_extension(self, app: Sphinx, extname: str, skip_nonimportable: bool = False) -> None: + """Load a Sphinx extension.""" + if extname in app.extensions: # already loaded + return +@@ -540,10 +540,12 @@ class SphinxComponentRegistry: + try: + mod = import_module(extname) + except ImportError as err: ++ msg = __('Could not import extension %s') ++ if skip_nonimportable: ++ logger.debug(msg % extname) ++ return + logger.verbose(__('Original exception:\n') + traceback.format_exc()) +- raise ExtensionError( +- __('Could not import extension %s') % extname, err +- ) from err ++ raise ExtensionError(msg % extname, err) from err + + setup: _ExtensionSetupFunc | None = getattr(mod, 'setup', None) + if setup is None: +diff --git a/sphinx/testing/fixtures.py b/sphinx/testing/fixtures.py +index ec143fa..e6d9da1 100644 +--- a/sphinx/testing/fixtures.py ++++ b/sphinx/testing/fixtures.py +@@ -31,6 +31,7 @@ DEFAULT_ENABLED_MARKERS = [ + 'builddir=None, docutils_conf=None' + '): arguments to initialize the sphinx test application.' + ), ++ 'sphinxcontrib(...): required sphinxcontrib.* extensions', + 'test_params(shared_result=...): test parameters.', + ] + +@@ -79,6 +80,12 @@ def app_params( + """Parameters that are specified by 'pytest.mark.sphinx' for + sphinx.application.Sphinx initialization + """ ++ ++ # ##### process pytest.mark.sphinxcontrib ++ for info in reversed(list(request.node.iter_markers("sphinxcontrib"))): ++ for arg in info.args: ++ pytest.importorskip("sphinxcontrib." + arg) ++ + # ##### process pytest.mark.sphinx + + pargs: dict[int, Any] = {} +diff --git a/tests/test_builders/test_build_html_maths.py b/tests/test_builders/test_build_html_maths.py +index cc21142..16382e3 100644 +--- a/tests/test_builders/test_build_html_maths.py ++++ b/tests/test_builders/test_build_html_maths.py +@@ -37,6 +37,7 @@ def test_html_math_renderer_is_imgmath(app: SphinxTestApp) -> None: + assert app.builder.math_renderer_name == 'imgmath' + + ++@pytest.mark.sphinxcontrib('serializinghtml', 'jsmath') + @pytest.mark.sphinx( + 'html', + testroot='basic', +@@ -62,6 +63,7 @@ def test_html_math_renderer_is_duplicated2(app: SphinxTestApp) -> None: + assert app.builder.math_renderer_name == 'imgmath' # The another one is chosen + + ++@pytest.mark.sphinxcontrib('jsmath') + @pytest.mark.sphinx( + 'html', + testroot='basic', +@@ -75,6 +77,7 @@ def test_html_math_renderer_is_chosen(app: SphinxTestApp) -> None: + assert app.builder.math_renderer_name == 'imgmath' + + ++@pytest.mark.sphinxcontrib('jsmath') + @pytest.mark.sphinx( + 'html', + testroot='basic', +diff --git a/tests/test_writers/test_api_translator.py b/tests/test_writers/test_api_translator.py +index 1220192..8e8bb33 100644 +--- a/tests/test_writers/test_api_translator.py ++++ b/tests/test_writers/test_api_translator.py +@@ -47,6 +47,7 @@ def test_singlehtml_set_translator_for_singlehtml(app: SphinxTestApp) -> None: + assert translator_class.__name__ == 'ConfSingleHTMLTranslator' + + ++@pytest.mark.sphinxcontrib('serializinghtml') + @pytest.mark.sphinx('pickle', testroot='api-set-translator') + def test_pickle_set_translator_for_pickle(app: SphinxTestApp) -> None: + translator_class = app.builder.get_translator_class() +@@ -54,6 +55,7 @@ def test_pickle_set_translator_for_pickle(app: SphinxTestApp) -> None: + assert translator_class.__name__ == 'ConfPickleTranslator' + + ++@pytest.mark.sphinxcontrib('serializinghtml') + @pytest.mark.sphinx('json', testroot='api-set-translator') + def test_json_set_translator_for_json(app: SphinxTestApp) -> None: + translator_class = app.builder.get_translator_class() +-- +2.48.1 + diff --git a/Makefile b/Makefile deleted file mode 100644 index be369c3..0000000 --- a/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# Makefile for source rpm: python-sphinx -# $Id$ -NAME := python-sphinx -SPECFILE = $(firstword $(wildcard *.spec)) - -define find-makefile-common -for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$d/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done -endef - -MAKEFILE_COMMON := $(shell $(find-makefile-common)) - -ifeq ($(MAKEFILE_COMMON),) -# attept a checkout -define checkout-makefile-common -test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2 -endef - -MAKEFILE_COMMON := $(shell $(checkout-makefile-common)) -endif - -include $(MAKEFILE_COMMON) diff --git a/changelog b/changelog new file mode 100644 index 0000000..bdb1639 --- /dev/null +++ b/changelog @@ -0,0 +1,608 @@ +* Wed Jan 24 2024 Karolina Surma - 1:7.2.6-6 +- Suppress traceback when importing the weakened sphinxcontrib* dependencies + +* Mon Jan 22 2024 Fedora Release Engineering - 1:7.2.6-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Tue Dec 12 2023 Karolina Surma - 1:7.2.6-4 +- Fix the tests run when building with Python 3.11.7, 3.12.1 and later + +* Thu Nov 16 2023 Miro Hrončok - 1:7.2.6-3 +- On Fedora, BuildRequire the sphinxcontrib packages to build the documentation + +* Wed Nov 08 2023 Miro Hrončok - 1:7.2.6-2 +- Weaken the runtime dependency on: + - python3-sphinxcontrib-applehelp + - python3-sphinxcontrib-devhelp + - python3-sphinxcontrib-jsmath + - python3-sphinxcontrib-htmlhelp + - python3-sphinxcontrib-serializinghtml + - python3-sphinxcontrib-qthelp +- Packages that want to use them during build need to BuildRequire them explicitly + +* Thu Oct 26 2023 Karolina Surma - 1:7.2.6-1 +- Update to 7.2.6 +- Fixes rhbz#2232469 + +* Thu Sep 21 2023 Karolina Surma - 1:7.1.2-2 +- Fix FTBFS with Pygments 2.16+ + +* Mon Aug 14 2023 Karolina Surma - 1:7.1.2-1 +- Update to 7.1.2 +- Fixes rhbz#2225274 + +* Mon Aug 07 2023 Karolina Surma - 1:7.0.1-1 +- Update to 7.0.1 + +* Thu Jul 27 2023 Miro Hrončok - 1:6.2.1-4 +- Don't use filelock to test this package on RHEL + +* Fri Jul 21 2023 Fedora Release Engineering - 1:6.2.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Thu Jul 13 2023 Karolina Surma - 1:6.2.1-2 +- Don't use websupport to build documentation on RHEL + +* Mon Jun 26 2023 Karolina Surma - 1:6.2.1-1 +- Update to 6.2.1 +- Fixes rhbz#2188968 + +* Fri Jun 16 2023 Python Maint - 1:6.1.3-4 +- Rebuilt for Python 3.12 + +* Tue Jun 13 2023 Python Maint - 1:6.1.3-3 +- Bootstrap for Python 3.12 + +* Wed May 31 2023 Yaakov Selkowitz - 1:6.1.3-2 +- Avoid html5lib test dependency in RHEL builds + +* Fri Mar 10 2023 Karolina Surma - 1:6.1.3-1 +- Update to 6.1.3 +- Fixes rhbz#2135122 + +* Thu Mar 09 2023 Karolina Surma - 1:5.3.0-4 +- Fix tests related to missing setuptools and Babel 2.12 +- Fixes rhbz#2176685 + +* Tue Jan 31 2023 Karolina Surma - 1:5.3.0-3 +- Fix tests with python-pygments 2.14+ + +* Fri Jan 20 2023 Fedora Release Engineering - 1:5.3.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Tue Nov 08 2022 Karolina Surma - 1:5.3.0-1 +- Update to 5.3.0 +- Fixes rhbz#2129546 + +* Mon Aug 15 2022 Karolina Surma - 1:5.1.1-1 +- Update to 5.1.1 +- Fixes rhbz#2110473 +- Remove reST documentation from the -doc package, ship only HTML + +* Fri Jul 22 2022 Fedora Release Engineering - 1:5.0.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Tue Jun 21 2022 Karolina Surma - 1:5.0.2-1 +- Update to 5.0.2 + +* Mon Jun 13 2022 Python Maint - 1:4.5.0-3 +- Rebuilt for Python 3.11 + +* Mon Jun 13 2022 Python Maint - 1:4.5.0-2 +- Bootstrap for Python 3.11 + +* Fri Apr 01 2022 Karolina Surma - 1:4.5.0-1 +- Update to 4.5.0 +- Fixes rhbz#2068924 + +* Tue Feb 01 2022 Karolina Surma - 1:4.4.0-1 +- Update to 4.4.0 +- Fixes rhbz#2033955 + +* Fri Jan 21 2022 Fedora Release Engineering - 1:4.3.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Mon Nov 29 2021 Karolina Surma - 1:4.3.1-1 +- Update to 4.3.1 +- Fixes rhbz#2027059 + +* Fri Nov 19 2021 Karolina Surma - 1:4.3.0-1 +- Update to 4.3.0 +- Fixes rhbz#2022111 + +* Fri Sep 17 2021 Karolina Surma - 1:4.2.0-1 +- Update to 4.2.0 +- Fixes rhbz#2003427 + +* Thu Sep 16 2021 Karolina Surma - 1:4.1.2-3 +- Display typing objects correctly with Python 3.10 (fix FTBFS) +- Generate correct reference to parent class if class has `_name` attribute +- Enable previously deselected test + +* Wed Aug 18 2021 Karolina Surma - 1:4.1.2-2 +- Patch python-sphinx to work with python-pygments >=2.10 + +* Mon Aug 02 2021 Karolina Surma - 1:4.1.2-1 +- Update to 4.1.2 +- Fixes rhbz#1979326 +- Backport commit to fix python-sphinx with Python 3.10-rc1 + +* Fri Jul 23 2021 Fedora Release Engineering - 1:4.0.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Fri Jun 11 2021 Karolina Surma - 1:4.0.2-1 +- Update to 4.0.2 +- Fixes rhbz#1948279 + +* Thu Jun 03 2021 Python Maint - 1:3.5.4-3 +- Rebuilt for Python 3.10 + +* Wed Jun 02 2021 Python Maint - 1:3.5.4-2 +- Bootstrap for Python 3.10 + +* Mon May 10 2021 Karolina Surma - 1:3.5.4-1 +- Update to 3.5.4 +- Fixes rhbz#1949477 + +* Thu Apr 01 2021 Karolina Surma - 1:3.5.3-1 +- Update to 3.5.3 +- Fixes rhbz#1941161 + +* Wed Mar 10 2021 Charalampos Stratakis - 1:3.5.2-1 +- Update 3.5.2 +- Fixes rhbz#1928459 + +* Wed Jan 27 2021 Fedora Release Engineering - 1:3.4.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Tue Jan 19 2021 Charalampos Stratakis - 1:3.4.3-1 +- Update to 3.4.3 +- Fixes rhbz#1909494 + +* Sat Dec 05 2020 Mattia Verga - 1:3.3.1-2 +- Unset -s from python shebang +- Fixes: rhbz#1903763 + +* Mon Nov 23 2020 Miro Hrončok - 1:3.3.1-1 +- Update to 3.3.1 +- Fixes: rhbz#1893752 + +* Wed Oct 14 2020 Tomas Hrnciar - 1:3.2.1-2 +- Backport commit to fix python-sphinx with python-pygments v2.7.1 + +* Tue Aug 18 2020 Miro Hrončok - 1:3.2.1-1 +- Update to 3.2.1 +- Remove compatibility symbolic links from /usr/libexec/ +- Fixes rhbz#1867294 + +* Fri Aug 07 2020 Miro Hrončok - 1:3.1.2-1 +- Update to 3.1.2 +- Fixes rhbz#1853901 + +* Wed Jul 29 2020 Fedora Release Engineering - 1:3.1.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jun 30 2020 Charalampos Stratakis - 1:3.1.1-1 +- Update to 3.1.1 (#1783776) + +* Sat May 23 2020 Miro Hrončok - 1:2.2.2-4 +- Rebuilt for Python 3.9 + +* Fri May 22 2020 Miro Hrončok - 1:2.2.2-3 +- Bootstrap for Python 3.9 + +* Thu Jan 30 2020 Fedora Release Engineering - 1:2.2.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Tue Dec 10 2019 Miro Hrončok - 1:2.2.2-1 +- Update to 2.2.2 (rhbz#1743018) + +* Thu Oct 03 2019 Miro Hrončok - 1:2.1.2-6 +- Rebuilt for Python 3.8.0rc1 (#1748018) + +* Fri Aug 16 2019 Miro Hrončok - 1:2.1.2-5 +- Rebuilt for Python 3.8 + +* Thu Aug 15 2019 Miro Hrončok - 1:2.1.2-4 +- Bootstrap for Python 3.8 + +* Thu Aug 15 2019 Richard Shaw - 1:2.1.2-3 +- Rebuild for Python 3.8. + +* Fri Jul 26 2019 Fedora Release Engineering - 1:2.1.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Sun Jun 23 2019 Miro Hrončok - 1:2.1.2-1 +- Update to 2.1.2 (#1716158) + +* Wed Apr 10 2019 Miro Hrončok - 1:2.0.1-1 +- Update to 2.0.1 (#1697544) +- Own the sphinxcontrib directory (#1669790) + +* Wed Mar 27 2019 Charalampos Stratakis - 1:2.0.0~b2-1 +- Update to 2.0.0b2 + +* Wed Feb 27 2019 Miro Hrončok - 1:2.0.0~b1-1 +- Update to 2.0.0b1 +- Drop Python 2 package +- https://fedoraproject.org/wiki/Changes/Sphinx2 + +* Thu Feb 07 2019 Alfredo Moralejo - 1:1.8.4-1 +- Update to 1.8.4. + +* Sat Feb 02 2019 Fedora Release Engineering - 1:1.7.6-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Sun Nov 18 2018 Zbigniew Jędrzejewski-Szmek - 1:1.7.6-2 +- Drop explicit locale setting for python3, use C.UTF-8 for python2 + See https://fedoraproject.org/wiki/Changes/Remove_glibc-langpacks-all_from_buildroot + +* Mon Jul 23 2018 Marcel Plch - 1:1.7.6-1 +- Update to 1.7.6 + +* Fri Jul 13 2018 Miro Hrončok - 1:1.7.5-6 +- Remove unused dependencies on xapian and simplejson + +* Thu Jul 5 2018 Zbigniew Jędrzejewski-Szmek - 1:1.7.5-5 +- Add patch to fix build if alabaster theme is installed +- Add patch for #1589868 + +* Mon Jul 02 2018 Miro Hrončok - 1:1.7.5-4 +- Enable tests + +* Mon Jul 02 2018 Miro Hrončok - 1:1.7.5-3 +- Enable websupport + +* Mon Jul 02 2018 Miro Hrončok - 1:1.7.5-2 +- Rebuilt for Python 3.7 + +* Tue Jun 19 2018 Charalampos Stratakis - 1:1.7.5-1 +- Update to 1.7.5 (bz#1570451) + +* Mon Jun 18 2018 Miro Hrončok - 1:1.7.2-5 +- Rebuilt for Python 3.7 + +* Fri Jun 15 2018 Miro Hrončok - 1:1.7.2-4 +- Bootstrap for Python 3.7 + +* Thu Jun 14 2018 Miro Hrončok - 1:1.7.2-3 +- Bootstrap for Python 3.7 + +* Wed Apr 11 2018 Petr Viktorin - 1:1.7.2-2 +- Conditionalize the ImageMagick build dependency & tests + +* Wed Apr 11 2018 Petr Viktorin - 1:1.7.2-1 +- Update to 1.7.2 (bz#1558968) + +* Tue Mar 13 2018 Charalampos Stratakis - 1:1.7.1-1 +- Update to 1.7.1 (bz#1534802) + +* Fri Feb 09 2018 Fedora Release Engineering - 1:1.6.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Jan 09 2018 Charalampos Stratakis - 1:1.6.6-1 +- Update to 1.6.6 (bz#1532435) + +* Mon Dec 11 2017 Iryna Shcherbina - 1:1.6.5-2 +- Fix ambiguous Python 2 dependency declarations + (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) + +* Mon Nov 06 2017 Charalampos Stratakis - 1:1.6.5-1 +- Update to 1.6.5 (bz#1508237) + +* Mon Oct 09 2017 Troy Dawson - 1:1.6.4-2 +- Cleanup spec file conditionals + +* Tue Sep 26 2017 Charalampos Stratakis - 1:1.6.4-1 +- Update to 1.6.4 (bz#1426928) + +* Wed Sep 20 2017 Charalampos Stratakis - 1:1.6.3-3 +- Provide the epoch tag in order to keep the upgrade path clean. + +* Thu Jul 27 2017 Fedora Release Engineering - 1.6.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Thu Jul 20 2017 Charalampos Stratakis - - 1.6.3-1 +- Update to 1.6.3 (bz#1426928) + +* Sat Feb 18 2017 Toshio Kuratomi - - 1.5.2-2 +- Cleanup source files that should not be installed +- Fix the __init__.pyc that was byte compiled for the wrong python + +* Fri Feb 17 2017 Toshio Kuratomi - - 1.5.2-1 +- Update to 1.5.2 +- Remove a few latex dependencies that are no longer needed +- Remove xapian patch; now in upstream tarball + +* Sat Feb 11 2017 Fedora Release Engineering - 1.5.1-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Tue Jan 31 2017 Toshio Kuratomi - - 1.5.1-5 +- environment-modules is less featureful than Lmod. + - Select the default version in a different way since environment-modules + didn't understand the symlink + - Ignore error messsages in the shell startup script as environment-modules + prints an error message if a module has already been loaded. The command + is doing the right thing for this case except that it's also printing an + error message. + +* Thu Jan 26 2017 Toshio Kuratomi - - 1.5.1-4 +- Add recipe for setting the system default to the README.fedora + +* Wed Jan 18 2017 Toshio Kuratomi - - 1.5.1-3 +- Move the unversioned executables into the python2 package as they are now + using python2 to run + +* Wed Jan 18 2017 Toshio Kuratomi - - 1.5.1-2 +- Add README.fedora so people know how to use environment-modules to switch. +- Change the default to be the python2 version to match with the guidelines +- Switch to generic environment(modules) instead of Lmod specifically. + +* Fri Dec 30 2016 Orion Poplawski - 1.5.1-1 +- Update to 1.5.1 + +* Fri Dec 30 2016 Toshio Kuratomi - 1.4.9-2 +- Remove alternatives. Alternatives should only be used for a very small + number of packages (system daemons which also have a compatible command line + interface). +- Use environment-modules to switch between the python2 and python3 packages + *but* be aware that no amount of manual switching can get this 100% right. + The code has to be fixed upstream, not in packaging. + +* Tue Dec 13 2016 Charalampos Stratakis - 1.4.9-1 +- Update to 1.4.9 +- Enable python3 tests + +* Mon Dec 12 2016 Charalampos Stratakis - 1.4.8-3 +- Rebuild for Python 3.6 +- Disable python3 tests for now + +* Thu Oct 6 2016 Avram Lubkin - 1.4.8-2 +- Added tex(luatex85.sty) dependency to support TexLive 2016 + +* Thu Oct 6 2016 Avram Lubkin - 1.4.8-1 +- Update to 1.4.8 +- Alternatives fails for scripts sometimes (bz#1382405) + +* Sun Sep 4 2016 Avram Lubkin - 1.4.6-2 +- Alternatives fails for man pages due to existing files + +* Fri Sep 2 2016 Avram Lubkin - 1.4.6-1 +- Update to 1.4.6 (bz#1370810) +- Fix unversioned Obsoletes +- Add alternatives slaves for man pages + +* Fri Aug 12 2016 Avram Lubkin - 1.4.5-1 +- Update to 1.4.5 (bz#1356336) +- Remove Recommends for latex, locale, and doc subpackages (bz#1366624) +- Remove Requires from locale subpackage (bz#1366624) +- Set executable scripts via alternatives (bz#1321413) +- Change graphviz Requires to Recommends (bz#1366706) + +* Sun Jul 03 2016 Avram Lubkin - 1.4.4-2 +- doc and locale no longer specifically require python2-sphinx +- Colapsed python3-sphinx-latex into python-latex + +* Sun Jun 12 2016 Avram Lubkin - 1.4.4-1 +- Updated to 1.4.4 +- Added python-sphinx-locale for common locale files + +* Thu Feb 04 2016 Fedora Release Engineering - 1.3.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Fri Nov 27 2015 Zbigniew Jędrzejewski-Szmek - 1.3.1-4 +- Obsolete napoleon extension, it is now packaged with sphinx (#1286275) +- Rename python2-Sphinx to python2-sphinx +- Add conflicts to disallow parallel installation of different versions, + which causes file conflicts because of the shared documentation files. + +* Wed Nov 25 2015 Zbigniew Jędrzejewski-Szmek - 1.3.1-3 +- Restore using python2 scripts by default (#1285535) + +* Wed Nov 25 2015 Zbigniew Jędrzejewski-Szmek - 1.3.1-2 +- Fix requirements of python2- subpackage +- Provide sphinx-*-{3.5,3} symlinks for each script + +* Tue Nov 24 2015 Julien Enselme - 1.3.1-1 +- Update to 1.3.1 (#1136284) +- Update to new guidelines +- Make the default executable use python3 + +* Tue Oct 13 2015 Robert Kuska - 1.2.3-5 +- Rebuilt for Python3.5 rebuild +- add patch to reflect that Python3.5 dropped HTMLParserError + +* Mon Jul 20 2015 Michel Alexandre Salim - 1.2.3-4 +- Fix line encoding of bundled jquery.js + +* Mon Jul 20 2015 Michel Alexandre Salim - 1.2.3-3 +- Re-introduce LaTeX subpackage, solely for pulling in LaTeX dependencies + +* Thu Jun 18 2015 Fedora Release Engineering - 1.2.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Thu Feb 5 2015 Michel Alexandre Salim - 1.2.3-1 +- Update to 1.2.3 +- Mark license file with %%license instead of %%doc + +* Thu Feb 5 2015 Michel Alexandre Salim - 1.2.2-10 +- Complete LaTeX builder deps (fixes bz#882166) +- Make test output verbose +- Add BRs needed to enable all tests + +* Tue Feb 3 2015 Michel Alexandre Salim - 1.2.2-9 +- python3-sphinx package also Provides: python3-sphinx-latex + +* Tue Feb 3 2015 Michel Alexandre Salim - 1.2.2-8 +- If a separate LaTeX subpackage is not generated, the main package should have + a virtual Provides: for it (bz#1187989) + +* Tue Jan 27 2015 Michel Alexandre Salim - 1.2.2-7 +- Disable separate LaTeX builder for now (bz#1185574) + +* Thu Jan 22 2015 Michel Alexandre Salim - 1.2.2-6 +- Split off LaTeX builder into its own subpackages, to remove TeXLive + dependencies from the main package. + Thanks to Robert Kuska for feedback +- Clean up python3-sphinx's locale files, they ended up in the python2 package. + Share the locale files in /usr/share instead + +* Sat Jun 07 2014 Fedora Release Engineering - 1.2.2-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Tue May 27 2014 Bohuslav Kabrda - 1.2.2-4 +- Don't own the -3 scripts by python 2 package + +* Thu May 22 2014 Bohuslav Kabrda - 1.2.2-3 +- Add sphinx-*-3 links to scripts +Resolves: #1098109 + +* Fri May 9 2014 Orion Poplawski - 1.2.2-2 +- Rebuild for Python 3.4 + +* Fri May 9 2014 Orion Poplawski - 1.2.2-1 +- Update to 1.2.2 + +* Thu Feb 13 2014 Michel Salim - 1.2.1-1 +- Update to 1.2.1 + +* Sun Aug 04 2013 Fedora Release Engineering - 1.1.3-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Sat Mar 9 2013 Michel Salim - 1.1.3-7 +- Fix inheritance_diagram quoting bug, exposed by the newer, stricter dot + +* Thu Feb 14 2013 Fedora Release Engineering - 1.1.3-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Tue Aug 21 2012 Toshio Kuratomi - 1.1.3-5 +- Fix for use of sphinx's manpage writer with docutils-0.10 + +* Mon Aug 6 2012 Michel Salim - 1.1.3-4 +- Rebuild for Python 3.3 + +* Fri Aug 3 2012 David Malcolm - 1.1.3-3 +- remove rhel logic from with_python3 conditional + +* Sat Jul 21 2012 Fedora Release Engineering - 1.1.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Thu Apr 5 2012 Michel Salim - 1.1.3-1 +- Update to 1.1.3 + +* Sun Feb 5 2012 Michel Salim - 1.1.2-5 +- Move python3 runtime dependencies to the right subpackage +- Properly exclude python3 binaries + +* Sat Jan 14 2012 Fedora Release Engineering - 1.1.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Sat Dec 17 2011 Michel Salim - 1.1.2-3 +- BR on texlive-latex for LaTeX tests + +* Thu Dec 8 2011 Michel Salim - 1.1.2-2 +- Enable python3 subpackage + +* Mon Nov 28 2011 Toshio Kuratomi - 1.1.2-1 +- Update to upstream 1.1.2 + +* Wed Feb 09 2011 Fedora Release Engineering - 1.0.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Tue Jan 18 2011 Toshio Kuratomi - 1.0.7-1 +- Update to upstream 1.0.7 + +* Mon Jan 17 2011 Toshio Kuratomi - 1.0.6-1 +- Update to upstream 1.0.6 + +* Mon Nov 1 2010 Michel Salim - 1.0.4-3 +- Fix -doc Makefile to allow regeneration of .rst files + +* Mon Nov 1 2010 Michel Salim - 1.0.4-2 +- Actually include *.js locale files +- Generate manpages + +* Fri Sep 17 2010 Michel Salim - 1.0.4-1 +- Update to 1.0.4 +- Remove BuildRoot and %%clean declarations + +* Thu Jul 22 2010 David Malcolm - 1.0-0.1.b2.1 +- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild + +* Mon May 31 2010 Toshio Kuratomi - 1.0-0.2.b2 +- Update to 1.0 beta 2 +- Fixes problem building html documentation in non-English locales + +* Wed May 26 2010 Michel Salim - 1.0-0.1.b1 +- Update to 1.0 beta 1 + +* Tue May 25 2010 Michel Salim - 0.6.6-1 +- Update to 0.6.6 + +* Fri May 21 2010 Toshio Kuratomi - 0.6.5-2 +- Few minor tweaks to Gareth's spec file update + +* Mon May 10 2010 Gareth Armstrong - 0.6.5-1.hp +- Update to 0.6.5 +- Initial import of python-sphinx from Fedora Rawhide for use in HP CMS +- Enforce that Sphinx requires Python 2.4 or later via an explicit BR +- Minor tweaks to spec file +- Move language files to %%{_datadir}, idea borrowed from Debian's sphinx + package +- Deliver man pages for sphinx-build & sphinx-quickstart +- Deliver rst documentation files to reST directory in doc sub-package +- Add %%check section for Python2 and add BR on python-nose + +* Wed Jan 13 2010 Toshio Kuratomi - 0.6.4-1 +- Update to 0.6.4 +- Fixes a problem using autodoc with pylons projects. + +* Fri Sep 4 2009 Michel Salim - 0.6.3-1 +- Update to 0.6.3 + +* Mon Aug 17 2009 Toshio Kuratomi - 0.6.2-1 +- Update to 0.6.2 -- upstream bugfix requested inside bz#512438 + +* Sun Jul 26 2009 Fedora Release Engineering - 0.6.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Fri Jun 05 2009 Luke Macken - 0.6.1-2 +- Add a patch to use our own setuptools package + +* Fri Apr 17 2009 Michel Salim - 0.6.1-1 +- Update to 0.6.1 + +* Thu Feb 26 2009 Fedora Release Engineering - 0.5.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Fri Jan 2 2009 Michel Salim - 0.5.1-1 +- Update to 0.5.1 + +* Sat Nov 29 2008 Ignacio Vazquez-Abrams - 0.5-2 +- Rebuild for Python 2.6 + +* Mon Nov 24 2008 Michel Salim - 0.5-1 +- Update to 0.5 + +* Fri Oct 10 2008 Michel Salim - 0.4.3-1 +- Update to 0.4.3 + +* Wed Aug 27 2008 Toshio Kuratomi - 0.4.2-1.1 +- Fix for EL-5 build. + +* Mon Aug 25 2008 Michel Salim - 0.4.2-1 +- Update to 0.4.2 + +* Mon May 26 2008 Michel Salim - 0.3-1 +- Update to 0.3 + +* Fri May 2 2008 Michel Salim - 0.1.61950-3 +- Split documentation into subpackage +- Exclude C files (not built by default anyway) + +* Wed Apr 16 2008 José Matos - 0.1.61950-2 +- Build html documentation, include it and include the rst + documentation. + +* Thu Mar 27 2008 Michel Salim 0.1.61950-1 +- Initial package diff --git a/e01e42f5fc738815b.patch b/e01e42f5fc738815b.patch new file mode 100644 index 0000000..a42c216 --- /dev/null +++ b/e01e42f5fc738815b.patch @@ -0,0 +1,40 @@ +From e01e42f5fc738815b8499c4ede30c6caf130f0a4 Mon Sep 17 00:00:00 2001 +From: Adam Turner <9087854+aa-turner@users.noreply.github.com> +Date: Wed, 19 Mar 2025 20:11:35 +0000 +Subject: [PATCH] Fix ``INVALID_BUILTIN_CLASSES`` test for Python 3.14.0a6+ + +--- + tests/test_util/test_util_typing.py | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/tests/test_util/test_util_typing.py b/tests/test_util/test_util_typing.py +index 35ee240f7b8..8a561c378ed 100644 +--- a/tests/test_util/test_util_typing.py ++++ b/tests/test_util/test_util_typing.py +@@ -205,7 +205,7 @@ def test_is_invalid_builtin_class() -> None: + zipfile.Path, + zipfile.CompleteDirs, + ) +- if sys.version_info[:2] >= (3, 13): ++ if sys.version_info[:2] == (3, 13): + invalid_types += ( + # pathlib + Path, +@@ -217,7 +217,7 @@ def test_is_invalid_builtin_class() -> None: + ) + + invalid_names = {(cls.__module__, cls.__qualname__) for cls in invalid_types} +- if sys.version_info[:2] < (3, 13): ++ if sys.version_info[:2] != (3, 13): + invalid_names |= { + ('pathlib._local', 'Path'), + ('pathlib._local', 'PosixPath'), +@@ -231,7 +231,7 @@ def test_is_invalid_builtin_class() -> None: + ('zipfile._path', 'Path'), + ('zipfile._path', 'CompleteDirs'), + } +- assert _INVALID_BUILTIN_CLASSES.keys() == invalid_names ++ assert set(_INVALID_BUILTIN_CLASSES) == invalid_names + + + def test_restify_type_hints_containers(): diff --git a/plan.fmf b/plan.fmf new file mode 100644 index 0000000..94cb32d --- /dev/null +++ b/plan.fmf @@ -0,0 +1,5 @@ +discover: + how: fmf +execute: + how: tmt + diff --git a/python-sphinx-0.6.5_move_locale_files_outside_sitelib.patch b/python-sphinx-0.6.5_move_locale_files_outside_sitelib.patch deleted file mode 100644 index 76dffc4..0000000 --- a/python-sphinx-0.6.5_move_locale_files_outside_sitelib.patch +++ /dev/null @@ -1,56 +0,0 @@ -# HG changeset patch -# Parent 552e51b26229a9a918c76a401f2f487bf81f2ee6 - -Index: Sphinx-0.6.5/sphinx/builders/html.py -=================================================================== ---- Sphinx-0.6.5.orig/sphinx/builders/html.py -+++ Sphinx-0.6.5/sphinx/builders/html.py -@@ -10,6 +10,7 @@ - """ - - import os -+import sys - import codecs - import posixpath - import cPickle as pickle -@@ -91,10 +92,15 @@ class StandaloneHTMLBuilder(Builder): - self.link_suffix = self.out_suffix - - if self.config.language is not None: -- jsfile = path.join(package_dir, 'locale', self.config.language, -- 'LC_MESSAGES', 'sphinx.js') -- if path.isfile(jsfile): -- self.script_files.append('_static/translations.js') -+ jsfile_list = [path.join(package_dir, 'locale', -+ self.config.language, 'LC_MESSAGES', 'sphinx.js'), -+ path.join(sys.prefix, 'share/sphinx/locale', -+ self.config.language, 'sphinx.js')] -+ -+ for jsfile in jsfile_list: -+ if path.isfile(jsfile): -+ self.script_files.append('_static/translations.js') -+ break - - def init_templates(self): - Theme.init_themes(self) -@@ -528,11 +534,15 @@ class StandaloneHTMLBuilder(Builder): - f.close() - # then, copy translations JavaScript file - if self.config.language is not None: -- jsfile = path.join(package_dir, 'locale', self.config.language, -- 'LC_MESSAGES', 'sphinx.js') -- if path.isfile(jsfile): -- copyfile(jsfile, path.join(self.outdir, '_static', -- 'translations.js')) -+ jsfile_list = [path.join(package_dir, 'locale', -+ self.config.language, 'LC_MESSAGES', 'sphinx.js'), -+ path.join(sys.prefix, 'share/sphinx/locale', -+ self.config.language, 'sphinx.js')] -+ for jsfile in jsfile_list: -+ if path.isfile(jsfile): -+ copyfile(jsfile, path.join(self.outdir, '_static', -+ 'translations.js')) -+ break - # then, copy over all user-supplied static files - if self.theme: - staticdirnames = [path.join(themepath, 'static') diff --git a/python-sphinx-0.6.5_setuptools.patch b/python-sphinx-0.6.5_setuptools.patch deleted file mode 100644 index e8bcc44..0000000 --- a/python-sphinx-0.6.5_setuptools.patch +++ /dev/null @@ -1,24 +0,0 @@ -# HG changeset patch -# Parent 5da6d572bd088b04711b3bf70991c976d8f9c605 - -Index: Sphinx-0.6.5/setup.py -=================================================================== ---- Sphinx-0.6.5.orig/setup.py -+++ Sphinx-0.6.5/setup.py -@@ -1,10 +1,13 @@ - # -*- coding: utf-8 -*- --import ez_setup --ez_setup.use_setuptools() -+try: -+ from setuptools import setup, find_packages -+except ImportError: -+ import ez_setup -+ ez_setup.use_setuptools() -+ from setuptools import setup, find_packages - - import os - import sys --from setuptools import setup, find_packages - from distutils import log - - import sphinx diff --git a/python-sphinx.spec b/python-sphinx.spec index 52c5b4f..ed77d83 100644 --- a/python-sphinx.spec +++ b/python-sphinx.spec @@ -1,31 +1,162 @@ -%if ! (0%{?fedora} > 12 || 0%{?rhel} > 5) -%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} -%endif +# When bootstrapping sphinx in Fedora, we don't yet have sphinxcontrib-* +# Without the packages, we have warnings in docs, but it's not a hard dependency +# We don't want to support sphinxcontrib-* in RHEL, hence disabling the dependencies +%bcond sphinxcontrib %{undefined rhel} +# RHEL does not include python3-snowballstemmer (SRPM: snowball) +%bcond snowballstemmer %{undefined rhel} +# Also, we don't have all the tests requirements +%bcond tests 1 -%global upstream_name Sphinx +# Unset -s on python shebang to allow RPM-installed sphinx to be used +# with user-installed modules (#1903763) +%undefine _py3_shebang_s + +# No internet in Koji +%bcond internet 0 + +# Build without BuildRequires ImageMagick, to skip imgconverter tests +%bcond imagemagick_tests %{undefined rhel} + +# During texlive updates, sometimes the latex environment is unstable +# NOTE: LaTeX tests are never run when building for ELN. +%bcond latex_tests 1 Name: python-sphinx -Version: 0.6.5 -Release: 2%{?dist} +%global general_version 8.2.3 +#global prerel ... +%global upstream_version %{general_version}%{?prerel} +Version: %{general_version}%{?prerel:~%{prerel}} +Release: %autorelease +Epoch: 1 Summary: Python documentation generator -Group: Development/Tools -License: BSD -URL: http://sphinx.pocoo.org/ -Source0: http://pypi.python.org/packages/source/S/%{upstream_name}/%{upstream_name}-%{version}.tar.gz -Patch0: %{name}-0.6.5_setuptools.patch -Patch1: %{name}-0.6.5_move_locale_files_outside_sitelib.patch +# Unless otherwise noted, the license for code is BSD-2-Clause +# sphinx/themes/haiku/static/haiku.css_t has bits licensed with MIT +License: BSD-2-Clause AND MIT + +URL: https://www.sphinx-doc.org/ +Source: %{pypi_source sphinx %{upstream_version}} + +# Allow extra themes to exist. We pull in python3-sphinx-theme-alabaster +# which causes that test to fail. +Patch: sphinx-test_theming.patch + +# Make the first party extensions optional +# This removes the runtime dependencies on: +# - sphinxcontrib.applehelp +# - sphinxcontrib.devhelp +# - sphinxcontrib.jsmath +# - sphinxcontrib.htmlhelp +# - sphinxcontrib.serializinghtml +# - sphinxcontrib.qthelp +# The majority of Fedora RPM packages does not need any of those. +# By removing the dependencies, we minimize the stuff that's pulled into +# the buildroots of 700+ of packages. +# +# This is a downstream-only change - rejected upstream. +# https://github.com/sphinx-doc/sphinx/pull/11747 +Patch: Make-the-first-party-extensions-optional.patch + +# Compatibility with Python 3.14 +Patch: https://github.com/sphinx-doc/sphinx/commit/8962398b761c3d85a.patch +Patch: https://github.com/sphinx-doc/sphinx/commit/e01e42f5fc738815b.patch +Patch: https://github.com/sphinx-doc/sphinx/pull/13527.patch +# Compatibility with docutils 0.22+ +Patch: https://github.com/sphinx-doc/sphinx/pull/13610.patch +Patch: https://github.com/sphinx-doc/sphinx/pull/13883.patch -BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) BuildArch: noarch -BuildRequires: python2-devel >= 2.4 -BuildRequires: python-setuptools -BuildRequires: python-docutils -BuildRequires: python-jinja2 -BuildRequires: python-nose -Requires: python-docutils -Requires: python-jinja2 -Requires: python-pygments + +BuildRequires: make +BuildRequires: python%{python3_pkgversion}-devel +BuildRequires: pyproject-rpm-macros + +%if %{with sphinxcontrib} +# applehelp and jsmath have been orphaned, we cannot use the [docs] extra directly +BuildRequires: python%{python3_pkgversion}-sphinxcontrib-devhelp +BuildRequires: python%{python3_pkgversion}-sphinxcontrib-htmlhelp +BuildRequires: python%{python3_pkgversion}-sphinxcontrib-serializinghtml +BuildRequires: python%{python3_pkgversion}-sphinxcontrib-qthelp +BuildRequires: python%{python3_pkgversion}-sphinxcontrib-websupport +%endif + +%if %{with tests} +# tests import _testcapi +BuildRequires: python%{python3_pkgversion}-test + +BuildRequires: gcc +BuildRequires: gettext +BuildRequires: graphviz +BuildRequires: texinfo + +%if %{with imagemagick_tests} +BuildRequires: ImageMagick +%endif + +%if %{undefined rhel} && %{with latex_tests} +BuildRequires: texlive-collection-fontsrecommended +BuildRequires: texlive-collection-latex +BuildRequires: texlive-gnu-freefont +BuildRequires: latexmk +BuildRequires: texlive-dvipng +BuildRequires: texlive-dvisvgm +BuildRequires: tex(article.cls) +BuildRequires: tex(utf8x.def) +# Other dependencies. +BuildRequires: tex(alltt.sty) +BuildRequires: tex(amsfonts.sty) +BuildRequires: tex(amsmath.sty) +BuildRequires: tex(amssymb.sty) +BuildRequires: tex(amstext.sty) +BuildRequires: tex(amsthm.sty) +BuildRequires: tex(anyfontsize.sty) +BuildRequires: tex(atbegshi.sty) +BuildRequires: tex(babel.sty) +BuildRequires: tex(bm.sty) +BuildRequires: tex(booktabs.sty) +BuildRequires: tex(capt-of.sty) +BuildRequires: tex(cmap.sty) +BuildRequires: tex(colortbl.sty) +BuildRequires: tex(ellipse.sty) +BuildRequires: tex(etoolbox.sty) +BuildRequires: tex(fancyhdr.sty) +BuildRequires: tex(fancyvrb.sty) +BuildRequires: tex(float.sty) +BuildRequires: tex(fncychap.sty) +BuildRequires: tex(fontawesome.sty) +BuildRequires: tex(fontawesome5.sty) +BuildRequires: tex(fontenc.sty) +BuildRequires: tex(fontspec.sty) +BuildRequires: tex(framed.sty) +BuildRequires: tex(geometry.sty) +BuildRequires: tex(graphicx.sty) +BuildRequires: tex(hypcap.sty) +BuildRequires: tex(hyperref.sty) +BuildRequires: tex(inputenc.sty) +BuildRequires: tex(kvoptions.sty) +BuildRequires: tex(longtable.sty) +BuildRequires: tex(ltxcmds.sty) +BuildRequires: tex(luatex85.sty) +BuildRequires: tex(makeidx.sty) +BuildRequires: tex(multicol.sty) +BuildRequires: tex(needspace.sty) +BuildRequires: tex(parskip.sty) +BuildRequires: tex(pict2e.sty) +BuildRequires: tex(polyglossia.sty) +BuildRequires: tex(remreset.sty) +BuildRequires: tex(substitutefont.sty) +BuildRequires: tex(tabulary.sty) +BuildRequires: tex(textalpha.sty) +BuildRequires: tex(textcomp.sty) +BuildRequires: tex(tgheros.sty) +BuildRequires: tex(tgtermes.sty) +BuildRequires: tex(titlesec.sty) +BuildRequires: tex(upquote.sty) +BuildRequires: tex(varwidth.sty) +BuildRequires: tex(wrapfig.sty) +BuildRequires: tex(xcolor.sty) +%endif +%endif %description @@ -57,12 +188,160 @@ the Python docs: snippets and inclusion of appropriately formatted docstrings. -%package doc -Summary: Documentation for %{name} -Group: Documentation -License: BSD -Requires: %{name} = %{version}-%{release} +%package -n python%{python3_pkgversion}-sphinx +Summary: Python documentation generator +Recommends: graphviz +Recommends: ImageMagick +Recommends: make + +# Upstream Requires those, but we have a patch to remove the dependency. +# We keep them Recommended to preserve the default user experience. +%if %{with sphinxcontrib} +# applehelp and jsmath have been orphaned +Recommends: python%{python3_pkgversion}-sphinxcontrib-devhelp +Recommends: python%{python3_pkgversion}-sphinxcontrib-htmlhelp +Recommends: python%{python3_pkgversion}-sphinxcontrib-serializinghtml +Recommends: python%{python3_pkgversion}-sphinxcontrib-qthelp +%endif + +%description -n python%{python3_pkgversion}-sphinx +Sphinx is a tool that makes it easy to create intelligent and +beautiful documentation for Python projects (or other documents +consisting of multiple reStructuredText sources), written by Georg +Brandl. It was originally created to translate the new Python +documentation, but has now been cleaned up in the hope that it will be +useful to many other projects. + +Sphinx uses reStructuredText as its markup language, and many of its +strengths come from the power and straightforwardness of +reStructuredText and its parsing and translating suite, the Docutils. + +Although it is still under constant development, the following +features are already present, work fine and can be seen "in action" in +the Python docs: + + * Output formats: HTML (including Windows HTML Help) and LaTeX, + for printable PDF versions + * Extensive cross-references: semantic markup and automatic links + for functions, classes, glossary terms and similar pieces of + information + * Hierarchical structure: easy definition of a document tree, with + automatic links to siblings, parents and children + * Automatic indices: general index as well as a module index + * Code handling: automatic highlighting using the Pygments highlighter + * Various extensions are available, e.g. for automatic testing of + snippets and inclusion of appropriately formatted docstrings. + + +%if %{undefined rhel} +%package -n python%{python3_pkgversion}-sphinx-latex +Summary: LaTeX builder dependencies for python%{python3_pkgversion}-sphinx + +Requires: python%{python3_pkgversion}-sphinx = %{epoch}:%{version}-%{release} +# Required dependencies as stated in the documentation [1]: +# +# - texlive-collection-latexrecommended +# - texlive-collection-fontsrecommended +# - texlive-collection-fontsextra +# - texlive-collection-latexextra +# - texlive-tex-gyre +# - latexmk +# +# [1] https://www.sphinx-doc.org/en/master/usage/builders/index.html#sphinx.builders.latex.LaTeXBuilder +# +# These packages install 2500+ other packages requiring ~3 GiB of space. +# Therefore, a more precise list of dependencies. + +Requires: texlive-collection-fontsrecommended +Requires: texlive-collection-latex +Requires: texlive-gnu-freefont +Requires: latexmk + +# Required by sphinx.ext.imgmath – Render math as images +Requires: texlive-dvipng +Requires: texlive-dvisvgm +#Requires: tex(preview.sty) Pulls in texlive-collection-latexrecommended + +Requires: tex(article.cls) +Requires: tex(utf8x.def) + +# Other dependencies. +# -- After searching for \RequirePackage{..} and \usepackage{..}. +Requires: tex(alltt.sty) +Requires: tex(amsfonts.sty) +Requires: tex(amsmath.sty) +Requires: tex(amssymb.sty) +Requires: tex(amstext.sty) +Requires: tex(amsthm.sty) +Requires: tex(anyfontsize.sty) +Requires: tex(atbegshi.sty) +Requires: tex(babel.sty) +Requires: tex(bm.sty) +Requires: tex(booktabs.sty) +Requires: tex(capt-of.sty) +Requires: tex(cmap.sty) +Requires: tex(colortbl.sty) +Requires: tex(ellipse.sty) +Requires: tex(etoolbox.sty) +Requires: tex(fancyhdr.sty) +Requires: tex(fancyvrb.sty) +Requires: tex(float.sty) +Requires: tex(fncychap.sty) +Requires: tex(fontawesome.sty) +Requires: tex(fontawesome5.sty) +Requires: tex(fontenc.sty) +Requires: tex(fontspec.sty) +Requires: tex(framed.sty) +Requires: tex(geometry.sty) +Requires: tex(graphicx.sty) +Requires: tex(hypcap.sty) +Requires: tex(hyperref.sty) +Requires: tex(inputenc.sty) +Requires: tex(kvoptions.sty) +Requires: tex(longtable.sty) +Requires: tex(ltxcmds.sty) +Requires: tex(luatex85.sty) +Requires: tex(makeidx.sty) +Requires: tex(multicol.sty) +Requires: tex(needspace.sty) +Requires: tex(parskip.sty) +Requires: tex(pict2e.sty) +Requires: tex(polyglossia.sty) +Requires: tex(remreset.sty) +Requires: tex(substitutefont.sty) +Requires: tex(tabulary.sty) +Requires: tex(textalpha.sty) +Requires: tex(textcomp.sty) +Requires: tex(tgheros.sty) +Requires: tex(tgtermes.sty) +Requires: tex(titlesec.sty) +Requires: tex(upquote.sty) +Requires: tex(varwidth.sty) +Requires: tex(wrapfig.sty) +Requires: tex(xcolor.sty) +#Requires: tex(xeCJK.sty) Pulls in pLaTeX and upLaTeX + +# No files in this package, automatic provides don't work: +%py_provides python%{python3_pkgversion}-sphinx-latex + +%description -n python%{python3_pkgversion}-sphinx-latex +Sphinx is a tool that makes it easy to create intelligent and +beautiful documentation for Python projects (or other documents +consisting of multiple reStructuredText sources), written by Georg +Brandl. It was originally created to translate the new Python +documentation, but has now been cleaned up in the hope that it will be +useful to many other projects. + +This package pulls in the TeX dependencies needed by Sphinx's LaTeX +builder. +%endif + + +%package doc +Summary: Documentation for %{name} +License: BSD-2-Clause +Recommends: python%{python3_pkgversion}-sphinx = %{epoch}:%{version}-%{release} %description doc Sphinx is a tool that makes it easy to create intelligent and @@ -72,46 +351,98 @@ Brandl. It was originally created to translate the new Python documentation, but has now been cleaned up in the hope that it will be useful to many other projects. -This package contains documentation in reST and HTML formats. +This package contains documentation in the HTML format. %prep -%setup -q -n %{upstream_name}-%{version} -%patch0 -p1 -b .setuptools -%patch1 -p1 -b .language_files +%autosetup -n sphinx-%{upstream_version} -p1 + +# Drop test-dependency on pytest-xdist +# This allows for parallel testing, but has a lot of dependencies. +# We want to avoid the dependency in RHEL, where it is not available. +%if 0%{?rhel} +sed -i -e '/pytest-xdist/d' pyproject.toml +%endif + +# Support for docutils 0.22+ +sed -i -e 's/docutils>=0.20,<0.22/docutils>=0.20,<0.23/' pyproject.toml + +# Drop test-dependency on defusedxml, +# use xml from the standard library instead. +# defusedxml is safer but this is only used in tests. +# Upstream uses defusedxml to be "safer for future contributors when they +# create/open branches and pull requests" -- that does not concern us. +# https://github.com/sphinx-doc/sphinx/pull/12168#discussion_r1535383868 +# We want to avoid the dependency in RHEL, but no harm in doing so unconditionally. +sed -i '/"defusedxml/d' pyproject.toml +sed -i 's/from defusedxml./from xml.etree./' sphinx/testing/util.py tests/test_theming/test_theming.py + +%if %{without snowballstemmer} +# Drop dependency on snowballstemmer for RHEL, implement dummy method instead +sed -i -e '/snowballstemmer/d' pyproject.toml +sed -i -e 's/^import \(snowballstemmer\)/from . import dummystemmer as \1/' sphinx/search/*.py +cat > sphinx/search/dummystemmer.py <<_EOF +class stemmer: + def __init__(self, *args, **kwargs): pass + def stemWord(self, word): return word +_EOF +%endif + +%if %{without imagemagick_tests} +rm tests/test_extensions/test_ext_imgconverter.py +%endif + + +%generate_buildrequires +%pyproject_buildrequires -r %{?with_tests:-x test} -sed '1d' -i sphinx/pycode/pgen2/token.py %build -%{__python} setup.py build +%pyproject_wheel + +export PYTHONPATH=$PWD pushd doc -make html +export SPHINXBUILD="%{python3} ../sphinx/cmd/build.py" +make html SPHINXBUILD="$SPHINXBUILD" +make man SPHINXBUILD="$SPHINXBUILD" rm -rf _build/html/.buildinfo +# Those files are copied to _build/html/_images and loaded to the +# html pages from there - we can safely remove the duplicated and unused files +rm -rf _build/html/_static/themes _build/html/_static/tutorial +rm -f _build/html/_static/more.png _build/html/_static/translation.svg mv _build/html .. -rm -rf _* popd %install -rm -rf %{buildroot} +%pyproject_install -%{__python} setup.py install --skip-build --root %{buildroot} +# For backwards compatibility. Remove with care, if at all +for i in sphinx-{apidoc,autogen,build,quickstart}; do + ln -s %{_bindir}/$i %{buildroot}%{_bindir}/$i-%{python3_version} + ln -s %{_bindir}/$i %{buildroot}%{_bindir}/$i-3 +done +# Clean up non-python files +rm -f %{buildroot}%{python3_sitelib}/sphinx/locale/.DS_Store +rm -rf %{buildroot}%{python3_sitelib}/sphinx/locale/.tx pushd doc # Deliver man pages install -d %{buildroot}%{_mandir}/man1 -mv sphinx-*.1 %{buildroot}%{_mandir}/man1/ +for f in _build/man/sphinx-*.1; +do + cp -p $f %{buildroot}%{_mandir}/man1/$(basename $f) +done popd -# Deliver rst files -mv doc reST +# Move language files to /usr/share; +# patch to support this incorporated in 0.6.6 +pushd %{buildroot}%{python3_sitelib} -# Move language files to /usr/share in association with %patch1 -pushd %{buildroot}%{python_sitelib} - -for lang in `find sphinx/locale -maxdepth 1 -mindepth 1 -type d -printf "%f "`; +for lang in `find sphinx/locale -maxdepth 1 -mindepth 1 -type d -not -path '*/\.*' -printf "%f "`; do + test $lang == __pycache__ && continue install -d %{buildroot}%{_datadir}/sphinx/locale/$lang install -d %{buildroot}%{_datadir}/locale/$lang/LC_MESSAGES mv sphinx/locale/$lang/LC_MESSAGES/sphinx.js \ @@ -121,6 +452,11 @@ do rm -rf sphinx/locale/$lang done popd + +# Create the sphinxcontrib directory, so we can own it +# See https://bugzilla.redhat.com/show_bug.cgi?id=1669790 for rationale +mkdir %{buildroot}%{python3_sitelib}/sphinxcontrib + %find_lang sphinx # Language files; Since these are javascript, it's not immediately obvious to @@ -130,93 +466,51 @@ popd >> sphinx.lang -%clean -rm -rf %{buildroot} - - +%if %{with tests} %check -make test +# Currently, all linkcheck tests and test_latex_images need internet +# test_build_latex_doc needs internet to download pictures, +# but fails also with it enabled, we decided to skip it entirely +# test_autodoc_type_aliases fails with Python 3.12.4, 3.13.0b3 +# skip temporarily until resolved: +# https://github.com/sphinx-doc/sphinx/issues/12430 +k="not test_autodoc_type_aliases" +%if %{without internet} +k="${k} and not linkcheck and not test_latex_images and not test_build_latex_doc" +%endif +%if %{without snowballstemmer} +# Without snowballstemmer, some tests have to be skipped as well, +# as the results with dummystemmer do not exactly match the testcases +k="${k} and not test_meta_keys_are_handled_for_language_en and not test_stemmer" +k="${k} and not test_term_in_heading_and_section and not test_IndexBuilder" +k="${k} and not test_check_js_search_indexes" +%endif -%files -f sphinx.lang -%defattr(-,root,root,-) -%doc AUTHORS CHANGES EXAMPLES LICENSE README TODO +%pytest -k "${k}" +%endif + +%files -n python%{python3_pkgversion}-sphinx -f sphinx.lang +%license LICENSE.rst +%doc README.rst %{_bindir}/sphinx-* -%{python_sitelib}/* -%{_datadir}/sphinx/ -%exclude %{_datadir}/sphinx/locale/*/sphinx.js -%{_mandir}/man1/* +%{python3_sitelib}/sphinx/ +%dir %{python3_sitelib}/sphinxcontrib/ +%{python3_sitelib}/sphinx-%{upstream_version}.dist-info/ +%dir %{_datadir}/sphinx/ +%dir %{_datadir}/sphinx/locale +%dir %{_datadir}/sphinx/locale/* +%{_mandir}/man1/sphinx-* + +%if %{undefined rhel} +%files -n python%{python3_pkgversion}-sphinx-latex +# empty, this is a metapackage +%endif %files doc -%defattr(-,root,root,-) -%doc html reST +%license LICENSE.rst +%doc html %changelog -* Fri May 21 2010 Toshio Kuratomi - 0.6.5-2 -- Few minor tweaks to Gareth's spec file update - -* Mon May 10 2010 Gareth Armstrong - 0.6.5-1.hp -- Update to 0.6.5 -- Initial import of python-sphinx from Fedora Rawhide for use in HP CMS -- Enforce that Sphinx requires Python 2.4 or later via an explicit BR -- Minor tweaks to spec file -- Move language files to %%{_datadir}, idea borrowed from Debian's sphinx - package -- Deliver man pages for sphinx-build & sphinx-quickstart -- Deliver rst documentation files to reST directory in doc sub-package -- Add %%check section for Python2 and add BR on python-nose - -* Wed Jan 13 2010 Toshio Kuratomi - 0.6.4-1 -- Update to 0.6.4 -- Fixes a problem using autodoc with pylons projects. - -* Fri Sep 4 2009 Michel Salim - 0.6.3-1 -- Update to 0.6.3 - -* Mon Aug 17 2009 Toshio Kuratomi - 0.6.2-1 -- Update to 0.6.2 -- upstream bugfix requested inside bz#512438 - -* Sun Jul 26 2009 Fedora Release Engineering - 0.6.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild - -* Fri Jun 05 2009 Luke Macken - 0.6.1-2 -- Add a patch to use our own setuptools package - -* Fri Apr 17 2009 Michel Salim - 0.6.1-1 -- Update to 0.6.1 - -* Thu Feb 26 2009 Fedora Release Engineering - 0.5.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild - -* Fri Jan 2 2009 Michel Salim - 0.5.1-1 -- Update to 0.5.1 - -* Sat Nov 29 2008 Ignacio Vazquez-Abrams - 0.5-2 -- Rebuild for Python 2.6 - -* Mon Nov 24 2008 Michel Salim - 0.5-1 -- Update to 0.5 - -* Fri Oct 10 2008 Michel Salim - 0.4.3-1 -- Update to 0.4.3 - -* Wed Aug 27 2008 Toshio Kuratomi - 0.4.2-1.1 -- Fix for EL-5 build. - -* Mon Aug 25 2008 Michel Salim - 0.4.2-1 -- Update to 0.4.2 - -* Mon May 26 2008 Michel Salim - 0.3-1 -- Update to 0.3 - -* Fri May 2 2008 Michel Salim - 0.1.61950-3 -- Split documentation into subpackage -- Exclude C files (not built by default anyway) - -* Wed Apr 16 2008 José Matos - 0.1.61950-2 -- Build html documentation, include it and include the rst - documentation. - -* Thu Mar 27 2008 Michel Salim 0.1.61950-1 -- Initial package +%autochangelog diff --git a/rpminspect.yaml b/rpminspect.yaml new file mode 100644 index 0000000..bd3a5a4 --- /dev/null +++ b/rpminspect.yaml @@ -0,0 +1,4 @@ +# exclude XML template (not always valid) from XML validity check: +xml: + ignore: + - /usr/lib/python*/site-packages/sphinx/themes/basic/opensearch.xml diff --git a/sources b/sources index 6c0c1e6..df7d90d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -86dd5dbd55cb44d1f8091a4a1c3743b2 Sphinx-0.6.5.tar.gz +SHA512 (sphinx-8.2.3.tar.gz) = e7cbe251e4f44eb59ef6fd84d3918b1b29941943b75265da75aa9533379746e76331ac8a3ba8c1694840adeebd6886e0fc8eebf5407271aaeddf39594d8e1523 diff --git a/sphinx-test_theming.patch b/sphinx-test_theming.patch new file mode 100644 index 0000000..818a74e --- /dev/null +++ b/sphinx-test_theming.patch @@ -0,0 +1,25 @@ +From 399ae81dfbedb7b8acf84e56b0e4b2d5023432ec Mon Sep 17 00:00:00 2001 +From: Karolina Surma +Date: Wed, 26 Feb 2025 10:43:44 +0100 +Subject: [PATCH] Patch test_theming to accomodate for Fedora-added theme + +--- + tests/test_theming/test_theming.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/test_theming/test_theming.py b/tests/test_theming/test_theming.py +index 173e0c9..515e546 100644 +--- a/tests/test_theming/test_theming.py ++++ b/tests/test_theming/test_theming.py +@@ -58,7 +58,7 @@ def test_theme_api(app: SphinxTestApp) -> None: + ] + + # test Theme class API +- assert set(app.registry.html_themes.keys()) == set(themes) ++ assert set(app.registry.html_themes.keys()) >= set(themes) + assert app.registry.html_themes['test-theme'] == ( + app.srcdir / 'test_theme' / 'test-theme' + ) +-- +2.48.1 + diff --git a/tests/include-sphinxcontrib-jquery/main.fmf b/tests/include-sphinxcontrib-jquery/main.fmf new file mode 100644 index 0000000..e447827 --- /dev/null +++ b/tests/include-sphinxcontrib-jquery/main.fmf @@ -0,0 +1,11 @@ +summary: run the basic documentation build +test: | + sphinx-build -M html source/ build/ && + grep '