Skip to content

Commit 64e0028

Browse files
committed
WIP/+ExecPlan class...
- SAME x4 TCs FAIL like parent. + refact: revive net.steps --> net.last_plan + BREAK: inverse the order of outputs/inputs args in net.compute() + refact: use iset() to merge.
1 parent d403783 commit 64e0028

File tree

4 files changed

+357
-304
lines changed

4 files changed

+357
-304
lines changed

graphkit/base.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,11 +160,14 @@ def __init__(self, **kwargs):
160160

161161
def _compute(self, named_inputs, outputs=None):
162162
return self.net.compute(
163-
outputs, named_inputs, method=self._execution_method,
163+
named_inputs, outputs, method=self._execution_method,
164164
overwrites_collector=self._overwrites_collector)
165165

166166
def __call__(self, *args, **kwargs):
167167
return self._compute(*args, **kwargs)
168+
169+
def compile(self, *args, **kwargs):
170+
return self.net.compile(*args, **kwargs)
168171

169172
def set_execution_method(self, method):
170173
"""

graphkit/functional.py

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -190,22 +190,15 @@ def __call__(self, *operations):
190190
merge_set = iset() # Preseve given node order.
191191
for op in operations:
192192
if isinstance(op, NetworkOperation):
193-
op.net.compile()
194-
net_ops = filter(lambda x: isinstance(x, Operation),
195-
op.net.execution_plan)
196-
merge_set.update(net_ops)
193+
plan = op.net.compile()
194+
merge_set.update(s for s in plan.steps
195+
if isinstance(s, Operation))
197196
else:
198197
merge_set.add(op)
199198
operations = merge_set
200199

201-
def order_preserving_uniquifier(seq, seen=None):
202-
seen = seen if seen else set() # unordered, not iterated
203-
seen_add = seen.add
204-
return [x for x in seq if not (x in seen or seen_add(x))]
205-
206-
provides = order_preserving_uniquifier(chain(*[op.provides for op in operations]))
207-
needs = order_preserving_uniquifier(chain(*[op.needs for op in operations]),
208-
set(provides)) # unordered, not iterated
200+
provides = iset(chain(*[op.provides for op in operations]))
201+
needs = iset(chain(*[op.needs for op in operations])) - provides
209202

210203
# Build network
211204
net = Network()

0 commit comments

Comments
 (0)