diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c14bb2b93568..df02233dad5d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -51,6 +51,11 @@ jobs: requirements: edge database: postgresql experimental: true + # Python pre-release + - python-version: '3.13' + requirements: latest + database: postgresql + experimental: true name: py${{ matrix.python-version }}, ${{ matrix.database }}, ${{ matrix.requirements }} deps env: CI_DATABASE: ${{ matrix.database }} @@ -78,6 +83,7 @@ jobs: uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} + allow-prereleases: true - name: Used versions run: ./ci/print-versions - name: Install Python dependencies diff --git a/ci/apt-install b/ci/apt-install index 96ee0d90bb12..6a637d0734c6 100755 --- a/ci/apt-install +++ b/ci/apt-install @@ -48,6 +48,10 @@ apt-get install -y \ gir1.2-rsvg-2.0 \ gir1.2-pango-1.0 +# TODO: remove this once Python 3.13 wheels are available, see +# https://github.com/sirfz/tesserocr/pull/357 +apt-get install -y libleptonica-dev libtesseract-dev + # Remove MySQL 8.x client, use older MariaDB one to ensure compatibility if [ "$CI_DATABASE" = "mariadb" ] ; then apt-get purge 'mysql-client.*' diff --git a/ci/pip-install b/ci/pip-install index edc1354a804a..7b5fbd68e121 100755 --- a/ci/pip-install +++ b/ci/pip-install @@ -17,7 +17,13 @@ else if [ "${1:-latest}" = mypy ] ; then uv pip install --system -e ".[all,mysql,ci,mypy,test]" else - uv pip install --system -e ".[all,mysql,ci,test]" + # TODO: lxml can use wheels once xmlsec has one + # see https://github.com/xmlsec/python-xmlsec/issues/327 + if python -c 'import sys; sys.exit(0 if sys.version_info >= (3,13) else 1)' ; then + uv pip install --system --no-binary=lxml -e ".[all,mysql,ci,test]" + else + uv pip install --system -e ".[all,mysql,ci,test]" + fi fi if [ "${1:-latest}" = edge ] ; then uv pip install --system --upgrade -e ".[all,mysql,test,ci]"