def _touch(self, node_state, flags=DIRTY_FLAGS_ALL, _quiet=False, _depth=0):
        """
        Mark this node as not dirty and all calling nodes as dirty.
        
        All shifted contexts that also share this node are also touched.

        If _quiet is True only this node is touched (in ctx and possibly
        in any shifted contexts) and but nodes dependent on this one
        are not dirtied.
        """
        if _trace_enabled:
            ctx = _get_context(node_state.ctx_id)
            _logger.info("%s[%s] touched (%s)" % (
                            self.name,
                            ctx,
                            DIRTY_FLAGS.to_string(flags)))

        # clear the flags
        node_state.dirty_flags &= ~flags

        if not _quiet:
            # mark any calling nodes as dirty
            caller = cython.declare(MDFNode)
            caller_state = cython.declare(NodeState)
            for ctx_id, callers in node_state.callers.iteritems():
                for caller in callers:
                    try:
                        caller_state = caller._states[ctx_id]
                        caller._set_dirty(caller_state, flags, _depth+1)
                    except __HOLE__:
                        continue

    # thread_id is passed in to avoid fetching it again later if this has to get another node value
dataset/ETHPy150Open manahl/mdf/mdf/nodes.py/MDFNode._touch