Skip to content

Commit 2936ee5

Browse files
authored
Merge branch 'branch-25.10' into test/json_stream_failure
2 parents c618e1e + 42b0f0c commit 2936ee5

File tree

18 files changed

+144
-142
lines changed

18 files changed

+144
-142
lines changed

.github/labeler.yml

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,34 @@
11
# Documentation for config - https://github.com/actions/labeler#common-examples
22

33
Python:
4-
- changed-files:
5-
any-glob-to-any-file:
6-
- 'python/**'
7-
- 'notebooks/**'
4+
- changed-files:
5+
- any-glob-to-any-file:
6+
- 'python/**'
7+
- 'notebooks/**'
88
cudf.pandas:
9-
- changed-files:
10-
any-glob-to-any-file:
11-
- 'python/cudf/cudf/pandas/**'
12-
- 'python/cudf/cudf_pandas_tests/**'
9+
- changed-files:
10+
- any-glob-to-any-file:
11+
- 'python/cudf/cudf/pandas/**'
12+
- 'python/cudf/cudf_pandas_tests/**'
1313
cudf-polars:
14-
- changed-files:
15-
any-glob-to-any-file:
16-
- 'python/cudf_polars/**'
14+
- changed-files:
15+
- any-glob-to-any-file:
16+
- 'python/cudf_polars/**'
1717
pylibcudf:
18-
- changed-files:
19-
any-glob-to-any-file:
20-
- 'python/pylibcudf/**'
18+
- changed-files:
19+
- any-glob-to-any-file:
20+
- 'python/pylibcudf/**'
2121
libcudf:
22-
- changed-files:
23-
any-glob-to-any-file:
24-
- 'cpp/**'
22+
- changed-files:
23+
- any-glob-to-any-file:
24+
- 'cpp/**'
2525
CMake:
26-
- changed-files:
27-
any-glob-to-any-file:
28-
- '**/CMakeLists.txt'
29-
- '**/cmake/**'
30-
- '**/*.cmake'
26+
- changed-files:
27+
- any-glob-to-any-file:
28+
- '**/CMakeLists.txt'
29+
- '**/cmake/**'
30+
- '**/*.cmake'
3131
Java:
32-
- changed-files:
33-
any-glob-to-any-file:
34-
- 'java/**'
32+
- changed-files:
33+
- any-glob-to-any-file:
34+
- 'java/**'

.github/workflows/labeler.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ on:
55

66
jobs:
77
triage:
8+
permissions:
9+
contents: read
10+
pull-requests: write
811
runs-on: ubuntu-latest
912
steps:
1013
- name: Checkout code

dependencies.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -765,7 +765,7 @@ dependencies:
765765
common:
766766
- output_types: conda
767767
packages:
768-
- cmake>=3.30.4,<4.0.0
768+
- *cmake_ver
769769
- ninja
770770
- maven
771771
- openjdk=8.*

python/cudf/cudf/pandas/_wrappers/pandas.py

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,22 @@ def Index__setattr__(self, name, value):
429429
},
430430
)
431431

432+
# Special caseing `ArrowDtype` as it is not yet added to `cudf` namespace
433+
# both fast and slow paths are `pd.ArrowDtype`
434+
ArrowDtype = make_final_proxy_type(
435+
"ArrowDtype",
436+
pd.ArrowDtype,
437+
pd.ArrowDtype,
438+
bases=(pd.api.extensions.ExtensionDtype,),
439+
fast_to_slow=lambda fast: fast,
440+
slow_to_fast=lambda slow: slow,
441+
additional_attributes={
442+
"__from_arrow__": _FastSlowAttribute("__from_arrow__"),
443+
"__hash__": _FastSlowAttribute("__hash__"),
444+
"pyarrow_dtype": _FastSlowAttribute("pyarrow_dtype"),
445+
},
446+
)
447+
432448
SparseArray = make_final_proxy_type(
433449
"SparseDtype",
434450
_Unusable,
@@ -1109,20 +1125,46 @@ def Index__setattr__(self, name, value):
11091125

11101126
try:
11111127
from pandas.io.formats.style import Styler as pd_Styler # isort: skip
1128+
from pandas.io.formats.style import StylerRenderer as pd_StylerRenderer
1129+
1130+
StylerRenderer = make_final_proxy_type(
1131+
"StylerRenderer",
1132+
_Unusable,
1133+
pd_StylerRenderer,
1134+
fast_to_slow=_Unusable(),
1135+
slow_to_fast=_Unusable(),
1136+
)
11121137

11131138
Styler = make_final_proxy_type(
11141139
"Styler",
11151140
_Unusable,
11161141
pd_Styler,
1142+
bases=(StylerRenderer,),
11171143
fast_to_slow=_Unusable(),
11181144
slow_to_fast=_Unusable(),
11191145
additional_attributes={
11201146
"css": _FastSlowAttribute("css"),
11211147
"ctx": _FastSlowAttribute("ctx"),
1122-
"index": _FastSlowAttribute("ctx"),
1148+
"index": _FastSlowAttribute("index"),
11231149
"data": _FastSlowAttribute("data"),
1124-
"_display_funcs": _FastSlowAttribute("_display_funcs"),
1150+
"_display_funcs": _FastSlowAttribute(
1151+
"_display_funcs", private=True
1152+
),
11251153
"table_styles": _FastSlowAttribute("table_styles"),
1154+
"columns": _FastSlowAttribute("columns"),
1155+
"caption": _FastSlowAttribute("caption"),
1156+
"_todo": _FastSlowAttribute("_todo", private=True),
1157+
"ctx_columns": _FastSlowAttribute("ctx_columns"),
1158+
"ctx_index": _FastSlowAttribute("ctx_index"),
1159+
"_display_funcs_index": _FastSlowAttribute(
1160+
"_display_funcs_index", private=True
1161+
),
1162+
"uuid": _FastSlowAttribute("uuid"),
1163+
"hide_index_": _FastSlowAttribute("hide_index_"),
1164+
"hide_index_names": _FastSlowAttribute("hide_index_names"),
1165+
"hide_columns_": _FastSlowAttribute("hide_columns_"),
1166+
"hide_column_names": _FastSlowAttribute("hide_column_names"),
1167+
"table_attributes": _FastSlowAttribute("table_attributes"),
11261168
},
11271169
)
11281170
except ImportError:

python/cudf/cudf/pandas/scripts/conftest-patch.py

Lines changed: 0 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -2754,46 +2754,6 @@ def pytest_unconfigure(config):
27542754
"tests/extension/test_arrow.py::TestArrowArray::test_arith_series_with_scalar[uint8-__rmod__]",
27552755
"tests/extension/test_arrow.py::TestArrowArray::test_array_interface[duration[ns]]",
27562756
"tests/extension/test_arrow.py::TestArrowArray::test_array_interface[timestamp[ns]]",
2757-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[binary]",
2758-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[bool]",
2759-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[date32[day]]",
2760-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[date64[ms]]",
2761-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[decimal128(7, 3)]",
2762-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[double]",
2763-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[duration[ms]]",
2764-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[duration[ns]]",
2765-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[duration[s]]",
2766-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[duration[us]]",
2767-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[float]",
2768-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[int16]",
2769-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[int32]",
2770-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[int64]",
2771-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[int8]",
2772-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[string]",
2773-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[time32[ms]]",
2774-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[time32[s]]",
2775-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[time64[ns]]",
2776-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[time64[us]]",
2777-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[timestamp[ms, tz=US/Eastern]]",
2778-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[timestamp[ms, tz=US/Pacific]]",
2779-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[timestamp[ms, tz=UTC]]",
2780-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[timestamp[ms]]",
2781-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[timestamp[ns, tz=US/Eastern]]",
2782-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[timestamp[ns, tz=US/Pacific]]",
2783-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[timestamp[ns, tz=UTC]]",
2784-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[timestamp[ns]]",
2785-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[timestamp[s, tz=US/Eastern]]",
2786-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[timestamp[s, tz=US/Pacific]]",
2787-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[timestamp[s, tz=UTC]]",
2788-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[timestamp[s]]",
2789-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[timestamp[us, tz=US/Eastern]]",
2790-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[timestamp[us, tz=US/Pacific]]",
2791-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[timestamp[us, tz=UTC]]",
2792-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[timestamp[us]]",
2793-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[uint16]",
2794-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[uint32]",
2795-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[uint64]",
2796-
"tests/extension/test_arrow.py::TestArrowArray::test_array_type[uint8]",
27972757
"tests/extension/test_arrow.py::TestArrowArray::test_astype_own_type[binary-False]",
27982758
"tests/extension/test_arrow.py::TestArrowArray::test_astype_own_type[bool-False]",
27992759
"tests/extension/test_arrow.py::TestArrowArray::test_astype_own_type[date32[day]-False]",
@@ -3030,8 +2990,6 @@ def pytest_unconfigure(config):
30302990
"tests/extension/test_arrow.py::TestArrowArray::test_container_shift[uint8-2-indices2-True]",
30312991
"tests/extension/test_arrow.py::TestArrowArray::test_getitem_scalar[duration[ms]]",
30322992
"tests/extension/test_arrow.py::TestArrowArray::test_getitem_scalar[duration[ms]]",
3033-
"tests/extension/test_arrow.py::TestArrowArray::test_getitem_scalar[duration[ns]]",
3034-
"tests/extension/test_arrow.py::TestArrowArray::test_getitem_scalar[duration[ns]]",
30352993
"tests/extension/test_arrow.py::TestArrowArray::test_getitem_scalar[duration[s]]",
30362994
"tests/extension/test_arrow.py::TestArrowArray::test_getitem_scalar[duration[s]]",
30372995
"tests/extension/test_arrow.py::TestArrowArray::test_getitem_scalar[duration[us]]",
@@ -3044,14 +3002,6 @@ def pytest_unconfigure(config):
30443002
"tests/extension/test_arrow.py::TestArrowArray::test_getitem_scalar[timestamp[ms, tz=UTC]]",
30453003
"tests/extension/test_arrow.py::TestArrowArray::test_getitem_scalar[timestamp[ms]]",
30463004
"tests/extension/test_arrow.py::TestArrowArray::test_getitem_scalar[timestamp[ms]]",
3047-
"tests/extension/test_arrow.py::TestArrowArray::test_getitem_scalar[timestamp[ns, tz=US/Eastern]]",
3048-
"tests/extension/test_arrow.py::TestArrowArray::test_getitem_scalar[timestamp[ns, tz=US/Eastern]]",
3049-
"tests/extension/test_arrow.py::TestArrowArray::test_getitem_scalar[timestamp[ns, tz=US/Pacific]]",
3050-
"tests/extension/test_arrow.py::TestArrowArray::test_getitem_scalar[timestamp[ns, tz=US/Pacific]]",
3051-
"tests/extension/test_arrow.py::TestArrowArray::test_getitem_scalar[timestamp[ns, tz=UTC]]",
3052-
"tests/extension/test_arrow.py::TestArrowArray::test_getitem_scalar[timestamp[ns, tz=UTC]]",
3053-
"tests/extension/test_arrow.py::TestArrowArray::test_getitem_scalar[timestamp[ns]]",
3054-
"tests/extension/test_arrow.py::TestArrowArray::test_getitem_scalar[timestamp[ns]]",
30553005
"tests/extension/test_arrow.py::TestArrowArray::test_getitem_scalar[timestamp[s, tz=US/Eastern]]",
30563006
"tests/extension/test_arrow.py::TestArrowArray::test_getitem_scalar[timestamp[s, tz=US/Eastern]]",
30573007
"tests/extension/test_arrow.py::TestArrowArray::test_getitem_scalar[timestamp[s, tz=US/Pacific]]",
@@ -9833,41 +9783,14 @@ def pytest_unconfigure(config):
98339783
"tests/io/excel/test_writers.py::TestExcelWriterEngineTests::test_register_writer",
98349784
"tests/io/excel/test_writers.py::TestFSPath::test_excelfile_fspath",
98359785
"tests/io/formats/style/test_format.py::test_format_clear[format_index-_display_funcs_columns-kwargs2]",
9836-
"tests/io/formats/style/test_format.py::test_format_clear[format_index-_display_funcs_index-kwargs1]",
98379786
"tests/io/formats/style/test_html.py::test_from_custom_template_style",
98389787
"tests/io/formats/style/test_html.py::test_from_custom_template_table",
98399788
"tests/io/formats/style/test_html.py::test_html_template_extends_options",
98409789
"tests/io/formats/style/test_html.py::test_replaced_css_class_names",
9841-
"tests/io/formats/style/test_html.py::test_sticky_basic[True-False-False]",
9842-
"tests/io/formats/style/test_html.py::test_sticky_basic[True-False-True]",
9843-
"tests/io/formats/style/test_html.py::test_sticky_basic[True-True-False]",
9844-
"tests/io/formats/style/test_html.py::test_sticky_basic[True-True-True]",
9845-
"tests/io/formats/style/test_html.py::test_sticky_levels[levels0-False-False]",
9846-
"tests/io/formats/style/test_html.py::test_sticky_levels[levels0-False-True]",
9847-
"tests/io/formats/style/test_html.py::test_sticky_levels[levels0-True-False]",
9848-
"tests/io/formats/style/test_html.py::test_sticky_levels[levels0-True-True]",
9849-
"tests/io/formats/style/test_html.py::test_sticky_levels[levels1-False-False]",
9850-
"tests/io/formats/style/test_html.py::test_sticky_levels[levels1-False-True]",
9851-
"tests/io/formats/style/test_html.py::test_sticky_levels[levels1-True-False]",
9852-
"tests/io/formats/style/test_html.py::test_sticky_levels[levels1-True-True]",
9853-
"tests/io/formats/style/test_html.py::test_sticky_levels[one-False-False]",
9854-
"tests/io/formats/style/test_html.py::test_sticky_levels[one-False-True]",
9855-
"tests/io/formats/style/test_html.py::test_sticky_levels[one-True-False]",
9856-
"tests/io/formats/style/test_html.py::test_sticky_levels[one-True-True]",
9857-
"tests/io/formats/style/test_style.py::TestStyler::test_apply_axis",
98589790
"tests/io/formats/style/test_style.py::TestStyler::test_caption",
9859-
"tests/io/formats/style/test_style.py::TestStyler::test_export",
98609791
"tests/io/formats/style/test_style.py::TestStyler::test_non_reducing_multi_slice_on_multiindex[slice_7]",
98619792
"tests/io/formats/style/test_style.py::TestStyler::test_table_styles",
98629793
"tests/io/formats/style/test_style.py::TestStyler::test_uuid",
9863-
"tests/io/formats/style/test_style.py::test_apply_map_header[columns-apply]",
9864-
"tests/io/formats/style/test_style.py::test_apply_map_header[columns-map]",
9865-
"tests/io/formats/style/test_style.py::test_apply_map_header[index-apply]",
9866-
"tests/io/formats/style/test_style.py::test_apply_map_header[index-map]",
9867-
"tests/io/formats/style/test_style.py::test_apply_map_header_mi[columns-apply]",
9868-
"tests/io/formats/style/test_style.py::test_apply_map_header_mi[columns-map]",
9869-
"tests/io/formats/style/test_style.py::test_apply_map_header_mi[index-apply]",
9870-
"tests/io/formats/style/test_style.py::test_apply_map_header_mi[index-map]",
98719794
"tests/io/formats/style/test_style.py::test_clear",
98729795
"tests/io/formats/style/test_style.py::test_copy[False-False-False]",
98739796
"tests/io/formats/style/test_style.py::test_copy[False-False-True]",
@@ -9877,22 +9800,6 @@ def pytest_unconfigure(config):
98779800
"tests/io/formats/style/test_style.py::test_copy[True-False-True]",
98789801
"tests/io/formats/style/test_style.py::test_copy[True-True-False]",
98799802
"tests/io/formats/style/test_style.py::test_copy[True-True-True]",
9880-
"tests/io/formats/style/test_style.py::test_export",
9881-
"tests/io/formats/style/test_style.py::test_hide_columns_level[False-1]",
9882-
"tests/io/formats/style/test_style.py::test_hide_columns_level[False-level2]",
9883-
"tests/io/formats/style/test_style.py::test_hide_columns_level[False-level3]",
9884-
"tests/io/formats/style/test_style.py::test_hide_columns_level[False-one]",
9885-
"tests/io/formats/style/test_style.py::test_hide_columns_level[True-1]",
9886-
"tests/io/formats/style/test_style.py::test_hide_columns_level[True-level2]",
9887-
"tests/io/formats/style/test_style.py::test_hide_columns_level[True-level3]",
9888-
"tests/io/formats/style/test_style.py::test_hide_columns_level[True-one]",
9889-
"tests/io/formats/style/test_style.py::test_hide_index_level[1]",
9890-
"tests/io/formats/style/test_style.py::test_hide_index_level[level2]",
9891-
"tests/io/formats/style/test_style.py::test_hide_index_level[level3]",
9892-
"tests/io/formats/style/test_style.py::test_hide_index_level[one]",
9893-
"tests/io/formats/style/test_to_latex.py::test_css_convert_apply_index[columns]",
9894-
"tests/io/formats/style/test_to_latex.py::test_parse_latex_table_wrapping",
9895-
"tests/io/formats/style/test_to_latex.py::test_styler_object_after_render",
98969803
"tests/io/formats/test_eng_formatting.py::TestEngFormatter::test_nan",
98979804
"tests/io/formats/test_format.py::TestDataFrameFormatting::test_info_repr",
98989805
"tests/io/formats/test_format.py::TestDataFrameFormatting::test_info_repr_max_cols",

python/pylibcudf/pylibcudf/column.pxd

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ from libc.stdint cimport uint64_t
66

77
from rmm.librmm.device_buffer cimport device_buffer
88
from rmm.pylibrmm.stream cimport Stream
9+
from rmm.pylibrmm.memory_resource cimport DeviceMemoryResource
910
from pylibcudf.libcudf.column.column cimport column
1011
from pylibcudf.libcudf.column.column_view cimport (
1112
column_view,
@@ -59,6 +60,7 @@ cdef class Column:
5960
cdef Column from_libcudf(
6061
unique_ptr[column] libcudf_col,
6162
Stream stream,
63+
DeviceMemoryResource mr=*
6264
)
6365

6466
@staticmethod

python/pylibcudf/pylibcudf/column.pyx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ from pylibcudf.libcudf.copying cimport get_element
3636

3737
from rmm.pylibrmm.device_buffer cimport DeviceBuffer
3838
from rmm.pylibrmm.stream cimport Stream
39+
from rmm.pylibrmm.memory_resource cimport DeviceMemoryResource
3940

4041
from .gpumemoryview cimport gpumemoryview
4142
from .filling cimport sequence
@@ -52,7 +53,7 @@ from ._interop_helpers cimport (
5253
_release_device_array,
5354
_metadata_to_libcudf,
5455
)
55-
from .utils cimport _get_stream
56+
from .utils cimport _get_stream, _get_memory_resource
5657

5758
from .gpumemoryview import _datatype_from_dtype_desc
5859
from ._interop_helpers import ArrowLike, ColumnMetadata
@@ -562,6 +563,7 @@ cdef class Column:
562563
cdef Column from_libcudf(
563564
unique_ptr[column] libcudf_col,
564565
Stream stream,
566+
DeviceMemoryResource mr=None
565567
):
566568
"""Create a Column from a libcudf column.
567569
@@ -577,23 +579,24 @@ cdef class Column:
577579
cdef column_contents contents = libcudf_col.get().release()
578580

579581
stream = _get_stream(stream)
582+
mr = _get_memory_resource(mr)
580583
# Note that when converting to cudf Column objects we'll need to pull
581584
# out the base object.
582585
cdef gpumemoryview data = gpumemoryview(
583-
DeviceBuffer.c_from_unique_ptr(move(contents.data), stream)
586+
DeviceBuffer.c_from_unique_ptr(move(contents.data), stream, mr)
584587
)
585588

586589
cdef gpumemoryview mask = None
587590
if null_count > 0:
588591
mask = gpumemoryview(
589-
DeviceBuffer.c_from_unique_ptr(move(contents.null_mask), stream)
592+
DeviceBuffer.c_from_unique_ptr(move(contents.null_mask), stream, mr)
590593
)
591594

592595
children = []
593596
if contents.children.size() != 0:
594597
for i in range(contents.children.size()):
595598
children.append(
596-
Column.from_libcudf(move(contents.children[i]), stream)
599+
Column.from_libcudf(move(contents.children[i]), stream, mr)
597600
)
598601

599602
return Column(

python/pylibcudf/pylibcudf/concatenate.pxd

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
from .table cimport Table
44

55
from rmm.pylibrmm.stream cimport Stream
6+
from rmm.pylibrmm.memory_resource cimport DeviceMemoryResource
67

78

89
# There is no way to define a fused type that is a list of other objects, so we cannot
910
# unify the column and table paths without using runtime dispatch instead. In this case
1011
# we choose to prioritize API consistency over performance, so we use the same function
1112
# with a bit of runtime dispatch overhead.
12-
cpdef concatenate(list objects, Stream stream=*)
13+
cpdef concatenate(list objects, Stream stream=*, DeviceMemoryResource mr=*)

python/pylibcudf/pylibcudf/concatenate.pyi

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# Copyright (c) 2024, NVIDIA CORPORATION.
22

3+
from rmm.pylibrmm.memory_resource import DeviceMemoryResource
34
from rmm.pylibrmm.stream import Stream
45

56
from pylibcudf.column import Column
@@ -8,4 +9,5 @@ from pylibcudf.table import Table
89
def concatenate[ColumnOrTable: (Column, Table)](
910
objects: list[ColumnOrTable],
1011
stream: Stream | None = None,
12+
mr: DeviceMemoryResource | None = None,
1113
) -> ColumnOrTable: ...

0 commit comments

Comments
 (0)