Skip to content

Commit 856116e

Browse files
committed
wip
1 parent 461325f commit 856116e

2 files changed

Lines changed: 29 additions & 60 deletions

File tree

submodules/daggerml_cli

tests/test_core.py

Lines changed: 28 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -74,34 +74,37 @@ def message_handler(dump):
7474
with TemporaryDirectory(prefix="dml-cache-") as cache_path:
7575
with Dml.temporary(cache_path=cache_path) as dml:
7676
d0 = dml.new("d0", "d0", message_handler=message_handler)
77-
d0.n0 = [42]
78-
self.assertIsInstance(d0.n0, Node)
79-
self.assertEqual(d0.n0.value(), [42])
80-
self.assertEqual(d0.n0.len().value(), 1)
81-
self.assertEqual(d0.n0.type().value(), "list")
82-
d0["x0"] = d0.n0
83-
self.assertEqual(d0["x0"], d0.n0)
84-
self.assertEqual(d0.x0, d0.n0)
77+
self.assertIsInstance(d0, Dag)
78+
# d0.n0 = [42]
79+
n0 = d0._put([42], name="n0")
80+
assert isinstance(n0, Node)
81+
self.assertIsInstance(n0, Node)
82+
self.assertEqual(n0.value(), [42])
83+
self.assertEqual(n0.len().value(), 1)
84+
self.assertEqual(n0.type().value(), "list")
85+
d0["x0"] = n0
86+
self.assertEqual(d0["x0"], n0)
87+
self.assertEqual(d0.x0, n0)
8588
d0.x1 = 42
8689
self.assertEqual(d0["x1"].value(), 42)
8790
self.assertEqual(d0.x1.value(), 42)
88-
d0.n1 = d0.n0[0]
89-
self.assertIsInstance(d0.n1, Node)
90-
self.assertEqual([x.value() for x in d0.n0], [d0.n1.value()])
91+
d0.n1 = n0[0]
92+
self.assertIsInstance(n0[0], Node)
93+
self.assertEqual([x.value() for x in n0], [d0.n1.value()])
9194
self.assertEqual(d0.n1.value(), 42)
92-
d0.n2 = {"x": d0.n0, "y": "z"}
93-
self.assertNotEqual(d0.n2["x"], d0.n0)
94-
self.assertEqual(d0.n2["x"].value(), d0.n0.value())
95+
d0.n2 = {"x": n0, "y": "z"}
96+
self.assertNotEqual(d0.n2["x"], n0)
97+
self.assertEqual(d0.n2["x"].value(), n0.value())
9598
d0.n3 = list(d0.n2.items())
9699
self.assertIsInstance([x for x in d0.n3], list)
97100
self.assertDictEqual(
98101
{k.value(): v.value() for k, v in d0.n2.items()},
99-
{"x": d0.n0.value(), "y": "z"},
102+
{"x": n0.value(), "y": "z"},
100103
)
101104
d0.n4 = [1, 2, 3, 4, 5]
102105
d0.n5 = d0.n4[1:]
103106
self.assertListEqual([x.value() for x in d0.n5], [2, 3, 4, 5])
104-
d0.result = result = d0.n0
107+
d0.result = result = n0
105108
self.assertIsInstance(local_value, str)
106109
dag = dml("dag", "list")[0]
107110
self.assertEqual(dag["result"], result.ref.to)
@@ -194,50 +197,14 @@ def test_load(self):
194197
with TemporaryDirectory(prefix="dml-cache-") as cache_path:
195198
with Dml.temporary(cache_path=cache_path) as dml:
196199
with dml.new("d0", "d0") as d0:
197-
# only fn dags have an argv attribute, expect AttributeError
198-
with self.assertRaises(Error):
199-
d0.argv # noqa: B018
200-
# d0.result hasn't been assigned yet but it can't raise an
201-
# AttributeError because we also have __getitem__ implemented
202-
# which would then be called, so an AssertionError is raised.
203-
with self.assertRaises(AssertionError):
204-
d0.result # noqa: B018
205200
d0.n0 = 42
206-
self.assertEqual(type(d0.n0), Node)
207-
d0.n1 = 420
208-
d0.result = d0.n0
201+
d0.result = "foo"
209202
dl = dml.load("d0")
210-
self.assertEqual(type(dl), Dag)
203+
assert isinstance(dl, Dag)
211204
self.assertEqual(type(dl.n0), Node)
212205
self.assertEqual(dl.n0.value(), 42)
213206
self.assertEqual(type(dl.result), Node)
214-
self.assertEqual(dl.result.value(), 42)
215-
self.assertEqual(len(dl), 2)
216-
self.assertEqual(set(dl.keys()), {"n0", "n1"})
217-
self.assertEqual(set(dl.values()), {dl.n0, dl.n1})
218-
for x in dl.values():
219-
self.assertIsInstance(x, Node)
220-
with dml.new("d1", "d1") as d1:
221-
d0 = dml.load("d0")
222-
self.assertEqual(d0.result.value(), 42)
223-
self.assertEqual(d0.n0.value(), 42)
224-
self.assertEqual(d0["n0"].value(), 42)
225-
226-
self.assertEqual(len(d0), 2)
227-
self.assertEqual(set(d0.keys()), {"n0", "n1"})
228-
self.assertEqual(set(d0.values()), {d0.n0, d0.n1})
229-
# d0 has been committed: its nodes are now imports
230-
for x in d0.values():
231-
self.assertIsInstance(x, Node)
232-
233-
d1.n0 = 42
234-
d1.n1 = 420
235-
self.assertEqual(set(d1.keys()), {"n0", "n1"})
236-
# d1 has not yet been committed: its nodes are of type Node
237-
for x in d1.values():
238-
self.assertEqual(type(x), Node)
239-
240-
d1.result = d0.result
207+
self.assertEqual(dl.result.value(), "foo")
241208

242209
def test_load_recursing(self):
243210
nums = [1, 2, 3]
@@ -263,14 +230,16 @@ def test_caching(self):
263230
with Dml.temporary(cache_path=cache_path) as dml:
264231
config_dir = dml.config_dir
265232
with dml.new("d0", "d0") as d1:
266-
d1.n0 = SUM
267-
d1.n1 = d1.n0(*nums)
233+
d1.sum_fn = SUM
234+
n1 = d1.sum_fn(*nums, name="n1")
235+
assert n1.value() == sum(nums)
236+
assert isinstance(n1.load(), Dag)
268237
uid = d1.n1.load().uuid.value()
269238
with Dml.temporary(cache_path=cache_path) as dml:
270239
assert dml.config_dir != config_dir, "Config dir should not be the same"
271240
with dml.new("d1", "d0") as d1:
272-
d1.n0 = SUM
273-
d1.n1 = d1.n0(*nums)
241+
d1.sum_fn = SUM
242+
d1.n1 = d1.sum_fn(*nums)
274243
uid1 = d1.n1.load().uuid.value()
275244
assert uid == uid1, "Cached dag should have the same UUID"
276245

0 commit comments

Comments
 (0)