State:New|TargetRelease:No Target|icon_bug|icon_nuke|database:public|Resolution:Fixed|BugID:502973|
Problem summary
nuke.tcl() creates a dependency in callback updating dependant nodes
nuke.tcl("node <var>"), nuke.tcl("exists <var>") and nuke.tcl("show_info <var>") all seem to have the same issue, but nuke.tcl("frame") doesn't, so it seems to happen with any TCL expression that passes in the node
Customer reported version
nuke.12.2v8
Customer reported platform
centos7
Steps to reproduce
1) Open Nuke and paste in the below nodes:
NoOp { name NoOp2
knobChanged "import nuke\n\ndef updateName(node):\n node\['_name'].setValue(\"version=\{\}\".format(node\['version'].value()))\n nodeid = nuke.tcl(\"node %s\" % node.fullName())\n\ndef knobChanged():\n if nuke.thisKnob().name() == \"version\":\n nuke.tprint(\"version\", nuke.thisKnob().value())\n updateName(nuke.thisNode())\n for node in nuke.thisNode().dependent(nuke.EXPRESSIONS, forceEvaluate=False):\n nuke.tprint(nuke.thisNode().fullName(), \"<-\", node.fullName()) \n updateName(node)\n\nknobChanged()\nfor node in nuke.allNodes():\n nuke.tprint(node.fullName(), \"->\", node.dependencies())\n nuke.tprint(node.fullName(), \"<-\", node.dependent())\n"
label "\[value _name]"
selected true
xpos 309
ypos -30
addUserKnob {20 User}
addUserKnob {1 _name}
_name version=1.0
addUserKnob {3 version}
version {{NoOp1.version}}
}
NoOp {
inputs 0
name NoOp1
knobChanged "import nuke\n\ndef updateName(node):\n node\['_name'].setValue(\"version=\{\}\".format(node\['version'].value()))\n nodeid = nuke.tcl(\"node %s\" % node.fullName())\n\ndef knobChanged():\n if nuke.thisKnob().name() == \"version\":\n nuke.tprint(\"version\", nuke.thisKnob().value())\n updateName(nuke.thisNode())\n for node in nuke.thisNode().dependent(nuke.EXPRESSIONS, forceEvaluate=False):\n nuke.tprint(nuke.thisNode().fullName(), \"<-\", node.fullName()) \n updateName(node)\n\nknobChanged()\nfor node in nuke.allNodes():\n nuke.tprint(node.fullName(), \"->\", node.dependencies())\n nuke.tprint(node.fullName(), \"<-\", node.dependent())\n"
label "\[value _name]"
selected true
xpos 141
ypos -30
addUserKnob {20 User}
addUserKnob {1 _name}
_name version=1.0
addUserKnob {3 version}
version 1
}
2) Notice the node dependencies, as printed in the terminal:

We're sorry to hear that
Please tell us why