Skip to content

Commit ff80631

Browse files
committed
refact(pipe) move build_net() --> back to pipeline, ...
dropping further network.py-->pipeline.py mod-dep.
1 parent 630ca29 commit ff80631

File tree

2 files changed

+60
-58
lines changed

2 files changed

+60
-58
lines changed

graphtik/network.py

Lines changed: 0 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -607,60 +607,3 @@ def compile(
607607
log.debug("... cache-updated key: %s", cache_key)
608608

609609
return plan
610-
611-
612-
def build_network(
613-
operations,
614-
rescheduled=None,
615-
endured=None,
616-
parallel=None,
617-
marshalled=None,
618-
node_props=None,
619-
renamer=None,
620-
):
621-
"""
622-
The :term:`network` factory that does :term:`operation merging` before constructing it.
623-
624-
:param nest:
625-
see same-named param in :func:`.compose`
626-
"""
627-
kw = {
628-
k: v for k, v in locals().items() if v is not None and k not in ("operations")
629-
}
630-
631-
from .pipeline import NULL_OP, Pipeline
632-
633-
def proc_op(op, parent=None):
634-
"""clone FuncOperation with certain props changed"""
635-
## Convey any node-props specified in the pipeline here
636-
# to all sub-operations.
637-
#
638-
if kw:
639-
op_kw = kw.copy()
640-
641-
if node_props:
642-
op_kw["node_props"] = {**op.node_props, **node_props}
643-
644-
if callable(renamer):
645-
646-
def parent_wrapper(ren_args: RenArgs) -> str:
647-
# Provide RenArgs.parent.
648-
return renamer(ren_args._replace(parent=parent))
649-
650-
op_kw["renamer"] = parent_wrapper
651-
op = op.withset(**op_kw)
652-
653-
return op
654-
655-
merge_set = iset() # Preseve given node order.
656-
for op in operations:
657-
if isinstance(op, Pipeline):
658-
merge_set.update(proc_op(s, op) for s in op.ops)
659-
else:
660-
merge_set.add(proc_op(op))
661-
merge_set = iset(i for i in merge_set if not isinstance(i, NULL_OP))
662-
663-
assert all(bool(n) for n in merge_set)
664-
net = Network(*merge_set)
665-
666-
return net

graphtik/pipeline.py

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
from collections import abc as cabc
1515
from typing import Callable, List, Mapping, Union
1616

17+
from boltons.setutils import IndexedSet as iset
18+
1719
from .base import UNSET, Items, Operation, PlotArgs, Plottable, RenArgs, aslist, jetsam
1820
from .modifiers import dep_renamed
1921

@@ -54,6 +56,64 @@ def _id_tristate_bool(b):
5456
return 3 if b is None else (hash(bool(b)) + 1)
5557

5658

59+
def build_network(
60+
operations,
61+
rescheduled=None,
62+
endured=None,
63+
parallel=None,
64+
marshalled=None,
65+
node_props=None,
66+
renamer=None,
67+
):
68+
"""
69+
The :term:`network` factory that does :term:`operation merging` before constructing it.
70+
71+
:param nest:
72+
see same-named param in :func:`.compose`
73+
"""
74+
kw = {
75+
k: v for k, v in locals().items() if v is not None and k not in ("operations")
76+
}
77+
78+
def proc_op(op, parent=None):
79+
"""clone FuncOperation with certain props changed"""
80+
## Convey any node-props specified in the pipeline here
81+
# to all sub-operations.
82+
#
83+
from .op import FunctionalOperation
84+
85+
if kw:
86+
op_kw = kw.copy()
87+
88+
if node_props:
89+
op_kw["node_props"] = {**op.node_props, **node_props}
90+
91+
if callable(renamer):
92+
93+
def parent_wrapper(ren_args: RenArgs) -> str:
94+
# Provide RenArgs.parent.
95+
return renamer(ren_args._replace(parent=parent))
96+
97+
op_kw["renamer"] = parent_wrapper
98+
op = op.withset(**op_kw)
99+
100+
return op
101+
102+
merge_set = iset() # Preseve given node order.
103+
for op in operations:
104+
if isinstance(op, Pipeline):
105+
merge_set.update(proc_op(s, op) for s in op.ops)
106+
else:
107+
merge_set.add(proc_op(op))
108+
merge_set = iset(i for i in merge_set if not isinstance(i, NULL_OP))
109+
110+
assert all(bool(n) for n in merge_set)
111+
112+
from .network import Network # Imported here not to affect locals() at the top.
113+
114+
return Network(*merge_set)
115+
116+
57117
class Pipeline(Operation, Plottable):
58118
"""
59119
An operation that can :term:`compute` a network-graph of operations.
@@ -96,7 +156,6 @@ def __init__(
96156
97157
*Operations may only be added once, ...*
98158
"""
99-
from .network import build_network
100159
from .op import reparse_operation_data
101160

102161
## Set data asap, for debugging, although `net.withset()` will reset them.

0 commit comments

Comments
 (0)