@@ -625,49 +625,15 @@ ships as manylinux_2_27 minimum; `--platform manylinux2014_x86_64` won't find it
625625If ` pip download` fails even with ` manylinux_2_28_x86_64 --only-binary :all:` , the package
626626has no pre-built cp314 wheel compatible with EL8 and must be built from source (see below).
627627
628- # ## duckdb — pending cp314 wheel (blocker for pygwalker)
628+ # ## duckdb cp314 status — resolved in 1.4.2
629629
630- ** Status:** duckdb ≥ 1.1 does not ship cp314 (Python 3.14) wheels on PyPI as of 2026-05.
631- Only cp313 and earlier are available. This blocks ` pygwalker` installation (duckdb is
632- a hard dep of pygwalker).
630+ ** Status (verified 2026-05-27):** duckdb added Python 3.14 support in ** v1.4.2** (November 2025,
631+ via duckdb/duckdb-python#116). cp314 wheels are available on PyPI for duckdb ≥ 1.4.2.
633632
634- ** Resolution path A — wait for upstream:**
635- duckdb is actively maintained. Check for cp314 wheels in new releases:
633+ The standard ` pip download` command works:
636634` ` ` bash
637635pip3.14 download duckdb --platform manylinux_2_28_x86_64 --python-version 3.14 \
638- --only-binary :all: -d /tmp/test- wheels/
636+ --only-binary :all: -d pre_built/el8.x86_64.glibc2p28/ wheels/
639637` ` `
640- Once a cp314 wheel appears, run the full pygwalker wheel download and commit.
641638
642- ** Resolution path B — build duckdb wheel from source on EL8:**
643- duckdb uses a bundled CMake build that links nothing from the system (self-contained).
644- The resulting wheel will be tagged ` linux_x86_64` (not manylinux), which uv accepts
645- for local install via ` --find-links` :
646-
647- ` ` ` bash
648- source /opt/rh/gcc-toolset-14/enable
649- sudo dnf install -y cmake ninja-build python3-devel
650-
651- # Clone at latest stable tag
652- git clone --depth 1 --branch v1.3.0 https://github.com/duckdb/duckdb.git
653- cd duckdb
654-
655- # Build Python extension
656- pip3.14 install build
657- python3.14 -m build --wheel
658-
659- # Resulting wheel in dist/
660- ls dist/duckdb-* .whl # tagged cp314-cp314-linux_x86_64
661-
662- # Verify glibc requirement (should be ≤ 2.28):
663- readelf -V dist/duckdb-*.whl | grep -oE 'GLIBC_[0-9]+\.[0-9]+' | sort -V | tail -1
664-
665- cp dist/duckdb-*.whl pre_built/el8.x86_64.glibc2p28/wheels/
666- ./strip_all_elf_binaries
667- git add pre_built/ .strip-manifest
668- git commit -m "feat(pygwalker): bundle duckdb cp314 wheel (source build)"
669- ` ` `
670-
671- Note: ` python3.14 -m build` builds against the current environment' s glibc (2.28).
672- The wheel will NOT be portable to glibc < 2.28 systems, but all EL8 systems have glibc 2.28
673- exactly, so this is fine for the loadout' s fleet target.
639+ No source build required. pygwalker' s duckdb dep is not a blocker.
0 commit comments