More strict policy for Python version support?

Skip to first unread message

Juan Luis Cano Rodríguez

Jun 21, 2021, 2:57:13 AMJun 21
Dear Sphinx developers,

I see that Sphinx 4.0 dropped support for Python 3.5 because it became EOL on 2020-09-13 (see Now that CPython releases a new version every 12 months, instead of the previous 18 months cadence (PEP 602), I wonder if Sphinx should adopt a more strict policy for Python version support.

An example of that is NumPy, which specifies a time window of 42 months in NEP 29. They considered supporting all CPython supported versions, but discarded that option:

The CPython supported versions of Python are listed in the Python Developers Guide and the Python PEPs. Supporting these is a very clear and conservative approach. However, it means that there exists a four year lag between when a new features is introduced into the language and when a project is able to use it.

Another example is Django, which states:

Typically, we will support a Python version up to and including the first Django LTS release whose security support ends after security support for that version of Python ends. For example, Python 3.3 security support ended September 2017 and Django 1.8 LTS security support ended April 2018. Therefore Django 1.8 is the last version to support Python 3.3.

However, this one is more difficult to translate to Sphinx, since there is no such thing as an LTS release.

Given that:
  • The release cadence of CPython has accelerated,
  • Sphinx has fewer developer resources than bigger projects like NumPy or Django,
  • Dropping old Python versions may help the maintainability of Sphinx, by leveraging new features of the language and reducing the test matrix,
  • In principle, there is no reason for users to build their documentation with their _oldest_ supported CPython version, rather than any other _newer_ version,

Would it be reasonable to have a narrower Python version support window in Sphinx?

My understanding is that Sphinx 4.x will keep support for Python 3.6+ (please correct me if I'm wrong), which EOLs on 2021-12 (six months from now). This would mean announcing the new policy for Sphinx 5.x (which would, I assume, support Python 3.7+, EOL 2023-06) and start applying it for Sphinx 5.1+ or Sphinx 6+ onwards.

Looking forward to hearing your thoughts.

Read the Docs

Komiya Takeshi

Jun 29, 2021, 9:41:05 AMJun 29

I dropped the py35 support on the 4.0 release because Ubuntu 16.04 became EOL this April. It's not related to the EOL of Python itself.
Therefore, python3.6 (and python3.7) has been supported until 2023 Mar.

I'd forgotten why we've adopted the rule. But it's reasonable for user support because the users can install the latest Sphinx if they use Ubuntu LTS (or a similar well-maintained distro).

Unfortunately, there is no mention of this rule on our docs. So it's nice to define it explicitly.

Takeshi KOMIYA

2021年6月21日(月) 15:57 Juan Luis Cano Rodríguez <>:
You received this message because you are subscribed to the Google Groups "sphinx-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
To view this discussion on the web, visit

Juan Luis Cano Rodríguez

Jul 1, 2021, 2:20:05 PMJul 1

Thanks for the clarification! I have sent a pull request documenting the policy:

Read the Docs

Reply all
Reply to author
0 new messages