Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
588722c
Fix lazy regex priority fallback in Glushkov engine
wjxiz1992 Jul 16, 2026
93e9edb
Address regex review feedback
wjxiz1992 Jul 17, 2026
0baa8ee
Clarify regex frontier terminology
wjxiz1992 Jul 17, 2026
c8151f0
Merge branch 'main' into codex/23287-glushkov-lazy
wjxiz1992 Jul 17, 2026
245bff5
Fix stale num_rows argument breaking mypy in cudf-polars duplicated-o…
galipremsagar Jul 17, 2026
74d23c2
Pin pyarrow<24 in the cudf and pylibcudf conda recipes (#23319)
galipremsagar Jul 17, 2026
b7a252c
Fix cudf.pandas isinstance checks for unproxied pandas subclasses and…
galipremsagar Jul 18, 2026
30cd09b
Fix GroupBy.apply result assembly, UDF closure side effects, and empt…
galipremsagar Jul 18, 2026
5d1ea3b
Rapidsmpf backref API changes for Host and Pinned MR (#23128)
nirandaperera Jul 20, 2026
79736b5
Update upstream cuml tests run (#23335)
jcrist Jul 20, 2026
ef47279
Avoid leaving multi-rank execution in a bad state in cudf-polars test…
wence- Jul 20, 2026
60e041d
Add fixed-size rolling window support to cudf-polars (#21964)
tolleybot Jul 20, 2026
82aa096
Reconcile Index.union dtypes before the empty-operand short-circuits …
galipremsagar Jul 20, 2026
5e74d89
Support the limit parameter in GroupBy.ffill and bfill (#23302)
galipremsagar Jul 20, 2026
0929bb7
Stop forward-filling in GroupBy.pct_change (#23301)
galipremsagar Jul 20, 2026
335b13e
Return index labels from GroupBy idxmin/idxmax in agg and transform (…
galipremsagar Jul 21, 2026
88a8e82
Match pandas semantics for null reduction results and mode ordering (…
galipremsagar Jul 21, 2026
82edf97
Fix incorrect DECIMAL128 groupby sums on Blackwell with CUDA 13.0 (#2…
PointKernel Jul 21, 2026
50e9c31
Fix null_precedence access in preprocessed_table::create (#23238)
davidwendt Jul 21, 2026
fbd7bde
Route GroupBy.transform size/cumcount/ngroup to their group-level imp…
galipremsagar Jul 21, 2026
f1eb7d8
Recognize named-aggregation lambdas as scans in GroupBy (#23300)
galipremsagar Jul 21, 2026
bf8107f
Add cuDF JAR build support for all Maven classifiers (#23261)
paul-aiyedun Jul 21, 2026
f9fa842
Add timeout stacktrace utility for cudf-polars tests, remove pytest-t…
wence- Jul 21, 2026
c352e0f
Stop mutating the source column dtype in equivalent-type numerical ca…
galipremsagar Jul 21, 2026
cf27be6
Mirror cudf.pandas class-level monkeypatches onto the real type (#23001)
galipremsagar Jul 21, 2026
0d69ccf
Empty commit to trigger a build (#23376)
bdice Jul 21, 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
70 changes: 70 additions & 0 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -471,3 +471,73 @@ jobs:
with:
push: true
cuda: '["12.9", "13.3"]'
# Build the cuDF Java JAR for every Maven classifier.
java-build:
needs: [telemetry-setup]
strategy:
fail-fast: false
matrix:
include:
- { cuda: "12.9", cuda_major: "12", arch: "x86_64", runner: "linux-amd64-cpu16" }
- { cuda: "13.3", cuda_major: "13", arch: "x86_64", runner: "linux-amd64-cpu16" }
- { cuda: "12.9", cuda_major: "12", arch: "aarch64", runner: "linux-arm64-cpu16" }
- { cuda: "13.3", cuda_major: "13", arch: "aarch64", runner: "linux-arm64-cpu16" }
runs-on: ${{ matrix.runner }}
permissions:
contents: read
steps:
- name: Checkout code repo
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
ref: ${{ inputs.sha }}
fetch-depth: 0
persist-credentials: false
- name: Build static libcudf
run: |
./java/ci/build_static_libcudf.sh \
--output-dir "${RUNNER_TEMP}/libcudf" \
--cuda-version "${{ matrix.cuda }}"
- name: Build cuDF Java JAR
run: |
./java/ci/build_cudf_java_jar.sh \
--libcudf-dir "${RUNNER_TEMP}/libcudf" \
--output-dir "${RUNNER_TEMP}/jars" \
--cuda-version "${{ matrix.cuda }}"
- name: Upload per-entry JAR artifact
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: cudf_java_cuda${{ matrix.cuda_major }}_${{ matrix.arch }}
# Ship only the JARs and POMs. Exclude the per-classifier Maven build scratch dir.
path: |
${{ runner.temp }}/jars
!${{ runner.temp }}/jars/.mvn-temp-target
if-no-files-found: error
# Assemble the per-classifier JARs into one Maven-repository layout.
java-gather:
needs: [java-build]
runs-on: linux-amd64-cpu4
permissions:
contents: read
steps:
- name: Checkout code repo
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
ref: ${{ inputs.sha }}
persist-credentials: false
- name: Download per-entry JAR artifacts
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
pattern: cudf_java_cuda*
path: ${{ runner.temp }}/jars
merge-multiple: true
- name: Assemble Maven repository layout
run: |
./java/ci/assemble_maven_repo.sh \
--jars-dir "${RUNNER_TEMP}/jars" \
--output-dir "${RUNNER_TEMP}/maven-repo"
- name: Upload combined Maven repository artifact
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: cudf_java_maven_repo
path: ${{ runner.temp }}/maven-repo
if-no-files-found: error
13 changes: 9 additions & 4 deletions ci/run_cudf_polars_polars_tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

set -euo pipefail

TIMEOUT_TOOL_PATH="$(dirname "$(realpath "${BASH_SOURCE[0]}")")"/timeout_with_stack.py

# Support invoking run_cudf_polars_pytests.sh outside the script directory
# Assumption, polars has been cloned in the root of the repo.
cd "$(dirname "$(realpath "${BASH_SOURCE[0]}")")"/../polars/
Expand Down Expand Up @@ -60,16 +62,18 @@ DESELECTED_TESTS_STR=$(printf -- " --deselect %s" "${DESELECTED_TESTS[@]}")
# Don't quote the `DESELECTED_...` variable because `pytest` can't handle
# multiple quoted arguments inline
# shellcheck disable=SC2086
# Fail fast (-x) because failed tests pollute the state
echo "Run polars tests with injected in-memory GPU engine"
python -m pytest \
python "${TIMEOUT_TOOL_PATH}" --enable-python 3600 \
python -m pytest \
--import-mode=importlib \
--cache-clear \
-x \
-m "" \
-p cudf_polars.testing.inject_gpu_engine \
-n 4 \
--dist=worksteal \
--tb=native \
--timeout=240 \
--durations 10 --durations-min 10 \
-ra \
$DESELECTED_TESTS_STR \
Expand All @@ -81,17 +85,18 @@ python -m pytest \
echo "Run polars tests with injected SPMD GPU engine, small blocksize"
CUDF_POLARS__EXECUTOR__TARGET_PARTITION_SIZE=805306368 \
CUDF_POLARS__EXECUTOR__FALLBACK_MODE=silent \
python -m pytest \
python "${TIMEOUT_TOOL_PATH}" --enable-python 3600 \
python -m pytest \
--import-mode=importlib \
--cache-clear \
-x \
-v \
-m "" \
-p cudf_polars.testing.inject_gpu_engine \
-W ignore::ResourceWarning \
-n 4 \
--dist=worksteal \
--tb=native \
--timeout=240 \
--durations 10 --durations-min 10 \
-ra \
$DESELECTED_TESTS_STR \
Expand Down
7 changes: 5 additions & 2 deletions ci/run_cudf_polars_pytests.sh
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
#!/bin/bash
# SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION.
# SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

set -euo pipefail

# It is essential to cd into python/cudf_polars as `pytest-xdist` + `coverage` seem to work only at this directory level.
# Support invoking run_cudf_polars_pytests.sh outside the script directory
TIMEOUT_TOOL_PATH="$(dirname "$(realpath "${BASH_SOURCE[0]}")")"/timeout_with_stack.py

cd "$(dirname "$(realpath "${BASH_SOURCE[0]}")")"/../python/cudf_polars/

python -m pytest --cache-clear "$@" tests
python "${TIMEOUT_TOOL_PATH}" --enable-python 3600 \
python -m pytest --cache-clear "$@" tests
2 changes: 0 additions & 2 deletions ci/test_cuml_compat.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,7 @@ rapids-logger "pytest cuml cuDF-compat subset"

timeout 15m python -m pytest \
--cache-clear \
"${CUML_TESTS_DIR}/test_array.py" \
"${CUML_TESTS_DIR}/test_compose.py" \
"${CUML_TESTS_DIR}/test_input_utils.py" \
"${CUML_TESTS_DIR}/test_kneighbors_classifier.py" \
"${CUML_TESTS_DIR}/test_kneighbors_regressor.py" \
"${CUML_TESTS_DIR}/test_label_encoder.py" \
Expand Down
7 changes: 5 additions & 2 deletions ci/test_narwhals.sh
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,13 @@ test_get_level \
"

# test_dtypes: narwhals' dtype mapping changed with polars 1.40 (reports Object where the test expects Int8).
# test_len_over_2369: cudf now routes transform("size") to the group-level size
# (https://github.com/rapidsai/cudf/issues/18491 is fixed), so narwhals' own
# xfail for the cudf constructor is stale and the test strict-XPASSes; deselect
# until narwhals removes the xfail.
TESTS_THAT_NEED_NARWHALS_FIX_FOR_CUDF=" \
test_dtypes or \
test_len_over_2369[cudf] or \
test_to_numpy[cudf] or \
test_fill_null_strategies_with_limit_as_none[cudf] or \
test_fill_null_series_limit_as_none[cudf] or \
Expand Down Expand Up @@ -163,7 +168,6 @@ rapids-logger "Run narwhals tests for cuDF Pandas"
# test_is_finite_expr & test_is_finite_series: https://github.com/rapidsai/cudf/issues/18257
# test_maybe_convert_dtypes_pandas: https://github.com/rapidsai/cudf/issues/14149
# test_log_dtype_pandas: cudf is promoting the type to float64
# test_len_over_2369: It fails during fallback. The error is 'DataFrame' object has no attribute 'to_frame'
# test_all_ignore_nulls, test_allh_kleene, and test_anyh_kleene: https://github.com/rapidsai/cudf/issues/19417
# test_offset_by_date_pandas: https://github.com/rapidsai/cudf/issues/19418
# test_select_boolean_cols and test_select_boolean_cols_multi_group_by: https://github.com/rapidsai/cudf/issues/19421
Expand All @@ -173,7 +177,6 @@ test_is_finite_expr or \
test_is_finite_series or \
test_maybe_convert_dtypes_pandas or \
test_log_dtype_pandas or \
test_len_over_2369 or \
test_all_ignore_nulls or \
test_allh_kleene or \
test_anyh_kleene or \
Expand Down
3 changes: 3 additions & 0 deletions ci/test_wheel_cudf_polars.sh
Original file line number Diff line number Diff line change
Expand Up @@ -89,12 +89,14 @@ for version in "${VERSIONS[@]}"; do
COVERAGE_ARGS=(--no-cov)
fi

# Fail fast (-x) rather than trying to continue because failed tests pollute the state
./ci/run_cudf_polars_pytests.sh \
-vv \
"${COVERAGE_ARGS[@]}" \
--numprocesses=4 \
--dist=worksteal \
--durations 10 --durations-min 10 \
-x \
-ra \
--junitxml="${RAPIDS_TESTS_DIR}/junit-cudf-polars-${version}.xml"

Expand All @@ -106,6 +108,7 @@ for version in "${VERSIONS[@]}"; do
EXITCODE=1
FAILED+=("${version}")
rapids-logger "Tests failed for polars ${version}.*"
break
else
PASSED+=("${version}")
rapids-logger "Tests passed for polars ${version}.*"
Expand Down
Loading
Loading