(optimize)
| 1664 | |
| 1665 | @pytest.mark.parametrize("optimize", [False, True]) |
| 1666 | def test_dask_layers_to_delayed(optimize): |
| 1667 | # `da.Array.to_delayed` causes the layer name to not match the key. |
| 1668 | # Ensure the layer name is propagated between `Delayed` and `Item`. |
| 1669 | pytest.importorskip("numpy") |
| 1670 | da = pytest.importorskip("dask.array") |
| 1671 | i = db.Item.from_delayed(da.ones(1).to_delayed()[0]) |
| 1672 | name = i.key[0] |
| 1673 | assert i.key[1:] == (0,) |
| 1674 | assert i.dask.layers.keys() == {f"delayed-{name}"} |
| 1675 | assert i.dask.dependencies == {f"delayed-{name}": set()} |
| 1676 | assert i.__dask_layers__() == (f"delayed-{name}",) |
| 1677 | |
| 1678 | arr = da.ones(1) + 1 |
| 1679 | delayed = arr.to_delayed(optimize_graph=optimize)[0] |
| 1680 | i = db.Item.from_delayed(delayed) |
| 1681 | assert i.key == delayed.key |
| 1682 | assert i.dask is delayed.dask |
| 1683 | assert i.__dask_layers__() == delayed.__dask_layers__() |
| 1684 | |
| 1685 | back = i.to_delayed(optimize_graph=optimize) |
| 1686 | assert back.__dask_layers__() == i.__dask_layers__() |
| 1687 | |
| 1688 | if not optimize: |
| 1689 | assert back.dask is arr.dask |
| 1690 | # When not optimized, the key is not a layer in the graph, so using it should fail |
| 1691 | with pytest.raises(ValueError, match="not in"): |
| 1692 | db.Item(back.dask, back.key) |
| 1693 | |
| 1694 | with pytest.raises(ValueError, match="not in"): |
| 1695 | db.Item(arr.dask, (arr.name,), layer="foo") |
| 1696 | |
| 1697 | |
| 1698 | def test_to_dataframe_optimize_graph(): |
nothing calls this directly
no test coverage detected
searching dependent graphs…