#NEWLINE# def _touch( self , node_state , flags = DIRTY_FLAGS_ALL , _quiet = False , _depth = 0 ) : #NEWLINE# #INDENT# '\n        Mark this node as not dirty and all calling nodes as dirty.\n        \n        All shifted contexts that also share this node are also touched.\n\n        If _quiet is True only this node is touched (in ctx and possibly\n        in any shifted contexts) and but nodes dependent on this one\n        are not dirtied.\n        ' #NEWLINE# if _trace_enabled : #NEWLINE# #INDENT# ctx = _get_context ( node_state . ctx_id ) #NEWLINE# _logger . info ( ( '%s[%s] touched (%s)' % ( self . name , ctx , DIRTY_FLAGS . to_string ( flags ) ) ) ) #NEWLINE# #UNINDENT# node_state . dirty_flags &= ( ~ flags ) #NEWLINE# if ( not _quiet ) : #NEWLINE# #INDENT# caller = cython . declare ( MDFNode ) #NEWLINE# caller_state = cython . declare ( NodeState ) #NEWLINE# for ( ctx_id , callers ) in node_state . callers . iteritems ( ) : #NEWLINE# #INDENT# for caller in callers : #NEWLINE# #INDENT# try : #NEWLINE# #INDENT# caller_state = caller . _states [ ctx_id ] #NEWLINE# caller . _set_dirty ( caller_state , caller , ( _depth + 1 ) ) #NEWLINE# #UNINDENT# except KeyError : #NEWLINE# #INDENT# continue