#NEWLINE# def _trait_modified( self , obj , name , old , new ) : #NEWLINE# #INDENT# if ( name == 'trait_added' ) : #NEWLINE# #INDENT# return #NEWLINE# #UNINDENT# if isinstance ( new , VariableTree ) : #NEWLINE# #INDENT# obj = getattr ( self , name ) #NEWLINE# obj . parent = self #NEWLINE# obj . _iotype = self . _iotype #NEWLINE# #UNINDENT# if ( self . _iotype == 'in' ) : #NEWLINE# #INDENT# p = self #NEWLINE# path = [ name ] #NEWLINE# while isinstance ( p , VariableTree ) : #NEWLINE# #INDENT# vt = p #NEWLINE# p = p . parent #NEWLINE# path . append ( vt . name ) #NEWLINE# #UNINDENT# if ( p is not None ) : #NEWLINE# #INDENT# t = p . trait ( vt . name ) #NEWLINE# if ( t and ( t . iotype == 'in' ) ) : #NEWLINE# #INDENT# p . _input_updated ( vt . name , fullpath = '.' . join ( path [ : : ( - 1 ) ] ) )