async def list_jobs_async(
        self,
        project_id: str,
        program_id: str | None = None,
        created_before: datetime.datetime | datetime.date | None = None,
        created_after: datetime.datetime | datetime.date | None = None,
        has_labels: dict[str, str] | None = None,
        execution_states: set[quantum.ExecutionStatus.State] | None = None,
        executed_processor_ids: list[str] | None = None,
        scheduled_processor_ids: list[str] | None = None,
    ):
        """Returns the list of jobs for a given program.

        Args:
            project_id: A project_id of the parent Google Cloud Project.
            program_id: Optional, a unique ID of the program within the parent
                project. If None, jobs will be listed across all programs within
                the project.
            created_after: retrieve jobs that were created after this date
                or time.
            created_before: retrieve jobs that were created after this date
                or time.
            has_labels: retrieve jobs that have labels on them specified by
                this dict. If the value is set to `*`, filters having the label
                regardless of the label value will be filtered. For example, to
                query programs that have the shape label and have the color
                label with value red can be queried using

                {'color': 'red', 'shape':'*'}

            execution_states: retrieve jobs that have an execution state that
                is contained in `execution_states`. See
                `quantum.ExecutionStatus.State` enum for accepted values.

            executed_processor_ids: filters jobs by processor ID used for
                execution. Matches any of provided IDs.
            scheduled_processor_ids: filters jobs by any of provided
                scheduled processor IDs.
        """
        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}")
        if execution_states is not None:
            state_filter = []
            for execution_state in execution_states:
                state_filter.append(f"execution_status.state = {execution_state.name}")
            filters.append(f"({' OR '.join(state_filter)})")
        if executed_processor_ids is not None:
            ids_filter = []
            for processor_id in executed_processor_ids:
                ids_filter.append(f"executed_processor_id = {processor_id}")
            filters.append(f"({' OR '.join(ids_filter)})")
        if scheduled_processor_ids is not None:
            ids_filter = []
            for processor_id in scheduled_processor_ids:
                ids_filter.append(f"scheduled_processor_ids: {processor_id}")
            filters.append(f"({' OR '.join(ids_filter)})")

        if program_id is None:
            program_id = "-"
        parent = _program_name_from_ids(project_id, program_id)
        request = quantum.ListQuantumJobsRequest(parent=parent, filter=" AND ".join(filters))
        return await self._send_request_async(self.grpc_client.list_quantum_jobs, request)
Returns the list of jobs for a given program.

        Args:
            project_id: A project_id of the parent Google Cloud Project.
            program_id: Optional, a unique ID of the program within the parent
                project. If None, jobs will be listed across all programs within
                the project.
            created_after: retrieve jobs that were created after this date
                or time.
            created_before: retrieve jobs that were created after this date
                or time.
            has_labels: retrieve jobs that have labels on them specified by
                this dict. If the value is set to `*`, filters having the label
                regardless of the label value will be filtered. For example, to
                query programs that have the shape label and have the color
                label with value red can be queried using

                {'color': 'red', 'shape':'*'}

            execution_states: retrieve jobs that have an execution state that
                is contained in `execution_states`. See
                `quantum.ExecutionStatus.State` enum for accepted values.

            executed_processor_ids: filters jobs by processor ID used for
                execution. Matches any of provided IDs.
            scheduled_processor_ids: filters jobs by any of provided
                scheduled processor IDs.
        
cirq-google/cirq_google/engine/engine_client.py