Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/mypy-type-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:

strategy:
matrix:
python-version: ["3.11", "3.12", "3.13"]
python-version: ["3.11", "3.12", "3.13", "3.14"]

steps:

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pip-install.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ["3.11", "3.12", "3.13"]
python-version: ["3.11", "3.12", "3.13", "3.14"]
os: [ubuntu-24.04, windows-latest, macos-latest]

# Force UTF-8 everywhere (Windows is the one that really needs it)
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/python-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
strategy:
fail-fast: true
matrix:
python-version: ["3.11", "3.12", "3.13"]
python-version: ["3.11", "3.12", "3.13", "3.14"]

steps:
- uses: actions/checkout@v4
Expand Down
2 changes: 1 addition & 1 deletion docs/installation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ MacPorts
Installing Stable Release
=========================

Please note that TIAToolbox is currently tested with Python versions 3.11, 3.12, and 3.13. For the full range of supported Python versions, please refer to the package metadata (for example, the ``python_requires`` setting in ``setup.py`` or ``pyproject.toml``)
Please note that TIAToolbox is tested for Python versions 3.11, 3.12, 3.13 and 3.14. For the full range of supported Python versions, please refer to the package metadata (for example, the ``python_requires`` setting in ``setup.py`` or ``pyproject.toml``)

Recommended
-----------
Expand Down
2 changes: 1 addition & 1 deletion requirements/requirements.conda.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@ dependencies:
- cython
- pip>=20.0.2
- pixman>=0.39.0
- python>=3.11, <=3.13
- python>=3.11, <=3.14
- pip:
- -r requirements.txt
2 changes: 1 addition & 1 deletion requirements/requirements.dev.conda.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@ dependencies:
- cython
- pip>=20.0.2
- pixman>=0.39.0
- python>=3.11, <=3.13
- python>=3.11, <=3.14
- pip:
- -r requirements_dev.txt
2 changes: 1 addition & 1 deletion requirements/requirements.win64.conda.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ dependencies:
- openjpeg>=2.4.0
- pip>=20.0.2
- pixman>=0.39.0
- python>=3.11, <=3.13
- python>=3.11, <=3.14
- pip:
- -r requirements.txt
2 changes: 1 addition & 1 deletion requirements/requirements.win64.dev.conda.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ dependencies:
- openjpeg>=2.4.0
- pip>=20.0.2
- pixman>=0.39.0
- python>=3.11, <=3.13
- python>=3.11, <=3.14
- pip:
- -r requirements_dev.txt
3 changes: 2 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
setup(
author="TIA Centre",
author_email="TIA@warwick.ac.uk",
python_requires=">=3.11, <3.14",
python_requires=">=3.11, <3.15",
classifiers=[
"Development Status :: 2 - Pre-Alpha",
"Intended Audience :: Developers",
Expand All @@ -43,6 +43,7 @@
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
],
description="Computational pathology toolbox developed by TIA Centre.",
dependency_links=dependency_links,
Expand Down
8 changes: 6 additions & 2 deletions tests/test_app_bokeh.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import multiprocessing
import re
import shutil
import sys
import time
import types
from pathlib import Path
Expand Down Expand Up @@ -225,18 +226,21 @@ def doc(data_path: dict[str, object]) -> Generator[Document, object, None]:
p = multiprocessing.Process(target=run_app, daemon=True)
p.start()
# wait until server is ready
# Increase timeout for Python 3.14+ to account for stricter multiprocessing
timeout = 100 if sys.version_info >= (3, 14) else 10
start = time.time()
url = f"http://127.0.0.1:{main.port}/tileserver/session_id"

while True:
try:
resp = requests.get(url, timeout=1)
if resp.status_code == 200:
break
except requests.RequestException:
pass
if time.time() - start > 10:
if time.time() - start > timeout:
p.terminate()
msg = f"Tileserver failed to start within 10s: {url}"
msg = f"Tileserver failed to start within {timeout}s: {url}"
raise RuntimeError(msg)
time.sleep(0.2)

Expand Down
Loading