'Return a list of events that pass the `event_filter` and were emitted after `start_time`.
This function is used internally by most of the other assertions and convenience methods in this class.
The `event_filter` is expected to be a callable that allows you to filter the event stream and select particular
events of interest. A dictionary `event_filter` is also supported, which simply indicates that the event should
match that provided expectation.'

def get_matching_events_from_time(self, start_time=None, event_filter=None):

    if (start_time is None):
        start_time = self.start_time
    if isinstance(event_filter, dict):
        event_filter = functools.partial(is_matching_event, event_filter)
    elif (not callable(event_filter)):
        raise ValueError('event_filter    must    either    be    a    dict    or    a    callable    function    with    as    single    "event"    parameter    that    returns    a    boolean    value.')
    matching_events = []
    cursor = self.event_collection.find({'time': {'$gte': start_time}}).sort('time', ASCENDING)
    for event in cursor:
        matches = False
        try:
            del event['_id']
            if (event_filter is not None):
                matches = event_filter(event)
        except AssertionError:
            continue
        else:
            if ((matches is None) or matches):
                matching_events.append(event)
    return matching_events
