Skip to content

Commit 60b3547

Browse files
committed
ensure is_dask_collection doesnt trigger materialization
1 parent 3c32fda commit 60b3547

File tree

1 file changed

+20
-1
lines changed

1 file changed

+20
-1
lines changed

dask_expr/tests/test_collection.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import dask
1010
import numpy as np
1111
import pytest
12+
from dask import is_dask_collection
1213
from dask.dataframe._compat import PANDAS_GE_210
1314
from dask.dataframe.utils import UNKNOWN_CATEGORIES
1415
from dask.utils import M
@@ -23,7 +24,8 @@
2324
to_numeric,
2425
to_timedelta,
2526
)
26-
from dask_expr._expr import Tuple, are_co_aligned
27+
from dask_expr._collection import new_collection
28+
from dask_expr._expr import Expr, Tuple, are_co_aligned
2729
from dask_expr._reductions import Len
2830
from dask_expr._shuffle import Shuffle
2931
from dask_expr.datasets import timeseries
@@ -1925,3 +1927,20 @@ def test_axes(df, pdf):
19251927
[assert_eq(d, p) for d, p in zip(df.axes, pdf.axes)]
19261928
assert len(df.x.axes) == len(pdf.x.axes)
19271929
assert_eq(df.x.axes[0], pdf.x.axes[0])
1930+
1931+
1932+
def test_dask_collection_controlled_materialization():
1933+
class NoMaterializationAllowed(Expr):
1934+
_meta = int
1935+
1936+
def _layer(self):
1937+
raise RuntimeError("Materialization not allowed")
1938+
1939+
collection = new_collection(NoMaterializationAllowed())
1940+
assert is_dask_collection(collection)
1941+
1942+
with pytest.raises(RuntimeError, match="Materialization not allowed"):
1943+
collection.dask
1944+
1945+
with pytest.raises(RuntimeError, match="Materialization not allowed"):
1946+
collection.__dask_graph_factory__().materialize()

0 commit comments

Comments
 (0)