cudf-polars-cu13 25.12.0__py3-none-any.whl → 26.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. cudf_polars/GIT_COMMIT +1 -1
  2. cudf_polars/VERSION +1 -1
  3. cudf_polars/callback.py +28 -7
  4. cudf_polars/containers/column.py +51 -26
  5. cudf_polars/dsl/expressions/binaryop.py +1 -1
  6. cudf_polars/dsl/expressions/boolean.py +1 -1
  7. cudf_polars/dsl/expressions/selection.py +1 -1
  8. cudf_polars/dsl/expressions/string.py +29 -20
  9. cudf_polars/dsl/expressions/ternary.py +25 -1
  10. cudf_polars/dsl/expressions/unary.py +11 -8
  11. cudf_polars/dsl/ir.py +351 -281
  12. cudf_polars/dsl/translate.py +18 -15
  13. cudf_polars/dsl/utils/aggregations.py +10 -5
  14. cudf_polars/experimental/base.py +10 -0
  15. cudf_polars/experimental/benchmarks/pdsh.py +1 -1
  16. cudf_polars/experimental/benchmarks/utils.py +83 -2
  17. cudf_polars/experimental/distinct.py +2 -0
  18. cudf_polars/experimental/explain.py +1 -1
  19. cudf_polars/experimental/expressions.py +8 -5
  20. cudf_polars/experimental/groupby.py +2 -0
  21. cudf_polars/experimental/io.py +64 -42
  22. cudf_polars/experimental/join.py +15 -2
  23. cudf_polars/experimental/parallel.py +10 -7
  24. cudf_polars/experimental/rapidsmpf/collectives/__init__.py +9 -0
  25. cudf_polars/experimental/rapidsmpf/collectives/allgather.py +90 -0
  26. cudf_polars/experimental/rapidsmpf/collectives/common.py +96 -0
  27. cudf_polars/experimental/rapidsmpf/{shuffle.py → collectives/shuffle.py} +90 -114
  28. cudf_polars/experimental/rapidsmpf/core.py +194 -67
  29. cudf_polars/experimental/rapidsmpf/dask.py +172 -0
  30. cudf_polars/experimental/rapidsmpf/dispatch.py +6 -3
  31. cudf_polars/experimental/rapidsmpf/io.py +162 -70
  32. cudf_polars/experimental/rapidsmpf/join.py +162 -77
  33. cudf_polars/experimental/rapidsmpf/nodes.py +421 -180
  34. cudf_polars/experimental/rapidsmpf/repartition.py +130 -65
  35. cudf_polars/experimental/rapidsmpf/union.py +24 -5
  36. cudf_polars/experimental/rapidsmpf/utils.py +228 -16
  37. cudf_polars/experimental/shuffle.py +18 -4
  38. cudf_polars/experimental/sort.py +13 -6
  39. cudf_polars/experimental/spilling.py +1 -1
  40. cudf_polars/testing/plugin.py +6 -3
  41. cudf_polars/utils/config.py +67 -0
  42. cudf_polars/utils/versions.py +3 -3
  43. {cudf_polars_cu13-25.12.0.dist-info → cudf_polars_cu13-26.2.0.dist-info}/METADATA +9 -10
  44. {cudf_polars_cu13-25.12.0.dist-info → cudf_polars_cu13-26.2.0.dist-info}/RECORD +47 -43
  45. {cudf_polars_cu13-25.12.0.dist-info → cudf_polars_cu13-26.2.0.dist-info}/WHEEL +1 -1
  46. {cudf_polars_cu13-25.12.0.dist-info → cudf_polars_cu13-26.2.0.dist-info}/licenses/LICENSE +0 -0
  47. {cudf_polars_cu13-25.12.0.dist-info → cudf_polars_cu13-26.2.0.dist-info}/top_level.txt +0 -0
@@ -18,6 +18,7 @@ from cudf_polars.dsl.tracing import log_do_evaluate, nvtx_annotate_cudf_polars
18
18
  from cudf_polars.experimental.base import get_key_name
19
19
  from cudf_polars.experimental.dispatch import generate_ir_tasks, lower_ir_node
20
20
  from cudf_polars.experimental.utils import _concat
21
+ from cudf_polars.utils.config import ShufflerInsertionMethod
21
22
  from cudf_polars.utils.cuda_stream import get_dask_cuda_stream
22
23
 
23
24
  if TYPE_CHECKING:
@@ -43,6 +44,7 @@ class ShuffleOptions(TypedDict):
43
44
  column_names: Sequence[str]
44
45
  dtypes: Sequence[DataType]
45
46
  cluster_kind: Literal["dask", "single"]
47
+ shuffler_insertion_method: ShufflerInsertionMethod
46
48
 
47
49
 
48
50
  # Experimental rapidsmpf shuffler integration
@@ -80,7 +82,14 @@ class RMPFIntegration: # pragma: no cover
80
82
  br=context.br,
81
83
  stream=DEFAULT_STREAM,
82
84
  )
83
- shuffler.insert_chunks(packed_inputs)
85
+
86
+ if (
87
+ options["shuffler_insertion_method"]
88
+ == ShufflerInsertionMethod.CONCAT_INSERT
89
+ ):
90
+ shuffler.concat_insert(packed_inputs)
91
+ else:
92
+ shuffler.insert_chunks(packed_inputs)
84
93
 
85
94
  @staticmethod
86
95
  @nvtx_annotate_cudf_polars(message="RMPFIntegration.extract_partition")
@@ -133,24 +142,28 @@ class Shuffle(IR):
133
142
  `ShuffleSorted` for sorting-based shuffling.
134
143
  """
135
144
 
136
- __slots__ = ("keys", "shuffle_method")
137
- _non_child = ("schema", "keys", "shuffle_method")
145
+ __slots__ = ("keys", "shuffle_method", "shuffler_insertion_method")
146
+ _non_child = ("schema", "keys", "shuffle_method", "shuffler_insertion_method")
138
147
  keys: tuple[NamedExpr, ...]
139
148
  """Keys to shuffle on."""
140
149
  shuffle_method: ShuffleMethod
141
150
  """Shuffle method to use."""
151
+ shuffler_insertion_method: ShufflerInsertionMethod
152
+ """Insertion method for rapidsmpf shuffler."""
142
153
 
143
154
  def __init__(
144
155
  self,
145
156
  schema: Schema,
146
157
  keys: tuple[NamedExpr, ...],
147
158
  shuffle_method: ShuffleMethod,
159
+ shuffler_insertion_method: ShufflerInsertionMethod,
148
160
  df: IR,
149
161
  ):
150
162
  self.schema = schema
151
163
  self.keys = keys
152
164
  self.shuffle_method = shuffle_method
153
- self._non_child_args = (schema, keys, shuffle_method)
165
+ self.shuffler_insertion_method = shuffler_insertion_method
166
+ self._non_child_args = (schema, keys, shuffle_method, shuffler_insertion_method)
154
167
  self.children = (df,)
155
168
 
156
169
  # the type-ignore is for
@@ -351,6 +364,7 @@ def _(
351
364
  "column_names": list(ir.schema.keys()),
352
365
  "dtypes": list(ir.schema.values()),
353
366
  "cluster_kind": cluster_kind,
367
+ "shuffler_insertion_method": ir.shuffler_insertion_method,
354
368
  },
355
369
  )
356
370
  except ValueError as err:
@@ -1,4 +1,4 @@
1
- # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES.
1
+ # SPDX-FileCopyrightText: Copyright (c) 2025-2026, NVIDIA CORPORATION & AFFILIATES.
2
2
  # SPDX-License-Identifier: Apache-2.0
3
3
  """Sorting Logic."""
4
4
 
@@ -23,7 +23,11 @@ from cudf_polars.experimental.repartition import Repartition
23
23
  from cudf_polars.experimental.shuffle import _simple_shuffle_graph
24
24
  from cudf_polars.experimental.utils import _concat, _fallback_inform, _lower_ir_fallback
25
25
  from cudf_polars.utils.config import ShuffleMethod
26
- from cudf_polars.utils.cuda_stream import get_dask_cuda_stream, get_joined_cuda_stream
26
+ from cudf_polars.utils.cuda_stream import (
27
+ get_dask_cuda_stream,
28
+ get_joined_cuda_stream,
29
+ join_cuda_streams,
30
+ )
27
31
 
28
32
  if TYPE_CHECKING:
29
33
  from collections.abc import MutableMapping, Sequence
@@ -320,10 +324,11 @@ class RMPFIntegrationSortedShuffle: # pragma: no cover
320
324
  context = get_worker_context()
321
325
 
322
326
  by = options["by"]
323
-
324
- stream = get_joined_cuda_stream(
325
- get_dask_cuda_stream, upstreams=(df.stream, sort_boundaries.stream)
326
- )
327
+ data_streams = [
328
+ df.stream,
329
+ sort_boundaries.stream,
330
+ ]
331
+ stream = get_joined_cuda_stream(get_dask_cuda_stream, upstreams=data_streams)
327
332
 
328
333
  splits = find_sort_splits(
329
334
  df.select(by).table,
@@ -343,6 +348,8 @@ class RMPFIntegrationSortedShuffle: # pragma: no cover
343
348
  # https://github.com/rapidsai/cudf/issues/20337
344
349
  shuffler.insert_chunks(packed_inputs)
345
350
 
351
+ join_cuda_streams(downstreams=data_streams, upstreams=[stream])
352
+
346
353
  @staticmethod
347
354
  def extract_partition(
348
355
  partition_id: int,
@@ -8,9 +8,9 @@ from typing import TYPE_CHECKING, Any
8
8
 
9
9
  from dask.sizeof import sizeof
10
10
  from distributed import get_worker
11
- from rapidsmpf.buffer.buffer import MemoryType
12
11
  from rapidsmpf.integrations.dask.core import get_worker_context
13
12
  from rapidsmpf.integrations.dask.spilling import SpillableWrapper
13
+ from rapidsmpf.memory.buffer import MemoryType
14
14
 
15
15
  from cudf_polars.containers import DataFrame
16
16
 
@@ -1,4 +1,4 @@
1
- # SPDX-FileCopyrightText: Copyright (c) 2024-2025, NVIDIA CORPORATION & AFFILIATES.
1
+ # SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION & AFFILIATES.
2
2
  # SPDX-License-Identifier: Apache-2.0
3
3
 
4
4
  """Plugin for running polars test suite setting GPU engine as default."""
@@ -13,6 +13,7 @@ import pytest
13
13
  import polars
14
14
 
15
15
  from cudf_polars.utils.config import StreamingFallbackMode
16
+ from cudf_polars.utils.versions import POLARS_VERSION_LT_135
16
17
 
17
18
  if TYPE_CHECKING:
18
19
  from collections.abc import Mapping
@@ -93,6 +94,10 @@ EXPECTED_FAILURES: Mapping[str, str | tuple[str, bool]] = {
93
94
  "tests/unit/io/test_delta.py::test_scan_delta_schema_evolution_nested_struct_field_19915": "Need to expose hive partitioning",
94
95
  "tests/unit/io/test_delta.py::test_scan_delta_nanosecond_timestamp": "polars generates the wrong schema: https://github.com/pola-rs/polars/issues/23949",
95
96
  "tests/unit/io/test_delta.py::test_scan_delta_nanosecond_timestamp_nested": "polars generates the wrong schema: https://github.com/pola-rs/polars/issues/23949",
97
+ "tests/unit/io/test_delta.py::test_scan_delta_loads_aws_profile_endpoint_url": (
98
+ "See https://github.com/rapidsai/cudf/pull/20791#issuecomment-3750528419",
99
+ not POLARS_VERSION_LT_135,
100
+ ),
96
101
  "tests/unit/io/test_lazy_count_star.py::test_count_compressed_csv_18057": "Need to determine if file is compressed",
97
102
  "tests/unit/io/test_lazy_count_star.py::test_count_parquet[small.parquet-4]": "Debug output on stderr doesn't match",
98
103
  "tests/unit/io/test_lazy_count_star.py::test_count_parquet[foods*.parquet-54]": "Debug output on stderr doesn't match",
@@ -186,7 +191,6 @@ EXPECTED_FAILURES: Mapping[str, str | tuple[str, bool]] = {
186
191
  "tests/unit/sql/test_cast.py::test_cast_errors[values2-values::int1-conversion from `i64` to `i8` failed]": "Casting that raises not supported on GPU",
187
192
  "tests/unit/sql/test_cast.py::test_cast_errors[values5-values::int4-conversion from `str` to `i32` failed]": "Cast raises, but error user receives is wrong",
188
193
  "tests/unit/sql/test_miscellaneous.py::test_read_csv": "Incorrect handling of missing_is_null in read_csv",
189
- "tests/unit/sql/test_wildcard_opts.py::test_select_wildcard_errors": "Raises correctly but with different exception",
190
194
  "tests/unit/test_cse.py::test_cse_predicate_self_join": "Debug output on stderr doesn't match",
191
195
  "tests/unit/test_cse.py::test_nested_cache_no_panic_16553": "Needs https://github.com/rapidsai/cudf/issues/18630",
192
196
  "tests/unit/test_errors.py::test_error_on_empty_group_by": "Incorrect exception raised",
@@ -232,7 +236,6 @@ EXPECTED_FAILURES: Mapping[str, str | tuple[str, bool]] = {
232
236
  "tests/unit/operations/test_slice.py::test_schema_slice_on_literal_23999[lit2-0-len1-False]": "Aggregating a list literal: cudf#19610",
233
237
  "tests/unit/operations/test_slice.py::test_schema_slice_on_literal_23999[lit1-0-0-False]": "Aggregating a list literal: cudf#19610",
234
238
  "tests/unit/operations/namespaces/test_binary.py::test_binary_compounded_literal_aggstate_24460": "Aggregating a list literal: cudf#19610",
235
- "tests/unit/operations/test_top_k.py::test_top_k_non_elementwise_by_24163": "Ternary with scalar predicate does not broadcast mask cudf#20210",
236
239
  }
237
240
 
238
241
 
@@ -51,6 +51,7 @@ __all__ = [
51
51
  "Runtime",
52
52
  "Scheduler", # Deprecated, kept for backward compatibility
53
53
  "ShuffleMethod",
54
+ "ShufflerInsertionMethod",
54
55
  "StatsPlanningOptions",
55
56
  "StreamingExecutor",
56
57
  "StreamingFallbackMode",
@@ -208,6 +209,20 @@ class ShuffleMethod(str, enum.Enum):
208
209
  _RAPIDSMPF_SINGLE = "rapidsmpf-single"
209
210
 
210
211
 
212
+ class ShufflerInsertionMethod(str, enum.Enum):
213
+ """
214
+ The method to use for inserting chunks into the rapidsmpf shuffler.
215
+
216
+ * ``ShufflerInsertionMethod.INSERT_CHUNKS`` : Use insert_chunks for inserting data.
217
+ * ``ShufflerInsertionMethod.CONCAT_INSERT`` : Use concat_insert for inserting data.
218
+
219
+ Only applicable with the "rapidsmpf" shuffle method and the "tasks" runtime.
220
+ """
221
+
222
+ INSERT_CHUNKS = "insert_chunks"
223
+ CONCAT_INSERT = "concat_insert"
224
+
225
+
211
226
  T = TypeVar("T")
212
227
 
213
228
 
@@ -267,6 +282,10 @@ class ParquetOptions:
267
282
 
268
283
  Set to 0 to avoid row-group sampling. Note that row-group sampling
269
284
  will also be skipped if ``max_footer_samples`` is 0.
285
+ use_rapidsmpf_native
286
+ Whether to use the native rapidsmpf node for parquet reading.
287
+ This option is only used when the rapidsmpf runtime is enabled.
288
+ Default is True.
270
289
  """
271
290
 
272
291
  _env_prefix = "CUDF_POLARS__PARQUET_OPTIONS"
@@ -301,6 +320,13 @@ class ParquetOptions:
301
320
  f"{_env_prefix}__MAX_ROW_GROUP_SAMPLES", int, default=1
302
321
  )
303
322
  )
323
+ use_rapidsmpf_native: bool = dataclasses.field(
324
+ default_factory=_make_default_factory(
325
+ f"{_env_prefix}__USE_RAPIDSMPF_NATIVE",
326
+ _bool_converter,
327
+ default=True,
328
+ )
329
+ )
304
330
 
305
331
  def __post_init__(self) -> None: # noqa: D105
306
332
  if not isinstance(self.chunked, bool):
@@ -315,6 +341,8 @@ class ParquetOptions:
315
341
  raise TypeError("max_footer_samples must be an int")
316
342
  if not isinstance(self.max_row_group_samples, int):
317
343
  raise TypeError("max_row_group_samples must be an int")
344
+ if not isinstance(self.use_rapidsmpf_native, bool):
345
+ raise TypeError("use_rapidsmpf_native must be a bool")
318
346
 
319
347
 
320
348
  def default_blocksize(cluster: str) -> int:
@@ -598,6 +626,11 @@ class StreamingExecutor:
598
626
  The method to use for shuffling data between workers. Defaults to
599
627
  'rapidsmpf' for distributed cluster if available (otherwise 'tasks'),
600
628
  and 'tasks' for single-GPU cluster.
629
+ shuffler_insertion_method
630
+ The method to use for inserting chunks with the rapidsmpf shuffler.
631
+ Can be 'insert_chunks' (default) or 'concat_insert'.
632
+
633
+ Only applicable with ``shuffle_method="rapidsmpf"`` and ``runtime="tasks"``.
601
634
  rapidsmpf_spill
602
635
  Whether to wrap task arguments and output in objects that are
603
636
  spillable by 'rapidsmpf'.
@@ -613,6 +646,9 @@ class StreamingExecutor:
613
646
  stats_planning
614
647
  Options controlling statistics-based query planning. See
615
648
  :class:`~cudf_polars.utils.config.StatsPlanningOptions` for more.
649
+ max_io_threads
650
+ Maximum number of IO threads for the rapidsmpf runtime. Default is 2.
651
+ This controls the parallelism of IO operations when reading data.
616
652
 
617
653
  Notes
618
654
  -----
@@ -685,6 +721,13 @@ class StreamingExecutor:
685
721
  default=ShuffleMethod.TASKS,
686
722
  )
687
723
  )
724
+ shuffler_insertion_method: ShufflerInsertionMethod = dataclasses.field(
725
+ default_factory=_make_default_factory(
726
+ f"{_env_prefix}__SHUFFLER_INSERTION_METHOD",
727
+ ShufflerInsertionMethod.__call__,
728
+ default=ShufflerInsertionMethod.INSERT_CHUNKS,
729
+ )
730
+ )
688
731
  rapidsmpf_spill: bool = dataclasses.field(
689
732
  default_factory=_make_default_factory(
690
733
  f"{_env_prefix}__RAPIDSMPF_SPILL", _bool_converter, default=False
@@ -703,6 +746,11 @@ class StreamingExecutor:
703
746
  stats_planning: StatsPlanningOptions = dataclasses.field(
704
747
  default_factory=StatsPlanningOptions
705
748
  )
749
+ max_io_threads: int = dataclasses.field(
750
+ default_factory=_make_default_factory(
751
+ f"{_env_prefix}__MAX_IO_THREADS", int, default=2
752
+ )
753
+ )
706
754
 
707
755
  def __post_init__(self) -> None: # noqa: D105
708
756
  # Check for rapidsmpf runtime
@@ -742,6 +790,16 @@ class StreamingExecutor:
742
790
  object.__setattr__(self, "cluster", Cluster.SINGLE)
743
791
  assert self.cluster is not None, "Expected cluster to be set."
744
792
 
793
+ # Warn loudly that multi-GPU execution is under construction
794
+ # for the rapidsmpf runtime
795
+ if self.cluster == "distributed" and self.runtime == "rapidsmpf":
796
+ warnings.warn(
797
+ "UNDER CONSTRUCTION!!!"
798
+ "The rapidsmpf runtime does NOT support distributed execution yet. "
799
+ "Use at your own risk!!!",
800
+ stacklevel=2,
801
+ )
802
+
745
803
  # Handle shuffle_method defaults for streaming executor
746
804
  if self.shuffle_method is None:
747
805
  if self.cluster == "distributed" and rapidsmpf_distributed_available():
@@ -787,6 +845,11 @@ class StreamingExecutor:
787
845
  )
788
846
  object.__setattr__(self, "cluster", Cluster(self.cluster))
789
847
  object.__setattr__(self, "shuffle_method", ShuffleMethod(self.shuffle_method))
848
+ object.__setattr__(
849
+ self,
850
+ "shuffler_insertion_method",
851
+ ShufflerInsertionMethod(self.shuffler_insertion_method),
852
+ )
790
853
 
791
854
  # Make sure stats_planning is a dataclass
792
855
  if isinstance(self.stats_planning, dict):
@@ -822,6 +885,8 @@ class StreamingExecutor:
822
885
  raise TypeError("sink_to_directory must be bool")
823
886
  if not isinstance(self.client_device_threshold, float):
824
887
  raise TypeError("client_device_threshold must be a float")
888
+ if not isinstance(self.max_io_threads, int):
889
+ raise TypeError("max_io_threads must be an int")
825
890
 
826
891
  # RapidsMPF spill is only supported for distributed clusters for now.
827
892
  # This is because the spilling API is still within the RMPF-Dask integration.
@@ -988,6 +1053,8 @@ class ConfigOptions:
988
1053
  user_executor = os.environ.get(f"{env_prefix}__EXECUTOR", "streaming")
989
1054
  user_executor_options = engine.config.get("executor_options", {})
990
1055
  user_parquet_options = engine.config.get("parquet_options", {})
1056
+ if user_parquet_options is None:
1057
+ user_parquet_options = {}
991
1058
  # This is set in polars, and so can't be overridden by the environment
992
1059
  user_raise_on_fail = engine.config.get("raise_on_fail", False)
993
1060
  user_memory_resource_config = engine.config.get("memory_resource_config", None)
@@ -1,4 +1,4 @@
1
- # SPDX-FileCopyrightText: Copyright (c) 2024-2025, NVIDIA CORPORATION & AFFILIATES.
1
+ # SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION & AFFILIATES.
2
2
  # SPDX-License-Identifier: Apache-2.0
3
3
 
4
4
  """Version utilities so that cudf_polars supports a range of polars versions."""
@@ -11,14 +11,14 @@ from packaging.version import parse
11
11
  from polars import __version__
12
12
 
13
13
  POLARS_VERSION = parse(__version__)
14
- POLARS_LOWER_BOUND = parse("1.29")
15
- POLARS_VERSION_LT_130 = POLARS_VERSION < parse("1.30")
14
+ POLARS_LOWER_BOUND = parse("1.30")
16
15
  POLARS_VERSION_LT_131 = POLARS_VERSION < parse("1.31")
17
16
  POLARS_VERSION_LT_132 = POLARS_VERSION < parse("1.32")
18
17
  POLARS_VERSION_LT_1321 = POLARS_VERSION < parse("1.32.1")
19
18
  POLARS_VERSION_LT_1323 = POLARS_VERSION < parse("1.32.3")
20
19
  POLARS_VERSION_LT_133 = POLARS_VERSION < parse("1.33.0")
21
20
  POLARS_VERSION_LT_134 = POLARS_VERSION < parse("1.34.0")
21
+ POLARS_VERSION_LT_135 = POLARS_VERSION < parse("1.35.0")
22
22
 
23
23
 
24
24
  def _ensure_polars_version() -> None:
@@ -1,14 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cudf-polars-cu13
3
- Version: 25.12.0
3
+ Version: 26.2.0
4
4
  Summary: Executor for polars using cudf
5
5
  Author: NVIDIA Corporation
6
- License: Apache-2.0
6
+ License-Expression: Apache-2.0
7
7
  Project-URL: Homepage, https://github.com/rapidsai/cudf
8
8
  Classifier: Intended Audience :: Developers
9
9
  Classifier: Topic :: Database
10
10
  Classifier: Topic :: Scientific/Engineering
11
- Classifier: License :: OSI Approved :: Apache Software License
12
11
  Classifier: Programming Language :: Python
13
12
  Classifier: Programming Language :: Python :: 3.10
14
13
  Classifier: Programming Language :: Python :: 3.11
@@ -19,25 +18,25 @@ Description-Content-Type: text/markdown
19
18
  License-File: LICENSE
20
19
  Requires-Dist: nvidia-ml-py>=12
21
20
  Requires-Dist: packaging
22
- Requires-Dist: polars<1.35,>=1.29
23
- Requires-Dist: pylibcudf-cu13==25.12.*
21
+ Requires-Dist: polars<1.36,>=1.30
22
+ Requires-Dist: pylibcudf-cu13==26.2.*
24
23
  Requires-Dist: typing-extensions; python_version < "3.11"
25
24
  Provides-Extra: test
26
- Requires-Dist: dask-cuda==25.12.*; extra == "test"
27
- Requires-Dist: numpy<3.0a0,>=1.23; extra == "test"
25
+ Requires-Dist: dask-cuda==26.2.*; extra == "test"
26
+ Requires-Dist: numpy<3.0,>=1.23; extra == "test"
27
+ Requires-Dist: pytest; extra == "test"
28
28
  Requires-Dist: pytest-cov; extra == "test"
29
29
  Requires-Dist: pytest-httpserver; extra == "test"
30
30
  Requires-Dist: pytest-xdist; extra == "test"
31
- Requires-Dist: pytest<9.0.0a0; extra == "test"
32
31
  Requires-Dist: rich; extra == "test"
33
32
  Requires-Dist: structlog; extra == "test"
34
33
  Provides-Extra: experimental
35
34
  Requires-Dist: nvidia-ml-py>=12; extra == "experimental"
36
- Requires-Dist: rapids-dask-dependency==25.12.*; extra == "experimental"
35
+ Requires-Dist: rapids-dask-dependency==26.2.*; extra == "experimental"
37
36
  Provides-Extra: trace
38
37
  Requires-Dist: structlog; extra == "trace"
39
38
  Provides-Extra: rapidsmpf
40
- Requires-Dist: rapidsmpf-cu13==25.12.*; extra == "rapidsmpf"
39
+ Requires-Dist: rapidsmpf-cu13==26.2.*; extra == "rapidsmpf"
41
40
  Dynamic: license-file
42
41
 
43
42
  # <div align="left"><img src="img/rapids_logo.png" width="90px"/>&nbsp;cuDF - A GPU-accelerated DataFrame library for tabular data processing</div>
@@ -1,38 +1,38 @@
1
- cudf_polars/GIT_COMMIT,sha256=k3kK7_TxQ0kOhd_fxF3YeAV7bD-SkZ-BBT8YApwQcVc,41
2
- cudf_polars/VERSION,sha256=LVbUOUad_e_qYZXUD2ILxGROwBPfcSRlrDMLG2HsPvA,8
1
+ cudf_polars/GIT_COMMIT,sha256=MxmQ_0zyU_MmTFE3sRdzXEdlNmw7bVkRmODcB3umgYw,41
2
+ cudf_polars/VERSION,sha256=b7npT_ALAM2FnuWaCswzvHtyf4qdm14S3swNXLSxPcs,9
3
3
  cudf_polars/__init__.py,sha256=fSTx5nmqajdwp7qvP4PnYL6wZN9-k1fKB43NkcZlHwk,740
4
4
  cudf_polars/_version.py,sha256=kj5Ir4dxZRR-k2k8mWUDJHiGpE8_ZcTNzt_kMZxcFRA,528
5
- cudf_polars/callback.py,sha256=CfRG5a3fNw98uYfcaMbqB7IJhlANgdWalgelXI5m8T4,10994
5
+ cudf_polars/callback.py,sha256=4MitKua-OGWqCkGTJ9sh1YYyBwlSWjn98l4eTNf_tQs,11780
6
6
  cudf_polars/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  cudf_polars/containers/__init__.py,sha256=EIiTQKXBTwCmbsUNotYImSi3wq31pX55hYFwojygcyI,518
8
- cudf_polars/containers/column.py,sha256=Z4zDagtcH8MjNDC6t1u8JHExsIx9_AoQKu2HFtRIk1Q,16673
8
+ cudf_polars/containers/column.py,sha256=8L6uWupN3nC9Mcnz_I2pRTUhJn_YLMnf-4ohW7egPmg,17654
9
9
  cudf_polars/containers/dataframe.py,sha256=TVNuoJ-hnEfnApLuva1SkuMHhqBuLg7QrJoeYcsRL4U,14306
10
10
  cudf_polars/containers/datatype.py,sha256=1ELPhgNoPxQGdXhcjqvYyMQaQ6kFYMYy5xSXkrzRniA,9310
11
11
  cudf_polars/dsl/__init__.py,sha256=bYwYnqmqINMgwnkJ22EnXMlHviLolPaMgQ8QqoZL3YE,244
12
12
  cudf_polars/dsl/expr.py,sha256=g64rrg-frc1ndqMweyczuFJzWJ71rk2v8umyEg3DQ1U,1904
13
- cudf_polars/dsl/ir.py,sha256=69G0Z0AP-Bbejt_5fAzu6APQjgKoZ2SvHmgMjYVBFLw,114329
13
+ cudf_polars/dsl/ir.py,sha256=Qbnx5F4XDpYlABQOkd8XjWX5r9OsfV8ALrE0D4EPXrE,117611
14
14
  cudf_polars/dsl/nodebase.py,sha256=QbZHK9aUbdiE-Mp_NkkiuNvCnD8E3xzd9-GYKR8UqcM,4777
15
15
  cudf_polars/dsl/to_ast.py,sha256=30ms4laf8aQVhgaR9A_krpTABlXt7LLrA3Bv5rqO3I4,14061
16
16
  cudf_polars/dsl/tracing.py,sha256=bJz1-45-sD2_Dvk3wwaJEvS-c4_zROaXbQT6SmOqGLk,6470
17
- cudf_polars/dsl/translate.py,sha256=kmGqOEF3H0zyj7tOYFcA-f16rjUxGtUB3UHBmTI4qPY,37698
17
+ cudf_polars/dsl/translate.py,sha256=ou_KOlEMlAjTrkgkVEcLt_gUUldyZx4FgH9XDMvSc5k,38003
18
18
  cudf_polars/dsl/traversal.py,sha256=dzOHVaRj0wTYQd5h-JnjQrj4DffEfq1gdENYcDk5Eis,5729
19
19
  cudf_polars/dsl/expressions/__init__.py,sha256=uj1a4BzrDVAjOgP6FKKtnvR5elF4ksUj1RhkLTZoS1k,224
20
20
  cudf_polars/dsl/expressions/aggregation.py,sha256=Fx7n5i2yYZZqrU_x01_8O7IPBL5fbXJTdvHmjXUnZW4,10124
21
21
  cudf_polars/dsl/expressions/base.py,sha256=Fq_MCz2LOMm6eekLJQ1jwEsAvYuouFXzrhIpxIRs4ak,7976
22
- cudf_polars/dsl/expressions/binaryop.py,sha256=-tWiRjrjE4mloVsLBpyG_nSO4F45ilguWmGpOD2Nus4,5750
23
- cudf_polars/dsl/expressions/boolean.py,sha256=JPENAYNQ4IGihH-z2SttoahIB5yPMDMDQSKrZQ1-6kE,14780
22
+ cudf_polars/dsl/expressions/binaryop.py,sha256=xFzNNYAuiP4ZnA57W_DEhIvILvVXJD-f__lXFrQVsww,5766
23
+ cudf_polars/dsl/expressions/boolean.py,sha256=NzprlF2hSIoVMxQ9WATzdEXuptULxikLU1k1VHwR8I8,14796
24
24
  cudf_polars/dsl/expressions/datetime.py,sha256=3-O9iIgt_7oa9b-S8_K6SV4v7sppK8AfHpjDOWcI--8,11293
25
25
  cudf_polars/dsl/expressions/literal.py,sha256=DsVEDgM0Qgszx2r0Cx-dLhv_u8Mid29AonFRKR6ozts,3351
26
26
  cudf_polars/dsl/expressions/rolling.py,sha256=YYibEkrsvwYOQRp1MF4q7bKiIm62w-eQ8eAUIU1_518,35044
27
- cudf_polars/dsl/expressions/selection.py,sha256=5hicYO89AzbV3lXvSx0UCJkPBkQCW-XTHfzU-CFsTP8,2642
27
+ cudf_polars/dsl/expressions/selection.py,sha256=RhmebC0MUT2fLji21zXR2eM8u61fDF1xwzXnuLSgcuY,2674
28
28
  cudf_polars/dsl/expressions/slicing.py,sha256=nLLv3TP_aZTK6l6T8L8jyz6DU9VKMUM241jcQUyoY74,1203
29
29
  cudf_polars/dsl/expressions/sorting.py,sha256=6XO0JktGGUJujADXrZoSBeJGDk80vSOCzboB7jOlL5Q,2789
30
- cudf_polars/dsl/expressions/string.py,sha256=K0yyeDlxRJ2Fp2JBd3WiGhTZGsEeOsDd44o7WSn3fVY,43378
30
+ cudf_polars/dsl/expressions/string.py,sha256=RG1vgITaHmKzp4UxgZ4b6UC4FbVfZknUBsgytU9PFbU,43647
31
31
  cudf_polars/dsl/expressions/struct.py,sha256=6gUsV-5wnGRg4aYtO_9MAteU9iNcqsg7Xrc7FeYF3oE,5058
32
- cudf_polars/dsl/expressions/ternary.py,sha256=cIhiW77x0sL-UkpW8uONSeAjyzAshUZDcksFsEVGKO4,1547
33
- cudf_polars/dsl/expressions/unary.py,sha256=P9ZCPjnxQVx77l-1geiTmKhHIQkxtn1NoaFkfUWXc1I,22228
32
+ cudf_polars/dsl/expressions/ternary.py,sha256=0saTAwYsYZKdnjPfrDBUyoPKbAYs-HcBkHUVqeVYyOA,2380
33
+ cudf_polars/dsl/expressions/unary.py,sha256=WOFWAPfNx7SsprqJaKaFUSYIMCGjD6Ud7U06kTfjScU,22542
34
34
  cudf_polars/dsl/utils/__init__.py,sha256=JL26nlMAbcdL8ZE4iXRrMOEVSTEZU1P5y9WvxTEDdnY,199
35
- cudf_polars/dsl/utils/aggregations.py,sha256=uapOLnnqGDk5gm6ru2sci4ZyREqvKutLHndtzme9Mkw,17983
35
+ cudf_polars/dsl/utils/aggregations.py,sha256=qD9AlJLlAXhGmDjoPlxH4Va7DZ2A5VRPnHSvrefyf0E,18214
36
36
  cudf_polars/dsl/utils/groupby.py,sha256=PhkzM62N8b9qjJs8910IewnTbn_Qx2OiMPXgqMo1yDI,2621
37
37
  cudf_polars/dsl/utils/naming.py,sha256=ydp_BYYAt3mG7JHfi9Snp3dDNzdQZD6F2sAMEmT4OYA,737
38
38
  cudf_polars/dsl/utils/replace.py,sha256=8ns_TpbG1Hh8ZJejRyGA6KCu5t-TvUaM009AO8J98vc,1612
@@ -40,28 +40,28 @@ cudf_polars/dsl/utils/reshape.py,sha256=lU0ndZHEeq6UX__VlJ4jEDHh41n45M6KMAFljidZ
40
40
  cudf_polars/dsl/utils/rolling.py,sha256=R6RG-aPEr9deTJQwi8HYgOnCPeWkA6uT33ZjQTfhyPM,3734
41
41
  cudf_polars/dsl/utils/windows.py,sha256=d6gXPEul8EI-yMhqcrEnhaMhwV7Bc5g4kiP49qfOpSE,5855
42
42
  cudf_polars/experimental/__init__.py,sha256=S2oI2K__woyPQAAlFMOo6RTMtdfIZxmzzAO92VtJgP4,256
43
- cudf_polars/experimental/base.py,sha256=EPwSGnUsa9uXdRyAjkMXp_uqIt5oCaic2bY0-hCNRrY,12957
43
+ cudf_polars/experimental/base.py,sha256=oqYDrIXPHAi9RxTR8-UnZv9M1rf8cEK3S0MtbZfQFNg,13368
44
44
  cudf_polars/experimental/dask_registers.py,sha256=M_LPneaKjVM4tHLrMAmvHVSF4DHMPzwx6ICvHFFPW_w,8514
45
45
  cudf_polars/experimental/dispatch.py,sha256=guwWQQJHY2Iy04DS7MK4JghBZq9n4suZ1Aj-SOUWNG4,4068
46
- cudf_polars/experimental/distinct.py,sha256=ZyQ2SEVftdRAbtVOdJ89TvbK8uDPpam1FG6VKj86kAY,6978
47
- cudf_polars/experimental/explain.py,sha256=nJ0Evva_m7NDYs_5YN0XxAQJlzATi6oT6KtlyVYXAyM,5243
48
- cudf_polars/experimental/expressions.py,sha256=QLQmVdoQyWy0C11lZ3ac9_DuHbDeoH5hzKnGwXSkmHg,19004
49
- cudf_polars/experimental/groupby.py,sha256=fU2HzwJ6SrfV92A9zvBrtjgsK9QFnRFzHuyfq9LgAfw,11735
50
- cudf_polars/experimental/io.py,sha256=YiEgh0_Y8Sp9ZGDGWzcADPZjjzGEh95TuOr3D3oQ_9M,31917
51
- cudf_polars/experimental/join.py,sha256=0QHrIh9Clhqabkuyf1xsOgt5LiVk5gqIx3oboazkBxw,13424
52
- cudf_polars/experimental/parallel.py,sha256=VOiJbzAlAnuV7veLL5wZesGil5I21DjPgdr7PhOKisM,14069
46
+ cudf_polars/experimental/distinct.py,sha256=PRIC89PNT3yIjBh5Sm5SEasqB1Gx8FPxFP8f-lUMgic,7108
47
+ cudf_polars/experimental/explain.py,sha256=iRNRDPTPpVnJIIoQ6ol7piamap6HWYn2FpAR4LvvX7Q,5246
48
+ cudf_polars/experimental/expressions.py,sha256=AeXl6e8vuA1-c4kNMRe43Aku6MjYM48lbya3EsOnX-8,19169
49
+ cudf_polars/experimental/groupby.py,sha256=ji9Ow42jqIoRUP517Dbiv1DfDfdeu-wfbziN5faUyUY,11861
50
+ cudf_polars/experimental/io.py,sha256=KK9pzrDNW46yjULvrOl1AZ_bwGRJ3RgABDML6m12bfU,33219
51
+ cudf_polars/experimental/join.py,sha256=JEi1_aRTzAAw3fAwX3KSDB2oGBsw9w6NF35RyM12IPo,14141
52
+ cudf_polars/experimental/parallel.py,sha256=Kt0OG0mEJPYlufgqwIeg61-c_xuRQyMhmoy0Wj4g5tE,14254
53
53
  cudf_polars/experimental/repartition.py,sha256=Fq2XG60c0jBvrttnpMQJWoF9VOPxE7gPgbivCJt_wX0,2307
54
54
  cudf_polars/experimental/scheduler.py,sha256=ieL7bdxTqlmd8MO37JCaCoqhyDRZNTLnPFUme3hv6SQ,4203
55
55
  cudf_polars/experimental/select.py,sha256=qq1fOfZ06L-ovO8r7r8XYDkUxR3q1PsZt8z3SdbjamI,12346
56
- cudf_polars/experimental/shuffle.py,sha256=Nmdqy1bADuSP-Olh5vQL14XvLT4yOU9UkfXttYMK_mI,11903
57
- cudf_polars/experimental/sort.py,sha256=cbDCPLrQLdszKp48-5RGXl_HPSdyOEL7qd6M2ywDTcw,23000
58
- cudf_polars/experimental/spilling.py,sha256=OVpH9PHYNJcYL-PAB0CvoAil_nJW0VepLvcIrrAUdlc,4255
56
+ cudf_polars/experimental/shuffle.py,sha256=l4SDBZCQ_O5LY76IZmfqRQ5USZ2cK55Xp1YMzZ3LzBA,12611
57
+ cudf_polars/experimental/sort.py,sha256=5sRdZOXpGfI8As-9ZoX2j97xAy4gPkB-rc3CDlHAS8M,23163
58
+ cudf_polars/experimental/spilling.py,sha256=mWD6guiav1fBfoIQoqZjIAdpYiXnx3-NkYUugMEY2qc,4255
59
59
  cudf_polars/experimental/statistics.py,sha256=frazwJucOGt-mxyjkbXoIE64d7lt8qODJ9TEe7UmLJE,29365
60
60
  cudf_polars/experimental/utils.py,sha256=Dir5oQkPxJUPBVnOBkDGaBg26fEEQEwnADeWZ5lDy6o,6550
61
61
  cudf_polars/experimental/benchmarks/__init__.py,sha256=XiT8hL6V9Ns_SSXDXkzoSWlXIo6aFLDXUHLLWch23Ok,149
62
62
  cudf_polars/experimental/benchmarks/pdsds.py,sha256=zVB6MBR5Gni5U1O3PNkqktu0Rwe_x_reLcuVjYs5axY,2880
63
- cudf_polars/experimental/benchmarks/pdsh.py,sha256=f8Z-L8M92rEG3xGY9YTwQUk3excN6mATmVSe5_pcsIk,56208
64
- cudf_polars/experimental/benchmarks/utils.py,sha256=Kkm6vH7roagphmC2psuoLgrtAytT49jOn8AX7C1aw9A,43981
63
+ cudf_polars/experimental/benchmarks/pdsh.py,sha256=5nWp1mxA2hz4LcgWcBb-gB6JrOBI87uR8igaNuNMm44,56209
64
+ cudf_polars/experimental/benchmarks/utils.py,sha256=-QafsXJiYFChGSbRvJTN-klenJvJEmpX260DLTx-moU,46586
65
65
  cudf_polars/experimental/benchmarks/pdsds_queries/__init__.py,sha256=pkjkRg2qJCMbhBpD9cIxcjsgMOZXXliWJPZIgZpcUQA,151
66
66
  cudf_polars/experimental/benchmarks/pdsds_queries/q1.py,sha256=NTvgxMJUB9xH2llo6_SWO7JQNwxEoK9nQ-mnRCsYf9Y,3100
67
67
  cudf_polars/experimental/benchmarks/pdsds_queries/q10.py,sha256=SBDDIf-BfoPTqHCi4jIpgLJXkA99UcZ-NhAPhE1D2hA,7797
@@ -74,31 +74,35 @@ cudf_polars/experimental/benchmarks/pdsds_queries/q7.py,sha256=gWAuGaDQbdCn6Cofb
74
74
  cudf_polars/experimental/benchmarks/pdsds_queries/q8.py,sha256=62qZn1RFhS3T-GL9bBY2cIR3kbVxgoYdY9n4en309EU,9546
75
75
  cudf_polars/experimental/benchmarks/pdsds_queries/q9.py,sha256=_MyLgknIVUK1U1x12bsM9Lrhs-ZMKuSOwMc9yu0ddYY,4723
76
76
  cudf_polars/experimental/rapidsmpf/__init__.py,sha256=2RRG6vmbR1XNZ8-EEEfm1CmgN8eOic6Z-nNWYyYCNvE,220
77
- cudf_polars/experimental/rapidsmpf/core.py,sha256=-729FCtpbO31VETPppolYeCcFBM3U_8k7x4JFblqnR0,12223
78
- cudf_polars/experimental/rapidsmpf/dispatch.py,sha256=YxJDHixMvl-M_RBpXoURHq_U2T74yvUOuTUtFhKJTBo,3852
79
- cudf_polars/experimental/rapidsmpf/io.py,sha256=zQmsqgeyFuXVNesWN3CU3FSef5sqYxvfch2NQlIYtk4,19998
80
- cudf_polars/experimental/rapidsmpf/join.py,sha256=0aJtNbTcG-T3v9iEm0jzQge1Jpv2vtVjfiSb-MD_ApQ,7272
77
+ cudf_polars/experimental/rapidsmpf/core.py,sha256=gGJsGJCPJCaNFQpaj5SAypVbYjZ2PNHYjpD7eJ7Vt2Q,16756
78
+ cudf_polars/experimental/rapidsmpf/dask.py,sha256=AqoIA6owG_OHOeCeAyyiz6tv6v0KAvvqT8pGZau8uXc,5132
79
+ cudf_polars/experimental/rapidsmpf/dispatch.py,sha256=FprIqvhpxgQTGffXVkdpDhoZAcz78OVWNeD8kddp7M0,4021
80
+ cudf_polars/experimental/rapidsmpf/io.py,sha256=ou9_lunDl9uQAsEAZYv1B-dBLjxIj8TKMChcSpU50sE,23705
81
+ cudf_polars/experimental/rapidsmpf/join.py,sha256=jGVvgMMQseb7w6lxwWYEaGOUBA927_aLd3gSHgnfxHA,11573
81
82
  cudf_polars/experimental/rapidsmpf/lower.py,sha256=_CASAuvnVCdPAj2XP919A9v-18vvfME5Jtq-dscnhkQ,2694
82
- cudf_polars/experimental/rapidsmpf/nodes.py,sha256=_2NPGkLHgjxGBecL80EoOZjoFTJLsfakS8501usJC1w,17077
83
- cudf_polars/experimental/rapidsmpf/repartition.py,sha256=V4vlJsGXnIdrlQncOtBnL2nZ4zBKyp9frGNYQhi_1rU,4998
84
- cudf_polars/experimental/rapidsmpf/shuffle.py,sha256=ySAp93R13RmefsUlTT73RZ0qMFtPr_BA5yNH_mrV49A,9163
85
- cudf_polars/experimental/rapidsmpf/union.py,sha256=jN179f2Nc33eXKaUWubHxBRkZ2EvO5uMW-HpxnIbV3s,2882
86
- cudf_polars/experimental/rapidsmpf/utils.py,sha256=qUdDfMHKH1jQEQS57m414PGXjtZ7bZfJyqNwXaB9TrE,4718
83
+ cudf_polars/experimental/rapidsmpf/nodes.py,sha256=Z08BnidQWva48BLxn3A2Qby7PQb_IGyLkOeHvssqBPc,26759
84
+ cudf_polars/experimental/rapidsmpf/repartition.py,sha256=66gNOtLKx864S63wUkXiiyz1vVfqCVS_aiTLMVLo0uM,7733
85
+ cudf_polars/experimental/rapidsmpf/union.py,sha256=iw_82sA-FDkd_mDXqCJS2V4Chgcb-aLet50xG8uykKE,3366
86
+ cudf_polars/experimental/rapidsmpf/utils.py,sha256=fFN8I_gXn-7fnIa5Ri6JEQ177Clyj110dQbDWP52i94,11050
87
+ cudf_polars/experimental/rapidsmpf/collectives/__init__.py,sha256=BIz1p2ejG1D1B3pxs5kkFzHwDABGG9gG0ya27LXhvoY,325
88
+ cudf_polars/experimental/rapidsmpf/collectives/allgather.py,sha256=X7iDRVB3kAmNe_Vbc2yh2S_4GyW__BLoQ3eKuOtSIHo,2557
89
+ cudf_polars/experimental/rapidsmpf/collectives/common.py,sha256=NVJponygUrIKn-VE3cjaKlw680sn-j8V-p0g1-tde6M,2913
90
+ cudf_polars/experimental/rapidsmpf/collectives/shuffle.py,sha256=tIU26Ym701pJLT3hR_OIzJOkrt3mGVXGHSqi_-Gy-ng,7814
87
91
  cudf_polars/testing/__init__.py,sha256=0MnlTjkTEqkSpL5GdMhQf4uXOaQwNrzgEJCZKa5FnL4,219
88
92
  cudf_polars/testing/asserts.py,sha256=rI8fNQTp2GMiOY2oEn1qz50rUArlFCX5D-kb5uWKdjA,15566
89
93
  cudf_polars/testing/io.py,sha256=-jxBzK-jURja5_f2Oha24yHRJpV7oIUScCQyvranH0Q,3902
90
- cudf_polars/testing/plugin.py,sha256=9CAGea1OeisJ5uuFaPmjAtJEQOP9zsBlc-HDCsAjbPQ,28991
94
+ cudf_polars/testing/plugin.py,sha256=sJkl9M0I7oIDv0KtJKugIX2Eo8wAVnbMrAoE_n3yNm8,28992
91
95
  cudf_polars/typing/__init__.py,sha256=-M2I4vZ13VL3vB7ONgGt9D9Bu4DBlCgDBKIzTeFkZo4,6345
92
96
  cudf_polars/utils/__init__.py,sha256=urdV5MUIneU8Dn6pt1db5GkDG0oY4NsFD0Uhl3j98l8,195
93
- cudf_polars/utils/config.py,sha256=D82lq3Kpca9UcwWiTkXrM8jw4t0KREyqK-umNn5eJBc,41948
97
+ cudf_polars/utils/config.py,sha256=7iLWgkaVeF8f5CirlsCkwmCxNrFUPNYrPA9Z5VT-Wx4,44661
94
98
  cudf_polars/utils/conversion.py,sha256=k_apLbSR-MiYYlQBGrzYOInuvcbfSi-il-o9nkovdXQ,1042
95
99
  cudf_polars/utils/cuda_stream.py,sha256=Nky4ogx0HpBPdR83XT_s-CK7J0xJ4AXuXBzCyZ076nE,1821
96
100
  cudf_polars/utils/dtypes.py,sha256=yktzqBLfbv-zve1-iS_XsGZD1R6GXgXV_grZ8m7KidM,3358
97
101
  cudf_polars/utils/sorting.py,sha256=Mqb_KLsYnKU8p1dDan2mtlIQl65RqwM78OlUi-_Jj0k,1725
98
102
  cudf_polars/utils/timer.py,sha256=KqcXqOcbovsj6KDCwaxl70baQXjuod43rABrpQkE78M,1005
99
- cudf_polars/utils/versions.py,sha256=JgcopSOGlIYHSpU6priqmkanfztBKr23jJ6pPtNuuaM,1018
100
- cudf_polars_cu13-25.12.0.dist-info/licenses/LICENSE,sha256=4YCpjWCbYMkMQFW47JXsorZLOaP957HwmP6oHW2_ngM,11348
101
- cudf_polars_cu13-25.12.0.dist-info/METADATA,sha256=gYk-Yn16yj6TaxyNu-6nlOvu9vcgLYgtHU_yINEInNc,6691
102
- cudf_polars_cu13-25.12.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
103
- cudf_polars_cu13-25.12.0.dist-info/top_level.txt,sha256=w2bOa7MpuyapYgZh480Znh4UzX7rSWlFcYR1Yo6QIPs,12
104
- cudf_polars_cu13-25.12.0.dist-info/RECORD,,
103
+ cudf_polars/utils/versions.py,sha256=4XcfNTfYY3GzC7zrhx7gpunyWQCRbunzwL6rEXjqy4o,1020
104
+ cudf_polars_cu13-26.2.0.dist-info/licenses/LICENSE,sha256=4YCpjWCbYMkMQFW47JXsorZLOaP957HwmP6oHW2_ngM,11348
105
+ cudf_polars_cu13-26.2.0.dist-info/METADATA,sha256=1vETP8_HE42i1nQU3Jee9GB3as6EhOpjAH06Z6GlF3k,6624
106
+ cudf_polars_cu13-26.2.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
107
+ cudf_polars_cu13-26.2.0.dist-info/top_level.txt,sha256=w2bOa7MpuyapYgZh480Znh4UzX7rSWlFcYR1Yo6QIPs,12
108
+ cudf_polars_cu13-26.2.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (80.10.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5