Working with the Python Scripting API
http://www.gafferhq.org/documentation/1.0.2.0/WorkingWithThePythonScriptingAPI/index.html
Node Graph editing in Python
https://www.gafferhq.org/documentation/1.0.0.0/WorkingWithThePythonScriptingAPI/TutorialNodeGraphEditingInPython/index.html
Common operations
https://www.gafferhq.org/documentation/1.0.0.0/Reference/ScriptingReference/CommonOperations/index.html
Scripting box nodes
https://blog.gafferhq.org/?p=278
Dev and pipe tips
https://blog.gafferhq.org/?cat=35
import GafferScene import Gaffer # return a list of selections # (nodes HAVE TO BE selected for the following) sel = root.selection() # gaffer standard set list(sel) sel[0].typeName() dir( sel[0] ) sel[0].getName() sel.clear() root.removeChild( sel[0] ) # store the selected nodes in a variable >>> sel = root.selection() >>> myGroup = sel[0] >>> light = sel[1] # set location name myGroup['name'].setValue('groupLocation') light['name'].setValue('photometricLightLocation') # connect a node to a group >>> myGroup['in'][0].setInput( light['out'] ) # return the node/port attached to a group port >>> myGroup['in'][0].childNames('/') photometricLightLocation >>> myGroup['in'][0].getInput().fullName() >>> myGroup['in'][0].source().fullName() gui.scripts.ScriptNode.lighting_in1.PhotometricLightNode.out # return the full name of one of the objects # attached to the out port >>> light['out'].outputs()[0].fullName() gui.scripts.ScriptNode.lighting_in1.GroupNode.in.in0 >>> light GafferArnold.ArnoldLight( "PhotometricLightNode" ) >>> light['out'].childNames('') photometricLightLocation >>> light['out'].outputs()[0].node() GafferScene.Group( "Group" )