def METHOD_NAME(self):
    """Read event from `inotify` and add them to `queue`. When reading a
    IN_MOVE_TO event, remove the previous added matching IN_MOVE_FROM event
    and add them back to the queue as a tuple.
    """
    deleted_self = False
    while self.should_keep_running() and not deleted_self:
        inotify_events = self._inotify.read_events()
        grouped_events = self._group_events(inotify_events)
        for inotify_event in grouped_events:
            if not isinstance(inotify_event, tuple) and inotify_event.is_ignored:
                if inotify_event.src_path == self._inotify.path:
                    # Watch was removed explicitly (inotify_rm_watch(2)) or automatically (file
                    # was deleted, or filesystem was unmounted), stop watching for events
                    deleted_self = True
                continue
            # Only add delay for unmatched move_from events
            delay = not isinstance(inotify_event, tuple) and inotify_event.is_moved_from
            self._queue.put(inotify_event, delay)
            if not isinstance(inotify_event, tuple) and inotify_event.is_delete_self and \
                    inotify_event.src_path == self._inotify.path:
                # Deleted the watched directory, stop watching for events
                deleted_self = True