<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def notify_progress(self, conn_string, operation, finished, total, wait=True):
 """Send a progress event. Progress events can be sent for ``debug`` and ``script`` operations and notify the caller about the progress of these potentially long-running operations. They have two integer properties that specify what fraction of the operation has been completed. Args: conn_string (str):
 The device that is sending the event. operations (str):
 The operation that is in progress: debug or script finished (int):
 The number of "steps" that have finished. total (int):
 The total number of steps to perform. wait (bool):
 Whether to return an awaitable that we can use to block until the notification has made it to all callbacks. Returns: awaitable or None: An awaitable if wait=True. If wait is False, the notification is run in the background with no way to check its progress and None is returned. """


        if operation not in self.PROGRESS_OPERATIONS:
            raise ArgumentError("Invalid operation for progress event: {}".format(operation))

        event = dict(operation=operation, finished=finished, total=total)

        if wait:
            return self.notify_event(conn_string, 'progress', event)

        self.notify_event_nowait(conn_string, 'progress', event)
        return None