Search code examples
python-sphinxdocutilsapple-help

sphinxcontrib.applehelp breaking sphinx builds with sphinx version less than 5.0


In early January 2024, all my sphinx builds failed, with this message when I did a make html:

The sphinxcontrib.applehelp extension used by this project needs at least Sphinx v5.0; it therefore cannot be built with this version.

Can someone explain what caused this apparent dependency on >= 5.0? Is sphinxcontrib.applehelp part of the standard Sphinx distribution, and thus, does this situation mean Sphinx versions less than 5 are not usable?

What is the best workaround? Is there a way to build without applehelp?

Obviously one can just bump up the Sphinx version, but other items (like, in my case, the sphinx_rtd_theme) do not always work with arbitrary Sphinx versions.

I tried using this combination:

    docutils==0.16
    sphinx==5.3
    sphinx_rtd_theme==1.0.0

This builds but produces HTML sites without working full-text search, which I suspect is a sphinx_rtd_theme problem.

"Working" means a couple of critical things:

  • The usual RST markup for bullets produces proper bullets.
  • The search bar displayed by sphinx_rtd_theme works properly (displaying hits for search terms).

Before this new dependency on ≥ 5.0 popped up, the combinations

sphinx==4.5, sphinx_rtd_theme==1.0.0 

and

sphinx==3.5.4, sphinx_rtd_theme==1.0.0, and jinja2==3.0.3

were working for me in different builds.


Solution

  • I had the same problem with Plone 6 Documentation. Until I can upgrade to Sphinx >=5, I have these pins in place.

    sphinxcontrib-applehelp==1.0.4
    sphinxcontrib-devhelp==1.0.2
    sphinxcontrib-htmlhelp==2.0.1
    sphinxcontrib-qthelp==1.0.3
    sphinxcontrib-serializinghtml==1.1.5
    

    Sphinx does not do a good job of documenting what changes in these dependencies, and which versions of Sphinx are supported. So I used our GitHub Workflow history to find the last successful build, where I output all installed packages and versions. You could also use a pip freeze step to make it more legible.