From 4483ad8a1d2617a109a5d6d8e6c303a7a7a2a9f7 Mon Sep 17 00:00:00 2001 From: Karolina Surma Date: Apr 30 2024 09:12:15 +0000 Subject: Update to 7.3.7 --- diff --git a/.gitignore b/.gitignore index fd204f3..816d1b8 100644 --- a/.gitignore +++ b/.gitignore @@ -46,3 +46,4 @@ /Sphinx-7.0.1.tar.gz /sphinx-7.1.2.tar.gz /sphinx-7.2.6.tar.gz +/sphinx-7.3.7.tar.gz diff --git a/Make-the-first-party-extensions-optional.patch b/Make-the-first-party-extensions-optional.patch index ad3985a..8cb1801 100644 --- a/Make-the-first-party-extensions-optional.patch +++ b/Make-the-first-party-extensions-optional.patch @@ -1,25 +1,25 @@ -From 9699465414515f0eba76d05069e755b5bcf34eef Mon Sep 17 00:00:00 2001 +From b74128966fe4edf77a0c3a7936f6a6216833c9ed Mon Sep 17 00:00:00 2001 From: Karolina Surma -Date: Mon, 15 Jan 2024 16:19:32 +0100 +Date: Thu, 25 Apr 2024 15:58:03 +0200 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 | 9 ++++++--- - sphinx/testing/fixtures.py | 6 ++++++ - tests/test_api_translator.py | 2 ++ - tests/test_build_html.py | 3 +++ - 6 files changed, 47 insertions(+), 12 deletions(-) + pyproject.toml | 33 ++++++++++++++++---- + sphinx/application.py | 6 ++-- + sphinx/registry.py | 9 ++++-- + 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(+), 12 deletions(-) diff --git a/pyproject.toml b/pyproject.toml -index 8f93701..41c28c5 100644 +index 8aa49aa..10fa20e 100644 --- a/pyproject.toml +++ b/pyproject.toml -@@ -55,12 +55,6 @@ classifiers = [ +@@ -56,12 +56,6 @@ classifiers = [ "Topic :: Utilities", ] dependencies = [ @@ -31,8 +31,8 @@ index 8f93701..41c28c5 100644 - "sphinxcontrib-qthelp", "Jinja2>=3.0", "Pygments>=2.14", - "docutils>=0.18.1,<0.21", -@@ -76,8 +70,35 @@ dependencies = [ + "docutils>=0.18.1,<0.22", +@@ -78,8 +72,35 @@ dependencies = [ dynamic = ["version"] [project.optional-dependencies] @@ -69,10 +69,10 @@ index 8f93701..41c28c5 100644 lint = [ "flake8>=3.5.0", diff --git a/sphinx/application.py b/sphinx/application.py -index d5fbaa9..b030dab 100644 +index 7d16d9a..2a71074 100644 --- a/sphinx/application.py +++ b/sphinx/application.py -@@ -226,7 +226,7 @@ class Sphinx: +@@ -222,7 +222,7 @@ class Sphinx: # load all built-in extension modules, first-party extension modules, # and first-party themes for extension in builtin_extensions: @@ -81,7 +81,7 @@ index d5fbaa9..b030dab 100644 # load all user-given extension modules for extension in self.config.extensions: -@@ -395,7 +395,7 @@ class Sphinx: +@@ -391,7 +391,7 @@ class Sphinx: # ---- general extensibility interface ------------------------------------- @@ -90,7 +90,7 @@ index d5fbaa9..b030dab 100644 """Import and setup a Sphinx extension module. Load the extension given by the module *name*. Use this if your -@@ -403,7 +403,7 @@ class Sphinx: +@@ -399,7 +399,7 @@ class Sphinx: called twice. """ logger.debug('[app] setting up extension: %r', extname) @@ -100,10 +100,10 @@ index d5fbaa9..b030dab 100644 @staticmethod def require_sphinx(version: tuple[int, int] | str) -> None: diff --git a/sphinx/registry.py b/sphinx/registry.py -index 501661d..96d4554 100644 +index 7887858..ca95960 100644 --- a/sphinx/registry.py +++ b/sphinx/registry.py -@@ -430,7 +430,7 @@ class SphinxComponentRegistry: +@@ -436,7 +436,7 @@ class SphinxComponentRegistry: def add_html_theme(self, name: str, theme_path: str) -> None: self.html_themes[name] = theme_path @@ -112,7 +112,7 @@ index 501661d..96d4554 100644 """Load a Sphinx extension.""" if extname in app.extensions: # already loaded return -@@ -446,9 +446,12 @@ class SphinxComponentRegistry: +@@ -452,9 +452,12 @@ class SphinxComponentRegistry: try: mod = import_module(extname) except ImportError as err: @@ -125,24 +125,25 @@ index 501661d..96d4554 100644 - err) from err + raise ExtensionError(msg % extname, err) from err - setup = getattr(mod, 'setup', None) + setup: _ExtensionSetupFunc | None = getattr(mod, 'setup', None) if setup is None: diff --git a/sphinx/testing/fixtures.py b/sphinx/testing/fixtures.py -index 0cc4882..f57f709 100644 +index 6e1a122..f3fe743 100644 --- a/sphinx/testing/fixtures.py +++ b/sphinx/testing/fixtures.py -@@ -22,6 +22,7 @@ DEFAULT_ENABLED_MARKERS = [ - 'sphinx(builder, testroot=None, freshenv=False, confoverrides=None, tags=None,' - ' docutilsconf=None, parallel=0): arguments to initialize the sphinx test application.' +@@ -31,6 +31,7 @@ DEFAULT_ENABLED_MARKERS = [ + 'keep_going=False, builddir=None, docutils_conf=None' + '): arguments to initialize the sphinx test application.' ), + 'sphinxcontrib(...): required sphinxcontrib.* extensions', 'test_params(shared_result=...): test parameters.', ] -@@ -67,6 +68,11 @@ def app_params(request: Any, test_params: dict, shared_result: SharedResult, +@@ -80,6 +81,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: @@ -150,32 +151,12 @@ index 0cc4882..f57f709 100644 + # ##### process pytest.mark.sphinx - pargs = {} -diff --git a/tests/test_api_translator.py b/tests/test_api_translator.py -index 9f2bd44..81575b7 100644 ---- a/tests/test_api_translator.py -+++ b/tests/test_api_translator.py -@@ -36,6 +36,7 @@ def test_singlehtml_set_translator_for_singlehtml(app, status, warning): - 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, status, warning): - translator_class = app.builder.get_translator_class() -@@ -43,6 +44,7 @@ def test_pickle_set_translator_for_pickle(app, status, warning): - 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, status, warning): - translator_class = app.builder.get_translator_class() -diff --git a/tests/test_build_html.py b/tests/test_build_html.py -index 07f101d..c512a33 100644 ---- a/tests/test_build_html.py -+++ b/tests/test_build_html.py -@@ -1544,6 +1544,7 @@ def test_html_math_renderer_is_imgmath(app, status, warning): + 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 900846b..664c86e 100644 +--- a/tests/test_builders/test_build_html_maths.py ++++ b/tests/test_builders/test_build_html_maths.py +@@ -20,6 +20,7 @@ def test_html_math_renderer_is_imgmath(app, status, warning): assert app.builder.math_renderer_name == 'imgmath' @@ -183,7 +164,7 @@ index 07f101d..c512a33 100644 @pytest.mark.sphinx('html', testroot='basic', confoverrides={'extensions': ['sphinxcontrib.jsmath', 'sphinx.ext.imgmath']}) -@@ -1564,6 +1565,7 @@ def test_html_math_renderer_is_duplicated2(app, status, warning): +@@ -40,6 +41,7 @@ def test_html_math_renderer_is_duplicated2(app, status, warning): assert app.builder.math_renderer_name == 'imgmath' # The another one is chosen @@ -191,7 +172,7 @@ index 07f101d..c512a33 100644 @pytest.mark.sphinx('html', testroot='basic', confoverrides={'extensions': ['sphinxcontrib.jsmath', 'sphinx.ext.imgmath'], -@@ -1572,6 +1574,7 @@ def test_html_math_renderer_is_chosen(app, status, warning): +@@ -48,6 +50,7 @@ def test_html_math_renderer_is_chosen(app, status, warning): assert app.builder.math_renderer_name == 'imgmath' @@ -199,6 +180,26 @@ index 07f101d..c512a33 100644 @pytest.mark.sphinx('html', testroot='basic', confoverrides={'extensions': ['sphinxcontrib.jsmath', 'sphinx.ext.mathjax'], +diff --git a/tests/test_writers/test_api_translator.py b/tests/test_writers/test_api_translator.py +index 9f2bd44..81575b7 100644 +--- a/tests/test_writers/test_api_translator.py ++++ b/tests/test_writers/test_api_translator.py +@@ -36,6 +36,7 @@ def test_singlehtml_set_translator_for_singlehtml(app, status, warning): + 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, status, warning): + translator_class = app.builder.get_translator_class() +@@ -43,6 +44,7 @@ def test_pickle_set_translator_for_pickle(app, status, warning): + 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, status, warning): + translator_class = app.builder.get_translator_class() -- -2.43.0 +2.44.0 diff --git a/python-sphinx.spec b/python-sphinx.spec index fd0c7e6..1b049b8 100644 --- a/python-sphinx.spec +++ b/python-sphinx.spec @@ -14,14 +14,12 @@ # Build without BuildRequires ImageMagick, to skip imgconverter tests %bcond imagemagick_tests %{undefined rhel} -# Same for filelock -- we don't want it in RHEL just to run a handful of tests here -%bcond filelock_tests %{undefined rhel} # During texlive updates, sometimes the latex environment is unstable %bcond latex_tests 1 Name: python-sphinx -%global general_version 7.2.6 +%global general_version 7.3.7 #global prerel ... %global upstream_version %{general_version}%{?prerel} Version: %{general_version}%{?prerel:~%{prerel}} @@ -38,7 +36,7 @@ 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.diff +Patch: sphinx-test_theming.patch # Make the first party extensions optional # This removes the runtime dependencies on: @@ -56,10 +54,6 @@ Patch: sphinx-test_theming.diff # https://github.com/sphinx-doc/sphinx/pull/11747 Patch: Make-the-first-party-extensions-optional.patch -# Fix the expected test docstring to match output in Python 3.11.7, 3.12.1 and later -# Proposed upstream. -Patch: https://github.com/sphinx-doc/sphinx/pull/11774.patch - BuildArch: noarch BuildRequires: make @@ -154,6 +148,11 @@ the Python docs: %package -n python%{python3_pkgversion}-sphinx Summary: Python documentation generator +# This is a part of test dependencies but it's also needed by Sphinx plugins +# to run their test suites +# https://github.com/sphinx-doc/sphinx/issues/12339 +Requires: python%{python3_pkgversion}-defusedxml + Recommends: graphviz Recommends: ImageMagick @@ -268,23 +267,6 @@ This package contains documentation in the HTML format. rm tests/test_ext_imgconverter.py %endif -%if %{without filelock_tests} -sed -i '/filelock/d' pyproject.toml -rm tests/test_build_linkcheck.py tests/test_ext_intersphinx.py -%endif - -%if %{defined rhel} -# unwanted dependency in RHEL, https://bugzilla.redhat.com/show_bug.cgi?id=1945182 -sed -i '/html5lib/d' pyproject.toml -%endif - -# Sphinx' tests import from each other, this feature is not supported by -# the 'importlib' import mode in pytest. Upstream mitigates this by invoking -# `python -m pytest` rather than `pytest` directly, but in the context of the -# RPM build we explicitly want to test the installed library rather than the -# one from PWD. -# https://github.com/sphinx-doc/sphinx/issues/11740 -sed -i '/"--import-mode=importlib",/d' pyproject.toml %generate_buildrequires %pyproject_buildrequires -r %{?with_tests:-x test} @@ -364,14 +346,13 @@ mkdir %{buildroot}%{python3_sitelib}/sphinxcontrib # 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 -# In RHEL builds, skip tests which use html5lib (excluded above) %pytest \ %if %{defined rhel} - --ignore tests/test_build_html.py \ - --ignore tests/test_build_latex.py \ - --ignore tests/test_build_texinfo.py \ - --ignore tests/test_domain_std.py \ - --ignore tests/test_smartquotes.py \ + --ignore tests/test_builders/test_build_html.py \ + --ignore tests/test_builders/test_build_latex.py \ + --ignore tests/test_builders/test_build_texinfo.py \ + --ignore tests/test_domains/test_domain_std.py \ + --ignore tests/test_markup/test_smartquotes.py \ %endif %if %{without internet} -k "not linkcheck and not test_latex_images and not test_build_latex_doc" \ @@ -381,8 +362,8 @@ mkdir %{buildroot}%{python3_sitelib}/sphinxcontrib %files -n python%{python3_pkgversion}-sphinx -f sphinx.lang -%license LICENSE -%doc AUTHORS CHANGES EXAMPLES README.rst +%license LICENSE.rst +%doc README.rst %{_bindir}/sphinx-* %{python3_sitelib}/sphinx/ %dir %{python3_sitelib}/sphinxcontrib/ @@ -398,7 +379,7 @@ mkdir %{buildroot}%{python3_sitelib}/sphinxcontrib %files doc -%license LICENSE +%license LICENSE.rst %doc html diff --git a/sources b/sources index aaab39a..861235a 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (sphinx-7.2.6.tar.gz) = 9a42e38c3c54429cc008b58892297ade4ccdd67561ee671e42a1fae976955895bb5383d58cb66a4f9f7edd1cc50dc2d1f083efeef036eac9fffc205979d3ccbc +SHA512 (sphinx-7.3.7.tar.gz) = f450eaaa26a0989e9065174e23488a7f647221750238516c5d06d403540eb4277fd480f03857d24acb6b7335458ae4535ad1ad533eff6d3bbba5521d9a6deb14 diff --git a/sphinx-test_theming.diff b/sphinx-test_theming.diff deleted file mode 100644 index 30994a1..0000000 --- a/sphinx-test_theming.diff +++ /dev/null @@ -1,12 +0,0 @@ -diff -ru Sphinx-1.7.6/tests/test_theming.py Sphinx-1.7.6_patched/tests/test_theming.py ---- Sphinx-1.7.6/tests/test_theming.py 2018-07-16 11:24:40.000000000 +0200 -+++ Sphinx-1.7.6_patched/tests/test_theming.py 2018-07-20 15:17:35.049263077 +0200 -@@ -25,7 +25,7 @@ - themes.append('alabaster') - - # 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'] == str(app.srcdir / 'test_theme' / 'test-theme') - assert app.registry.html_themes['ziptheme'] == str(app.srcdir / 'ziptheme.zip') - assert app.registry.html_themes['staticfiles'] == str(app.srcdir / 'test_theme' / 'staticfiles') diff --git a/sphinx-test_theming.patch b/sphinx-test_theming.patch new file mode 100644 index 0000000..c6515f7 --- /dev/null +++ b/sphinx-test_theming.patch @@ -0,0 +1,25 @@ +From 57433d8036ab1e88ad7d6c4c1a45e438f722e276 Mon Sep 17 00:00:00 2001 +From: Karolina Surma +Date: Thu, 25 Apr 2024 16:07:56 +0200 +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 867f8a0..281bb45 100644 +--- a/tests/test_theming/test_theming.py ++++ b/tests/test_theming/test_theming.py +@@ -50,7 +50,7 @@ def test_theme_api(app, status, warning): + ] + + # 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'] == str( + app.srcdir / 'test_theme' / 'test-theme' + ) +-- +2.44.0 +