From e2fb2cffe9fbd57e05627d4cdcd9730f3bd5b9a9 Mon Sep 17 00:00:00 2001 From: Jens Vagelpohl Date: Fri, 24 May 2024 15:53:44 +0200 Subject: [PATCH 1/3] - build Windows wheels on GHA --- .coveragerc | 1 + .github/workflows/tests.yml | 224 +++++++++++++------ .manylinux-install.sh | 16 +- .meta.toml | 17 +- CHANGES.rst | 2 +- MANIFEST.in | 1 - appveyor.yml | 53 ----- src/zope/index/text/tests/test_okapiindex.py | 2 +- tox.ini | 1 + 9 files changed, 173 insertions(+), 144 deletions(-) delete mode 100644 appveyor.yml diff --git a/.coveragerc b/.coveragerc index 523e00d..a2eff9d 100644 --- a/.coveragerc +++ b/.coveragerc @@ -15,6 +15,7 @@ source = [report] show_missing = true precision = 2 +ignore_errors = True exclude_lines = except ImportError: if __name__ == '__main__': diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index ae87e73..fb402eb 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -103,11 +103,16 @@ jobs: - "3.10" - "3.11" - "3.12" - - "3.13.0-alpha - 3.13.0" - os: [ubuntu-20.04, macos-11] + - "3.13" + os: [ubuntu-latest, macos-latest, windows-latest] exclude: - - os: macos-11 + - os: macos-latest + python-version: "3.7" + - os: macos-latest python-version: "pypy-3.10" + include: + - python-version: "3.7" + os: macos-12 steps: - name: checkout @@ -116,39 +121,53 @@ jobs: uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} + allow-prereleases: true ### # Caching. # This actually *restores* a cache and schedules a cleanup action # to save the cache. So it must come before the thing we want to use # the cache. ### - - name: Get pip cache dir - id: pip-cache + - name: Get pip cache dir (default) + id: pip-cache-default + if: ${{ !startsWith(runner.os, 'Windows') }} run: | echo "dir=$(pip cache dir)" >>$GITHUB_OUTPUT - - name: pip cache + - name: Get pip cache dir (Windows) + id: pip-cache-windows + if: ${{ startsWith(runner.os, 'Windows') }} + run: | + echo "dir=$(pip cache dir)" >> $Env:GITHUB_OUTPUT + + - name: pip cache (default) uses: actions/cache@v4 + if: ${{ !startsWith(runner.os, 'Windows') }} with: - path: ${{ steps.pip-cache.outputs.dir }} + path: ${{ steps.pip-cache-default.outputs.dir }} key: ${{ runner.os }}-pip-${{ matrix.python-version }} restore-keys: | ${{ runner.os }}-pip- - - name: Install Build Dependencies (3.13.0-alpha - 3.13.0) - if: matrix.python-version == '3.13.0-alpha - 3.13.0' + - name: pip cache (Windows) + uses: actions/cache@v4 + if: ${{ startsWith(runner.os, 'Windows') }} + with: + path: ${{ steps.pip-cache-windows.outputs.dir }} + key: ${{ runner.os }}-pip-${{ matrix.python-version }} + restore-keys: | + ${{ runner.os }}-pip- + + - name: Install Build Dependencies (3.13) + if: matrix.python-version == '3.13' run: | pip install -U pip - pip install -U setuptools wheel twine - # cffi will probably have no public release until a Python 3.13 beta - # or even RC release, see https://github.com/python-cffi/cffi/issues/23 - echo "cffi @ git+https://github.com/python-cffi/cffi.git@954cab4f889fb019a7f90df153ee1be501495f58" > cffi_constraint.txt - PIP_CONSTRAINT=$PWD/cffi_constraint.txt pip install cffi + pip install -U "setuptools<69" wheel twine - name: Install Build Dependencies - if: matrix.python-version != '3.13.0-alpha - 3.13.0' + if: matrix.python-version != '3.13' run: | pip install -U pip - pip install -U setuptools wheel twine cffi + pip install -U "setuptools<69" wheel twine - name: Build zope.index (macOS x86_64, Python 3.8+) if: > @@ -189,18 +208,15 @@ jobs: python setup.py build_ext -i python setup.py bdist_wheel - - name: Install zope.index and dependencies (3.13.0-alpha - 3.13.0) - if: matrix.python-version == '3.13.0-alpha - 3.13.0' + - name: Install zope.index and dependencies (3.13) + if: matrix.python-version == '3.13' run: | # Install to collect dependencies into the (pip) cache. - # cffi will probably have no public release until a Python 3.13 beta - # or even RC release, see https://github.com/python-cffi/cffi/issues/23 - echo "cffi @ git+https://github.com/python-cffi/cffi.git@954cab4f889fb019a7f90df153ee1be501495f58" > cffi_constraint.txt # Use "--pre" here because dependencies with support for this future # Python release may only be available as pre-releases - PIP_CONSTRAINT=$PWD/cffi_constraint.txt pip install --pre .[test] + pip install --pre .[test] - name: Install zope.index and dependencies - if: matrix.python-version != '3.13.0-alpha - 3.13.0' + if: matrix.python-version != '3.13' run: | # Install to collect dependencies into the (pip) cache. pip install .[test] @@ -235,16 +251,16 @@ jobs: with: name: zope.index-${{ runner.os }}-${{ matrix.python-version }}.whl path: dist/*whl - - name: Publish package to PyPI (mac) - # We cannot 'uses: pypa/gh-action-pypi-publish@v1.4.1' because - # that's apparently a container action, and those don't run on - # the Mac. + - name: Publish package to PyPI (Non-Linux) + # We cannot use pypa/gh-action-pypi-publish because that + # is a container action, and those don't run on macOS + # or Windows GHA runners. if: > github.event_name == 'push' && startsWith(github.ref, 'refs/tags') - && startsWith(runner.os, 'Mac') + && !startsWith(runner.os, 'Linux') && !startsWith(matrix.python-version, 'pypy') - && !startsWith(matrix.python-version, '3.13.0-alpha - 3.13.0') + && !startsWith(matrix.python-version, '3.13') env: TWINE_PASSWORD: ${{ secrets.TWINE_PASSWORD }} run: | @@ -264,11 +280,16 @@ jobs: - "3.10" - "3.11" - "3.12" - - "3.13.0-alpha - 3.13.0" - os: [ubuntu-20.04, macos-11] + - "3.13" + os: [ubuntu-latest, macos-latest, windows-latest] exclude: - - os: macos-11 + - os: macos-latest + python-version: "3.7" + - os: macos-latest python-version: "pypy-3.10" + include: + - python-version: "3.7" + os: macos-12 steps: - name: checkout @@ -277,21 +298,39 @@ jobs: uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} + allow-prereleases: true ### # Caching. # This actually *restores* a cache and schedules a cleanup action # to save the cache. So it must come before the thing we want to use # the cache. ### - - name: Get pip cache dir - id: pip-cache + - name: Get pip cache dir (default) + id: pip-cache-default + if: ${{ !startsWith(runner.os, 'Windows') }} run: | echo "dir=$(pip cache dir)" >>$GITHUB_OUTPUT - - name: pip cache + - name: Get pip cache dir (Windows) + id: pip-cache-windows + if: ${{ startsWith(runner.os, 'Windows') }} + run: | + echo "dir=$(pip cache dir)" >> $Env:GITHUB_OUTPUT + + - name: pip cache (default) uses: actions/cache@v4 + if: ${{ !startsWith(runner.os, 'Windows') }} with: - path: ${{ steps.pip-cache.outputs.dir }} + path: ${{ steps.pip-cache-default.outputs.dir }} + key: ${{ runner.os }}-pip-${{ matrix.python-version }} + restore-keys: | + ${{ runner.os }}-pip- + + - name: pip cache (Windows) + uses: actions/cache@v4 + if: ${{ startsWith(runner.os, 'Windows') }} + with: + path: ${{ steps.pip-cache-windows.outputs.dir }} key: ${{ runner.os }}-pip-${{ matrix.python-version }} restore-keys: | ${{ runner.os }}-pip- @@ -301,14 +340,11 @@ jobs: with: name: zope.index-${{ runner.os }}-${{ matrix.python-version }}.whl path: dist/ - - name: Install zope.index 3.13.0-alpha - 3.13.0 - if: ${{ startsWith(matrix.python-version, '3.13.0-alpha - 3.13.0') }} + - name: Install zope.index 3.13 ${{ matrix.python-version }} + if: matrix.python-version == '3.13' run: | - pip install -U wheel setuptools - # cffi will probably have no public release until a beta or even RC - # version of Python 3.13, see https://github.com/python-cffi/cffi/issues/23 - echo 'cffi @ git+https://github.com/python-cffi/cffi.git@954cab4f889fb019a7f90df153ee1be501495f58 ; platform_python_implementation == "CPython"' > cffi_constraint.txt - # coverage has a wheel on PyPI for a future python version which is + pip install -U wheel "setuptools<69" + # coverage might have a wheel on PyPI for a future python version which is # not ABI compatible with the current one, so build it from sdist: pip install -U --no-binary :all: coverage # Unzip into src/ so that testrunner can find the .so files @@ -317,11 +353,11 @@ jobs: unzip -n dist/zope.index-*whl -d src # Use "--pre" here because dependencies with support for this future # Python release may only be available as pre-releases - PIP_CONSTRAINT=$PWD/cffi_constraint.txt pip install --pre -U -e .[test] + pip install --pre -U -e .[test] - name: Install zope.index - if: ${{ !startsWith(matrix.python-version, '3.13.0-alpha - 3.13.0') }} + if: matrix.python-version != '3.13' run: | - pip install -U wheel setuptools + pip install -U wheel "setuptools<69" pip install -U coverage pip install -U 'cffi; platform_python_implementation == "CPython"' # Unzip into src/ so that testrunner can find the .so files @@ -336,7 +372,9 @@ jobs: - name: Run tests without C extensions run: # coverage makes PyPy run about 3x slower! - PURE_PYTHON=1 python -m coverage run -p -m zope.testrunner --test-path=src --auto-color --auto-progress + python -m coverage run -p -m zope.testrunner --test-path=src --auto-color --auto-progress + env: + PURE_PYTHON: 1 - name: Report Coverage run: | coverage combine @@ -350,7 +388,7 @@ jobs: coveralls_finish: needs: test - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - name: Coveralls Finished uses: AndreMiras/coveralls-python-action@develop @@ -363,7 +401,7 @@ jobs: strategy: matrix: python-version: ["3.9"] - os: [ubuntu-20.04] + os: [ubuntu-latest] steps: - name: checkout @@ -372,21 +410,39 @@ jobs: uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} + allow-prereleases: true ### # Caching. # This actually *restores* a cache and schedules a cleanup action # to save the cache. So it must come before the thing we want to use # the cache. ### - - name: Get pip cache dir - id: pip-cache + - name: Get pip cache dir (default) + id: pip-cache-default + if: ${{ !startsWith(runner.os, 'Windows') }} run: | echo "dir=$(pip cache dir)" >>$GITHUB_OUTPUT - - name: pip cache + - name: Get pip cache dir (Windows) + id: pip-cache-windows + if: ${{ startsWith(runner.os, 'Windows') }} + run: | + echo "dir=$(pip cache dir)" >> $Env:GITHUB_OUTPUT + + - name: pip cache (default) + uses: actions/cache@v4 + if: ${{ !startsWith(runner.os, 'Windows') }} + with: + path: ${{ steps.pip-cache-default.outputs.dir }} + key: ${{ runner.os }}-pip-${{ matrix.python-version }} + restore-keys: | + ${{ runner.os }}-pip- + + - name: pip cache (Windows) uses: actions/cache@v4 + if: ${{ startsWith(runner.os, 'Windows') }} with: - path: ${{ steps.pip-cache.outputs.dir }} + path: ${{ steps.pip-cache-windows.outputs.dir }} key: ${{ runner.os }}-pip-${{ matrix.python-version }} restore-keys: | ${{ runner.os }}-pip- @@ -414,7 +470,7 @@ jobs: strategy: matrix: python-version: ["3.9"] - os: [ubuntu-20.04] + os: [ubuntu-latest] steps: - name: checkout @@ -423,21 +479,39 @@ jobs: uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} + allow-prereleases: true ### # Caching. # This actually *restores* a cache and schedules a cleanup action # to save the cache. So it must come before the thing we want to use # the cache. ### - - name: Get pip cache dir - id: pip-cache + - name: Get pip cache dir (default) + id: pip-cache-default + if: ${{ !startsWith(runner.os, 'Windows') }} run: | echo "dir=$(pip cache dir)" >>$GITHUB_OUTPUT - - name: pip cache + - name: Get pip cache dir (Windows) + id: pip-cache-windows + if: ${{ startsWith(runner.os, 'Windows') }} + run: | + echo "dir=$(pip cache dir)" >> $Env:GITHUB_OUTPUT + + - name: pip cache (default) uses: actions/cache@v4 + if: ${{ !startsWith(runner.os, 'Windows') }} with: - path: ${{ steps.pip-cache.outputs.dir }} + path: ${{ steps.pip-cache-default.outputs.dir }} + key: ${{ runner.os }}-pip-${{ matrix.python-version }} + restore-keys: | + ${{ runner.os }}-pip- + + - name: pip cache (Windows) + uses: actions/cache@v4 + if: ${{ startsWith(runner.os, 'Windows') }} + with: + path: ${{ steps.pip-cache-windows.outputs.dir }} key: ${{ runner.os }}-pip-${{ matrix.python-version }} restore-keys: | ${{ runner.os }}-pip- @@ -461,7 +535,7 @@ jobs: # python -m pylint --limit-inference-results=1 --rcfile=.pylintrc zope.index -f parseable -r n manylinux: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name # We use a regular Python matrix entry to share as much code as possible. strategy: @@ -476,21 +550,39 @@ jobs: uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} + allow-prereleases: true ### # Caching. # This actually *restores* a cache and schedules a cleanup action # to save the cache. So it must come before the thing we want to use # the cache. ### - - name: Get pip cache dir - id: pip-cache + - name: Get pip cache dir (default) + id: pip-cache-default + if: ${{ !startsWith(runner.os, 'Windows') }} run: | echo "dir=$(pip cache dir)" >>$GITHUB_OUTPUT - - name: pip cache + - name: Get pip cache dir (Windows) + id: pip-cache-windows + if: ${{ startsWith(runner.os, 'Windows') }} + run: | + echo "dir=$(pip cache dir)" >> $Env:GITHUB_OUTPUT + + - name: pip cache (default) + uses: actions/cache@v4 + if: ${{ !startsWith(runner.os, 'Windows') }} + with: + path: ${{ steps.pip-cache-default.outputs.dir }} + key: ${{ runner.os }}-pip_manylinux-${{ matrix.image }}-${{ matrix.python-version }} + restore-keys: | + ${{ runner.os }}-pip- + + - name: pip cache (Windows) uses: actions/cache@v4 + if: ${{ startsWith(runner.os, 'Windows') }} with: - path: ${{ steps.pip-cache.outputs.dir }} + path: ${{ steps.pip-cache-windows.outputs.dir }} key: ${{ runner.os }}-pip_manylinux-${{ matrix.image }}-${{ matrix.python-version }} restore-keys: | ${{ runner.os }}-pip- @@ -528,7 +620,7 @@ jobs: path: wheelhouse/*whl name: manylinux_${{ matrix.image }}_wheels.zip - name: Restore pip cache permissions - run: sudo chown -R $(whoami) ${{ steps.pip-cache.outputs.dir }} + run: sudo chown -R $(whoami) ${{ steps.pip-cache-default.outputs.dir }} - name: Publish package to PyPI uses: pypa/gh-action-pypi-publish@release/v1 if: > @@ -537,5 +629,5 @@ jobs: with: user: __token__ password: ${{ secrets.TWINE_PASSWORD }} - skip_existing: true - packages_dir: wheelhouse/ + skip-existing: true + packages-dir: wheelhouse/ diff --git a/.manylinux-install.sh b/.manylinux-install.sh index 725b49c..83722fd 100755 --- a/.manylinux-install.sh +++ b/.manylinux-install.sh @@ -42,14 +42,14 @@ tox_env_map() { # Compile wheels for PYBIN in /opt/python/*/bin; do if \ - [[ "${PYBIN}" == *"cp313"* ]] || \ - [[ "${PYBIN}" == *"cp311"* ]] || \ - [[ "${PYBIN}" == *"cp312"* ]] || \ - [[ "${PYBIN}" == *"cp37"* ]] || \ - [[ "${PYBIN}" == *"cp38"* ]] || \ - [[ "${PYBIN}" == *"cp39"* ]] || \ - [[ "${PYBIN}" == *"cp310"* ]] ; then - if [[ "${PYBIN}" == *"cp313"* ]] ; then + [[ "${PYBIN}" == *"cp313/"* ]] || \ + [[ "${PYBIN}" == *"cp311/"* ]] || \ + [[ "${PYBIN}" == *"cp312/"* ]] || \ + [[ "${PYBIN}" == *"cp37/"* ]] || \ + [[ "${PYBIN}" == *"cp38/"* ]] || \ + [[ "${PYBIN}" == *"cp39/"* ]] || \ + [[ "${PYBIN}" == *"cp310/"* ]] ; then + if [[ "${PYBIN}" == *"cp313/"* ]] ; then "${PYBIN}/pip" install --pre -e /io/ "${PYBIN}/pip" wheel /io/ --pre -w wheelhouse/ else diff --git a/.meta.toml b/.meta.toml index 6566fc1..992030e 100644 --- a/.meta.toml +++ b/.meta.toml @@ -2,11 +2,11 @@ # https://github.com/zopefoundation/meta/tree/master/config/c-code [meta] template = "c-code" -commit-id = "1351c95d" +commit-id = "03c8e084" [python] -with-appveyor = true -with-windows = false +with-appveyor = false +with-windows = true with-pypy = true with-docs = true with-sphinx-doctests = true @@ -29,14 +29,3 @@ additional-rules = [ "recursive-include docs *.bat", "recursive-include src *.rst", ] - -[appveyor] -global-env-vars = [ - "# Currently the builds use @mgedmin's Appveyor account. The PyPI token", - "# belongs to zope.wheelbuilder, which is managed by @mgedmin and @dataflake.", - "", - "global:", - " TWINE_USERNAME: __token__", - " TWINE_PASSWORD:", - " secure: aoZC/+rvJKg8B5GMGIxd1VTV3PcyYlv24IVlfMnG7u6WiuD8XHkwbNCE9e6o7me9uvONYgQBwedB0w3pEOjSYCZnGLHD8wPpSyvU6mJ/sm5zefc/k4/MwNE1QHlT4+e+W7YnjXZCZYCTihoGVxCaCOpttBrqt2ccNpXlfm9rJM1/AXL5e5TvahSnRtV4HfEt3BEtbO3GGrqXVa6wk+T4f2ywIKMmZ+xmav9eslRCnI6pX8dWs6Ulw8fr5QUycZY+ARTXyPYz4iOrNSVzs4uIQg==", - ] diff --git a/CHANGES.rst b/CHANGES.rst index 1791eb1..1e76e1a 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -5,7 +5,7 @@ 6.2 (unreleased) ================ -- Nothing changed yet. +- Build Windows wheels on GHA. 6.1 (2024-02-02) diff --git a/MANIFEST.in b/MANIFEST.in index 6c1f54b..33bad7b 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -5,7 +5,6 @@ include *.rst include *.txt include buildout.cfg include tox.ini -include appveyor.yml include .coveragerc recursive-include docs *.py diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index 5a7afc3..0000000 --- a/appveyor.yml +++ /dev/null @@ -1,53 +0,0 @@ -# Generated from: -# https://github.com/zopefoundation/meta/tree/master/config/c-code -environment: - # Currently the builds use @mgedmin's Appveyor account. The PyPI token - # belongs to zope.wheelbuilder, which is managed by @mgedmin and @dataflake. - - global: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: - secure: aoZC/+rvJKg8B5GMGIxd1VTV3PcyYlv24IVlfMnG7u6WiuD8XHkwbNCE9e6o7me9uvONYgQBwedB0w3pEOjSYCZnGLHD8wPpSyvU6mJ/sm5zefc/k4/MwNE1QHlT4+e+W7YnjXZCZYCTihoGVxCaCOpttBrqt2ccNpXlfm9rJM1/AXL5e5TvahSnRtV4HfEt3BEtbO3GGrqXVa6wk+T4f2ywIKMmZ+xmav9eslRCnI6pX8dWs6Ulw8fr5QUycZY+ARTXyPYz4iOrNSVzs4uIQg== - - matrix: - - python: 37-x64 - - python: 38-x64 - - python: 39-x64 - - python: 310-x64 - - python: 311-x64 - - python: 312-x64 - # `multibuild` cannot install non-final versions as they are not on - # ftp.python.org, so we skip Python 3.13 until its final release: - # - python: 313-x64 - -install: - - "SET PYTHONVERSION=%PYTHON%" - - "SET PATH=C:\\Python%PYTHON%;c:\\Python%PYTHON%\\scripts;%PATH%" - - ps: | - $env:PYTHON = "C:\\Python${env:PYTHON}" - if (-not (Test-Path $env:PYTHON)) { - curl -o install_python.ps1 https://raw.githubusercontent.com/matthew-brett/multibuild/11a389d78892cf90addac8f69433d5e22bfa422a/install_python.ps1 - .\install_python.ps1 - } - - ps: if (-not (Test-Path $env:PYTHON)) { throw "No $env:PYTHON" } - - echo "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 > "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\vcvars64.bat" - - python -m pip install -U pip - - pip install -U setuptools wheel - - pip install -U -e .[test] - -matrix: - fast_finish: true - -build_script: - - python -W ignore setup.py -q bdist_wheel - -test_script: - - zope-testrunner --test-path=src -artifacts: - - path: 'dist\*.whl' - name: wheel - -deploy_script: - - ps: if ($env:APPVEYOR_REPO_TAG -eq $TRUE) { pip install twine; twine upload --skip-existing dist\*.whl } - -deploy: on diff --git a/src/zope/index/text/tests/test_okapiindex.py b/src/zope/index/text/tests/test_okapiindex.py index 06ff892..02e5319 100644 --- a/src/zope/index/text/tests/test_okapiindex.py +++ b/src/zope/index/text/tests/test_okapiindex.py @@ -15,8 +15,8 @@ """ import unittest -from zope.index.text.okapiindex import PURE_PYTHON import zope.index.text.baseindex +from zope.index.text.okapiindex import PURE_PYTHON # pylint:disable=protected-access diff --git a/tox.ini b/tox.ini index f96eb9f..4f2d222 100644 --- a/tox.ini +++ b/tox.ini @@ -19,6 +19,7 @@ envlist = usedevelop = true pip_pre = py313: true deps = + setuptools < 69 py37: urllib3 < 2 Sphinx setenv = From 4c599fd49a064de93bbcd9b0427bc801b9aa642a Mon Sep 17 00:00:00 2001 From: Jens Vagelpohl Date: Fri, 24 May 2024 16:00:07 +0200 Subject: [PATCH 2/3] - require cffi --- .github/workflows/tests.yml | 5 +++++ .meta.toml | 3 +++ 2 files changed, 8 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index fb402eb..1adcb12 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -163,11 +163,14 @@ jobs: run: | pip install -U pip pip install -U "setuptools<69" wheel twine + # Remove this hack once 'cffi' has a release supporting Python 3.13. + pip install -e "git+https://github.com/python-cffi/cffi.git#egg=cffi" - name: Install Build Dependencies if: matrix.python-version != '3.13' run: | pip install -U pip pip install -U "setuptools<69" wheel twine + pip install cffi - name: Build zope.index (macOS x86_64, Python 3.8+) if: > @@ -344,6 +347,8 @@ jobs: if: matrix.python-version == '3.13' run: | pip install -U wheel "setuptools<69" + # Remove this hack once 'cffi' has a release supporting Python 3.13. + pip install -e "git+https://github.com/python-cffi/cffi.git#egg=cffi" # coverage might have a wheel on PyPI for a future python version which is # not ABI compatible with the current one, so build it from sdist: pip install -U --no-binary :all: coverage diff --git a/.meta.toml b/.meta.toml index 992030e..75b6808 100644 --- a/.meta.toml +++ b/.meta.toml @@ -19,6 +19,9 @@ testenv-deps = [ "py37: urllib3 < 2", ] +[c-code] +require-cffi = true + [coverage] fail-under = 99 From 68b1aec524b359123afddb39a5e2f3e9da399ec9 Mon Sep 17 00:00:00 2001 From: Jens Vagelpohl Date: Sat, 25 May 2024 10:48:41 +0200 Subject: [PATCH 3/3] - fake change to re-run tests --- README.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/README.rst b/README.rst index 4d55777..1bda828 100644 --- a/README.rst +++ b/README.rst @@ -20,6 +20,7 @@ :target: https://zopeindex.readthedocs.org/en/latest/ :alt: Documentation Status + The ``zope.index`` package provides several indices for the Zope catalog. These include: