class_docstr: CY(wires)
  The controlled-Y operator
  
  .. math:: CY = \begin{bmatrix}
          1 & 0 & 0 & 0 \\
          0 & 1 & 0 & 0\\
          0 & 0 & 0 & -i\\
          0 & 0 & i & 0
      \end{bmatrix}.
  
  .. note:: The first wire provided corresponds to the **control qubit**.
  
  **Details:**
  
  * Number of wires: 2
  * Number of parameters: 0
  
  Args:
      wires (Sequence[int]): the wires the operation acts on
      id (str): custom label given to an operator instance,
          can be useful for some applications where the instance has to be identified.
class_docstr_tok: ["CY","(","wires",")","The","controlled-Y","operator","..","math",":",":","CY","=","\\begin","{","bmatrix","}","1","&","0","&","0","&","0","\\\\","0","&","1","&","0","&","0\\\\","0","&","0","&","0","&","-i\\\\","0","&","0","&","i","&","0","\\end","{","bmatrix","}",".","..","note",":",":","The","first","wire","provided","corresponds","to","the","*","*","control","qubit","*","*",".","*","*","Details",":","*","*","*","Number","of","wires",":","2","*","Number","of","parameters",":","0","Args",":","wires","(","Sequence","[","int","]",")",":","the","wires","the","operation","acts","on","id","(","str",")",":","custom","label","given","to","an","operator","instance",",","can","be","useful","for","some","applications","where","the","instance","has","to","be","identified","."]
docstr: Representation of the operator as a product of other operators (static method).
  
  
  .. math:: O = O_1 O_2 \dots O_n.
  
  
  .. seealso:: :meth:`~.CY.decomposition`.
  
  Args:
      wires (Iterable, Wires): wires that the operator acts on
  
  Returns:
      list[Operator]: decomposition into lower level operations
  
  **Example:**
  
  >>> print(qml.CY.compute_decomposition([0, 1]))
  [CRY(3.141592653589793, wires=[0, 1]), S(wires=[0])]
docstr_tok: ["Representation","of","the","operator","as","a","product","of","other","operators","(","static","method",")",".","..","math",":",":","O","=","O_1","O_2","\\dots","O_n",".","..","seealso",":",":",":","meth",":","`","~.CY.decomposition","`",".","Args",":","wires","(","Iterable",",","Wires",")",":","wires","that","the","operator","acts","on","Returns",":","list","[","Operator","]",":","decomposition","into","lower","level","operations","*","*","Example",":","*","*",">",">",">","print","(","qml.CY.compute_decomposition","(","[","0",",","1","]",")",")","[","CRY","(","3.141592653589793",",","wires=","[","0",",","1","]",")",",","S","(","wires=","[","0","]",")","]"]
code: def compute_decomposition(wires):  # pylint: disable=arguments-differ
      r"""Representation of the operator as a product of other operators (static method).
  
  
      .. math:: O = O_1 O_2 \dots O_n.
  
  
      .. seealso:: :meth:`~.CY.decomposition`.
  
      Args:
          wires (Iterable, Wires): wires that the operator acts on
  
      Returns:
          list[Operator]: decomposition into lower level operations
  
      **Example:**
  
      >>> print(qml.CY.compute_decomposition([0, 1]))
      [CRY(3.141592653589793, wires=[0, 1]), S(wires=[0])]
  
      """
      return [qml.CRY(np.pi, wires=wires), S(wires=wires[0])]
  
imports: import warnings
  from typing import Iterable
  from functools import lru_cache
  import numpy
  import pennylane
  from pennylane.operation import AnyWires
  from pennylane.ops.qubit.non_parametric_ops import PauliY, S, PauliZ, CCZ
  from pennylane.ops.qubit.matrix_ops import QubitUnitary
  from .controlled import ControlledOp
label_desc: Use image node_id 5 for calling the CY obj's underlying member method code with example usage: obj.compute_decomposition(wires) and returns: list