Watchdog Event Filter for Type and Path Pattern

  • Share this:

Code introduction


This function is a custom event filter for the watchdog library. It filters events monitored by the watchdog library. It accepts the event type and file path pattern as parameters and returns an event handler that returns True only when the event type matches the specified event type and the file path matches the specified pattern.


Technology Stack : watchdog, PatternMatchingEventHandler

Code Type : The type of code

Code Difficulty : Intermediate


                
                    
def random_event_filter(event_type, path):
    """
    Filters events based on the event type and path pattern.

    :param event_type: The type of the event to filter (e.g., 'created', 'modified').
    :param path: The pattern of the file path to filter on (e.g., '*.txt').
    :return: True if the event matches the filter criteria, False otherwise.
    """
    import re
    import watchdog.events

    class FilteredEventHandler(watchdog.events.PatternMatchingEventHandler):
        def __init__(self, event_type, path):
            super().__init__(pathspec=path, ignore_patterns=None, ignore_directories=False)
            self.event_type = event_type

        def on_any_event(self, event):
            if event.event_type == self.event_type:
                return True
            return False

    return FilteredEventHandler(event_type, path).is_match