
    {	i(                        S r SSKrSSKrSSKJr  S rS r " S S\R                  5      r	 " S S\R                  5      r
 " S	 S
\R                  5      r " S S\R                  5      r " S S\R                  5      rg)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                 $    U SS S:X  d  U S;   a  gg)z9Return True if attribute should be passed to legacy classN   __)_data	_op_shapeFT )attrs    [/home/james-whalen/.local/lib/python3.13/site-packages/qiskit_aer/backends/compatibility.py_forward_attrr      s     
 BQx44#99    c                 r    U R                   R                  n[        R                  " SU SU S3[        SS9  g )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   &   sD    ##,,JMM
#N#3 488B| D!	! 		r   c                   P   ^  \ rS rSrSrU 4S jrS rS rS rS r	S r
S	 rS
rU =r$ )Statevector4   zBAer result backwards compatibility wrapper for qiskit Statevector.c                    > [        U5      (       a=  [        U R                  U5      (       a"  [        U S5        [	        U R                  U5      $ [	        [        5       U5      $ Nstatevectorsr   hasattrr   r   getattrsuperselfr	   r   s     r
   __getattr__Statevector.__getattr__7   sH    74::t#<#< ~64::t,,uw%%r   c                     [        U [        U5      5      =(       a_    U R                  UR                  :H  =(       a?    [        R                  " U R
                  UR
                  U R                  U R                  S9$ N)rtolatol
isinstancetyper   npallclosedatar*   r+   r%   others     r
   __eq__Statevector.__eq__=   S    tT%[) S%//1SDIIuzz				R	
r   c                     gNTr   r%   s    r
   __bool__Statevector.__bool__D        r   c                 N    [        U S5        U R                  R                  5       $ r   r   r   __len__r9   s    r
   r?   Statevector.__len__N   s    T>2zz!!##r   c                 N    [        U S5        U R                  R                  5       $ r   r   r   __iter__r9   s    r
   rC   Statevector.__iter__R   s    T>2zz""$$r   c                 P    [        U S5        U R                  R                  U5      $ r   r   r   __contains__r%   values     r
   rG   Statevector.__contains__V   s!    T>2zz&&u--r   c                 N    [        U S5        U R                  R                  5       $ r   r   r   __reversed__r9   s    r
   rM   Statevector.__reversed__Z   s    T>2zz&&((r   r   )r   
__module____qualname____firstlineno____doc__r&   r4   r:   r?   rC   rG   rM   __static_attributes____classcell__r   s   @r
   r   r   4   s.    L&
$%.) )r   r   c                   V   ^  \ rS rSrSrU 4S jrS rS rS rS r	S r
S	 rS
 rSrU =r$ )DensityMatrix_   zDAer result backwards compatibility wrapper for qiskit DensityMatrix.c                    > [        U5      (       a=  [        U R                  U5      (       a"  [        U S5        [	        U R                  U5      $ [	        [        5       U5      $ Nzdensity matricesr    r$   s     r
   r&   DensityMatrix.__getattr__b   sI    74::t#<#< '9:4::t,,uw%%r   c                     [        U [        U5      5      =(       a_    U R                  UR                  :H  =(       a?    [        R                  " U R
                  UR
                  U R                  U R                  S9$ r)   r,   r2   s     r
   r4   DensityMatrix.__eq__h   r6   r   c                 N    [        U S5        U R                  R                  5       $ rZ   r>   r9   s    r
   r?   DensityMatrix.__len__o   s     T#56zz!!##r   c                 N    [        U S5        U R                  R                  5       $ rZ   rB   r9   s    r
   rC   DensityMatrix.__iter__s   s     T#56zz""$$r   c                 P    [        U S5        U R                  R                  U5      $ rZ   rF   rH   s     r
   rG   DensityMatrix.__contains__w   s"    T#56zz&&u--r   c                 N    [        U S5        U R                  R                  5       $ rZ   rL   r9   s    r
   rM   DensityMatrix.__reversed__{   s     T#56zz&&((r   c                 P    [        U S5        U R                  R                  U5      $ rZ   r   r   __getitem__r%   keys     r
   rh   DensityMatrix.__getitem__   s"    T#56zz%%c**r   c                 P    [        U S5        U R                  R                  X5      $ rZ   r   r   __setitem__r%   rj   rI   s      r
   rn   DensityMatrix.__setitem__   s"    T#56zz%%c11r   r   )r   rO   rP   rQ   rR   r&   r4   r?   rC   rG   rM   rh   rn   rS   rT   rU   s   @r
   rW   rW   _   s3    N&
$%.)+2 2r   rW   c                   \   ^  \ rS rSrSrU 4S jrS rS rS rS r	S r
S	 rS
 rS rSrU =r$ )Operator   z?Aer result backwards compatibility wrapper for qiskit Operator.c                    > [        U5      (       a=  [        U R                  U5      (       a"  [        U S5        [	        U R                  U5      $ [	        [        5       U5      $ N	unitariesr    r$   s     r
   r&   Operator.__getattr__   sH    74::t#<#< {34::t,,uw%%r   c                     [        U [        U5      5      =(       a_    U R                  UR                  :H  =(       a?    [        R                  " U R
                  UR
                  U R                  U R                  S9$ r)   r,   r2   s     r
   r4   Operator.__eq__   r6   r   c                     gr8   r   r9   s    r
   r:   Operator.__bool__   r<   r   c                 N    [        U S5        U R                  R                  5       $ ru   r>   r9   s    r
   r?   Operator.__len__   s    T;/zz!!##r   c                 N    [        U S5        U R                  R                  5       $ ru   rB   r9   s    r
   rC   Operator.__iter__   s    T;/zz""$$r   c                 P    [        U S5        U R                  R                  U5      $ ru   rF   rH   s     r
   rG   Operator.__contains__   s!    T;/zz&&u--r   c                 N    [        U S5        U R                  R                  5       $ ru   rL   r9   s    r
   rM   Operator.__reversed__   s    T;/zz&&((r   c                 P    [        U S5        U R                  R                  U5      $ ru   rg   ri   s     r
   rh   Operator.__getitem__   s!    T;/zz%%c**r   c                 P    [        U S5        U R                  R                  X5      $ ru   rm   ro   s      r
   rn   Operator.__setitem__   s!    T;/zz%%c11r   r   r   rO   rP   rQ   rR   r&   r4   r:   r?   rC   rG   rM   rh   rn   rS   rT   rU   s   @r
   rr   rr      s8    I&

$%.)+2 2r   rr   c                   \   ^  \ rS rSrSrU 4S jrS rS rS rS r	S r
S	 rS
 rS rSrU =r$ )SuperOp   z>Aer result backwards compatibility wrapper for qiskit SuperOp.c                    > [        U5      (       a=  [        U R                  U5      (       a"  [        U S5        [	        U R                  U5      $ [	        [        5       U5      $ Nsuperoperatorsr    r$   s     r
   r&   SuperOp.__getattr__   sI    74::t#<#< '784::t,,uw%%r   c                     [        U [        U5      5      =(       a_    U R                  UR                  :H  =(       a?    [        R                  " U R
                  UR
                  U R                  U R                  S9$ r)   r,   r2   s     r
   r4   SuperOp.__eq__   r6   r   c                     gr8   r   r9   s    r
   r:   SuperOp.__bool__   r<   r   c                 N    [        U S5        U R                  R                  5       $ r   r>   r9   s    r
   r?   SuperOp.__len__   s     T#34zz!!##r   c                 N    [        U S5        U R                  R                  5       $ r   rB   r9   s    r
   rC   SuperOp.__iter__   s     T#34zz""$$r   c                 P    [        U S5        U R                  R                  U5      $ r   rF   rH   s     r
   rG   SuperOp.__contains__   s"    T#34zz&&u--r   c                 N    [        U S5        U R                  R                  5       $ r   rL   r9   s    r
   rM   SuperOp.__reversed__   s     T#34zz&&((r   c                 P    [        U S5        U R                  R                  U5      $ r   rg   ri   s     r
   rh   SuperOp.__getitem__   s"    T#34zz%%c**r   c                 P    [        U S5        U R                  R                  X5      $ r   rm   ro   s      r
   rn   SuperOp.__setitem__   s"    T#34zz%%c11r   r   r   rU   s   @r
   r   r      s8    H&

$%.)+2 2r   r   c                   b   ^  \ rS rSrSrS rU 4S jrS rS rS r	S r
S	 rS
 rS rS rSrU =r$ )StabilizerState   zFAer result backwards compatibility wrapper for qiskit StabilizerState.c                 8    [         R                  " S[        SS9  g )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   r9   s    r
   __deprecation_warning%StabilizerState.__deprecation_warning   s    I
 	
r   c                    > [        U5      (       aI  [        [        U5      (       a4  U R                  5         [	        U R
                  R                  5       U5      $ [	        [        5       U5      $ N)r   r!   dict%_StabilizerState__deprecation_warningr"   r   to_dictr#   r$   s     r
   r&   StabilizerState.__getattr__   sO    74#6#6&&(4::--/66uw%%r   c                     US;   a7  [         R                  " S[        SS9  U R                  R	                  5       U   $ [        S5      e)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
   rh   StabilizerState.__getitem__   sK    11MMM
 # ::%%'--GHHr   c                     gr8   r   r9   s    r
   r:   StabilizerState.__bool__  r<   r   c                 r    U R                  5         U R                  R                  5       R                  5       $ r   )r   r   r   r?   r9   s    r
   r?   StabilizerState.__len__  s*    ""$zz!!#++--r   c                 r    U R                  5         U R                  R                  5       R                  5       $ r   )r   r   r   rC   r9   s    r
   rC   StabilizerState.__iter__  s*    ""$zz!!#,,..r   c                 t    U R                  5         U R                  R                  5       R                  U5      $ r   )r   r   r   rG   rH   s     r
   rG   StabilizerState.__contains__  s,    ""$zz!!#0077r   c                 r    U R                  5         U R                  R                  5       R                  5       $ r   )r   r   r   rM   r9   s    r
   rM   StabilizerState.__reversed__  s*    ""$zz!!#0022r   c                 0    [        [        U 5       S35      e)Nz does not support additionNotImplementedErrorr.   r2   s     r
   _addStabilizerState._add  s    !T$ZL0J"KLLr   c                 0    [        [        U 5       S35      e)Nz' does not support scalar multiplicationr   r2   s     r
   	_multiplyStabilizerState._multiply  s    !T$ZL0W"XYYr   r   )r   rO   rP   rQ   rR   r   r&   rh   r:   r?   rC   rG   rM   r   r   rS   rT   rU   s   @r
   r   r      sA    P	
&I
./83MZ Zr   r   )rR   r   numpyr/   qiskit.quantum_infoquantum_infoqir   r   r   rW   rr   r   r   r   r   r
   <module>r      sy   	    ()".. ()V&2B$$ &2R+2r{{ +2\+2bjj +2\;Zb(( ;Zr   