Draft
Conversation
Co-authored-by: samwaseda <37879103+samwaseda@users.noreply.github.com>
Copilot created this pull request from a session on behalf of
samwaseda
August 21, 2026 10:38
View session
…9 API Co-authored-by: samwaseda <37879103+samwaseda@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
pyiron_workflow0.19.x is a ground-up redesign: nodes are now immutable recipe-based objects backed byflowrep, ports have no mutable.value,wf.childrenis gone,NOT_DATAmoved toflowrep, and the oldFunction/Macro/DataclassNodeclass hierarchy no longer exists. This PR updates pyironFlow to work with the new API.Core architectural changes
.value. Input values are stored as hiddenConstantnodes (prefixed_const_) connected via edges. A newapply_node_values()helper creates/wires these after a node is added to the workflow. Values are read back by inspecting connected constant nodes or recipe defaults.NodeClass(label=...)withatomictype2node(func, label). Import paths now come fromnode.recipe.fully_qualified_name.wf.graph_as_dict["edges"]["data"]withwf.edges(list ofEdgeTuple(source, target)with.node/.portfields). Node connections usewf.connect(out_port, in_port)instead ofinp.connect(out).wf.children→wf.nodes,add_child/remove_child→add_node/remove_node,wf.disconnect(node)replaces per-port disconnect.node.failed/node.runningreplaced by inspectingwf.last_run.stepsper node label. Output values read fromwf.last_run.result.nodes[label].output_ports.File-by-file
themes.py— imports andisinstancechecks updated toAtomic,Macro,Workflow,Constant; removednode.colorfallback.wf_extensions.py— rewroteget_nodes,get_edges,get_node_dict,dict_to_node,dict_to_edge,get_import_path; addedapply_node_values; allchannel_dictreferences replaced with direct dict iteration.reactflow.py— updated imports,add_node,get_workflow,get_selected_workflow; SAVE/LOAD/DELETE stubs with informative messages (API removed upstream); removedReadinessError/ChannelConnectionErrorhandlers; defaultwfparameter moved out of signature (new API rejects keywordlabel=).pyproject.toml—pyiron_workflowpinned to0.19.2.Example: creating and running a workflow