From f0e65325b421042437c323357ca68746e5fb2d55 Mon Sep 17 00:00:00 2001 From: xiaohongbo Date: Fri, 24 Jul 2026 14:47:53 +0800 Subject: [PATCH 1/4] ci: test pypaimon-rust 0.3.0 RC1 --- .github/workflows/paimon-python-checks.yml | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/.github/workflows/paimon-python-checks.yml b/.github/workflows/paimon-python-checks.yml index efa187367bbd..7ae21c9d23db 100755 --- a/.github/workflows/paimon-python-checks.yml +++ b/.github/workflows/paimon-python-checks.yml @@ -34,7 +34,7 @@ env: JDK_VERSION: 8 MAVEN_OPTS: -Dmaven.wagon.httpconnectionManager.ttlSeconds=30 -Dmaven.wagon.http.retryHandler.requestSentEnabled=true LUMINA_DATA_VERSION: 0.1.0 - PYPAIMON_RUST_REV: 7c568274a4c5df6bd00e8d60edea21395412202b + PYPAIMON_RUST_VERSION: 0.3.0rc1 concurrency: @@ -84,12 +84,6 @@ jobs: java -version mvn -version - - name: Install Rust toolchain - if: matrix.python-version == '3.11' - run: | - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable --profile minimal - echo "$HOME/.cargo/bin" >> $GITHUB_PATH - - name: Verify Python version run: python --version @@ -133,8 +127,9 @@ jobs: pip install torch --index-url https://download.pytorch.org/whl/cpu python -m pip install pyroaring readerwriterlock==1.0.9 fsspec==2024.3.1 cachetools==5.3.3 ossfs==2023.12.0 ray==2.54.0 fastavro==1.11.1 'isal>=1.8,<2' pyarrow==16.0.0 zstandard==0.24.0 polars==1.32.0 duckdb==1.3.2 numpy==1.24.3 pandas==2.0.3 pylance==0.39.0 cramjam flake8==4.0.1 pytest~=7.0 py4j==0.10.9.9 requests parameterized==0.9.0 'daft>=0.7.6' 'datafusion>=52' if [[ "${{ matrix.python-version }}" == "3.11" ]]; then - # Exercise the split-planning API in one lane until the compatible 0.3 wheel is published. - python -m pip install "git+https://github.com/apache/paimon-rust.git@${PYPAIMON_RUST_REV}#subdirectory=bindings/python" + # Exercise the published 0.3 RC wheel and split-planning API in one lane. + python -m pip install --no-deps --only-binary=:all: --index-url https://test.pypi.org/simple/ "pypaimon-rust==${PYPAIMON_RUST_VERSION}" + python -c "import importlib.metadata as m; assert m.version('pypaimon-rust') == '${PYPAIMON_RUST_VERSION}'" python -c "from pypaimon_rust.datafusion import PaimonCatalog; assert hasattr(PaimonCatalog, 'get_table')" else python -m pip install pypaimon-rust==0.2.0 From c381450268b4e9989f11c6ddeaa3476c57a60626 Mon Sep 17 00:00:00 2001 From: xiaohongbo Date: Fri, 24 Jul 2026 14:57:08 +0800 Subject: [PATCH 2/4] ci: clarify TestPyPI RC pin is temporary --- .github/workflows/paimon-python-checks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/paimon-python-checks.yml b/.github/workflows/paimon-python-checks.yml index 7ae21c9d23db..08c85725ace4 100755 --- a/.github/workflows/paimon-python-checks.yml +++ b/.github/workflows/paimon-python-checks.yml @@ -127,7 +127,7 @@ jobs: pip install torch --index-url https://download.pytorch.org/whl/cpu python -m pip install pyroaring readerwriterlock==1.0.9 fsspec==2024.3.1 cachetools==5.3.3 ossfs==2023.12.0 ray==2.54.0 fastavro==1.11.1 'isal>=1.8,<2' pyarrow==16.0.0 zstandard==0.24.0 polars==1.32.0 duckdb==1.3.2 numpy==1.24.3 pandas==2.0.3 pylance==0.39.0 cramjam flake8==4.0.1 pytest~=7.0 py4j==0.10.9.9 requests parameterized==0.9.0 'daft>=0.7.6' 'datafusion>=52' if [[ "${{ matrix.python-version }}" == "3.11" ]]; then - # Exercise the published 0.3 RC wheel and split-planning API in one lane. + # Validate the RC wheel from TestPyPI; switch to PyPI and 0.3.0 after GA. python -m pip install --no-deps --only-binary=:all: --index-url https://test.pypi.org/simple/ "pypaimon-rust==${PYPAIMON_RUST_VERSION}" python -c "import importlib.metadata as m; assert m.version('pypaimon-rust') == '${PYPAIMON_RUST_VERSION}'" python -c "from pypaimon_rust.datafusion import PaimonCatalog; assert hasattr(PaimonCatalog, 'get_table')" From 631cbd1e5cd988aed73e9629b1da4fc0816d59c6 Mon Sep 17 00:00:00 2001 From: xiaohongbo Date: Fri, 24 Jul 2026 15:14:07 +0800 Subject: [PATCH 3/4] ci: verify complete native planning API --- .github/workflows/paimon-python-checks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/paimon-python-checks.yml b/.github/workflows/paimon-python-checks.yml index 08c85725ace4..4cc04842c70b 100755 --- a/.github/workflows/paimon-python-checks.yml +++ b/.github/workflows/paimon-python-checks.yml @@ -130,7 +130,7 @@ jobs: # Validate the RC wheel from TestPyPI; switch to PyPI and 0.3.0 after GA. python -m pip install --no-deps --only-binary=:all: --index-url https://test.pypi.org/simple/ "pypaimon-rust==${PYPAIMON_RUST_VERSION}" python -c "import importlib.metadata as m; assert m.version('pypaimon-rust') == '${PYPAIMON_RUST_VERSION}'" - python -c "from pypaimon_rust.datafusion import PaimonCatalog; assert hasattr(PaimonCatalog, 'get_table')" + python -c "from pypaimon_rust.datafusion import PaimonCatalog, Split; assert hasattr(PaimonCatalog, 'get_table') and hasattr(Split, 'serialize')" else python -m pip install pypaimon-rust==0.2.0 fi From 2ab8c86d1f10fa7bd4ddec256e12e1451cf04dbd Mon Sep 17 00:00:00 2001 From: xiaohongbo Date: Mon, 27 Jul 2026 06:53:15 -0700 Subject: [PATCH 4/4] [python] Update pypaimon-rust to 0.3.0 GA in CI --- .github/workflows/paimon-python-checks.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/paimon-python-checks.yml b/.github/workflows/paimon-python-checks.yml index 4cc04842c70b..4f0bb2a8fd2e 100755 --- a/.github/workflows/paimon-python-checks.yml +++ b/.github/workflows/paimon-python-checks.yml @@ -34,7 +34,7 @@ env: JDK_VERSION: 8 MAVEN_OPTS: -Dmaven.wagon.httpconnectionManager.ttlSeconds=30 -Dmaven.wagon.http.retryHandler.requestSentEnabled=true LUMINA_DATA_VERSION: 0.1.0 - PYPAIMON_RUST_VERSION: 0.3.0rc1 + PYPAIMON_RUST_VERSION: 0.3.0 concurrency: @@ -127,8 +127,8 @@ jobs: pip install torch --index-url https://download.pytorch.org/whl/cpu python -m pip install pyroaring readerwriterlock==1.0.9 fsspec==2024.3.1 cachetools==5.3.3 ossfs==2023.12.0 ray==2.54.0 fastavro==1.11.1 'isal>=1.8,<2' pyarrow==16.0.0 zstandard==0.24.0 polars==1.32.0 duckdb==1.3.2 numpy==1.24.3 pandas==2.0.3 pylance==0.39.0 cramjam flake8==4.0.1 pytest~=7.0 py4j==0.10.9.9 requests parameterized==0.9.0 'daft>=0.7.6' 'datafusion>=52' if [[ "${{ matrix.python-version }}" == "3.11" ]]; then - # Validate the RC wheel from TestPyPI; switch to PyPI and 0.3.0 after GA. - python -m pip install --no-deps --only-binary=:all: --index-url https://test.pypi.org/simple/ "pypaimon-rust==${PYPAIMON_RUST_VERSION}" + # Install the 0.3.0 GA wheel from PyPI. + python -m pip install "pypaimon-rust==${PYPAIMON_RUST_VERSION}" python -c "import importlib.metadata as m; assert m.version('pypaimon-rust') == '${PYPAIMON_RUST_VERSION}'" python -c "from pypaimon_rust.datafusion import PaimonCatalog, Split; assert hasattr(PaimonCatalog, 'get_table') and hasattr(Split, 'serialize')" else