def dagNodeInputChanged(self, dagNode, input):
        nodesAffected = list()
        
        # Gather the output that corresponds to the changed input
        affectedOutput = dagNode.outputAffectedByInput(input)

        # If you have changed the input source, set this input's range based on the extents of the incoming range.
        incomingDataPacket = self.dag.nodeOutputDataPacket(*depends_data_packet.nodeAndOutputFromScenegraphLocationString(input.value, self.dag))
        if incomingDataPacket:
            if incomingDataPacket.sequenceRange:
                nodesAffected.append(dagNode)
                seqRange = (str(incomingDataPacket.sequenceRange[0]), str(incomingDataPacket.sequenceRange[1]))
                dagNode.setInputRange(input.name, seqRange)
                
                # A new association has been made, is there an output range that may also be affected?
                if affectedOutput:
                    for subName in affectedOutput.subOutputNames():
                        dagNode.setOutputRange(affectedOutput.name, seqRange)

        # Notify the system that there has been a changed output - this covers the case of the output range
        # change (loop just above this one) and the input type being changed, and thus cascading down.
        if affectedOutput:
            nodesAffected = nodesAffected + self.dagNodeOutputChanged(dagNode, affectedOutput)
            
        return nodesAffected
When a node's input is changed, its range should be set to the same as
dataset/ETHPy150Open andrew-gardner/dependsworkflow/depends/depends_main_window.py/MainWindow.dagNodeInputChanged