From cde801d48f1c3a26ba9646a8923d5c7acea15964 Mon Sep 17 00:00:00 2001 From: Seth Troisi Date: Thu, 6 Aug 2026 14:36:39 -0700 Subject: [PATCH 1/3] Unpin pandas<3.0.4a as 3.0.4 was yanked and patched in 3.0.5 This is a revert of 9a277943 after pandas yanked 3.0.4 and fixed the seg fault. --- 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 | 10 +++------- 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, 11 insertions(+), 15 deletions(-) diff --git a/conda/environments/all_cuda-129_arch-aarch64.yaml b/conda/environments/all_cuda-129_arch-aarch64.yaml index 02b4ef9ff197..0d7bee18a86c 100644 --- a/conda/environments/all_cuda-129_arch-aarch64.yaml +++ b/conda/environments/all_cuda-129_arch-aarch64.yaml @@ -74,7 +74,7 @@ dependencies: - odfpy - openpyxl - packaging -- pandas>=3.0.0,<3.0.4a0 +- pandas>=3.0.0 - pandoc - polars>=1.35,<1.43 - 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 9e1de949a4d9..7be6fe83b848 100644 --- a/conda/environments/all_cuda-129_arch-x86_64.yaml +++ b/conda/environments/all_cuda-129_arch-x86_64.yaml @@ -74,7 +74,7 @@ dependencies: - odfpy - openpyxl - packaging -- pandas>=3.0.0,<3.0.4a0 +- pandas>=3.0.0 - pandoc - polars>=1.35,<1.43 - pre-commit diff --git a/conda/environments/all_cuda-133_arch-aarch64.yaml b/conda/environments/all_cuda-133_arch-aarch64.yaml index aa7fda73c554..0dcb56085acd 100644 --- a/conda/environments/all_cuda-133_arch-aarch64.yaml +++ b/conda/environments/all_cuda-133_arch-aarch64.yaml @@ -74,7 +74,7 @@ dependencies: - odfpy - openpyxl - packaging -- pandas>=3.0.0,<3.0.4a0 +- pandas>=3.0.0 - pandoc - polars>=1.35,<1.43 - 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 b4eb46fd449c..67132c0115e1 100644 --- a/conda/environments/all_cuda-133_arch-x86_64.yaml +++ b/conda/environments/all_cuda-133_arch-x86_64.yaml @@ -74,7 +74,7 @@ dependencies: - odfpy - openpyxl - packaging -- pandas>=3.0.0,<3.0.4a0 +- pandas>=3.0.0 - pandoc - polars>=1.35,<1.43 - pre-commit diff --git a/dependencies.yaml b/dependencies.yaml index d14a559a977c..df31770ce703 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -1059,11 +1059,7 @@ dependencies: - output_types: [conda, requirements, pyproject] packages: - 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). - # 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 + - &pandas pandas>=3.0.0 run_pylibcudf: common: - output_types: [conda, requirements, pyproject] @@ -1186,7 +1182,7 @@ dependencies: - matrix: {dependencies: "oldest"} packages: - numba==0.60.0 - - pandas==3.0.*,<3.0.4a0 + - pandas==3.0.* - numba-cuda==0.22.2 - matrix: {dependencies: "latest"} packages: @@ -1907,7 +1903,7 @@ dependencies: pandas_compat_version: "3.0" packages: - numpy>=2.0,<3.0 - - pandas==3.0.*,<3.0.4a0 + - pandas==3.0.* - matrix: packages: test_cudf_polars_compat: diff --git a/python/cudf/pyproject.toml b/python/cudf/pyproject.toml index e9fef847e955..b2538f7360c5 100644 --- a/python/cudf/pyproject.toml +++ b/python/cudf/pyproject.toml @@ -30,7 +30,7 @@ dependencies = [ "numpy>=2.0,<3.0", "nvtx>=0.2.1", "packaging", - "pandas>=3.0.0,<3.0.4a0", + "pandas>=3.0.0", "pyarrow>=19.0.0,<24", "pylibcudf==26.10.*,>=0.0.0a0", "rich", diff --git a/python/cudf_polars/pyproject.toml b/python/cudf_polars/pyproject.toml index 44825a801a42..5d932538ff9a 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.10.*,>=0.0.0a0", - "pandas>=3.0.0,<3.0.4a0", + "pandas>=3.0.0", "psutil", "pytest-cov", "pytest-httpserver", diff --git a/python/dask_cudf/pyproject.toml b/python/dask_cudf/pyproject.toml index bc8bc7b6f59e..80d400f33cdf 100644 --- a/python/dask_cudf/pyproject.toml +++ b/python/dask_cudf/pyproject.toml @@ -26,7 +26,7 @@ dependencies = [ "fsspec>=0.6.0", "numpy>=2.0,<3.0", "nvidia-ml-py>=12", - "pandas>=3.0.0,<3.0.4a0", + "pandas>=3.0.0", "rapids-dask-dependency==26.10.*,>=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 ca8f1ce9a04a..33d11dc93670 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.0.4a0", + "pandas>=3.0.0", "pyarrow>=19.0.0,<24", "pytest-cov", "pytest-xdist", From b897fb6fe523dbc5db56cd22a63ee41847872fd3 Mon Sep 17 00:00:00 2001 From: Seth Troisi Date: Mon, 10 Aug 2026 14:36:56 -0700 Subject: [PATCH 2/3] Constrain update to <3.1 match style of 9a277943 --- 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 | 12 ++++-------- 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, 12 insertions(+), 16 deletions(-) diff --git a/conda/environments/all_cuda-129_arch-aarch64.yaml b/conda/environments/all_cuda-129_arch-aarch64.yaml index 0d7bee18a86c..4f8a84d4cfaf 100644 --- a/conda/environments/all_cuda-129_arch-aarch64.yaml +++ b/conda/environments/all_cuda-129_arch-aarch64.yaml @@ -74,7 +74,7 @@ dependencies: - odfpy - openpyxl - packaging -- pandas>=3.0.0 +- pandas>=3.0.0,<3.1.0 - pandoc - polars>=1.35,<1.43 - 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 7be6fe83b848..3bc3a21ff5a1 100644 --- a/conda/environments/all_cuda-129_arch-x86_64.yaml +++ b/conda/environments/all_cuda-129_arch-x86_64.yaml @@ -74,7 +74,7 @@ dependencies: - odfpy - openpyxl - packaging -- pandas>=3.0.0 +- pandas>=3.0.0,<3.1.0 - pandoc - polars>=1.35,<1.43 - pre-commit diff --git a/conda/environments/all_cuda-133_arch-aarch64.yaml b/conda/environments/all_cuda-133_arch-aarch64.yaml index 0dcb56085acd..ccf220fb04d2 100644 --- a/conda/environments/all_cuda-133_arch-aarch64.yaml +++ b/conda/environments/all_cuda-133_arch-aarch64.yaml @@ -74,7 +74,7 @@ dependencies: - odfpy - openpyxl - packaging -- pandas>=3.0.0 +- pandas>=3.0.0,<3.1.0 - pandoc - polars>=1.35,<1.43 - 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 67132c0115e1..63459fe58a01 100644 --- a/conda/environments/all_cuda-133_arch-x86_64.yaml +++ b/conda/environments/all_cuda-133_arch-x86_64.yaml @@ -74,7 +74,7 @@ dependencies: - odfpy - openpyxl - packaging -- pandas>=3.0.0 +- pandas>=3.0.0,<3.1.0 - pandoc - polars>=1.35,<1.43 - pre-commit diff --git a/dependencies.yaml b/dependencies.yaml index df31770ce703..ce548e1811f2 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -1059,7 +1059,7 @@ dependencies: - output_types: [conda, requirements, pyproject] packages: - fsspec>=0.6.0 - - &pandas pandas>=3.0.0 + - &pandas pandas>=3.0.0,<3.1.0 run_pylibcudf: common: - output_types: [conda, requirements, pyproject] @@ -1182,11 +1182,11 @@ dependencies: - matrix: {dependencies: "oldest"} packages: - numba==0.60.0 - - pandas==3.0.* + - *pandas - numba-cuda==0.22.2 - matrix: {dependencies: "latest"} packages: - - pandas==3.0.3 + - *pandas - matrix: packages: - output_types: conda @@ -1326,10 +1326,6 @@ dependencies: - zstandard # Used by ci/timeout_with_stack.py utility - psutil - # 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 - output_types: conda packages: @@ -1903,7 +1899,7 @@ dependencies: pandas_compat_version: "3.0" packages: - numpy>=2.0,<3.0 - - pandas==3.0.* + - *pandas - matrix: packages: test_cudf_polars_compat: diff --git a/python/cudf/pyproject.toml b/python/cudf/pyproject.toml index b2538f7360c5..2bc10dd03d52 100644 --- a/python/cudf/pyproject.toml +++ b/python/cudf/pyproject.toml @@ -30,7 +30,7 @@ dependencies = [ "numpy>=2.0,<3.0", "nvtx>=0.2.1", "packaging", - "pandas>=3.0.0", + "pandas>=3.0.0,<3.1.0", "pyarrow>=19.0.0,<24", "pylibcudf==26.10.*,>=0.0.0a0", "rich", diff --git a/python/cudf_polars/pyproject.toml b/python/cudf_polars/pyproject.toml index 5d932538ff9a..c671640b6c8e 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.10.*,>=0.0.0a0", - "pandas>=3.0.0", + "pandas>=3.0.0,<3.1.0", "psutil", "pytest-cov", "pytest-httpserver", diff --git a/python/dask_cudf/pyproject.toml b/python/dask_cudf/pyproject.toml index 80d400f33cdf..978d75b6d50f 100644 --- a/python/dask_cudf/pyproject.toml +++ b/python/dask_cudf/pyproject.toml @@ -26,7 +26,7 @@ dependencies = [ "fsspec>=0.6.0", "numpy>=2.0,<3.0", "nvidia-ml-py>=12", - "pandas>=3.0.0", + "pandas>=3.0.0,<3.1.0", "rapids-dask-dependency==26.10.*,>=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 33d11dc93670..6ea9ba26da86 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", + "pandas>=3.0.0,<3.1.0", "pyarrow>=19.0.0,<24", "pytest-cov", "pytest-xdist", From 2c08f89b3586ff0ff4514fbc3d6d95db4a78cd66 Mon Sep 17 00:00:00 2001 From: Seth Troisi Date: Mon, 17 Aug 2026 20:47:05 -0700 Subject: [PATCH 3/3] Add some ignore test filters --- python/cudf/cudf/pandas/scripts/pandas-testing-plugin.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/python/cudf/cudf/pandas/scripts/pandas-testing-plugin.py b/python/cudf/cudf/pandas/scripts/pandas-testing-plugin.py index 8bf0bbcc1cbf..3b59403965c0 100644 --- a/python/cudf/cudf/pandas/scripts/pandas-testing-plugin.py +++ b/python/cudf/cudf/pandas/scripts/pandas-testing-plugin.py @@ -2301,6 +2301,7 @@ def pytest_unconfigure(config): "tests/indexing/interval/test_interval_new.py::TestIntervalIndex::test_non_unique_moar[setitem]": "TODO: Add a reason for failure", "tests/indexing/multiindex/test_getitem.py::test_frame_getitem_multicolumn_empty_level": "TODO: Add a reason for failure", "tests/indexing/multiindex/test_loc.py::TestMultiIndexLoc::test_loc_multiindex_indexer_none": "TODO: Add a reason for failure", + "tests/indexing/multiindex/test_multiindex.py::TestMultiIndexBasic::test_multiindex_assign_alignment_with_object_dtype": "TODO: Add a reason for failure", "tests/indexing/multiindex/test_setitem.py::TestMultiIndexSetItem::test_frame_getitem_setitem_boolean": "TODO: Add a reason for failure", "tests/indexing/multiindex/test_setitem.py::TestMultiIndexSetItem::test_frame_setitem_multi_column2": "TODO: Add a reason for failure", "tests/indexing/multiindex/test_setitem.py::TestMultiIndexSetItem::test_loc_getitem_setitem_slice_integers[DataFrame]": "TODO: Add a reason for failure", @@ -2357,12 +2358,15 @@ def pytest_unconfigure(config): "tests/indexing/test_iloc.py::TestiLocBaseIndependent::test_iloc_setitem_ea_inplace[Series-index-False]": "assert False", "tests/indexing/test_iloc.py::TestiLocBaseIndependent::test_iloc_setitem_ea_inplace[Series-series-False]": "assert False", "tests/indexing/test_iloc.py::TestiLocBaseIndependent::test_iloc_setitem_empty_frame_raises_with_3d_ndarray": "TODO: Add a reason for failure", + "tests/indexing/test_iloc.py::TestiLocBaseIndependent::test_iloc_setitem_frame_swap_columns": "TODO: Add a reason for failure", "tests/indexing/test_iloc.py::TestiLocBaseIndependent::test_iloc_setitem_fullcol_categorical[iloc-key0]": "TODO: Add a reason for failure", "tests/indexing/test_iloc.py::TestiLocBaseIndependent::test_iloc_setitem_fullcol_categorical[iloc-key1]": "TODO: Add a reason for failure", "tests/indexing/test_iloc.py::TestiLocBaseIndependent::test_iloc_setitem_fullcol_categorical[iloc-key2]": "TODO: Add a reason for failure", "tests/indexing/test_iloc.py::TestiLocBaseIndependent::test_iloc_setitem_fullcol_categorical[iloc-key3]": "TODO: Add a reason for failure", "tests/indexing/test_iloc.py::TestiLocBaseIndependent::test_iloc_setitem_fullcol_categorical[iloc-key4]": "TODO: Add a reason for failure", "tests/indexing/test_iloc.py::TestiLocBaseIndependent::test_iloc_setitem_fullcol_categorical[iloc-key5]": "TODO: Add a reason for failure", + "tests/indexing/test_iloc.py::TestiLocBaseIndependent::test_iloc_setitem_unordered_column_indexer_referenced_block": "TODO: Add a reason for failure", + "tests/indexing/test_iloc.py::TestiLocBaseIndependent::test_iloc_setitem_unordered_row_and_column_indexer_referenced_block": "TODO: Add a reason for failure", "tests/indexing/test_iloc.py::TestiLocBaseIndependent::test_iloc_setitem_fullcol_categorical[loc-key0]": "TODO: Add a reason for failure", "tests/indexing/test_iloc.py::TestiLocBaseIndependent::test_iloc_setitem_fullcol_categorical[loc-key1]": "TODO: Add a reason for failure", "tests/indexing/test_iloc.py::TestiLocBaseIndependent::test_iloc_setitem_fullcol_categorical[loc-key2]": "TODO: Add a reason for failure",