Reads events between the specified start and stop time.

        Events are sorted by generation time, source, then sequence number.

        :param str source: The source of the returned events.
        :param str severity: The minimum severity level of the returned events.
                             One of ``INFO``, ``WATCH``, ``WARNING``, ``DISTRESS``,
                             ``CRITICAL`` or ``SEVERE``.
        :param str text_filter: Filter the text message of the returned events
        :param ~datetime.datetime start: Minimum start date of the returned events (inclusive)
        :param ~datetime.datetime stop: Maximum start date of the returned events (exclusive)
        :param int page_size: Page size of underlying requests. Higher values imply
                              less overhead, but risk hitting the maximum message size limit.
        :param bool descending: If set to ``True`` events are fetched in reverse
                                order (most recent first).
        :rtype: ~collections.Iterable[.Event]

def list_events(self, source=None, severity=None, text_filter=None,
                    start=None, stop=None, page_size=500, descending=False):
        """
        Reads events between the specified start and stop time.

        Events are sorted by generation time, source, then sequence number.

        :param str source: The source of the returned events.
        :param str severity: The minimum severity level of the returned events.
                             One of ``INFO``, ``WATCH``, ``WARNING``, ``DISTRESS``,
                             ``CRITICAL`` or ``SEVERE``.
        :param str text_filter: Filter the text message of the returned events
        :param ~datetime.datetime start: Minimum start date of the returned events (inclusive)
        :param ~datetime.datetime stop: Maximum start date of the returned events (exclusive)
        :param int page_size: Page size of underlying requests. Higher values imply
                              less overhead, but risk hitting the maximum message size limit.
        :param bool descending: If set to ``True`` events are fetched in reverse
                                order (most recent first).
        :rtype: ~collections.Iterable[.Event]
        """
        params = {
            'order': 'desc' if descending else 'asc',
        }
        if source is not None:
            params['source'] = source
        if page_size is not None:
            params['limit'] = page_size
        if severity is not None:
            params['severity'] = severity
        if start is not None:
            params['start'] = to_isostring(start)
        if stop is not None:
            params['stop'] = to_isostring(stop)
        if text_filter is not None:
            params['q'] = text_filter

        return pagination.Iterator(
            client=self._client,
            path='/archive/{}/events'.format(self._instance),
            params=params,
            response_class=rest_pb2.ListEventsResponse,
            items_key='event',
            item_mapper=Event,
        )