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/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")) 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]