Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
194 commits
Select commit Hold shift + click to select a range
5dceb64
Bump submodule
duckdblabs-bot Dec 16, 2025
56ed765
[duckdb-labs bot] Bump DuckDB submodule (#228)
evertlammerts Dec 16, 2025
7aa8cae
Bump submodule
duckdblabs-bot Dec 17, 2025
7faa30d
[duckdb-labs bot] Bump DuckDB submodule (#230)
evertlammerts Dec 17, 2025
89b12d4
Bump submodule
duckdblabs-bot Dec 18, 2025
4ef5288
[duckdb-labs bot] Bump DuckDB submodule (#231)
evertlammerts Dec 18, 2025
d1743d8
Bump submodule
duckdblabs-bot Dec 19, 2025
f446e01
[duckdb-labs bot] Bump DuckDB submodule (#232)
evertlammerts Dec 19, 2025
8aa268a
Bump submodule
duckdblabs-bot Dec 21, 2025
bd5ed7a
[duckdb-labs bot] Bump DuckDB submodule (#233)
evertlammerts Dec 21, 2025
1567cc3
Bump submodule
duckdblabs-bot Dec 23, 2025
1b1183e
[duckdb-labs bot] Bump DuckDB submodule (#235)
evertlammerts Dec 23, 2025
6866a36
Bump submodule
duckdblabs-bot Dec 25, 2025
cca6ba9
[duckdb-labs bot] Bump DuckDB submodule (#236)
evertlammerts Dec 25, 2025
2951073
Bump submodule
duckdblabs-bot Jan 1, 2026
ccf35c8
[duckdb-labs bot] Bump DuckDB submodule (#241)
evertlammerts Jan 1, 2026
b8964a2
Fix unionByName to properly handle missing columns from both DataFrames
mariotaddeucci Jan 2, 2026
b8767db
Update duckdb/experimental/spark/sql/dataframe.py
mariotaddeucci Jan 2, 2026
20d4328
Bump submodule
duckdblabs-bot Jan 5, 2026
c1d9eab
[duckdb-labs bot] Bump DuckDB submodule (#244)
evertlammerts Jan 5, 2026
29e1a06
Bump submodule
duckdblabs-bot Jan 6, 2026
2061e76
[duckdb-labs bot] Bump DuckDB submodule (#251)
evertlammerts Jan 6, 2026
cabba0d
Update duckdb/experimental/spark/sql/dataframe.py
evertlammerts Jan 6, 2026
6794f0a
Merge branch 'main' into fix-unionbyname-missing-columns
evertlammerts Jan 6, 2026
8956d0e
fix formatting
mariotaddeucci Jan 7, 2026
654b5b5
Merge branch 'main' into fix-unionbyname-missing-columns
mariotaddeucci Jan 7, 2026
dc1aa44
Bump submodule
duckdblabs-bot Jan 7, 2026
283330f
[duckdb-labs bot] Bump DuckDB submodule (#253)
evertlammerts Jan 7, 2026
cad0cd2
Bump submodule
duckdblabs-bot Jan 8, 2026
1f61b20
[duckdb-labs bot] Bump DuckDB submodule (#255)
evertlammerts Jan 8, 2026
8221a2a
Submodule now tracking v1.5-variegata
evertlammerts Jan 9, 2026
e6da072
refactor query graph to make it more useful
guillesd Oct 22, 2025
79435a3
expose profiling in the pyconnection
guillesd Oct 23, 2025
5b681ee
expose translate_json_to_html so that it can be used with object prof…
guillesd Oct 23, 2025
6f98290
add a small test to check the output when calling get_profiling_infor…
guillesd Oct 27, 2025
d4a5324
add reasonable tests
guillesd Oct 27, 2025
356a2ad
fix dark mode problems plus add depth
guillesd Jan 9, 2026
66cc048
make phases expandable
guillesd Jan 9, 2026
62b450b
fix when running from python -m
guillesd Jan 9, 2026
e6fbc0f
run pre-commit
guillesd Jan 9, 2026
549cced
make ruff check pass
guillesd Jan 9, 2026
d2354b2
adapt tests
guillesd Jan 9, 2026
1f830aa
change interface to ProfilingInfo
guillesd Jan 9, 2026
8540a89
Bump submodule
duckdblabs-bot Jan 11, 2026
4626f32
[duckdb-labs bot] Bump DuckDB submodule (#258)
evertlammerts Jan 11, 2026
5a67395
Support for TIME_NS type
evertlammerts Jan 8, 2026
510ebd8
Integrate TIME_NS type (#262)
evertlammerts Jan 12, 2026
34ef0d7
Merge branch 'v1.5-variegata' into update_query_graph
evertlammerts Jan 12, 2026
b84e4fe
Merge branch 'main' into fix-unionbyname-missing-columns
evertlammerts Jan 12, 2026
b94529d
Merge branch 'v1.5-variegata' into fix-unionbyname-missing-columns
evertlammerts Jan 12, 2026
df345a2
refactor query graph and enable profiling for a connection (#140)
evertlammerts Jan 12, 2026
1b6480b
Fix unionByName to properly handle missing columns from both DataFram…
evertlammerts Jan 12, 2026
3d61c1f
Bumped submodule
evertlammerts Jan 12, 2026
c2e7da2
Bump submodule
duckdblabs-bot Jan 13, 2026
86116a7
Bump submodule
duckdblabs-bot Jan 13, 2026
2fbcd17
[duckdb-labs bot] Bump DuckDB submodule (#264)
evertlammerts Jan 13, 2026
bfca7c8
[duckdb-labs bot] Bump DuckDB submodule (#265)
evertlammerts Jan 13, 2026
75fdbd3
escape idenitifiers in relation aggregations
evertlammerts Jan 14, 2026
2cb7abe
Escape identifiers in relation aggregations (#272)
evertlammerts Jan 15, 2026
eeac44a
Bump submodule
duckdblabs-bot Jan 16, 2026
3ca4738
[duckdb-labs bot] Bump DuckDB submodule (#273)
evertlammerts Jan 16, 2026
d8ca9ec
Fix build?
evertlammerts Jan 16, 2026
443e192
Fix build? (#274)
evertlammerts Jan 16, 2026
39c384b
Fix DECREF bug during interpreter shutdown
evertlammerts Jan 21, 2026
e32ed3e
Fix DECREF bug during interpreter shutdown (#275)
evertlammerts Jan 21, 2026
c2e6505
Support Pandas' new str type
evertlammerts Jan 22, 2026
9d6edb6
dependency updates and fix for lazy attribute accessors
evertlammerts Jan 23, 2026
5a654d3
pandas default backend fixes
evertlammerts Jan 23, 2026
0576a1c
bump submodule
evertlammerts Jan 23, 2026
5d9b64e
Add timedelta[s|ms|us|ns] numpy types
evertlammerts Jan 23, 2026
8361d73
Move slow tests to slow and fix test error when pyarrow is missing
evertlammerts Jan 23, 2026
f1711b5
Support for Pandas 3.0.0 (#277)
evertlammerts Jan 23, 2026
77a3f8d
Set submodule to release hash
evertlammerts Jan 23, 2026
c5e764a
Fix logical type creation
evertlammerts Jan 26, 2026
ae1fc0b
Bump submodule to pull in fixes
evertlammerts Jan 26, 2026
fcdc93b
Missing import
evertlammerts Jan 26, 2026
9861312
Merge remote-tracking branch 'origin/v1.4-andium' into v1.5-variegata
evertlammerts Jan 26, 2026
ab2d2a3
check conversion errors in time
evertlammerts Jan 26, 2026
7e5a18c
Fix transaction errors and more
evertlammerts Jan 26, 2026
f4a82b6
bump submodule
evertlammerts Jan 26, 2026
bbb418b
Fix last failing tests and remove support for Python 3.9
evertlammerts Jan 27, 2026
05989c4
bump python version for code quality workflow
evertlammerts Jan 27, 2026
1acece4
auto fixes
evertlammerts Jan 27, 2026
23d3cf9
Bump submodule
evertlammerts Jan 27, 2026
f150134
auto fixes
evertlammerts Jan 27, 2026
2214a6c
Merge branch 'v1.5-variegata' into v1.5-variegata
evertlammerts Jan 27, 2026
ac97da3
skip pandas arrow tests if pyarrow not available
evertlammerts Jan 27, 2026
11b65f0
move from tyiping.Self to type_extensions.Self for py310
evertlammerts Jan 27, 2026
3c5b7bc
Merge v1.4-andium into v1.5-variegata with breaking change fixes (#284)
evertlammerts Jan 27, 2026
e080f2d
fix deprecation warnings
evertlammerts Jan 27, 2026
93bc7ae
Fix deprecations (#285)
evertlammerts Jan 27, 2026
7f1e238
Fix linking the new extension loader
evertlammerts Feb 5, 2026
e240f37
Fix linking the new extension loader (#293)
evertlammerts Feb 5, 2026
57b8d66
bump submodule
evertlammerts Feb 5, 2026
6b690aa
Fix ArrowStream
evertlammerts Feb 5, 2026
3fd0f1e
Fix arrow stream construction (#294)
evertlammerts Feb 5, 2026
78aee48
fix gcov errors and minimal package handling
evertlammerts Feb 5, 2026
70c06c9
Add arrow_table() and arrow_reader() and deprecate old api
evertlammerts Jan 28, 2026
709397c
Fix toArrow
evertlammerts Feb 3, 2026
d3cca18
skip arrow deprecation tests if pyarrow is not present
evertlammerts Feb 5, 2026
98ccb24
Rename `column` arg in relational API functions to `exrpession`
evertlammerts Feb 5, 2026
cb7fd95
Unified arrow API (#287)
evertlammerts Feb 5, 2026
883fc76
Remove xfail annotations from passing tests
evertlammerts Feb 5, 2026
bf8dfdb
Remove xfail annotations from passing tests (#296)
evertlammerts Feb 5, 2026
e579752
Rename `column` arg in relational API functions to `expression` (#295)
evertlammerts Feb 5, 2026
261a68a
Fix test
evertlammerts Feb 6, 2026
e20c0ea
Bump submodule
duckdblabs-bot Feb 6, 2026
caa5046
Support Cast node in pushdown logic
evertlammerts Feb 6, 2026
3786f34
Support Polars' Int128 / UInt128
evertlammerts Feb 6, 2026
e93d591
Only push down unstrict casts
evertlammerts Feb 6, 2026
e21cf62
[duckdb-labs bot] Bump DuckDB submodule (#297)
evertlammerts Feb 6, 2026
bf6b47c
Support Cast node in pushdown logic (#298)
evertlammerts Feb 6, 2026
4a79232
Support Polars' Int128 / UInt128 (#299)
evertlammerts Feb 6, 2026
616b893
Bump submodule
duckdblabs-bot Feb 7, 2026
9709de1
[duckdb-labs bot] Bump DuckDB submodule (#302)
evertlammerts Feb 7, 2026
1288187
Bump submodule
duckdblabs-bot Feb 8, 2026
cd29891
[duckdb-labs bot] Bump DuckDB submodule (#303)
evertlammerts Feb 8, 2026
75152cd
Bump submodule
duckdblabs-bot Feb 9, 2026
3186810
[duckdb-labs bot] Bump DuckDB submodule (#304)
evertlammerts Feb 9, 2026
c2697b6
Bump submodule
duckdblabs-bot Feb 10, 2026
1703573
Throw a reasonable error when an array stream was already consumed
evertlammerts Feb 10, 2026
5c81a10
Throw a reasonable error when an array stream was already consumed (#…
evertlammerts Feb 10, 2026
a0d9bdf
[duckdb-labs bot] Bump DuckDB submodule (#305)
evertlammerts Feb 11, 2026
77a13d0
Bump submodule
duckdblabs-bot Feb 11, 2026
155e388
Unify Arrow stream scanning via __arrow_c_stream__ and only pushdown …
evertlammerts Feb 10, 2026
9fe4056
Treat empty params the same as None for .sql
evertlammerts Feb 11, 2026
daf4bd5
Merge branch 'v1.5-variegata' into pycapsuleinterface
evertlammerts Feb 11, 2026
824fae7
trigger CI
evertlammerts Feb 11, 2026
d37ef1d
[duckdb-labs bot] Bump DuckDB submodule (#309)
evertlammerts Feb 11, 2026
5b6edb9
make the pyarrow.dataset import optional
evertlammerts Feb 11, 2026
b6efa5c
Treat empty params the same as None for .sql (#310)
evertlammerts Feb 11, 2026
1964ad5
Simplify GIL management for FetchRow
evertlammerts Feb 11, 2026
a4a4208
Unify Arrow stream scanning via __arrow_c_stream__ (#307)
evertlammerts Feb 11, 2026
108e472
Simplify GIL management for FetchRow (#311)
evertlammerts Feb 11, 2026
1b08822
Bump submodule
duckdblabs-bot Feb 16, 2026
43fce0f
[duckdb-labs bot] Bump DuckDB submodule (#312)
evertlammerts Feb 16, 2026
8c3bb39
Fix fsspec race
evertlammerts Feb 16, 2026
7abde9b
Fix fsspec race (#316)
evertlammerts Feb 16, 2026
6e7bc3f
Add support for VARIANT
evertlammerts Feb 16, 2026
02c9283
Add support for VARIANT (#317)
evertlammerts Feb 16, 2026
479f56a
Bump submodule
duckdblabs-bot Feb 17, 2026
05a1ec6
Cache arrow object type to avoid repeated detection
evertlammerts Feb 17, 2026
7094be5
Cache arrow object type to avoid repeated detection (#321)
evertlammerts Feb 17, 2026
38532ff
Cache arrow schema to avoid repeated lookups
evertlammerts Feb 17, 2026
78114e0
Fix multiple stub issues
evertlammerts Feb 17, 2026
caec9b3
[duckdb-labs bot] Bump DuckDB submodule (#320)
evertlammerts Feb 17, 2026
7f45e6f
Cache arrow schema to avoid repeated lookups (#322)
evertlammerts Feb 17, 2026
5d86ba2
Removed deprecated modules
evertlammerts Feb 17, 2026
cdf800e
Fix multiple stub issues (#323)
evertlammerts Feb 17, 2026
bbba7da
Bump submodule
duckdblabs-bot Feb 18, 2026
ac6c07d
Remove deprecated modules (#324)
evertlammerts Feb 18, 2026
894e715
Follow up on stub fixes
evertlammerts Feb 18, 2026
d9fd442
[duckdb-labs bot] Bump DuckDB submodule (#326)
evertlammerts Feb 18, 2026
da5d721
Follow up on stub fixes (#327)
evertlammerts Feb 18, 2026
3b9dd86
Remove pytyping references
evertlammerts Feb 18, 2026
f4bc8ee
Add ref to connection in relation wo it doesn't get closed prematurely
evertlammerts Feb 18, 2026
e0fd85a
Remove pytyping references (#328)
evertlammerts Feb 18, 2026
e5814fd
prevent ref cycle
evertlammerts Feb 18, 2026
595cfc6
Bump submodule
duckdblabs-bot Feb 19, 2026
2acbdba
Add ref to connection in relation so it doesn't get closed prematurel…
evertlammerts Feb 19, 2026
f41329d
Fix numeric conversion logic
evertlammerts Feb 19, 2026
47a1728
Special case casting for UNIONs
evertlammerts Feb 19, 2026
6262e0b
Fallback to varchar if int is too large
evertlammerts Feb 19, 2026
16621e8
Simplify related code paths
evertlammerts Feb 19, 2026
0020492
[duckdb-labs bot] Bump DuckDB submodule (#331)
evertlammerts Feb 19, 2026
58e68f6
Fix numeric conversion logic (#332)
evertlammerts Feb 19, 2026
8828409
Remove static pystr
evertlammerts Feb 19, 2026
60eb393
Support polars lazyframe projection and filter pushdown
evertlammerts Feb 19, 2026
632544f
Remove static pystr (#333)
evertlammerts Feb 19, 2026
542ecd6
Support polars lazyframe projection and filter pushdown (#334)
evertlammerts Feb 19, 2026
3eaf3b3
Add tests
evertlammerts Feb 19, 2026
a5a0d78
Bump submodule
duckdblabs-bot Feb 20, 2026
cf46050
[PyArrow] Filter Pushdown of IS IN now uses the dedicated pyarrow.com…
evertlammerts Feb 20, 2026
291c5b4
[duckdb-labs bot] Bump DuckDB submodule (#336)
evertlammerts Feb 20, 2026
bfa0b82
Bump submodule
duckdblabs-bot Feb 24, 2026
f65eb74
[duckdb-labs bot] Bump DuckDB submodule (#337)
evertlammerts Feb 24, 2026
7eccc6d
Bump submodule
duckdblabs-bot Feb 25, 2026
de27c05
Use PhysicalArrowCollector for __arrow_c_stream__ on relations
evertlammerts Feb 25, 2026
1002489
[duckdb-labs bot] Bump DuckDB submodule (#340)
evertlammerts Feb 25, 2026
d225900
Fix Expression typing in relational API stubs
evertlammerts Feb 25, 2026
178d6a1
retrigger pipeline
evertlammerts Feb 25, 2026
42d6468
Fix Expression typing in relational API stubs (#343)
evertlammerts Feb 25, 2026
f30912e
Use PhysicalArrowCollector for __arrow_c_stream__ on relations (#342)
evertlammerts Feb 25, 2026
54ef231
- using python 3.10 modern typing syntax everywhere for Union and List
OutSquareCapital Feb 26, 2026
da9d3bf
using builtins to avoid shadowing of list
OutSquareCapital Feb 26, 2026
2fed095
Feature: add Literal for join method "how" argument, modernize typing…
evertlammerts Feb 26, 2026
3f6c31c
fix polars segfault and pin submodule
evertlammerts Feb 26, 2026
72a4200
Last minute fix and pin submodule (#346)
evertlammerts Feb 26, 2026
f765dcc
Polars lazyframe pushdown fixes
evertlammerts Feb 26, 2026
c3cf406
Polars lazyframe pushdown fixes (#347)
evertlammerts Feb 26, 2026
b8d19d0
Fix failing tests
evertlammerts Feb 26, 2026
55013e1
Allow strict casts of literals only in polars lazyframe pushdown (#348)
evertlammerts Feb 26, 2026
342e4ba
Bump submodule
evertlammerts Feb 27, 2026
d33b693
enable caching
evertlammerts Feb 27, 2026
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
23 changes: 23 additions & 0 deletions .github/actions/ccache-action/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: 'Setup Ccache'
inputs:
key:
description: 'Cache key (defaults to github.job)'
required: false
default: ''
runs:
using: "composite"
steps:
- name: Setup Ccache
uses: hendrikmuhs/ccache-action@main
with:
key: ${{ inputs.key || github.job }}
save: ${{ github.repository != 'duckdb/duckdb-python' || contains('["refs/heads/main", "refs/heads/v1.4-andium", "refs/heads/v1.5-variegata"]', github.ref) }}
# Dump verbose ccache statistics report at end of CI job.
verbose: 1
# Increase per-directory limit: 5*1024 MB / 16 = 320 MB.
# Note: `layout=subdirs` computes the size limit divided by 16 dirs.
# See also: https://ccache.dev/manual/4.9.html#_cache_size_management
max-size: 1500MB
# Evicts all cache files that were not touched during the job run.
# Removing cache files from previous runs avoids creating huge caches.
evict-old-files: 'job'
2 changes: 1 addition & 1 deletion .github/workflows/code_quality.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
uses: astral-sh/setup-uv@v7
with:
version: "0.9.0"
python-version: 3.9
python-version: "3.12"

- name: pre-commit (cache)
uses: actions/cache@v4
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ jobs:
uses: astral-sh/setup-uv@v7
with:
version: "0.9.0"
python-version: 3.9
python-version: 3.12
enable-cache: true
cache-suffix: -${{ github.workflow }}

Expand Down Expand Up @@ -111,6 +111,7 @@ jobs:
mkdir coverage-cpp
uv run gcovr \
--gcov-ignore-errors all \
--gcov-ignore-parse-errors=negative_hits.warn_once_per_file \
--root "$PWD" \
--filter "${PWD}/src/duckdb_py" \
--exclude '.*/\.cache/.*' \
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/packaging_sdist.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ jobs:
uses: astral-sh/setup-uv@v7
with:
version: "0.9.0"
python-version: 3.11
python-version: 3.12

- name: Build sdist
run: uv build --sdist
Expand Down
127 changes: 118 additions & 9 deletions .github/workflows/packaging_wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,112 @@ on:
type: string

jobs:
seed_wheels:
name: 'Seed: cp314-${{ matrix.platform.cibw_system }}_${{ matrix.platform.arch }}'
strategy:
fail-fast: false
matrix:
python: [ cp314 ]
platform:
- { os: windows-2025, arch: amd64, cibw_system: win }
- { os: windows-11-arm, arch: ARM64, cibw_system: win }
- { os: ubuntu-24.04, arch: x86_64, cibw_system: manylinux }
- { os: ubuntu-24.04-arm, arch: aarch64, cibw_system: manylinux }
- { os: macos-15, arch: arm64, cibw_system: macosx }
- { os: macos-15, arch: universal2, cibw_system: macosx }
- { os: macos-15-intel, arch: x86_64, cibw_system: macosx }
minimal:
- ${{ inputs.minimal }}
exclude:
- { minimal: true, platform: { arch: universal2 } }
runs-on: ${{ matrix.platform.os }}
env:
CCACHE_DIR: ${{ github.workspace }}/.ccache
### cibuildwheel configuration
#
# This is somewhat brittle, so be careful with changes. Some notes for our future selves (and others):
# - cibw will change its cwd to a temp dir and create a separate venv for testing. It then installs the wheel it
# built into that venv, and run the CIBW_TEST_COMMAND. We have to install all dependencies ourselves, and make
# sure that the pytest config in pyproject.toml is available.
# - CIBW_BEFORE_TEST installs the test dependencies by exporting them into a pylock.toml. At the time of writing,
# `uv sync --no-install-project` had problems correctly resolving dependencies using resolution environments
# across all platforms we build for. This might be solved in newer uv versions.
# - CIBW_TEST_COMMAND specifies pytest conf from pyproject.toml. --confcutdir is needed to prevent pytest from
# 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.
CIBW_TEST_SKIP: ${{ inputs.testsuite == 'none' && '*' || '*-macosx_universal2' }}
CIBW_TEST_SOURCES: tests
CIBW_BEFORE_TEST: >
uv export --only-group test --no-emit-project --quiet --output-file pylock.toml --directory {project} &&
uv pip install -r pylock.toml
CIBW_TEST_COMMAND: >
uv run -v pytest --confcutdir=. --rootdir . -c {project}/pyproject.toml ${{ inputs.testsuite == 'fast' && './tests/fast' || './tests' }}

steps:
- name: Checkout DuckDB Python
uses: actions/checkout@v4
with:
ref: ${{ inputs.duckdb-python-sha }}
fetch-depth: 0
submodules: true

- name: Checkout DuckDB
shell: bash
if: ${{ inputs.duckdb-sha }}
run: |
cd external/duckdb
git fetch origin
git checkout ${{ inputs.duckdb-sha }}

- name: Set CIBW_ENVIRONMENT
shell: bash
run: |
cibw_env=""
if [[ "${{ matrix.platform.cibw_system }}" == "manylinux" ]]; then
cibw_env="CCACHE_DIR=/host${{ github.workspace }}/.ccache"
fi
if [[ -n "${{ inputs.set-version }}" ]]; then
cibw_env="${cibw_env:+$cibw_env }OVERRIDE_GIT_DESCRIBE=${{ inputs.set-version }}"
fi
if [[ -n "$cibw_env" ]]; then
echo "CIBW_ENVIRONMENT=${cibw_env}" >> $GITHUB_ENV
fi

- name: Setup Ccache
uses: ./.github/actions/ccache-action
with:
key: ${{ matrix.platform.cibw_system }}_${{ matrix.platform.arch }}

# Install Astral UV, which will be used as build-frontend for cibuildwheel
- uses: astral-sh/setup-uv@v7
with:
version: "0.9.0"
enable-cache: false
cache-suffix: -${{ matrix.python }}-${{ matrix.platform.cibw_system }}_${{ matrix.platform.arch }}

- name: Build${{ inputs.testsuite != 'none' && ' and test ' || ' ' }}wheels
uses: pypa/cibuildwheel@v3.2
env:
CIBW_ARCHS: ${{ matrix.platform.arch == 'amd64' && 'AMD64' || matrix.platform.arch }}
CIBW_BUILD: ${{ matrix.python }}-${{ matrix.platform.cibw_system }}_${{ matrix.platform.arch }}

- name: Upload wheel
uses: actions/upload-artifact@v4
with:
name: wheel-${{ matrix.python }}-${{ matrix.platform.cibw_system }}_${{ matrix.platform.arch }}
path: wheelhouse/*.whl
compression-level: 0

build_wheels:
name: 'Wheel: ${{ matrix.python }}-${{ matrix.platform.cibw_system }}_${{ matrix.platform.arch }}'
needs: seed_wheels
strategy:
fail-fast: false
matrix:
python: [ cp39, cp310, cp311, cp312, cp313, cp314 ]
python: [ cp310, cp311, cp312, cp313 ]
platform:
- { os: windows-2025, arch: amd64, cibw_system: win }
- { os: windows-11-arm, arch: ARM64, cibw_system: win } # cibw requires ARM64 to be uppercase
- { os: windows-11-arm, arch: ARM64, cibw_system: win }
- { os: ubuntu-24.04, arch: x86_64, cibw_system: manylinux }
- { os: ubuntu-24.04-arm, arch: aarch64, cibw_system: manylinux }
- { os: macos-15, arch: arm64, cibw_system: macosx }
Expand All @@ -42,15 +139,14 @@ jobs:
minimal:
- ${{ inputs.minimal }}
exclude:
- { minimal: true, python: cp310 }
- { minimal: true, python: cp311 }
- { minimal: true, python: cp312 }
- { minimal: true, python: cp313 }
- { minimal: true, platform: { arch: universal2 } }
- { python: cp39, platform: { os: windows-11-arm, arch: ARM64 } } # too many dependency problems for win arm64
- { python: cp310, platform: { os: windows-11-arm, arch: ARM64 } } # too many dependency problems for win arm64
- { python: cp310, platform: { os: windows-11-arm, arch: ARM64 } }
runs-on: ${{ matrix.platform.os }}
env:
CCACHE_DIR: ${{ github.workspace }}/.ccache
### cibuildwheel configuration
#
# This is somewhat brittle, so be careful with changes. Some notes for our future selves (and others):
Expand Down Expand Up @@ -87,11 +183,24 @@ jobs:
git fetch origin
git checkout ${{ inputs.duckdb-sha }}

# Make sure that OVERRIDE_GIT_DESCRIBE is propagated to cibuildwhel's env, also when it's running linux builds
- name: Set OVERRIDE_GIT_DESCRIBE
- name: Set CIBW_ENVIRONMENT
shell: bash
if: ${{ inputs.set-version != '' }}
run: echo "CIBW_ENVIRONMENT=OVERRIDE_GIT_DESCRIBE=${{ inputs.set-version }}" >> $GITHUB_ENV
run: |
cibw_env=""
if [[ "${{ matrix.platform.cibw_system }}" == "manylinux" ]]; then
cibw_env="CCACHE_DIR=/host${{ github.workspace }}/.ccache"
fi
if [[ -n "${{ inputs.set-version }}" ]]; then
cibw_env="${cibw_env:+$cibw_env }OVERRIDE_GIT_DESCRIBE=${{ inputs.set-version }}"
fi
if [[ -n "$cibw_env" ]]; then
echo "CIBW_ENVIRONMENT=${cibw_env}" >> $GITHUB_ENV
fi

- name: Setup Ccache
uses: ./.github/actions/ccache-action
with:
key: ${{ matrix.platform.cibw_system }}_${{ matrix.platform.arch }}

# Install Astral UV, which will be used as build-frontend for cibuildwheel
- uses: astral-sh/setup-uv@v7
Expand Down
1 change: 0 additions & 1 deletion .github/workflows/targeted_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ on:
required: true
type: choice
options:
- '3.9'
- '3.10'
- '3.11'
- '3.12'
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
.sw?
#OS X specific files.
.DS_store
#VSCode specifics
.vscode/

#==============================================================================#
# Build artifacts
Expand Down Expand Up @@ -45,6 +47,7 @@ cmake-build-release
cmake-build-relwithdebinfo
duckdb_packaging/duckdb_version.txt
test.db
tmp/

#==============================================================================#
# Python
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Copyright 2018-2025 Stichting DuckDB Foundation
Copyright 2018-2026 Stichting DuckDB Foundation

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

Expand Down
Loading
Loading