diff --git a/.github/workflows/packaging_wheels.yml b/.github/workflows/packaging_wheels.yml index b86ec800..e45ca448 100644 --- a/.github/workflows/packaging_wheels.yml +++ b/.github/workflows/packaging_wheels.yml @@ -127,7 +127,7 @@ jobs: strategy: fail-fast: false matrix: - python: [ cp311, cp312, cp313 ] + python: [ cp311, cp312, cp313, cp315 ] platform: - { os: windows-2022, arch: amd64, cibw_system: win } - { os: windows-11-arm, arch: ARM64, cibw_system: win } # cibw requires ARM64 to be uppercase diff --git a/pyproject.toml b/pyproject.toml index df625177..4378b584 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,6 +29,7 @@ classifiers = [ "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", "Programming Language :: C++", ] authors = [{name = "DuckDB Foundation"}] @@ -46,7 +47,8 @@ all = [ # users can install duckdb with 'duckdb[all]', which will install this l "fsspec", # used in duckdb.filesystem "numpy", # used in duckdb.experimental.spark and in duckdb.fetchnumpy() "pandas", # used for pandas dataframes all over the place - "pyarrow", # used for pyarrow support + # TODO: Remove after 3.15.0 release + "pyarrow; sys_platform != 'win32' or platform_machine != 'ARM64'", # used for pyarrow support "adbc-driver-manager", # for the adbc driver ] @@ -241,9 +243,21 @@ name = "pytorch-cpu" url = "https://download.pytorch.org/whl/cpu" explicit = true +[[tool.uv.index]] +# TODO: Remove after 3.15.0 release +name = "scientific-python-nightly" +url = "https://pypi.anaconda.org/scientific-python-nightly-wheels/simple" +explicit = true + [tool.uv.sources] torch = [ { index = "pytorch-cpu" } ] torchvision = [ { index = "pytorch-cpu" } ] +pandas = [ + { index = "scientific-python-nightly", marker = "python_version >= '3.15'" }, +] +pyarrow = [ + { index = "scientific-python-nightly", marker = "python_version >= '3.15'" }, +] # todo: adjust for windows arm64 while test dependencies become available [dependency-groups] # used for development only, requires pip >=25.1.0 @@ -257,7 +271,7 @@ stubdeps = [ # dependencies used for typehints in the stubs "typing-extensions", ] test = [ # dependencies used for running tests - "adbc-driver-manager>=1.10.0; python_version >= '3.10' and (sys_platform != 'win32' or platform_machine != 'ARM64')", + "adbc-driver-manager>=1.10.0; python_version >= '3.10' and python_version < '3.15' and (sys_platform != 'win32' or platform_machine != 'ARM64')", "adbc-driver-manager>=1.7.0; python_version < '3.10' and (sys_platform != 'win32' or platform_machine != 'ARM64')", "pytest", "pytest-reraise", @@ -267,9 +281,9 @@ test = [ # dependencies used for running tests "pytest_codspeed", "coverage", "gcovr; sys_platform != 'win32' or platform_machine != 'ARM64'", - "gcsfs; sys_platform != 'win32' or platform_machine != 'ARM64'", + "gcsfs; python_version < '3.15' and (sys_platform != 'win32' or platform_machine != 'ARM64')", "packaging", - "polars>=1.33.0", + "polars>=1.33.0; python_version < '3.15'", "psutil", "py4j", "pyotp", @@ -278,14 +292,18 @@ test = [ # dependencies used for running tests "requests", "urllib3", "fsspec>=2022.11.0; sys_platform != 'win32' or platform_machine != 'ARM64'", - "pandas>=3.0.0; python_version > '3.10'", + "pandas>=3.0.0; python_version >= '3.11' and python_version < '3.15'", + "pandas>=3.0.0.dev0; python_version >= '3.15'", "pandas<3.0.0; python_version < '3.11'", - "pyarrow>=23.0.0; python_version >= '3.10' and (sys_platform != 'win32' or platform_machine != 'ARM64')", + "pyarrow>=23.0.0; python_version >= '3.10' and python_version < '3.15' and (sys_platform != 'win32' or platform_machine != 'ARM64')", + "pyarrow>=23.0.0.dev0; python_version >= '3.15' and (sys_platform != 'win32' or platform_machine != 'ARM64')", "pyarrow>=18.0.0; python_version < '3.10' and (sys_platform != 'win32' or platform_machine != 'ARM64')", "torch>=2.2.2; python_version < '3.13' and ( sys_platform != 'win32' or platform_machine != 'ARM64' )", "torch>=2.2.2,<2.12.1; python_version > '3.11' and python_version < '3.13' and sys_platform == 'win32' and platform_machine == 'ARM64'", "torch>=2.2.2,<2.11.0; python_version >= '3.13' and python_version < '3.14' and ( sys_platform != 'darwin' or platform_machine != 'x86_64' ) and ( sys_platform != 'win32' or platform_machine != 'ARM64' )", - "torch>=2.10.0; python_version >= '3.14' and ( sys_platform != 'darwin' or platform_machine != 'x86_64' ) and ( sys_platform != 'win32' or platform_machine != 'ARM64' )", + "torch>=2.10.0; python_version >= '3.14' and python_version < '3.15' and ( sys_platform != 'darwin' or platform_machine != 'x86_64' ) and ( sys_platform != 'win32' or platform_machine != 'ARM64' )", + # cp315: torch only ships manylinux wheels on the cpu index; skip elsewhere (torch tests importorskip) + "torch>=2.10.0; python_version >= '3.15' and sys_platform == 'linux'", "tensorflow==2.14.0; sys_platform == 'darwin' and python_version < '3.12'", "tensorflow-cpu>=2.14.0; sys_platform == 'linux' and platform_machine != 'aarch64' and python_version < '3.12'", "tensorflow-cpu>=2.14.0; sys_platform == 'win32' and platform_machine != 'ARM64' and python_version < '3.12'", @@ -304,9 +322,11 @@ bench = [ # Pinned deps for the benchmark suite (see benchmarks/README.md). Mini "numpy<2; ( sys_platform != 'win32' or platform_machine != 'ARM64' ) and python_version < '3.12'", "numpy>=2; ( sys_platform != 'win32' or platform_machine != 'ARM64' ) and python_version >= '3.12'", "numpy>=2.3; sys_platform == 'win32' and platform_machine == 'ARM64' and python_version >= '3.11'", - "pandas>=3.0.0; python_version > '3.10'", + "pandas>=3.0.0; python_version >= '3.11' and python_version < '3.15'", + "pandas>=3.0.0.dev0; python_version >= '3.15'", "pandas<3.0.0; python_version < '3.11'", - "pyarrow>=23.0.0; python_version >= '3.10' and (sys_platform != 'win32' or platform_machine != 'ARM64')", + "pyarrow>=23.0.0; python_version >= '3.10' and python_version < '3.15' and (sys_platform != 'win32' or platform_machine != 'ARM64')", + "pyarrow>=23.0.0.dev0; python_version >= '3.15' and (sys_platform != 'win32' or platform_machine != 'ARM64')", "pyarrow>=18.0.0; python_version < '3.10' and (sys_platform != 'win32' or platform_machine != 'ARM64')", ] scripts = [ # dependencies used for running scripts @@ -365,6 +385,8 @@ filterwarnings = [ # Pyspark is throwing these warnings "ignore:distutils Version classes are deprecated:DeprecationWarning", "ignore:is_datetime64tz_dtype is deprecated:DeprecationWarning", + # pandas 3.1.0.dev0deprecates the inplace keyword with a warning + "ignore::pandas.errors.Pandas4Warning", ] [tool.mypy]