async def list_programs_async(
        self,
        project_id: str,
        created_before: datetime.datetime | datetime.date | None = None,
        created_after: datetime.datetime | datetime.date | None = None,
        has_labels: dict[str, str] | None = None,
    ):
        """Returns a list of previously executed quantum programs.

        Args:
            project_id: the id of the project
            created_after: retrieve programs that were created after this date
                or time.
            created_before: retrieve programs that were created after this date
                or time.
            has_labels: retrieve programs that have labels on them specified by
                this dict. If the value is set to `*`, filters having the label
                egardless of the label value will be filtered. For example, to
                uery programs that have the shape label and have the color
                label with value red can be queried using

                {'color': 'red', 'shape':'*'}
        """
        filters = []

        if created_after is not None:
            val = _date_or_time_to_filter_expr('created_after', created_after)
            filters.append(f"create_time >= {val}")
        if created_before is not None:
            val = _date_or_time_to_filter_expr('created_before', created_before)
            filters.append(f"create_time <= {val}")
        if has_labels is not None:
            for k, v in has_labels.items():
                filters.append(f"labels.{k}:{v}")
        request = quantum.ListQuantumProgramsRequest(
            parent=_project_name(project_id), filter=" AND ".join(filters)
        )
        return await self._send_request_async(self.grpc_client.list_quantum_programs, request)
Returns a list of previously executed quantum programs.

        Args:
            project_id: the id of the project
            created_after: retrieve programs that were created after this date
                or time.
            created_before: retrieve programs that were created after this date
                or time.
            has_labels: retrieve programs that have labels on them specified by
                this dict. If the value is set to `*`, filters having the label
                egardless of the label value will be filtered. For example, to
                uery programs that have the shape label and have the color
                label with value red can be queried using

                {'color': 'red', 'shape':'*'}
        
cirq-google/cirq_google/engine/engine_client.py