
    z	i                     B    S r SSKJr  SSKJr  SSKJr  SSKJr  SS jrg)	z;Helper function for converting a circuit to an instruction.    )QiskitError)Instruction)QuantumRegister)ClassicalRegisterNc                    SSK Jn  U R                  (       a  [        S5      eU R                  (       a  [        S5      eU R
                  (       a  [        S5      eU R                  5       (       a  [        S5      eUc  U R                   Vs0 s H  oUU_M     nnOU R                  U5      nUR                  5       U R                  :w  a  [        SU R                   S	U 35      e[        U R                  U R                  U R                  / UR                  5       QUS
9nSUl        U R!                  USS9nUb  UR#                  Xx5        / n	Su  pUR                  S:  a'  [%        UR                  S5      n
U	R'                  U
5        UR                  S:  a'  [)        UR                  S5      nU	R'                  U5        UR*                  R-                  5       nUR/                  XS9  U" UR                  S9nXl        U	 H  nUR1                  U5        M     U R2                  (       a  U R2                  Ul        Xl        U$ s  snf )a  Build an :class:`~.circuit.Instruction` object from a :class:`.QuantumCircuit`.

The instruction is anonymous (not tied to a named quantum register),
and so can be inserted into another circuit. The instruction will
have the same string name as the circuit.

Args:
    circuit (QuantumCircuit): the input circuit.
    parameter_map (dict): For parameterized circuits, a mapping from
       parameters in the circuit to parameters to be used in the instruction.
       If None, existing circuit parameters will also parameterize the
       instruction.
    equivalence_library (EquivalenceLibrary): Optional equivalence library
       where the converted instruction will be registered.
    label (str): Optional instruction label.

Raises:
    QiskitError: if parameter_map is not compatible with circuit

Return:
    qiskit.circuit.Instruction: an instruction equivalent to the action of the
    input circuit. Upon decomposition, this instruction will
    yield the components comprising the original circuit.

Example:
    .. plot::
        :include-source:
        :nofigs:

        from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit
        from qiskit.converters import circuit_to_instruction

        q = QuantumRegister(3, 'q')
        c = ClassicalRegister(3, 'c')
        circ = QuantumCircuit(q, c)
        circ.h(q[0])
        circ.cx(q[0], q[1])
        circ.measure(q[0], c[0])
        circ.rz(0.5, q[1])
        circuit_to_instruction(circ)
r   )QuantumCircuitzGCircuits with 'input' variables cannot yet be converted to instructionszCCircuits that capture variables cannot be converted to instructionszCircuits with internal variables cannot yet be converted to instructions. You may be able to use `QuantumCircuit.compose` to inline this circuit into another.zLCircuits with control flow operations cannot be converted to an instruction.NzEparameter_map should map all circuit parameters. Circuit parameters: z, parameter_map: )name
num_qubits
num_clbitsparamslabelF)inplace)NNqc)qubitsclbits)r	   )qiskit.circuit.quantumcircuitr   num_input_varsr   num_captured_varsnum_declared_varshas_control_flow_op
parameters_unroll_param_dictkeysr   r	   r
   r   values
_conditionassign_parametersadd_equivalencer   appendr   _datacopyreplace_bitsadd_registerglobal_phase
definition)circuitparameter_mapequivalence_libraryr   r   pparameter_dictout_instructiontargetregsqregcregdataqcregs                  b/home/james-whalen/.local/lib/python3.13/site-packages/qiskit/converters/circuit_to_instruction.pycircuit_to_instructionr4      s8   V = cdd  _``   d
 	

 ""$$Z
 	
 (/(:(:;(:1Q$(:; 33MB 2 22##*#5#5"66GGWY
 	

 "\\%%%%)&&()O "&O&&~u&EF&++ODDJD!!A%993?D!!A% !;!;SAD<<DT/	_11	2BH 
  !..!#c <s   I)NNN)	__doc__qiskit.exceptionsr   qiskit.circuit.instructionr   qiskit.circuitr   r   r4        r3   <module>r;      s    B ) 2 * ,zr:   