From cdf6f0300481b5c137837cec3547f21805f1881a Mon Sep 17 00:00:00 2001 From: Ross Barnowski Date: Tue, 12 Apr 2022 13:10:32 -0700 Subject: [PATCH 1/3] Add runtime sphinx/jinja version checker. --- numpydoc/__init__.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/numpydoc/__init__.py b/numpydoc/__init__.py index cbe70e2e..508591d8 100644 --- a/numpydoc/__init__.py +++ b/numpydoc/__init__.py @@ -5,6 +5,31 @@ __version__ = '1.2.2.dev0' +def _verify_sphinx_jinja(): + """Ensure sphinx and jinja versions are compatible. + + Jinja2>=3.1 requires Sphinx>=4.0.2. Raises exception if this condition is + not met. + + TODO: This check can be removed when the minimum supported sphinx version + for numpydoc sphinx>=4.0.2 + """ + import sphinx, jinja2 + from packaging import version + + if version.parse(sphinx.__version__) <= version.parse("4.0.2"): + if version.parse(jinja2.__version__) >= version.parse("3.1"): + from sphinx.errors import VersionRequirementError + raise VersionRequirementError( + "\n\nSphinx<4.0.2 is incompatible with Jinja2>=3.1.\n" + "If you wish to continue using sphinx<4.0.2 you need to pin " + "Jinja2<3.1." + ) + + +_verify_sphinx_jinja() + + def setup(app, *args, **kwargs): from .numpydoc import setup return setup(app, *args, **kwargs) From d2807379d7d46c81304fac583e16db1cdbf550ba Mon Sep 17 00:00:00 2001 From: Ross Barnowski Date: Tue, 12 Apr 2022 13:12:28 -0700 Subject: [PATCH 2/3] Remove jinja2 pin. --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 7e0d1ecd..4b946e0a 100644 --- a/setup.py +++ b/setup.py @@ -43,7 +43,7 @@ def read(fname): author_email="pav@iki.fi", url="https://numpydoc.readthedocs.io", license="BSD", - install_requires=["sphinx>=1.8", 'Jinja2>=2.10,<3.1'], + install_requires=["sphinx>=1.8", 'Jinja2>=2.10'], python_requires=">=3.7", extras_require={ "testing": [ From 9d5bb8f126cf9602cf32699c4f705fd2e6db9c12 Mon Sep 17 00:00:00 2001 From: Ross Barnowski Date: Tue, 12 Apr 2022 13:34:24 -0700 Subject: [PATCH 3/3] modify CI to account for removed pin. --- .github/workflows/test.yml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1e0c0d0a..48180864 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,16 +23,20 @@ jobs: python-version: ${{ matrix.python-version }} - name: Setup environment - run: | - python -m venv venv - source venv/bin/activate - - - name: Install run: | python -m pip install --upgrade pip wheel setuptools python -m pip install -r requirements/test.txt -r doc/requirements.txt python -m pip install codecov python -m pip install ${{ matrix.sphinx-version }} + python -m pip list + + - name: Downgrade Jinja2 for sphinx<4 + if: (${{ matrix.sphinx-version }} == 'sphinx==1.8.0') || + (${{ matrix.sphinx-version }} == 'sphinx==2.1') + run: python -m pip install jinja2==3.0.3 + + - name: Install + run: | python -m pip install . pip list