Skip to content
6 changes: 3 additions & 3 deletions .github/actions/build-wheel/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -104,9 +104,9 @@ runs:
save: ${{ inputs.ccache-save }}

# Install Astral UV, which will be used as build-frontend for cibuildwheel
- uses: astral-sh/setup-uv@v7
- uses: astral-sh/setup-uv@v10.0.1
with:
version: "0.9.0"
version: "0.12.10"
enable-cache: false

### cibuildwheel configuration
Expand All @@ -122,7 +122,7 @@ runs:
# traversing the full filesystem, which produces an error on Windows.
# - CIBW_TEST_SKIP we always skip tests for *-macosx_universal2 builds, because we run tests for arm64 and x86_64.
- name: Build${{ inputs.testsuite != 'none' && ' and test ' || ' ' }}wheel
uses: pypa/cibuildwheel@v4.2.0
uses: pypa/cibuildwheel@v4.2.1
env:
CIBW_ARCHS: ${{ inputs.arch == 'amd64' && 'AMD64' || inputs.arch }}
CIBW_BUILD: ${{ inputs.python }}-${{ inputs.cibw-system }}_${{ inputs.arch }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/cleanup_pypi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,9 @@ jobs:
exit 1
- name: Install Astral UV
uses: astral-sh/setup-uv@v7
uses: astral-sh/setup-uv@v10.0.1
with:
version: "0.9.0"
version: "0.12.10"

- name: Install dependencies
run: uv sync --only-group pypi --no-install-project
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/code_quality.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ jobs:
persist-credentials: false

- name: Install Astral UV
uses: astral-sh/setup-uv@v7
uses: astral-sh/setup-uv@v10.0.1
with:
version: "0.9.0"
version: "0.12.10"
python-version: "3.12"

- name: pre-commit (cache)
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,9 +68,9 @@ jobs:
sudo apt-get -y install ccache
- name: Install Astral UV and enable the cache
uses: astral-sh/setup-uv@v7
uses: astral-sh/setup-uv@v10.0.1
with:
version: "0.9.0"
version: "0.12.10"
python-version: 3.12
enable-cache: true
cache-suffix: -${{ github.workflow }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/packaging_sdist.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,9 @@ jobs:
fi
- name: Install Astral UV
uses: astral-sh/setup-uv@v7
uses: astral-sh/setup-uv@v10.0.1
with:
version: "0.9.0"
version: "0.12.10"
python-version: 3.12

- name: Build sdist
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/packaging_wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/targeted_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,9 @@ jobs:
submodules: true

- name: Install uv
uses: astral-sh/setup-uv@v7
uses: astral-sh/setup-uv@v10.0.1
with:
version: "0.9.0"
version: "0.12.10"
enable-cache: false
python-version: ${{ inputs.python_version }}

Expand Down
36 changes: 29 additions & 7 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"}]
Expand Down Expand Up @@ -240,9 +241,22 @@ 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 = [
# win/ARM64 has no pyarrow wheels & nightly doesn't have sdist
{ index = "scientific-python-nightly", marker = "python_version >= '3.15' and (sys_platform != 'win32' or platform_machine != 'ARM64')" },
]

# todo: adjust for windows arm64 while test dependencies become available
[dependency-groups] # used for development only, requires pip >=25.1.0
Expand All @@ -256,7 +270,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",
Expand All @@ -266,9 +280,11 @@ 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 tests fail on 3.15 due to: https://github.com/pola-rs/polars/issues/28347
"polars>=1.33.0; python_version < '3.15'",
"psutil",
"py4j",
"pyotp",
Expand All @@ -277,9 +293,11 @@ 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'",
Expand All @@ -303,9 +321,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
Expand Down Expand Up @@ -363,6 +383,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.dev0 deprecates the inplace keyword with a warning
"ignore::pandas.errors.Pandas4Warning",
]

[tool.mypy]
Expand Down
Loading