§
    ¹³Ùg  ã                   ó€   — d Z ddlmZ ddlZddlmZ ddlmZ ddl	m
Z
 ej        j        j        Z G d„ d	e¦  «        ZdS )
z…A wrapper class for the purposes of validating modifications to
QuantumCircuit.data while maintaining the interface of a python list.é    )ÚMutableSequenceNé   )ÚCircuitError)ÚInstruction)Ú	Operationc                   ó–   — e Zd ZdZd„ Zd„ Zd„ Zdefd„Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚQuantumCircuitDataz‰A wrapper class for the purposes of validating modifications to
    QuantumCircuit.data while maintaining the interface of a python list.c                 ó   — || _         d S ©N)Ú_circuit)ÚselfÚcircuits     úW/granary/edev/quantum/lib/python3.11/site-packages/qiskit/circuit/quantumcircuitdata.pyÚ__init__zQuantumCircuitData.__init__    s   € ØˆŒˆˆó    c                 ó&   — | j         j        |         S r   ©r   Ú_data©r   Úis     r   Ú__getitem__zQuantumCircuitData.__getitem__#   s   € ØŒ}Ô" 1Ô%Ð%r   c                 ó´   — t          |t          ¦  «        r|j        |j        |j        }}}n|\  }}}|                      |||¦  «        }|| j        j        |<   d S r   )Ú
isinstanceÚCircuitInstructionÚ	operationÚqubitsÚclbitsÚ_resolve_legacy_valuer   r   )r   ÚkeyÚvaluer   ÚqargsÚcargss         r   Ú__setitem__zQuantumCircuitData.__setitem__&   sf   € õ �eÕ/Ñ0Ô0ð 	,Ø&+¤o°u´|ÀUÄ\˜e�uˆIˆIð ',Ñ#ˆI�u˜eØ×*Ò*¨9°e¸UÑCÔCˆØ#(ˆŒÔ˜CÑ Ð Ð r   Úreturnc                 óš  ‡ — t          |t          ¦  «        s$t          |d¦  «        r|                     ¦   «         }t          |t          ¦  «        st	          d¦  «        ‚ˆ fd„|pg D ¦   «         }ˆ fd„|pg D ¦   «         }t          |t
          ¦  «        r$t          |                     ||¦  «        ¦  «        }n#t          t          j        |||¦  «        ¦  «        }t          |¦  «        dk    rt	          d¦  «        ‚|d         \  }}‰ j	         
                    |¦  «         t          |t          |¦  «        t          |¦  «        ¦  «        S )zLResolve the old-style 3-tuple into the new :class:`CircuitInstruction` type.Úto_instructionzobject is not an Operation.c                 óD   •— g | ]}‰j                              |¦  «        ‘ŒS © )r   Ú_qbit_argument_conversion)Ú.0Úqargr   s     €r   ú
<listcomp>z<QuantumCircuitData._resolve_legacy_value.<locals>.<listcomp>8   ó)   ø€ Ð`Ð`Ð`ÈD˜$œ-×AÒAÀ$ÑGÔGÐ`Ð`Ð`r   c                 óD   •— g | ]}‰j                              |¦  «        ‘ŒS r(   )r   Ú_cbit_argument_conversion)r*   Úcargr   s     €r   r,   z<QuantumCircuitData._resolve_legacy_value.<locals>.<listcomp>9   r-   r   r   zHQuantumCircuit.data modification does not support argument broadcasting.r   )r   r   Úhasattrr&   r   r   ÚlistÚbroadcast_argumentsÚlenr   Ú_check_dupsr   Útuple)r   r   r!   r"   Úexpanded_qargsÚexpanded_cargsÚbroadcast_argss   `      r   r   z(QuantumCircuitData._resolve_legacy_value1   sZ  ø€ å˜)¥YÑ/Ô/ð 	3µG¸IÐGWÑ4XÔ4Xð 	3Ø!×0Ò0Ñ2Ô2ˆIÝ˜)¥YÑ/Ô/ð 	>ÝÐ<Ñ=Ô=Ð=à`Ð`Ð`Ð`ÐTYÐT_Ð]_Ð`Ñ`Ô`ˆØ`Ð`Ð`Ð`ÐTYÐT_Ð]_Ð`Ñ`Ô`ˆå�i¥Ñ-Ô-ð 	Ý! )×"?Ò"?ÀÐP^Ñ"_Ô"_Ñ`Ô`ˆNˆNå!ÝÔ/°	¸>È>ÑZÔZñô ˆNõ ˆ~ÑÔ Ò"Ð"ÝØZñô ð ð & aÔ(‰ˆˆuàŒ×!Ò! %Ñ(Ô(Ð(Ý! )­U°5©\¬\½5À¹<¼<ÑHÔHÐHr   c                 ó´   — | j         j                             ||                     dd¬¦  «        ¦  «         	 || |<   d S # t          $ r | j         j        |= ‚ w xY w)Nr(   )r   r   )r   r   ÚinsertÚreplacer   )r   Úindexr    s      r   r;   zQuantumCircuitData.insertL   sj   € ØŒÔ×"Ò" 5¨%¯-ª-¸rÈ"¨-Ñ*MÔ*MÑNÔNÐNð	ØˆD�‰KˆKˆKøÝð 	ð 	ð 	Ø”Ô# EÐ*Øð	øøøs	   ·> ¾Ac                 ó4   — t          | j        j        ¦  «        S r   )Úiterr   r   ©r   s    r   Ú__iter__zQuantumCircuitData.__iter__T   s   € Ý�D”MÔ'Ñ(Ô(Ð(r   c                 ó    — | j         j        |= d S r   r   r   s     r   Ú__delitem__zQuantumCircuitData.__delitem__W   s   € ØŒMÔ Ð"Ð"Ð"r   c                 ó4   — t          | j        j        ¦  «        S r   )r4   r   r   r@   s    r   Ú__len__zQuantumCircuitData.__len__Z   s   € Ý�4”=Ô&Ñ'Ô'Ð'r   c                 ób   — t          |t          ¦  «        rt          |j        j        ¦  «        n|S r   )r   r	   r2   r   r   ©r   Úothers     r   Ú__castzQuantumCircuitData.__cast]   s+   € Ý-7¸Õ?QÑ-RÔ-RÐ]�t�E”NÔ(Ñ)Ô)Ð)ÐX]Ð]r   c                 óN   — t          t          | j        j        ¦  «        ¦  «        S r   )Úreprr2   r   r   r@   s    r   Ú__repr__zQuantumCircuitData.__repr__`   s   € Ý•D˜œÔ,Ñ-Ô-Ñ.Ô.Ð.r   c                 ób   — t          | j        j        ¦  «        |                      |¦  «        k     S r   ©r2   r   r   Ú_QuantumCircuitData__castrG   s     r   Ú__lt__zQuantumCircuitData.__lt__c   ó&   € Ý�D”MÔ'Ñ(Ô(¨4¯;ª;°uÑ+=Ô+=Ò=Ð=r   c                 ób   — t          | j        j        ¦  «        |                      |¦  «        k    S r   rN   rG   s     r   Ú__le__zQuantumCircuitData.__le__f   ó&   € Ý�D”MÔ'Ñ(Ô(¨D¯KªK¸Ñ,>Ô,>Ò>Ð>r   c                 óH   — | j         j        |                      |¦  «        k    S r   )r   r   rO   rG   s     r   Ú__eq__zQuantumCircuitData.__eq__i   s   € ØŒ}Ô" d§k¢k°%Ñ&8Ô&8Ò8Ð8r   c                 ób   — t          | j        j        ¦  «        |                      |¦  «        k    S r   rN   rG   s     r   Ú__gt__zQuantumCircuitData.__gt__l   rQ   r   c                 ób   — t          | j        j        ¦  «        |                      |¦  «        k    S r   rN   rG   s     r   Ú__ge__zQuantumCircuitData.__ge__o   rT   r   c                 ó`   — t          | j        j        ¦  «        |                      |¦  «        z   S r   rN   rG   s     r   Ú__add__zQuantumCircuitData.__add__r   s&   € Ý�D”MÔ'Ñ(Ô(¨4¯;ª;°uÑ+=Ô+=Ñ=Ð=r   c                 ó`   — |                       |¦  «        t          | j        j        ¦  «        z   S r   )rO   r2   r   r   rG   s     r   Ú__radd__zQuantumCircuitData.__radd__u   s&   € Ø�{Š{˜5Ñ!Ô!¥D¨¬Ô)<Ñ$=Ô$=Ñ=Ð=r   c                 ó:   — t          | j        j        ¦  «        |z  S r   ©r2   r   r   ©r   Úns     r   Ú__mul__zQuantumCircuitData.__mul__x   s   € Ý�D”MÔ'Ñ(Ô(¨1Ñ,Ð,r   c                 ó:   — |t          | j        j        ¦  «        z  S r   r`   ra   s     r   Ú__rmul__zQuantumCircuitData.__rmul__{   s   € Ø•4˜œÔ+Ñ,Ô,Ñ,Ð,r   c                 ó$  — t          | j        j        ¦  «        } |j        |i |¤Ž | j        j                             ¦   «          | j        j                             t          |¦  «        ¦  «         | j        j                             |¦  «         dS )z5In-place stable sort. Accepts arguments of list.sort.N)r2   r   r   ÚsortÚclearÚreserver4   Úextend)r   ÚargsÚkwargsÚdatas       r   rg   zQuantumCircuitData.sort~   s€   € å�D”MÔ'Ñ(Ô(ˆØˆŒ	�4Ð"˜6Ð"Ð"Ð"ØŒÔ×!Ò!Ñ#Ô#Ð#ØŒÔ×#Ò#¥C¨¡I¤IÑ.Ô.Ð.ØŒÔ×"Ò" 4Ñ(Ô(Ð(Ð(Ð(r   c                 ó4   — t          | j        j        ¦  «        S )z+Returns a shallow copy of instruction list.r`   r@   s    r   ÚcopyzQuantumCircuitData.copy†   s   € å�D”MÔ'Ñ(Ô(Ð(r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r#   r   r   r;   rA   rC   rE   rO   rL   rP   rS   rV   rX   rZ   r\   r^   rc   re   rg   ro   r(   r   r   r	   r	      sp  € € € € € ðMð Mð ð  ð  ð&ð &ð &ð	)ð 	)ð 	)ðIÐ@Rð Ið Ið Ið Ið6ð ð ð)ð )ð )ð#ð #ð #ð(ð (ð (ð^ð ^ð ^ð/ð /ð /ð>ð >ð >ð?ð ?ð ?ð9ð 9ð 9ð>ð >ð >ð?ð ?ð ?ð>ð >ð >ð>ð >ð >ð-ð -ð -ð-ð -ð -ð)ð )ð )ð)ð )ð )ð )ð )r   r	   )rs   Úcollections.abcr   Úqiskit._accelerate.circuitÚqiskitÚ
exceptionsr   Úinstructionr   r   r   Ú_accelerater   r   r	   r(   r   r   ú<module>rz      s¶   ððIð Ið ,Ð +Ð +Ð +Ð +Ð +à !Ð !Ð !Ð !à $Ð $Ð $Ð $Ð $Ð $Ø $Ð $Ð $Ð $Ð $Ð $Ø  Ð  Ð  Ð  Ð  Ð  ð Ô'Ô/ÔBÐ ðl)ð l)ð l)ð l)ð l)˜ñ l)ô l)ð l)ð l)ð l)r   