<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def search_reports(self, search_term=None, enclave_ids=None, from_time=None, to_time=None, tags=None, excluded_tags=None):
 """ Uses the |search_reports_page| method to create a generator that returns each successive report. :param str search_term: The term to search for. If empty, no search term will be applied. Otherwise, must be at least 3 characters. :param list(str) enclave_ids: list of enclave ids used to restrict reports to specific enclaves (optional - by default reports from all of user's enclaves are 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) :param list(str) tags: Name (or list of names) of tag(s) to filter reports by. Only reports containing ALL of these tags will be returned. (optional) :param list(str) excluded_tags: Reports containing ANY of these tags will be excluded from the results. :return: The generator of Report objects. Note that the body attributes of these reports will be ``None``. """


        return Page.get_generator(page_generator=self._search_reports_page_generator(search_term, enclave_ids,
                                                                                     from_time, to_time, tags,
                                                                                     excluded_tags))