diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8fc7aab93..4c89df3f6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -19,7 +19,7 @@ jobs: matrix: # macos-latest is arm os: [ubuntu-latest, windows-latest, macos-latest] - python-version: ["3.10", "3.11", "3.12", "3.13"] + python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] name: OS ${{ matrix.os }} - Python ${{ matrix.python-version }} diff --git a/pyproject.toml b/pyproject.toml index f1223bc0b..74c5c1cad 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,6 +20,7 @@ classifiers = [ "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "Topic :: Scientific/Engineering", "Typing :: Stubs Only", ] @@ -33,7 +34,7 @@ exclude = [ "pandas-stubs/__init__.py" ] [tool.poetry.dependencies] python = ">=3.10" types-pytz = ">= 2022.1.1" -numpy = ">= 1.23.5" +numpy = ">=1.23.5" [tool.poetry.group.dev.dependencies] mypy = ">=1.18.2" @@ -51,9 +52,9 @@ pre-commit = ">=2.19.0" black = ">=25.9.0" isort = ">=6.0.1" openpyxl = ">=3.0.10" -tables = { version = ">=3.10.1", python = "<4" } +numexpr = ">=2.13.1" lxml = ">=4.9.1" -pyreadstat = ">=1.2.0" +pyreadstat = { version = ">=1.2.0", python = "<3.14" } xlrd = ">=2.0.1" xlsxwriter = ">=3.0.3" pyxlsb = ">=1.0.10" @@ -61,7 +62,7 @@ odfpy = ">=1.4.1" xarray = ">=22.6.0" tabulate = ">=0.8.10" jinja2 = ">=3.1" -scipy = { version = ">=1.9.1", python = "<3.14" } +scipy = ">=1.9.1" scipy-stubs = ">=1.15.3.0" SQLAlchemy = ">=2.0.39" types-python-dateutil = ">=2.8.19" diff --git a/tests/test_io.py b/tests/test_io.py index ff5bb5850..f07a35845 100644 --- a/tests/test_io.py +++ b/tests/test_io.py @@ -6,6 +6,7 @@ import pathlib from pathlib import Path import sqlite3 +import sys from typing import ( TYPE_CHECKING, Any, @@ -427,6 +428,10 @@ def test_hdf_series() -> None: check(assert_type(read_hdf(path, "s"), DataFrame | Series), Series) +@pytest.mark.xfail( + sys.version_info >= (3, 14), + reason="pyreadstat 1.3.1 does not support py314 Roche/pyreadstat#310", +) def test_spss() -> None: path = Path(CWD, "data", "labelled-num.sav") check(