async def run_async(
        self,
        *,
        processor_id: str,
        run_name: str = "",
        snapshot_id: str = "",
        device_config_name: str,
        job_id: str | None = None,
        param_resolver: cirq.ParamResolver = cirq.ParamResolver({}),
        repetitions: int = 1,
        description: str | None = None,
        labels: dict[str, str] | None = None,
    ) -> cirq.Result:
        """Runs the supplied Circuit via Quantum Engine.

        Args:
            processor_id: Processor id for running the program.
            run_name: A unique identifier representing an automation run for the
                specified processor. An Automation Run contains a collection of
                device configurations for a processor.
            snapshot_id: A unique identifier for an immutable snapshot reference.
                A snapshot contains a collection of device configurations for the
                processor.
            device_config_name: An identifier used to select the processor configuration
                utilized to run the job. A configuration identifies the set of
                available qubits, couplers, and supported gates in the processor.
            job_id: Optional job id to use. If this is not provided, a random id
                of the format 'job-################YYMMDD' will be generated,
                where # is alphanumeric and YYMMDD is the current year, month,
                and day.
            param_resolver: Parameters to run with the program.
            repetitions: The number of repetitions to simulate.
            description: An optional description to set on the job.
            labels: Optional set of labels to set on the job.

        Returns:
            A single Result for this run.

        Raises:
            ValueError: If a processor id hasn't been specified to run the job
            ValueError: If  only one of `run_name` and `device_config_name` are specified.
            ValueError: If either `run_name` and `device_config_name` are set but
                `processor_id` is empty.
        """
        job = await self.run_sweep_async(
            job_id=job_id,
            params=[param_resolver],
            repetitions=repetitions,
            processor_id=processor_id,
            description=description,
            labels=labels,
            run_name=run_name,
            snapshot_id=snapshot_id,
            device_config_name=device_config_name,
        )
        results = await job.results_async()
        return results[0]
Runs the supplied Circuit via Quantum Engine.

        Args:
            processor_id: Processor id for running the program.
            run_name: A unique identifier representing an automation run for the
                specified processor. An Automation Run contains a collection of
                device configurations for a processor.
            snapshot_id: A unique identifier for an immutable snapshot reference.
                A snapshot contains a collection of device configurations for the
                processor.
            device_config_name: An identifier used to select the processor configuration
                utilized to run the job. A configuration identifies the set of
                available qubits, couplers, and supported gates in the processor.
            job_id: Optional job id to use. If this is not provided, a random id
                of the format 'job-################YYMMDD' will be generated,
                where # is alphanumeric and YYMMDD is the current year, month,
                and day.
            param_resolver: Parameters to run with the program.
            repetitions: The number of repetitions to simulate.
            description: An optional description to set on the job.
            labels: Optional set of labels to set on the job.

        Returns:
            A single Result for this run.

        Raises:
            ValueError: If a processor id hasn't been specified to run the job
            ValueError: If  only one of `run_name` and `device_config_name` are specified.
            ValueError: If either `run_name` and `device_config_name` are set but
                `processor_id` is empty.
        
cirq-google/cirq_google/engine/engine_program.py