<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_reports(self, is_enclave=None, enclave_ids=None, tag=None, excluded_tags=None, from_time=None, to_time=None):
 """ Uses the |get_reports_page| method to create a generator that returns each successive report as a trustar report object. :param boolean is_enclave: restrict reports to specific distribution type (optional - by default all accessible reports are returned). :param list(str) enclave_ids: list of enclave ids used to restrict reports to specific enclaves (optional - by default reports from all enclaves are returned) :param list(str) tag: a list of tags; only reports containing ALL of these tags will be returned. If a tag with this name exists in more than one enclave in the list passed as the ``enclave_ids`` argument, the request will fail. Handle this by making separate requests for each enclave ID if necessary. :param list(str) excluded_tags: a list of tags; reports containing ANY of these tags will not be returned. :param int from_time: start of time window in milliseconds since epoch (optional) :param int to_time: end of time window in milliseconds since epoch (optional) :return: A generator of Report objects. Note: If a report contains all of the tags in the list passed as argument to the 'tag' parameter and also contains any (1 or more) of the tags in the list passed as argument to the 'excluded_tags' parameter, that report will not be returned by this function. Example: '661583cb-a6a7-4cbd-8a90-01578fa4da89' 'da131660-2708-4c8a-926e-f91fb5dbbc62' '2e3400d6-fa37-4a8c-bc2f-155aaa02ae5a' '38064828-d3db-4fff-8ab8-e0e3b304ff44' 'dbf26104-cee5-4ca4-bdbf-a01d0178c007' """


        return Page.get_generator(page_generator=self._get_reports_page_generator(is_enclave, enclave_ids, tag,
                                                                                  excluded_tags, from_time, to_time))