async def create_program_async(
        self,
        program: cirq.AbstractCircuit,
        program_id: str | None = None,
        description: str | None = None,
        labels: dict[str, str] | None = None,
    ) -> engine_program.EngineProgram:
        """Wraps a Circuit for use with the Quantum Engine.

        Args:
            program: The Circuit to execute.
            program_id: A user-provided identifier for the program. This must be
                unique within the Google Cloud project being used. If this
                parameter is not provided, a random id of the format
                'prog-################YYMMDD' will be generated, where # is
                alphanumeric and YYMMDD is the current year, month, and day.
            description: An optional description to set on the program.
            labels: Optional set of labels to set on the program.

        Returns:
            A EngineProgram for the newly created program.

        Raises:
            ValueError: If no gate set is provided.
        """
        if not program_id:
            program_id = _make_random_id('prog-')

        new_program_id, new_program = await self.context.client.create_program_async(
            self.project_id,
            program_id,
            code=self.context._serialize_program(program),
            description=description,
            labels=labels,
        )

        return engine_program.EngineProgram(
            self.project_id, new_program_id, self.context, new_program
        )
Wraps a Circuit for use with the Quantum Engine.

        Args:
            program: The Circuit to execute.
            program_id: A user-provided identifier for the program. This must be
                unique within the Google Cloud project being used. If this
                parameter is not provided, a random id of the format
                'prog-################YYMMDD' will be generated, where # is
                alphanumeric and YYMMDD is the current year, month, and day.
            description: An optional description to set on the program.
            labels: Optional set of labels to set on the program.

        Returns:
            A EngineProgram for the newly created program.

        Raises:
            ValueError: If no gate set is provided.
        
cirq-google/cirq_google/engine/engine.py