def __init__(
        self,
        wire_symbols: Iterable[str],
        exponent: Any = 1,
        connected: bool = True,
        exponent_qubit_index: int | None = None,
        auto_exponent_parens: bool = True,
    ) -> None:
        """Inits CircuitDiagramInfo.

        Args:
            wire_symbols: The symbols that should be shown on the qubits
                affected by this operation. Must match the number of qubits that
                the operation is applied to.
            exponent: An optional convenience value that will be appended onto
                an operation's final gate symbol with a caret in front
                (unless it's equal to 1). For example, the square root of X gate
                has a text diagram exponent of 0.5 and symbol of 'X' so it is
                drawn as 'X^0.5'.
            connected: Whether or not to draw a line connecting the qubits.
            exponent_qubit_index: The qubit to put the exponent on. (The k'th
                qubit is the k'th target of the gate.) Defaults to the bottom
                qubit in the diagram.
            auto_exponent_parens: When this is True, diagram making code will
                add parentheses around exponents whose contents could look
                ambiguous (e.g. if the exponent contains a dash character that
                could be mistaken for an identity wire). Defaults to True.

        Raises:
            ValueError: If `wire_symbols` is a string, and not an iterable
                of strings.
        """
        if isinstance(wire_symbols, str):
            raise ValueError('Expected an Iterable[str] for wire_symbols but got a str.')
        self.wire_symbols = tuple(wire_symbols)
        self.exponent = exponent
        self.connected = connected
        self.exponent_qubit_index = exponent_qubit_index
        self.auto_exponent_parens = auto_exponent_parens
Inits CircuitDiagramInfo.

        Args:
            wire_symbols: The symbols that should be shown on the qubits
                affected by this operation. Must match the number of qubits that
                the operation is applied to.
            exponent: An optional convenience value that will be appended onto
                an operation's final gate symbol with a caret in front
                (unless it's equal to 1). For example, the square root of X gate
                has a text diagram exponent of 0.5 and symbol of 'X' so it is
                drawn as 'X^0.5'.
            connected: Whether or not to draw a line connecting the qubits.
            exponent_qubit_index: The qubit to put the exponent on. (The k'th
                qubit is the k'th target of the gate.) Defaults to the bottom
                qubit in the diagram.
            auto_exponent_parens: When this is True, diagram making code will
                add parentheses around exponents whose contents could look
                ambiguous (e.g. if the exponent contains a dash character that
                could be mistaken for an identity wire). Defaults to True.

        Raises:
            ValueError: If `wire_symbols` is a string, and not an iterable
                of strings.
        
cirq-core/cirq/protocols/circuit_diagram_info_protocol.py