Skip to content

Commit 4c506fa

Browse files
authored
Merge pull request #1064 from mdekstrand/feature/pipeline-inspect
Expose default nodes from pipelines and builders
2 parents ab4c43e + 8b3482d commit 4c506fa

3 files changed

Lines changed: 17 additions & 0 deletions

File tree

src/lenskit/pipeline/_builder.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,14 @@ def node(
179179
else:
180180
raise KeyError(f"node {node}")
181181

182+
@property
183+
def default_node(self) -> Node[Any] | None:
184+
"Get the default node for this pipeline."
185+
if self._default is None:
186+
return None
187+
else:
188+
return self.node(self._default)
189+
182190
def create_input[T](self, name: str, *types: type[T] | UnionType | None) -> Node[T]:
183191
"""
184192
Create an input node for the pipeline. Pipelines expect their inputs to

src/lenskit/pipeline/_impl.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,11 @@ def node(
183183
else:
184184
raise KeyError(node)
185185

186+
@property
187+
def default_node(self) -> Node[Any] | None:
188+
"Get the default node for this pipeline."
189+
return self._default
190+
186191
def component_names(self) -> list[str]:
187192
"""
188193
Get the component names (in topological order).

tests/pipeline/test_pipeline.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,10 @@ def triple(x: int) -> int:
256256
pipe = pipe.build()
257257
assert pipe.component_names() == ["incr", "triple"]
258258

259+
dn = pipe.default_node
260+
assert dn is not None
261+
assert dn.name == "triple"
262+
259263

260264
def test_simple_graph():
261265
pipe = PipelineBuilder()

0 commit comments

Comments
 (0)