Skip to content

Commit 46aef58

Browse files
jrbourbeaujcrist
authored andcommitted
Overload HLG values method (dask#4918)
* Overload HLG values method * Return lists for keys, values, and items * Add tests for keys and items
1 parent f9cd802 commit 46aef58

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

dask/highlevelgraph.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,16 +143,24 @@ def __len__(self):
143143
return sum(1 for _ in self)
144144

145145
def items(self):
146+
items = []
146147
seen = set()
147148
for d in self.layers.values():
148149
for key in d:
149150
if key not in seen:
150151
seen.add(key)
151-
yield (key, d[key])
152+
items.append((key, d[key]))
153+
return items
152154

153155
def __iter__(self):
154156
return toolz.unique(toolz.concat(self.layers.values()))
155157

158+
def keys(self):
159+
return [key for key, _ in self.items()]
160+
161+
def values(self):
162+
return [value for _, value in self.items()]
163+
156164
@classmethod
157165
def merge(cls, *graphs):
158166
layers = {}

dask/tests/test_highgraph.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,17 @@ def test_basic():
2626
hg = HighLevelGraph(layers, dependencies)
2727

2828
assert dict(hg) == {'x': 1, 'y': (inc, 'x')}
29+
30+
31+
def test_keys_values_items_methods():
32+
a = da.ones(10, chunks=(5,))
33+
b = a + 1
34+
c = a + 2
35+
d = b + c
36+
hg = d.dask
37+
38+
keys, values, items = hg.keys(), hg.values(), hg.items()
39+
assert all(isinstance(i, list) for i in [keys, values, items])
40+
assert keys == [i for i in hg]
41+
assert values == [hg[i] for i in hg]
42+
assert items == [(k, v) for k, v in zip(keys, values)]

0 commit comments

Comments
 (0)