def from_clifford_tableau(cls, tableau: qis.CliffordTableau) -> CliffordGate:
        """Create the CliffordGate instance from Clifford Tableau.

        Args:
            tableau: A CliffordTableau to define the effect of Clifford Gate applying on
            the stabilizer state or Pauli group. The meaning of tableau here is
                    To  X   Z    sign
            from  X  [ X_x Z_x | r_x ]
            from  Z  [ X_z Z_z | r_z ]
            Each row in the Clifford tableau indicates how the transformation of original
            Pauli gates to the new gates after applying this Clifford Gate.

        Returns:
            A CliffordGate instance, which has the transformation defined by
            the input tableau.

        Raises:
            ValueError: When input tableau is wrong type or the tableau does not
            satisfy the symplectic property.
        """
        if not isinstance(tableau, qis.CliffordTableau):
            raise ValueError('Input argument has to be a CliffordTableau instance.')
        if not tableau._validate():
            raise ValueError('It is not a valid Clifford tableau.')
        return CliffordGate(_clifford_tableau=tableau)
Create the CliffordGate instance from Clifford Tableau.

        Args:
            tableau: A CliffordTableau to define the effect of Clifford Gate applying on
            the stabilizer state or Pauli group. The meaning of tableau here is
                    To  X   Z    sign
            from  X  [ X_x Z_x | r_x ]
            from  Z  [ X_z Z_z | r_z ]
            Each row in the Clifford tableau indicates how the transformation of original
            Pauli gates to the new gates after applying this Clifford Gate.

        Returns:
            A CliffordGate instance, which has the transformation defined by
            the input tableau.

        Raises:
            ValueError: When input tableau is wrong type or the tableau does not
            satisfy the symplectic property.
        
cirq-core/cirq/ops/clifford_gate.py