+import logging
+import threading
+import time
+from watchdog.events import DirDeletedEvent, FileDeletedEvent, FileSystemEventHandler
+from watchdog.observers import Observer
+
+class DirTrigger(FileSystemEventHandler):
+
+ def __init__(self, dir_path, cool_time, max_time):
+ self._dir_path = dir_path
+ self._cool_time = cool_time
+ self._max_time = max_time
+ self._got_event = False
+ self._last_event_time = 0.0
+ self._last_reset_time = 0.0
+ self._lock = threading.Lock()
+ self._observer = Observer()
+ self._observer.schedule(self, path=dir_path, recursive=True)
+
+ def start(self):
+ try:
+ self._observer.start()
+ except Exception as e:
+ logging.warning("Error starting file observer for %s: %s", self._dir_path, str(e))
+
+ def stop(self):
+ self._observer.stop()