def _per_file_event_handler(self): """Create a Watchdog file event handler that does different things for every file """ file_event_handler = PatternMatchingEventHandler() file_event_handler.on_created = self._on_file_created file_event_handler.on_modified = self._on_file_modified file_event_handler.on_moved = self._on_file_moved file_event_handler._patterns = [ os.path.join(self._dir, os.path.normpath("*")) ] # Ignore hidden files/folders # TODO: what other files should we skip? file_event_handler._ignore_patterns = [ "*.tmp", "*.wandb", "wandb-summary.json", os.path.join(self._dir, ".*"), os.path.join(self._dir, "*/.*"), ] # TODO: pipe in actual settings for glb in self._settings.ignore_globs: file_event_handler._ignore_patterns.append( os.path.join(self._dir, glb)) return file_event_handler