def test_split_every_invalid(): t = Tuple({"a": 1, "b": 2}, ["a", "b"]) with pytest.raises(ValueError): checkpoint(t, split_every=1) with pytest.raises(ValueError): checkpoint(t, split_every=1.9) with pytest.raises(ValueError): checkpoint(t, split_every=0) # Not to be confused with False or None with pytest.raises(ValueError): checkpoint(t, split_every=-2) with pytest.raises(TypeError): checkpoint(t, split_every={0: 2}) # This is legal for dask.array but not here
def test_checkpoint(): cnt = NodeCounter() dsk1 = {("a", h1): (cnt.f, 1), ("a", h2): (cnt.f, 2)} dsk2 = {"b": (cnt.f, 2)} cp = checkpoint(Tuple(dsk1, list(dsk1)), {"x": [Tuple(dsk2, list(dsk2))]}) assert cp.compute(scheduler="sync") is None assert cnt.n == 3
def test_split_every(split_every, nkeys): dsk = {("a", i): i for i in range(100)} t1 = Tuple(dsk, list(dsk)) c = checkpoint(t1, split_every=split_every) assert len(c.__dask_graph__()) == nkeys assert c.compute(scheduler="sync") is None t2 = wait_on(t1, split_every=split_every) assert len(t2.__dask_graph__()) == nkeys + 100 assert t2.compute(scheduler="sync") == tuple(range(100)) dsk3 = {"b": 1, "c": 2} t3 = Tuple(dsk3, list(dsk3)) t4 = bind(t3, t1, split_every=split_every, assume_layers=False) assert len(t4.__dask_graph__()) == nkeys + 2 assert t4.compute(scheduler="sync") == (1, 2)
def test_checkpoint_collections(): colls, cnt = collections_with_node_counters() cp = checkpoint(*colls) cp.compute(scheduler="sync") assert cnt.n == 16
def test_checkpoint(layers): t1, t2, cnt = demo_tuples(layers) cp = checkpoint(t1, {"x": [t2]}) assert cp.compute(scheduler="sync") is None assert cnt.n == 5