From 67e5b7623977160f56354912c3c707ad57a81eaa Mon Sep 17 00:00:00 2001 From: galipremsagar Date: Sun, 28 Jun 2026 23:07:12 +0000 Subject: [PATCH 1/4] fix --- conda/environments/all_cuda-129_arch-aarch64.yaml | 2 +- conda/environments/all_cuda-129_arch-x86_64.yaml | 2 +- conda/environments/all_cuda-133_arch-aarch64.yaml | 2 +- conda/environments/all_cuda-133_arch-x86_64.yaml | 2 +- dependencies.yaml | 5 ++++- python/cudf/pyproject.toml | 2 +- python/dask_cudf/pyproject.toml | 4 ++-- python/pylibcudf/pyproject.toml | 2 +- 8 files changed, 12 insertions(+), 9 deletions(-) diff --git a/conda/environments/all_cuda-129_arch-aarch64.yaml b/conda/environments/all_cuda-129_arch-aarch64.yaml index 84620d9b12ea..14183f0f2724 100644 --- a/conda/environments/all_cuda-129_arch-aarch64.yaml +++ b/conda/environments/all_cuda-129_arch-aarch64.yaml @@ -72,7 +72,7 @@ dependencies: - odfpy - openpyxl - packaging -- pandas>=3.0.0,<3.1.0 +- pandas>=3.0.0,<3.1.0,!=3.0.4 - pandoc - polars>=1.35,<1.42 - pre-commit diff --git a/conda/environments/all_cuda-129_arch-x86_64.yaml b/conda/environments/all_cuda-129_arch-x86_64.yaml index 618dad2442a7..9a5fea0a47a0 100644 --- a/conda/environments/all_cuda-129_arch-x86_64.yaml +++ b/conda/environments/all_cuda-129_arch-x86_64.yaml @@ -72,7 +72,7 @@ dependencies: - odfpy - openpyxl - packaging -- pandas>=3.0.0,<3.1.0 +- pandas>=3.0.0,<3.1.0,!=3.0.4 - pandoc - polars>=1.35,<1.42 - pre-commit diff --git a/conda/environments/all_cuda-133_arch-aarch64.yaml b/conda/environments/all_cuda-133_arch-aarch64.yaml index 0c247e6b10a1..5def21b0d250 100644 --- a/conda/environments/all_cuda-133_arch-aarch64.yaml +++ b/conda/environments/all_cuda-133_arch-aarch64.yaml @@ -72,7 +72,7 @@ dependencies: - odfpy - openpyxl - packaging -- pandas>=3.0.0,<3.1.0 +- pandas>=3.0.0,<3.1.0,!=3.0.4 - pandoc - polars>=1.35,<1.42 - pre-commit diff --git a/conda/environments/all_cuda-133_arch-x86_64.yaml b/conda/environments/all_cuda-133_arch-x86_64.yaml index 94cd3772c26d..22cc18cdc3bc 100644 --- a/conda/environments/all_cuda-133_arch-x86_64.yaml +++ b/conda/environments/all_cuda-133_arch-x86_64.yaml @@ -72,7 +72,7 @@ dependencies: - odfpy - openpyxl - packaging -- pandas>=3.0.0,<3.1.0 +- pandas>=3.0.0,<3.1.0,!=3.0.4 - pandoc - polars>=1.35,<1.42 - pre-commit diff --git a/dependencies.yaml b/dependencies.yaml index 01113fdba333..b7ad2b456c4c 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -914,7 +914,10 @@ dependencies: - output_types: [conda, requirements, pyproject] packages: - fsspec>=0.6.0 - - &pandas pandas>=3.0.0,<3.1.0 + # pandas 3.0.4 segfaults constructing pd.Timedelta on Python 3.14, + # which breaks `import cudf` (https://github.com/pandas-dev/pandas/issues/66086). + # Drop the exclusion once a fixed pandas (e.g. 3.0.5) is released. + - &pandas pandas>=3.0.0,<3.1.0,!=3.0.4 run_pylibcudf: common: - output_types: [conda, requirements, pyproject] diff --git a/python/cudf/pyproject.toml b/python/cudf/pyproject.toml index c18fc6763a00..11fb2bce0847 100644 --- a/python/cudf/pyproject.toml +++ b/python/cudf/pyproject.toml @@ -30,7 +30,7 @@ dependencies = [ "numpy>=1.26,<3.0", "nvtx>=0.2.1", "packaging", - "pandas>=3.0.0,<3.1.0", + "pandas>=3.0.0,<3.1.0,!=3.0.4", "pyarrow>=19.0.0,<24", "pylibcudf==26.8.*,>=0.0.0a0", "rich", diff --git a/python/dask_cudf/pyproject.toml b/python/dask_cudf/pyproject.toml index 624a6abce7ad..53dc23e60367 100644 --- a/python/dask_cudf/pyproject.toml +++ b/python/dask_cudf/pyproject.toml @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION. +# SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: Apache-2.0 [build-system] @@ -26,7 +26,7 @@ dependencies = [ "fsspec>=0.6.0", "numpy>=1.26,<3.0", "nvidia-ml-py>=12", - "pandas>=3.0.0,<3.1.0", + "pandas>=3.0.0,<3.1.0,!=3.0.4", "rapids-dask-dependency==26.8.*,>=0.0.0a0", ] # This list was generated by `rapids-dependency-file-generator`. To make changes, edit ../../dependencies.yaml and run `rapids-dependency-file-generator`. classifiers = [ diff --git a/python/pylibcudf/pyproject.toml b/python/pylibcudf/pyproject.toml index 46a8a62e1721..d5db17269f81 100644 --- a/python/pylibcudf/pyproject.toml +++ b/python/pylibcudf/pyproject.toml @@ -43,7 +43,7 @@ test = [ "nanoarrow", "numba-cuda>=0.22.2", "numba>=0.60.0,<0.65.0", - "pandas>=3.0.0,<3.1.0", + "pandas>=3.0.0,<3.1.0,!=3.0.4", "pyarrow>=19.0.0,<24", "pytest-cov", "pytest-xdist", From 66555bb6174dcfc25dea8e2afc5e8da78d0d194e Mon Sep 17 00:00:00 2001 From: galipremsagar Date: Sun, 28 Jun 2026 23:17:02 +0000 Subject: [PATCH 2/4] Also exclude pandas 3.0.4 from oldest-deps and cudf.pandas-compat test selectors The run_common runtime pin covers wheel/conda installs, but the test_python_cudf_common (oldest) and test_cudf_pandas_compat matrix selectors still listed a bare pandas==3.0.*, which can resolve to the broken 3.0.4 on Python 3.14. Mirror the !=3.0.4 exclusion there too. Addresses CodeRabbit review on PR #23022. --- dependencies.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.yaml b/dependencies.yaml index b7ad2b456c4c..1bdffd09df8f 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -1036,7 +1036,7 @@ dependencies: - matrix: {dependencies: "oldest"} packages: - numba==0.60.0 - - pandas==3.0.* + - pandas==3.0.*,!=3.0.4 - numba-cuda==0.22.2 - matrix: {dependencies: "latest"} packages: @@ -1682,7 +1682,7 @@ dependencies: pandas_compat_version: "3.0" packages: - numpy>=1.26,<2.0a0 - - pandas==3.0.* + - pandas==3.0.*,!=3.0.4 - matrix: packages: - output_types: requirements From 5646b5f231530f2f003905c1fcfa84f67b35128d Mon Sep 17 00:00:00 2001 From: galipremsagar Date: Mon, 29 Jun 2026 02:27:10 +0000 Subject: [PATCH 3/4] update --- dependencies.yaml | 5 +++++ python/cudf_polars/pyproject.toml | 1 + 2 files changed, 6 insertions(+) diff --git a/dependencies.yaml b/dependencies.yaml index 1bdffd09df8f..6dd6dbee8150 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -1165,6 +1165,11 @@ dependencies: - pytest-httpserver - pytest-timeout - zstandard + # The polars test suite constructs pandas objects for interop and + # dask-cuda pulls pandas in transitively (unbounded), so constrain it + # here to exclude the 3.0.4 release that segfaults on pd.Timedelta + # (https://github.com/pandas-dev/pandas/issues/66086). + - *pandas test_python_narwhals: common: - output_types: [conda, requirements, pyproject] diff --git a/python/cudf_polars/pyproject.toml b/python/cudf_polars/pyproject.toml index b4d8662c62db..1e4a0331d087 100644 --- a/python/cudf_polars/pyproject.toml +++ b/python/cudf_polars/pyproject.toml @@ -44,6 +44,7 @@ classifiers = [ [project.optional-dependencies] test = [ "dask-cuda==26.8.*,>=0.0.0a0", + "pandas>=3.0.0,<3.1.0,!=3.0.4", "pytest-cov", "pytest-httpserver", "pytest-timeout", From 5fe2b2eaa2a6b9f205acfe25d7aee0d2c5adde4c Mon Sep 17 00:00:00 2001 From: galipremsagar Date: Mon, 29 Jun 2026 02:46:27 +0000 Subject: [PATCH 4/4] Use an upper-bound pandas pin (<3.0.4a0) instead of !=3.0.4 Per review, cap below 3.0.4 rather than excluding only that exact version: we can't assume a later 3.0.x will be fixed, so this avoids auto-upgrading into another broken release. Raise the bound once an upstream fix is confirmed (https://github.com/pandas-dev/pandas/issues/66086). --- conda/environments/all_cuda-129_arch-aarch64.yaml | 2 +- conda/environments/all_cuda-129_arch-x86_64.yaml | 2 +- conda/environments/all_cuda-133_arch-aarch64.yaml | 2 +- conda/environments/all_cuda-133_arch-x86_64.yaml | 2 +- dependencies.yaml | 9 +++++---- python/cudf/pyproject.toml | 2 +- python/cudf_polars/pyproject.toml | 2 +- python/dask_cudf/pyproject.toml | 2 +- python/pylibcudf/pyproject.toml | 2 +- 9 files changed, 13 insertions(+), 12 deletions(-) diff --git a/conda/environments/all_cuda-129_arch-aarch64.yaml b/conda/environments/all_cuda-129_arch-aarch64.yaml index 14183f0f2724..71bd3873d456 100644 --- a/conda/environments/all_cuda-129_arch-aarch64.yaml +++ b/conda/environments/all_cuda-129_arch-aarch64.yaml @@ -72,7 +72,7 @@ dependencies: - odfpy - openpyxl - packaging -- pandas>=3.0.0,<3.1.0,!=3.0.4 +- pandas>=3.0.0,<3.0.4a0 - pandoc - polars>=1.35,<1.42 - pre-commit diff --git a/conda/environments/all_cuda-129_arch-x86_64.yaml b/conda/environments/all_cuda-129_arch-x86_64.yaml index 9a5fea0a47a0..5bf990d78f91 100644 --- a/conda/environments/all_cuda-129_arch-x86_64.yaml +++ b/conda/environments/all_cuda-129_arch-x86_64.yaml @@ -72,7 +72,7 @@ dependencies: - odfpy - openpyxl - packaging -- pandas>=3.0.0,<3.1.0,!=3.0.4 +- pandas>=3.0.0,<3.0.4a0 - pandoc - polars>=1.35,<1.42 - pre-commit diff --git a/conda/environments/all_cuda-133_arch-aarch64.yaml b/conda/environments/all_cuda-133_arch-aarch64.yaml index 5def21b0d250..ae7839c8303d 100644 --- a/conda/environments/all_cuda-133_arch-aarch64.yaml +++ b/conda/environments/all_cuda-133_arch-aarch64.yaml @@ -72,7 +72,7 @@ dependencies: - odfpy - openpyxl - packaging -- pandas>=3.0.0,<3.1.0,!=3.0.4 +- pandas>=3.0.0,<3.0.4a0 - pandoc - polars>=1.35,<1.42 - pre-commit diff --git a/conda/environments/all_cuda-133_arch-x86_64.yaml b/conda/environments/all_cuda-133_arch-x86_64.yaml index 22cc18cdc3bc..5ae487fb98d8 100644 --- a/conda/environments/all_cuda-133_arch-x86_64.yaml +++ b/conda/environments/all_cuda-133_arch-x86_64.yaml @@ -72,7 +72,7 @@ dependencies: - odfpy - openpyxl - packaging -- pandas>=3.0.0,<3.1.0,!=3.0.4 +- pandas>=3.0.0,<3.0.4a0 - pandoc - polars>=1.35,<1.42 - pre-commit diff --git a/dependencies.yaml b/dependencies.yaml index 6dd6dbee8150..bd99c363541a 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -916,8 +916,9 @@ dependencies: - fsspec>=0.6.0 # pandas 3.0.4 segfaults constructing pd.Timedelta on Python 3.14, # which breaks `import cudf` (https://github.com/pandas-dev/pandas/issues/66086). - # Drop the exclusion once a fixed pandas (e.g. 3.0.5) is released. - - &pandas pandas>=3.0.0,<3.1.0,!=3.0.4 + # Cap below 3.0.4 (rather than just excluding it) until a fixed + # release is confirmed upstream, then raise the bound. + - &pandas pandas>=3.0.0,<3.0.4a0 run_pylibcudf: common: - output_types: [conda, requirements, pyproject] @@ -1036,7 +1037,7 @@ dependencies: - matrix: {dependencies: "oldest"} packages: - numba==0.60.0 - - pandas==3.0.*,!=3.0.4 + - pandas==3.0.*,<3.0.4a0 - numba-cuda==0.22.2 - matrix: {dependencies: "latest"} packages: @@ -1687,7 +1688,7 @@ dependencies: pandas_compat_version: "3.0" packages: - numpy>=1.26,<2.0a0 - - pandas==3.0.*,!=3.0.4 + - pandas==3.0.*,<3.0.4a0 - matrix: packages: - output_types: requirements diff --git a/python/cudf/pyproject.toml b/python/cudf/pyproject.toml index 11fb2bce0847..1b75ab0fcd28 100644 --- a/python/cudf/pyproject.toml +++ b/python/cudf/pyproject.toml @@ -30,7 +30,7 @@ dependencies = [ "numpy>=1.26,<3.0", "nvtx>=0.2.1", "packaging", - "pandas>=3.0.0,<3.1.0,!=3.0.4", + "pandas>=3.0.0,<3.0.4a0", "pyarrow>=19.0.0,<24", "pylibcudf==26.8.*,>=0.0.0a0", "rich", diff --git a/python/cudf_polars/pyproject.toml b/python/cudf_polars/pyproject.toml index 1e4a0331d087..3f9f6cbff5e9 100644 --- a/python/cudf_polars/pyproject.toml +++ b/python/cudf_polars/pyproject.toml @@ -44,7 +44,7 @@ classifiers = [ [project.optional-dependencies] test = [ "dask-cuda==26.8.*,>=0.0.0a0", - "pandas>=3.0.0,<3.1.0,!=3.0.4", + "pandas>=3.0.0,<3.0.4a0", "pytest-cov", "pytest-httpserver", "pytest-timeout", diff --git a/python/dask_cudf/pyproject.toml b/python/dask_cudf/pyproject.toml index 53dc23e60367..65338270f1b9 100644 --- a/python/dask_cudf/pyproject.toml +++ b/python/dask_cudf/pyproject.toml @@ -26,7 +26,7 @@ dependencies = [ "fsspec>=0.6.0", "numpy>=1.26,<3.0", "nvidia-ml-py>=12", - "pandas>=3.0.0,<3.1.0,!=3.0.4", + "pandas>=3.0.0,<3.0.4a0", "rapids-dask-dependency==26.8.*,>=0.0.0a0", ] # This list was generated by `rapids-dependency-file-generator`. To make changes, edit ../../dependencies.yaml and run `rapids-dependency-file-generator`. classifiers = [ diff --git a/python/pylibcudf/pyproject.toml b/python/pylibcudf/pyproject.toml index d5db17269f81..f5f89e0156ba 100644 --- a/python/pylibcudf/pyproject.toml +++ b/python/pylibcudf/pyproject.toml @@ -43,7 +43,7 @@ test = [ "nanoarrow", "numba-cuda>=0.22.2", "numba>=0.60.0,<0.65.0", - "pandas>=3.0.0,<3.1.0,!=3.0.4", + "pandas>=3.0.0,<3.0.4a0", "pyarrow>=19.0.0,<24", "pytest-cov", "pytest-xdist",