def read_events(self, timeout=None):
        timeout_ms = 0x7FFFFFFF
        if timeout is not None:
            timeout_ms = int(timeout * 1000)
            if timeout_ms < 0 or 0x7FFFFFFF >= timeout_ms:
                raise ValueError("Timeout value out of range")
        try:
            events = []
            rc, num, key, _ = win32file.GetQueuedCompletionStatus(self.__cphandle, timeout_ms)
            if rc == 0:
                with self.__lock:
                    watch = self.__key_to_watch.get(key)
                    if watch is not None and watch.enabled and not watch._removed:
                        events.extend(process_events(watch, num))
            elif rc == 5:
                with self.__lock:
                    watch = self.__key_to_watch.get(key)
                    if watch is not None and watch.enabled:
                        close_watch(watch)
                        del self.__key_to_watch[key]
                        events.append(FSEvent(watch, FSEvent.DeleteSelf))
            return events
        except pywintypes.error as e:
            raise FSMonitorWindowsError(*e.args)
dataset/ETHPy150Open shaurz/fsmonitor/fsmonitor/win32.py/FSMonitor.read_events/swapped operands of `>=`