
    z	i;                         S r SSKJr  SSKrSSKJr  SSKJr  SSK	J
r
  \R                  R                  R                  r " S S	\5      rg)
A wrapper class for the purposes of validating modifications to
QuantumCircuit.data while maintaining the interface of a python list.    )MutableSequenceN   )CircuitError)Instruction)	Operationc                       \ rS rSrSrS rS rS rS\4S jr	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)QuantumCircuitData   r   c                     Xl         g N_circuit)selfcircuits     [/home/james-whalen/.local/lib/python3.13/site-packages/qiskit/circuit/quantumcircuitdata.py__init__QuantumCircuitData.__init__!   s        c                 4    U R                   R                  U   $ r   r   _datar   is     r   __getitem__QuantumCircuitData.__getitem__$   s    }}""1%%r   c                     [        U[        5      (       a$  UR                  UR                  UR                  pTnOUu  p4nU R                  X4U5      nX R                  R                  U'   g r   )
isinstanceCircuitInstruction	operationqubitsclbits_resolve_legacy_valuer   r   )r   keyvaluer    qargscargss         r   __setitem__QuantumCircuitData.__setitem__'   s[     e/00&+oou||U\\eIe ',#Ie**9UC#(C r   returnc                    [        U[        5      (       d!  [        US5      (       a  UR                  5       n[        U[        5      (       d  [	        S5      eU=(       d    /  Vs/ s H  o@R
                  R                  U5      PM     nnU=(       d    /  Vs/ s H  o`R
                  R                  U5      PM     nn[        U[        5      (       a  [        UR                  XW5      5      nO [        [        R                  " XU5      5      n[        U5      S:  a  [	        S5      eUS   u  p#U R
                  R                  U5        [        U[        U5      [        U5      5      $ s  snf s  snf )zLResolve the old-style 3-tuple into the new :class:`CircuitInstruction` type.to_instructionzobject is not an Operation.r   zHQuantumCircuit.data modification does not support argument broadcasting.r   )r   r   hasattrr,   r   r   _qbit_argument_conversion_cbit_argument_conversionr   listbroadcast_argumentslen_check_dupsr   tuple)	r   r    r&   r'   qargexpanded_qargscargexpanded_cargsbroadcast_argss	            r   r#   (QuantumCircuitData._resolve_legacy_value2   s6   )Y//GIGW4X4X!002I)Y//<==TYT_]_T_`T_D--AA$GT_`TYT_]_T_`T_D--AA$GT_`i--!)"?"?"_`N!//	>ZN ~"Z  &a(!!%(!)U5\5<HH% a`s   $$E($E-c                     U R                   R                  R                  XR                  SSS95         X U'   g ! [         a    U R                   R                  U	 e f = f)N )r!   r"   )r   r   insertreplacer   )r   indexr%   s      r   r=   QuantumCircuitData.insertM   sW    ""5--r"-*MN	K 	##E*	s	   : #Ac                 @    [        U R                  R                  5      $ r   )iterr   r   r   s    r   __iter__QuantumCircuitData.__iter__U   s    DMM''((r   c                 2    U R                   R                  U	 g r   r   r   s     r   __delitem__QuantumCircuitData.__delitem__X   s    MM"r   c                 @    [        U R                  R                  5      $ r   )r2   r   r   rC   s    r   __len__QuantumCircuitData.__len__[   s    4==&&''r   c                 n    [        U[        5      (       a  [        UR                  R                  5      $ U$ r   )r   r
   r0   r   r   r   others     r   __castQuantumCircuitData.__cast^   s*    -7?Q-R-RtENN(()]X]]r   c                 R    [        [        U R                  R                  5      5      $ r   )reprr0   r   r   rC   s    r   __repr__QuantumCircuitData.__repr__a   s    D,,-..r   c                 d    [        U R                  R                  5      U R                  U5      :  $ r   r0   r   r   _QuantumCircuitData__castrM   s     r   __lt__QuantumCircuitData.__lt__d   %    DMM''(4;;u+===r   c                 d    [        U R                  R                  5      U R                  U5      :*  $ r   rV   rM   s     r   __le__QuantumCircuitData.__le__g   %    DMM''(DKK,>>>r   c                 R    U R                   R                  U R                  U5      :H  $ r   )r   r   rW   rM   s     r   __eq__QuantumCircuitData.__eq__j   s     }}""dkk%&888r   c                 d    [        U R                  R                  5      U R                  U5      :  $ r   rV   rM   s     r   __gt__QuantumCircuitData.__gt__m   rZ   r   c                 d    [        U R                  R                  5      U R                  U5      :  $ r   rV   rM   s     r   __ge__QuantumCircuitData.__ge__p   r^   r   c                 d    [        U R                  R                  5      U R                  U5      -   $ r   rV   rM   s     r   __add__QuantumCircuitData.__add__s   rZ   r   c                 d    U R                  U5      [        U R                  R                  5      -   $ r   )rW   r0   r   r   rM   s     r   __radd__QuantumCircuitData.__radd__v   s%    {{5!D)<)<$===r   c                 F    [        U R                  R                  5      U-  $ r   r0   r   r   r   ns     r   __mul__QuantumCircuitData.__mul__y   s    DMM''(1,,r   c                 F    U[        U R                  R                  5      -  $ r   ro   rp   s     r   __rmul__QuantumCircuitData.__rmul__|   s    4++,,,r   c                 T   [        U R                  R                  5      nUR                  " U0 UD6  U R                  R                  R	                  5         U R                  R                  R                  [        U5      5        U R                  R                  R                  U5        g)z5In-place stable sort. Accepts arguments of list.sort.N)r0   r   r   sortclearreserver2   extend)r   argskwargsdatas       r   rx   QuantumCircuitData.sort   sq    DMM''(		4"6"!!###CI.""4(r   c                 @    [        U R                  R                  5      $ )z+Returns a shallow copy of instruction list.ro   rC   s    r   copyQuantumCircuitData.copy   s    DMM''((r   r   N)__name__
__module____qualname____firstlineno____doc__r   r   r(   r   r#   r=   rD   rG   rJ   rW   rS   rX   r\   r`   rc   rf   ri   rl   rr   ru   rx   r   __static_attributes__r<   r   r   r
   r
      s|    M &	)I@R I6)#(^/>?9>?>>--))r   r
   )r   collections.abcr   qiskit._accelerate.circuitqiskit
exceptionsr   instructionr   r    r   _accelerater   r   r
   r<   r   r   <module>r      sD   I , ! $ $   ''//BB l) l)r   