§
    ²Ûg(  ã                   óð   — d Z ddlZddlZddlmZ d„ Zd„ Z G d„ dej	        ¦  «        Z	 G d„ dej
        ¦  «        Z
 G d	„ d
ej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        ZdS )aq  
Compatibility classes for changes to save instruction return types.

These subclasses include a `__getattr__` method that allows existing
code which used numpy.ndarray attributes to continue functioning with
a deprecation warning.

Numpy functions that consumed these classes should already work due to
them having an `__array__` method for implicit array conversion.
é    Nc                 ó.   — | dd…         dk    s| dv rdS dS )z9Return True if attribute should be passed to legacy classNé   Ú__)Ú_dataÚ	_op_shapeFT© )Úattrs    úW/granary/edev/quantum/lib/python3.11/site-packages/qiskit_aer/backends/compatibility.pyÚ_forward_attrr      s,   € ð
 ˆBˆQˆB„x�4ÒÐ˜4Ð#9Ð9Ð9ØˆuØˆ4ó    c                 ód   — | j         j        }t          j        d|› d|› d�t          d¬¦  «         d S )NzThe return type of saved zC has been changed from a `numpy.ndarray` to a `qiskit.quantum_info.zã` as of qiskit-aer 0.10. Accessing numpy array attributes is deprecated and will result in an error in a future release. To continue using saved result objects as arrays you can explicitly cast them using  `np.asarray(object)`.é   ©Ú
stacklevel)Ú	__class__Ú__name__ÚwarningsÚwarnÚDeprecationWarning)ÚinstanceÚinstances_nameÚ
class_names      r
   Ú_deprecation_warningr   &   s[   € ØÔ#Ô,€JÝ„Mð	! Nð 	!ð 	!Ø8Bð	!ð 	!ð 	!õ 	Øð	ñ 	ô 	ð 	ð 	ð 	r   c                   óF   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
ˆ xZS )	ÚStatevectorzBAer result backwards compatibility wrapper for qiskit Statevector.c                 óÎ   •— t          |¦  «        r:t          | j        |¦  «        r%t          | d¦  «         t	          | j        |¦  «        S t	          t          ¦   «         |¦  «        S ©NÚstatevectors©r   Úhasattrr   r   ÚgetattrÚsuper©Úselfr	   r   s     €r
   Ú__getattr__zStatevector.__getattr__7   s\   ø€ Ý˜ÑÔð 	-¥7¨4¬:°tÑ#<Ô#<ð 	-Ý   ~Ñ6Ô6Ð6Ý˜4œ: tÑ,Ô,Ð,Ý•u‘w”w Ñ%Ô%Ð%r   c                 ó´   — t          | t          |¦  «        ¦  «        o;| j        |j        k    o+t          j        | j        |j        | j        | j        ¬¦  «        S ©N)ÚrtolÚatol©Ú
isinstanceÚtyper   ÚnpÚallcloseÚdatar(   r)   ©r$   Úothers     r
   Ú__eq__zStatevector.__eq__=   óP   € å�t�T %™[œ[Ñ)Ô)ð SØ” %¤/Ò1ðSå”˜DœI u¤z¸¼	ÈÌ	ÐRÑRÔRð	
r   c                 ó   — dS ©NTr   ©r$   s    r
   Ú__bool__zStatevector.__bool__D   ó	   € ð ˆtr   c                 óT   — t          | d¦  «         | j                             ¦   «         S r   ©r   r   Ú__len__r6   s    r
   r;   zStatevector.__len__N   s&   € Ý˜T >Ñ2Ô2Ð2ØŒz×!Ò!Ñ#Ô#Ð#r   c                 óT   — t          | d¦  «         | j                             ¦   «         S r   ©r   r   Ú__iter__r6   s    r
   r>   zStatevector.__iter__R   s&   € Ý˜T >Ñ2Ô2Ð2ØŒz×"Ò"Ñ$Ô$Ð$r   c                 óV   — t          | d¦  «         | j                             |¦  «        S r   ©r   r   Ú__contains__©r$   Úvalues     r
   rA   zStatevector.__contains__V   s(   € Ý˜T >Ñ2Ô2Ð2ØŒz×&Ò& uÑ-Ô-Ð-r   c                 óT   — t          | d¦  «         | j                             ¦   «         S r   ©r   r   Ú__reversed__r6   s    r
   rF   zStatevector.__reversed__Z   s&   € Ý˜T >Ñ2Ô2Ð2ØŒz×&Ò&Ñ(Ô(Ð(r   )r   Ú
__module__Ú__qualname__Ú__doc__r%   r2   r7   r;   r>   rA   rF   Ú__classcell__©r   s   @r
   r   r   4   s˜   ø€ € € € € ØLÐLð&ð &ð &ð &ð &ð
ð 
ð 
ðð ð ð$ð $ð $ð%ð %ð %ð.ð .ð .ð)ð )ð )ð )ð )ð )ð )r   r   c                   óL   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zˆ xZS )
ÚDensityMatrixzDAer result backwards compatibility wrapper for qiskit DensityMatrix.c                 óÎ   •— t          |¦  «        r:t          | j        |¦  «        r%t          | d¦  «         t	          | j        |¦  «        S t	          t          ¦   «         |¦  «        S ©Nzdensity matricesr   r#   s     €r
   r%   zDensityMatrix.__getattr__b   s]   ø€ Ý˜ÑÔð 	-¥7¨4¬:°tÑ#<Ô#<ð 	-Ý  Ð'9Ñ:Ô:Ð:Ý˜4œ: tÑ,Ô,Ð,Ý•u‘w”w Ñ%Ô%Ð%r   c                 ó´   — t          | t          |¦  «        ¦  «        o;| j        |j        k    o+t          j        | j        |j        | j        | j        ¬¦  «        S r'   r*   r0   s     r
   r2   zDensityMatrix.__eq__h   r3   r   c                 óT   — t          | d¦  «         | j                             ¦   «         S rO   r:   r6   s    r
   r;   zDensityMatrix.__len__o   s'   € Ý˜TÐ#5Ñ6Ô6Ð6ØŒz×!Ò!Ñ#Ô#Ð#r   c                 óT   — t          | d¦  «         | j                             ¦   «         S rO   r=   r6   s    r
   r>   zDensityMatrix.__iter__s   s'   € Ý˜TÐ#5Ñ6Ô6Ð6ØŒz×"Ò"Ñ$Ô$Ð$r   c                 óV   — t          | d¦  «         | j                             |¦  «        S rO   r@   rB   s     r
   rA   zDensityMatrix.__contains__w   s)   € Ý˜TÐ#5Ñ6Ô6Ð6ØŒz×&Ò& uÑ-Ô-Ð-r   c                 óT   — t          | d¦  «         | j                             ¦   «         S rO   rE   r6   s    r
   rF   zDensityMatrix.__reversed__{   s'   € Ý˜TÐ#5Ñ6Ô6Ð6ØŒz×&Ò&Ñ(Ô(Ð(r   c                 óV   — t          | d¦  «         | j                             |¦  «        S rO   ©r   r   Ú__getitem__©r$   Úkeys     r
   rW   zDensityMatrix.__getitem__   s)   € Ý˜TÐ#5Ñ6Ô6Ð6ØŒz×%Ò% cÑ*Ô*Ð*r   c                 óX   — t          | d¦  «         | j                             ||¦  «        S rO   ©r   r   Ú__setitem__©r$   rY   rC   s      r
   r\   zDensityMatrix.__setitem__ƒ   s+   € Ý˜TÐ#5Ñ6Ô6Ð6ØŒz×%Ò% c¨5Ñ1Ô1Ð1r   )r   rG   rH   rI   r%   r2   r;   r>   rA   rF   rW   r\   rJ   rK   s   @r
   rM   rM   _   s§   ø€ € € € € ØNÐNð&ð &ð &ð &ð &ð
ð 
ð 
ð$ð $ð $ð%ð %ð %ð.ð .ð .ð)ð )ð )ð+ð +ð +ð2ð 2ð 2ð 2ð 2ð 2ð 2r   rM   c                   óR   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zˆ xZS )ÚOperatorz?Aer result backwards compatibility wrapper for qiskit Operator.c                 óÎ   •— t          |¦  «        r:t          | j        |¦  «        r%t          | d¦  «         t	          | j        |¦  «        S t	          t          ¦   «         |¦  «        S ©NÚ	unitariesr   r#   s     €r
   r%   zOperator.__getattr__‹   s\   ø€ Ý˜ÑÔð 	-¥7¨4¬:°tÑ#<Ô#<ð 	-Ý   {Ñ3Ô3Ð3Ý˜4œ: tÑ,Ô,Ð,Ý•u‘w”w Ñ%Ô%Ð%r   c                 ó´   — t          | t          |¦  «        ¦  «        o;| j        |j        k    o+t          j        | j        |j        | j        | j        ¬¦  «        S r'   r*   r0   s     r
   r2   zOperator.__eq__‘   r3   r   c                 ó   — dS r5   r   r6   s    r
   r7   zOperator.__bool__˜   r8   r   c                 óT   — t          | d¦  «         | j                             ¦   «         S ra   r:   r6   s    r
   r;   zOperator.__len__�   s&   € Ý˜T ;Ñ/Ô/Ð/ØŒz×!Ò!Ñ#Ô#Ð#r   c                 óT   — t          | d¦  «         | j                             ¦   «         S ra   r=   r6   s    r
   r>   zOperator.__iter__¡   s&   € Ý˜T ;Ñ/Ô/Ð/ØŒz×"Ò"Ñ$Ô$Ð$r   c                 óV   — t          | d¦  «         | j                             |¦  «        S ra   r@   rB   s     r
   rA   zOperator.__contains__¥   s(   € Ý˜T ;Ñ/Ô/Ð/ØŒz×&Ò& uÑ-Ô-Ð-r   c                 óT   — t          | d¦  «         | j                             ¦   «         S ra   rE   r6   s    r
   rF   zOperator.__reversed__©   s&   € Ý˜T ;Ñ/Ô/Ð/ØŒz×&Ò&Ñ(Ô(Ð(r   c                 óV   — t          | d¦  «         | j                             |¦  «        S ra   rV   rX   s     r
   rW   zOperator.__getitem__­   s(   € Ý˜T ;Ñ/Ô/Ð/ØŒz×%Ò% cÑ*Ô*Ð*r   c                 óX   — t          | d¦  «         | j                             ||¦  «        S ra   r[   r]   s      r
   r\   zOperator.__setitem__±   s*   € Ý˜T ;Ñ/Ô/Ð/ØŒz×%Ò% c¨5Ñ1Ô1Ð1r   ©r   rG   rH   rI   r%   r2   r7   r;   r>   rA   rF   rW   r\   rJ   rK   s   @r
   r_   r_   ˆ   s¶   ø€ € € € € ØIÐIð&ð &ð &ð &ð &ð
ð 
ð 
ðð ð ð
$ð $ð $ð%ð %ð %ð.ð .ð .ð)ð )ð )ð+ð +ð +ð2ð 2ð 2ð 2ð 2ð 2ð 2r   r_   c                   óR   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zˆ xZS )ÚSuperOpz>Aer result backwards compatibility wrapper for qiskit SuperOp.c                 óÎ   •— t          |¦  «        r:t          | j        |¦  «        r%t          | d¦  «         t	          | j        |¦  «        S t	          t          ¦   «         |¦  «        S ©NÚsuperoperatorsr   r#   s     €r
   r%   zSuperOp.__getattr__¹   s]   ø€ Ý˜ÑÔð 	-¥7¨4¬:°tÑ#<Ô#<ð 	-Ý  Ð'7Ñ8Ô8Ð8Ý˜4œ: tÑ,Ô,Ð,Ý•u‘w”w Ñ%Ô%Ð%r   c                 ó´   — t          | t          |¦  «        ¦  «        o;| j        |j        k    o+t          j        | j        |j        | j        | j        ¬¦  «        S r'   r*   r0   s     r
   r2   zSuperOp.__eq__¿   r3   r   c                 ó   — dS r5   r   r6   s    r
   r7   zSuperOp.__bool__Æ   r8   r   c                 óT   — t          | d¦  «         | j                             ¦   «         S ro   r:   r6   s    r
   r;   zSuperOp.__len__Ë   s'   € Ý˜TÐ#3Ñ4Ô4Ð4ØŒz×!Ò!Ñ#Ô#Ð#r   c                 óT   — t          | d¦  «         | j                             ¦   «         S ro   r=   r6   s    r
   r>   zSuperOp.__iter__Ï   s'   € Ý˜TÐ#3Ñ4Ô4Ð4ØŒz×"Ò"Ñ$Ô$Ð$r   c                 óV   — t          | d¦  «         | j                             |¦  «        S ro   r@   rB   s     r
   rA   zSuperOp.__contains__Ó   s)   € Ý˜TÐ#3Ñ4Ô4Ð4ØŒz×&Ò& uÑ-Ô-Ð-r   c                 óT   — t          | d¦  «         | j                             ¦   «         S ro   rE   r6   s    r
   rF   zSuperOp.__reversed__×   s'   € Ý˜TÐ#3Ñ4Ô4Ð4ØŒz×&Ò&Ñ(Ô(Ð(r   c                 óV   — t          | d¦  «         | j                             |¦  «        S ro   rV   rX   s     r
   rW   zSuperOp.__getitem__Û   s)   € Ý˜TÐ#3Ñ4Ô4Ð4ØŒz×%Ò% cÑ*Ô*Ð*r   c                 óX   — t          | d¦  «         | j                             ||¦  «        S ro   r[   r]   s      r
   r\   zSuperOp.__setitem__ß   s+   € Ý˜TÐ#3Ñ4Ô4Ð4ØŒz×%Ò% c¨5Ñ1Ô1Ð1r   rk   rK   s   @r
   rm   rm   ¶   s¶   ø€ € € € € ØHÐHð&ð &ð &ð &ð &ð
ð 
ð 
ðð ð ð
$ð $ð $ð%ð %ð %ð.ð .ð .ð)ð )ð )ð+ð +ð +ð2ð 2ð 2ð 2ð 2ð 2ð 2r   rm   c                   óX   ‡ — e Zd ZdZd„ Zˆ fd„Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zˆ xZS )ÚStabilizerStatezFAer result backwards compatibility wrapper for qiskit StabilizerState.c                 ó>   — t          j        dt          d¬¦  «         d S )NaI  The return type of saved stabilizers has been changed from a `dict` to a `qiskit.quantum_info.StabilizerState` as of qiskit-aer 0.10. Accessing dict attributes is deprecated and will result in an error in a future release. Use the `.clifford.to_dict()` methods to access  the stored Clifford operator and convert to a dictionary.r   r   )r   r   r   r6   s    r
   Ú__deprecation_warningz%StabilizerState.__deprecation_warningç   s3   € ÝŒðIõ
 Øð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 óú   •— t          |¦  «        rPt          t          |¦  «        r;|                      ¦   «          t	          | j                             ¦   «         |¦  «        S t	          t          ¦   «         |¦  «        S ©N)r   r    ÚdictÚ%_StabilizerState__deprecation_warningr!   r   Úto_dictr"   r#   s     €r
   r%   zStabilizerState.__getattr__ò   sh   ø€ Ý˜ÑÔð 	7¥7­4°Ñ#6Ô#6ð 	7Ø×&Ò&Ñ(Ô(Ð(Ý˜4œ:×-Ò-Ñ/Ô/°Ñ6Ô6Ð6Ý•u‘w”w Ñ%Ô%Ð%r   c                 óž   — |dv r;t          j        dt          d¬¦  «         | j                             ¦   «         |         S t          d¦  «        ‚)N)Ú
stabilizerÚdestabilizeraD  The return type of saved stabilizers has been changed from a `dict` to a `qiskit.quantum_info.StabilizerState` as of qiskit-aer 0.10. Accessing dict items is deprecated and will result in an error in a future release. Use the `.clifford.to_dict()` methods to access  the stored Clifford operator and convert to a dictionary.r   r   z-'StabilizerState object is not subscriptable')r   r   r   r   r�   Ú	TypeError)r$   Úitems     r
   rW   zStabilizerState.__getitem__ø   s_   € ØÐ1Ð1Ð1ÝŒMðMõ
 #Øðñ ô ð ð ”:×%Ò%Ñ'Ô'¨Ô-Ð-ÝÐGÑHÔHÐHr   c                 ó   — dS r5   r   r6   s    r
   r7   zStabilizerState.__bool__  r8   r   c                 ó€   — |                       ¦   «          | j                             ¦   «                              ¦   «         S r~   )r€   r   r�   r;   r6   s    r
   r;   zStabilizerState.__len__  s4   € Ø×"Ò"Ñ$Ô$Ð$ØŒz×!Ò!Ñ#Ô#×+Ò+Ñ-Ô-Ð-r   c                 ó€   — |                       ¦   «          | j                             ¦   «                              ¦   «         S r~   )r€   r   r�   r>   r6   s    r
   r>   zStabilizerState.__iter__  s4   € Ø×"Ò"Ñ$Ô$Ð$ØŒz×!Ò!Ñ#Ô#×,Ò,Ñ.Ô.Ð.r   c                 ó‚   — |                       ¦   «          | j                             ¦   «                              |¦  «        S r~   )r€   r   r�   rA   rB   s     r
   rA   zStabilizerState.__contains__  s6   € Ø×"Ò"Ñ$Ô$Ð$ØŒz×!Ò!Ñ#Ô#×0Ò0°Ñ7Ô7Ð7r   c                 ó€   — |                       ¦   «          | j                             ¦   «                              ¦   «         S r~   )r€   r   r�   rF   r6   s    r
   rF   zStabilizerState.__reversed__  s4   € Ø×"Ò"Ñ$Ô$Ð$ØŒz×!Ò!Ñ#Ô#×0Ò0Ñ2Ô2Ð2r   c                 ó@   — t          t          | ¦  «        › d�¦  «        ‚)Nz does not support addition©ÚNotImplementedErrorr,   r0   s     r
   Ú_addzStabilizerState._add  s   € Ý!¥T¨$¡Z¤ZÐ"KÐ"KÐ"KÑLÔLÐLr   c                 ó@   — t          t          | ¦  «        › d�¦  «        ‚)Nz' does not support scalar multiplicationr�   r0   s     r
   Ú	_multiplyzStabilizerState._multiply  s   € Ý!¥T¨$¡Z¤ZÐ"XÐ"XÐ"XÑYÔYÐYr   )r   rG   rH   rI   r€   r%   rW   r7   r;   r>   rA   rF   r�   r‘   rJ   rK   s   @r
   rz   rz   ä   sÒ   ø€ € € € € ØPÐPð	
ð 	
ð 	
ð&ð &ð &ð &ð &ðIð Ið Iðð ð ð
.ð .ð .ð/ð /ð /ð8ð 8ð 8ð3ð 3ð 3ðMð Mð MðZð Zð Zð Zð Zð Zð Zr   rz   )rI   r   Únumpyr-   Úqiskit.quantum_infoÚquantum_infoÚqir   r   r   rM   r_   rm   rz   r   r   r
   ú<module>r–      sL  ðð	ð 	ð €€€Ø Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  ðð ð ðð ð ð()ð ()ð ()ð ()ð ()�"”.ñ ()ô ()ð ()ðV&2ð &2ð &2ð &2ð &2�BÔ$ñ &2ô &2ð &2ðR+2ð +2ð +2ð +2ð +2ˆrŒ{ñ +2ô +2ð +2ð\+2ð +2ð +2ð +2ð +2ˆbŒjñ +2ô +2ð +2ð\;Zð ;Zð ;Zð ;Zð ;Z�bÔ(ñ ;Zô ;Zð ;Zð ;Zð ;Zr   