def __init__(
        self,
        project_id: str,
        proto_version: ProtoVersion | None = None,
        service_args: dict | None = None,
        verbose: bool | None = None,
        timeout: int | None = None,
        context: EngineContext | None = None,
    ) -> None:
        """Supports creating and running programs against the Quantum Engine.

        Args:
            project_id: A project_id string of the Google Cloud Project to use.
                API interactions will be attributed to this project and any
                resources created will be owned by the project. See
                https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects
            proto_version: The version of cirq protos to use. If None, then
                ProtoVersion.V2 will be used.
            service_args: A dictionary of arguments that can be used to
                configure options on the underlying client.
            verbose: Suppresses stderr messages when set to False. Default is
                true.
            timeout: Timeout for polling for results, in seconds.  Default is
                to never timeout.
            context: Engine configuration and context to use. For most users
                this should never be specified.

        Raises:
            ValueError: If context is provided and one of proto_version, service_args, or verbose.
        """
        if context and (proto_version or service_args or verbose):
            raise ValueError('Either provide context or proto_version, service_args and verbose.')

        self.project_id = project_id
        if not context:
            context = EngineContext(
                proto_version=proto_version,
                service_args=service_args,
                verbose=verbose,
                timeout=timeout,
            )
        self.context = context
Supports creating and running programs against the Quantum Engine.

        Args:
            project_id: A project_id string of the Google Cloud Project to use.
                API interactions will be attributed to this project and any
                resources created will be owned by the project. See
                https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects
            proto_version: The version of cirq protos to use. If None, then
                ProtoVersion.V2 will be used.
            service_args: A dictionary of arguments that can be used to
                configure options on the underlying client.
            verbose: Suppresses stderr messages when set to False. Default is
                true.
            timeout: Timeout for polling for results, in seconds.  Default is
                to never timeout.
            context: Engine configuration and context to use. For most users
                this should never be specified.

        Raises:
            ValueError: If context is provided and one of proto_version, service_args, or verbose.
        
cirq-google/cirq_google/engine/engine.py