3 from watchdog.events import DirDeletedEvent, FileDeletedEvent, FileSystemEventHandler
4 from watchdog.observers import Observer
6 class DirTrigger(FileSystemEventHandler):
10 def __init__(self, dir_path):
11 self._got_event = False
12 self._last_event_time = 0.0
13 self._last_reset_time = 0.0
14 self._lock = threading.Lock()
15 self._observer = Observer()
16 self._observer.schedule(self, path=dir_path, recursive=True)
19 self._observer.start()
24 def is_triggering(self):
27 return ( self._got_event and
28 (time.time() - self._last_event_time > DirTrigger.COOL_TIME) ) or \
29 time.time() - self._last_reset_time > DirTrigger.MAX_TIME
34 self._got_event = False
35 self._last_reset_time = time.time()
37 def on_any_event(self, event):
38 if event.event_type == FileDeletedEvent or event.event_type == DirDeletedEvent:
43 self._got_event = True
44 self._last_event_time = time.time()