Repository: Chilipp/autodocsumm (language: python)

Issue:
Support sphinx v8
Hi,

this package pins sphinx to version `>= 2.2, < 8.0`. However, version 8.0 was recently released


Discussion / hints:

Fix patch:
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..637f8c3
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,40 @@
+# This workflow will install Python dependencies, run tests and lint with a single version of Python
+# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
+
+name: Tests
+
+on:
+  workflow_call:
+    inputs:
+      python-version:
+        required: true
+        type: string
+      extra-requirements:
+        required: false
+        type: string
+
+jobs:
+  build:
+
+    runs-on: ubuntu-latest
+
+    steps:
+    - uses: actions/checkout@v2
+    - name: Set up Python ${{ inputs.python-version }}
+      uses: actions/setup-python@v2
+      with:
+        python-version: ${{ inputs.python-version }}
+    - name: Display Python version
+      run: python -c "import sys; print(sys.version)"
+    - name: Install dependencies
+      run: |
+        python -m pip install --upgrade pip
+        pip install pytest pytest-cov codecov beautifulsoup4 ${{ inputs.extra-requirements }} -e .
+    - name: Test with pytest
+      run: |
+        pytest --cov=autodocsumm --cov-report=xml tests
+    - name: Upload codecov
+      env:
+        CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
+      run: |
+        codecov
diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml
index 017ff93..9f40900 100644
--- a/.github/workflows/python-app.yml
+++ b/.github/workflows/python-app.yml
@@ -8,62 +8,98 @@ on:
   pull_request:
 
 jobs:
-  build:
 
-    runs-on: ubuntu-latest
+  build-sphinx-80plus:
+    name: Build
+    strategy:
+      fail-fast: false
+      matrix:
+        python-version: [ "3.10", "3.11", "3.12" ]
+        sphinx-version: [
+          "8.0.*", "8.*"  # 8.0.x and latest
+        ]
+    uses: ./.github/workflows/build.yml
+    with:
+      python-version: ${{ matrix.python-version }}
+      extra-requirements: '\
+        "sphinx==${{ matrix.sphinx-version }}"'
+
+
+  build-legacy-sphinx-45plus:
+    name: Build
 
     strategy:
+      fail-fast: false
       matrix:
-        python-version: ["3.8", "3.9"]
+        python-version: [ "3.8", "3.9", "3.10", "3.11", "3.12" ]
         sphinx-version: [
-          "7.0.*", "7.1.*", "7.2.*", 
-          "6.0.*",
-          "5.0.*",
-          "4.5", "4.4", "4.3", "4.2", "4.1", "4.0.*",
-          "3.5.*", "3.4.*", "3.2.*",  "3.1.*", "3.0.*",
+          "7.0.*",  # possible range: 7.0.0 - 7.4.7
+          "6.0.*",  # possible range: 6.0.0 - 6.2.1
+          "5.0.*",  # possible range: 5.0.0 - 5.3.0
+          "4.5.*"   # possible range: 4.5.0, also latest that supports py3.8
         ]
         include:
-          - python-version: "3.7"
-            sphinx-version: ""
-          - python-version: "3.7"
-            sphinx-version: "3.5"
-          - python-version: "3.10"
-            sphinx-version: ""
-          - python-version: "3.10"
-            sphinx-version: "4.5"
-          - python-version: "3.11"
-            sphinx-version: ""
-          - python-version: "3.11"
-            sphinx-version: "4.5"
-        exclude:
-          - python-version: "3.8"
-            sphinx-version: "7.2.*"
+          - python-version: "3.9"
+            sphinx-version: "7.2.*"  # latest version that supports py3.9
+    uses: ./.github/workflows/build.yml
+    with:
+      python-version: ${{ matrix.python-version }}
+      extra-requirements: '\
+        "sphinx==${{ matrix.sphinx-version }}"
+        "sphinxcontrib-applehelp<1.0.8"
+        "sphinxcontrib-devhelp<1.0.6"
+        "sphinxcontrib-htmlhelp<2.0.5"
+        "sphinxcontrib-jsmath<1.0.1"
+        "sphinxcontrib-qthelp<1.0.7"
+        "sphinxcontrib-serializinghtml<1.1.10"'
+
 
-    steps:
-    - uses: actions/checkout@v2
-    - name: Set up Python ${{ matrix.python-version }}
-      uses: actions/setup-python@v2
-      with:
-        python-version: ${{ matrix.python-version }}
-    - name: Display Python version
-      run: python -c "import sys; print(sys.version)"
-    - name: Install dependencies
-      env:
-        SPHINX_VERSION: ${{ matrix.sphinx-version }}
-      run: |
-        python -m pip install --upgrade pip
-        SPHINX=Sphinx
-        JINJA2=jinja2
-        if [[ $SPHINX_VERSION != "" ]]; then
-          SPHINX="${SPHINX}==${SPHINX_VERSION}";
-          JINJA2="${JINJA2}<3.1";
-        fi
-        pip install pytest pytest-cov codecov "${SPHINX}" "${JINJA2}" beautifulsoup4 -e .
-    - name: Test with pytest
-      run: |
-        pytest --cov=autodocsumm --cov-report=xml tests
-    - name: Upload codecov
-      env:
-        CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
-      run: |
-        codecov
+  build-legacy-sphinx-40plus:
+    name: Build
+
+    strategy:
+      fail-fast: false
+      matrix:
+        python-version: [ "3.8", "3.9" ]
+        sphinx-version: [
+          "4.0.*"  # possible range: 4.0.0 - 4.4.0
+        ]
+    uses: ./.github/workflows/build.yml
+    with:
+      python-version: ${{ matrix.python-version }}
+      extra-requirements: '\
+        "sphinx==${{ matrix.sphinx-version }}"
+        "sphinxcontrib-applehelp<1.0.8"
+        "sphinxcontrib-devhelp<1.0.6"
+        "sphinxcontrib-htmlhelp<2.0.5"
+        "sphinxcontrib-jsmath<1.0.1"
+        "sphinxcontrib-qthelp<1.0.7"
+        "sphinxcontrib-serializinghtml<1.1.10"'
+
+
+  build-legacy-sphinx-30plus:
+    name: Build
+
+    strategy:
+      fail-fast: false
+      matrix:
+        python-version: [ "3.7", "3.8", "3.9" ]
+        sphinx-version: [
+          "3.0.*",  # possible range: 3.0.0 - 3.5.4
+        ]
+        include:
+          - python-version: "3.7"
+            sphinx-version: "3.5.*"  # latest version that supports py3.7
+    uses: ./.github/workflows/build.yml
+    with:
+      python-version: ${{ matrix.python-version }}
+      extra-requirements: '\
+        "sphinx==${{ matrix.sphinx-version }}"
+        "jinja2<3.1"
+        "alabaster<0.7.14"
+        "sphinxcontrib-applehelp<1.0.8"
+        "sphinxcontrib-devhelp<1.0.6"
+        "sphinxcontrib-htmlhelp<2.0.5"
+        "sphinxcontrib-jsmath<1.0.1"
+        "sphinxcontrib-qthelp<1.0.7"
+        "sphinxcontrib-serializinghtml<1.1.10"'
diff --git a/pyproject.toml b/pyproject.toml
index ed77240..2d1c75d 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -25,12 +25,13 @@ classifiers = [
     'Programming Language :: Python :: 3.9',
     'Programming Language :: Python :: 3.10',
     'Programming Language :: Python :: 3.11',
+    'Programming Language :: Python :: 3.12',
     'Operating System :: OS Independent',
 ]
 
 requires-python = '>= 3.7'
 dependencies = [
-    'Sphinx >= 2.2, < 8.0',
+    'Sphinx >= 2.2, < 9.0',
 ]
 
 [project.urls]


Test patch:
diff --git a/conftest.py b/conftest.py
index 06f8759..1b56730 100644
--- a/conftest.py
+++ b/conftest.py
@@ -1,13 +1,17 @@
 import os.path as osp
-import sys
 import pytest
+import sphinx
+import sys
+from packaging.version import Version
 
-from sphinx.testing.path import path
+if Version(sphinx.__version__) < Version("8.0.0"):
+    from sphinx.testing.path import path
+else:
+    from pathlib import Path as path
 
 pytest_plugins = 'sphinx.testing.fixtures'
 
 
-
 sphinx_supp = osp.abspath(osp.join(osp.dirname(__file__), "tests"))