<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def poll(connection: connection, timeout: float=1.0) -> Iterable[Event]: """Poll the connection for notification events. This method operates as an iterable. It will keep returning events until all events have been read. Parameters connection: psycopg2.extensions.connection Active connection to a PostGreSQL database. timeout: float Number of seconds to block for an event before timing out. Returns ------- event: Event or None If an event is available, an Event is returned. If no event is available, None is returned. Examples -------- print(evt) """


    if timeout > 0.0:
        log('Polling for events (Blocking, {} seconds)...'.format(timeout), logger_name=_LOGGER_NAME)
    else:
        log('Polling for events (Non-Blocking)...', logger_name=_LOGGER_NAME)
    if select.select([connection], [], [], timeout) == ([], [], []):
        log('...No events found', logger_name=_LOGGER_NAME)
        return
    else:
        log('Events', logger_name=_LOGGER_NAME)
        log('------', logger_name=_LOGGER_NAME)
        connection.poll()
        while connection.notifies:
            event = connection.notifies.pop(0)
            log(str(event), logger_name=_LOGGER_NAME)
            yield Event.fromjson(event.payload)