§
    ÈÁ³gqB  ã                   ó†  — d Z ddlZddlmZ ddlmZmZ ddlm	Z	 ddl
mZmZmZmZmZmZmZmZmZmZmZmZ d„ Z G d„ d	ej        ¦  «        ZeZ G d
„ de¦  «        Z G d„ dee¦  «        ZeZ G d„ d¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z  G d„ d¦  «        Z! G d„ d¦  «        Z"d„ Z# G d„ d¦  «        Z$dS )z½Tests suite for MaskedArray & subclassing.

:author: Pierre Gerard-Marchant
:contact: pierregm_at_uga_dot_edu
:version: $Id: test_subclassing.py 3473 2007-10-29 15:18:13Z jarrod.millman $

é    N)ÚNDArrayOperatorsMixin)Úassert_Úassert_raises)Úassert_equal)ÚarrayÚarangeÚmaskedÚMaskedArrayÚmasked_arrayÚlogÚaddÚhypotÚdivideÚasarrayÚ
asanyarrayÚnomaskc                 óP   — t          | d t          |¦  «        …         |¦  «         d S ©N)r   Úlen)ÚaÚbs     ú]/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/numpy/ma/tests/test_subclassing.pyÚassert_startswithr      s&   € å��7•C˜‘F”F�7”˜QÑÔÐÐÐó    c                   ó<   ‡ — e Zd Zi fd„Zˆ fd„Zˆ fd„Zˆ fd„Zˆ xZS )ÚSubArrayc                 ó†   — t          j        |¦  «                             | ¦  «        }|                     ¦   «         |_        |S r   )Únpr   ÚviewÚcopyÚinfo)ÚclsÚarrr!   Úxs       r   Ú__new__zSubArray.__new__   s3   € ÝŒM˜#ÑÔ×#Ò# CÑ(Ô(ˆØ—’‘”ˆŒØˆr   c                 óš   •— t          ¦   «                              |¦  «         t          |di ¦  «                             ¦   «         | _        d S ©Nr!   )ÚsuperÚ__array_finalize__Úgetattrr    r!   )ÚselfÚobjÚ	__class__s     €r   r)   zSubArray.__array_finalize__   s?   ø€ Ý‰Œ×"Ò" 3Ñ'Ô'Ð'Ý˜C ¨Ñ,Ô,×1Ò1Ñ3Ô3ˆŒ	Øˆr   c                 ó–   •— t          ¦   «                              |¦  «        }|j                             dd¦  «        dz   |j        d<   |S )NÚaddedr   é   )r(   Ú__add__r!   Úget©r+   ÚotherÚresultr-   s      €r   r1   zSubArray.__add__$   s>   ø€ Ý‘”—’ Ñ'Ô'ˆØ%œ{Ÿš¨w¸Ñ:Ô:¸QÑ>ˆŒ�GÑØˆr   c                 ó–   •— t          ¦   «                              |¦  «        }|j                             dd¦  «        dz   |j        d<   |S )NÚiaddedr   r0   )r(   Ú__iadd__r!   r2   r3   s      €r   r8   zSubArray.__iadd__)   s@   ø€ Ý‘”×!Ò! %Ñ(Ô(ˆØ &¤§¢°¸!Ñ <Ô <¸qÑ @ˆŒ�HÑØˆr   )Ú__name__Ú
__module__Ú__qualname__r%   r)   r1   r8   Ú__classcell__©r-   s   @r   r   r      sƒ   ø€ € € € € ð  ð ð ð ð ð
ð ð ð ð ð
ð ð ð ð ð
ð ð ð ð ð ð ð ð r   r   c                   ó$   ‡ — e Zd ZdZdˆ fd„	Zˆ xZS )ÚSubMaskedArrayz<Pure subclass of MaskedArray, keeping some info on subclass.Nc                 óP   •—  t          ¦   «         j        | fi |¤Ž}||j        d<   |S r'   )r(   r%   Ú_optinfo)r"   r!   Úkwargsr,   r-   s       €r   r%   zSubMaskedArray.__new__4   s1   ø€ Ø�e‰gŒgŒo˜cÐ,Ð, VÐ,Ð,ˆØ#ˆŒ�VÑØˆ
r   r   )r9   r:   r;   Ú__doc__r%   r<   r=   s   @r   r?   r?   2   sC   ø€ € € € € ØFÐFðð ð ð ð ð ð ð ð ð r   r?   c                   ó0   — e Zd Zi efd„Zed„ ¦   «         ZdS )Ú	MSubArrayc                 ól   — t          ||¦  «        }t          j        | ||¬¦  «        }|j        |_        |S )N)ÚdataÚmask)r   r
   r%   r!   )r"   rG   r!   rH   ÚsubarrÚ_datas         r   r%   zMSubArray.__new__<   s6   € Ý˜$ Ñ%Ô%ˆÝÔ# C¨f¸4Ð@Ñ@Ô@ˆØ”[ˆŒ
Øˆr   c                 óH   — |                       t          ¦  «        }d|_        |S ©NF)r   r
   Ú_sharedmask)r+   Ú_views     r   Ú_serieszMSubArray._seriesB   s    € à—	’	�+Ñ&Ô&ˆØ!ˆÔØˆr   N)r9   r:   r;   r   r%   ÚpropertyrO   © r   r   rE   rE   :   sH   € € € € € à "¨ð ð ð ð ð ðð ñ „Xðð ð r   rE   c                   ó0   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚCSAIteratorzß
    Flat iterator object that uses its own setter/getter
    (works around ndarray.flat not propagating subclass setters/getters
    see https://github.com/numpy/numpy/issues/4564)
    roughly following MaskedIterator
    c                 óf   — || _         |                     t          j        ¦  «        j        | _        d S r   )Ú	_originalr   r   ÚndarrayÚflatÚ	_dataiter)r+   r   s     r   Ú__init__zCSAIterator.__init__W   s%   € ØˆŒØŸš¥¤
Ñ+Ô+Ô0ˆŒˆˆr   c                 ó   — | S r   rQ   ©r+   s    r   Ú__iter__zCSAIterator.__iter__[   s   € Øˆr   c                 óä   — | j                              |¦  «        }t          |t          j        ¦  «        s|                     ¦   «         }|                     t          | j        ¦  «        ¦  «        }|S r   )	rX   Ú__getitem__Ú
isinstancer   rV   Ú	__array__r   ÚtyperU   )r+   ÚindxÚouts      r   r^   zCSAIterator.__getitem__^   sX   € ØŒn×(Ò(¨Ñ.Ô.ˆÝ˜#�rœzÑ*Ô*ð 	"Ø—-’-‘/”/ˆCØ�hŠh•t˜DœNÑ+Ô+Ñ,Ô,ˆØˆ
r   c                 óJ   — | j                              |¦  «        | j        |<   d S r   )rU   Ú_validate_inputrX   )r+   ÚindexÚvalues      r   Ú__setitem__zCSAIterator.__setitem__e   s$   € Ø $¤× >Ò >¸uÑ EÔ EˆŒ�uÑÐÐr   c                 ó˜   — t          | j        ¦  «                             ¦   «                              t	          | j        ¦  «        ¦  «        S r   )ÚnextrX   r`   r   ra   rU   r[   s    r   Ú__next__zCSAIterator.__next__h   s6   € Ý�D”NÑ#Ô#×-Ò-Ñ/Ô/×4Ò4µT¸$¼.Ñ5IÔ5IÑJÔJÐJr   N)	r9   r:   r;   rC   rY   r\   r^   rh   rk   rQ   r   r   rS   rS   P   sq   € € € € € ðð ð1ð 1ð 1ðð ð ðð ð ðFð Fð FðKð Kð Kð Kð Kr   rS   c                   ó|   ‡ — e Zd Zd„ Zd„ Zd„ Zˆ fd„Zˆ fd„Zed„ ¦   «         Z	e	j
        d„ ¦   «         Z	dˆ fd
„	Zˆ xZS )ÚComplicatedSubArrayc                 ó>   — d|                       t          ¦  «        › d�S )Nz	myprefix z
 mypostfix)r   r   r[   s    r   Ú__str__zComplicatedSubArray.__str__n   s   € Ø:˜4Ÿ9š9¥XÑ.Ô.Ð:Ð:Ð:Ð:r   c                 ó(   — d| j         j        › d| › d�S )Nú<ú ú>)r-   r9   r[   s    r   Ú__repr__zComplicatedSubArray.__repr__q   s    € à4�4”>Ô*Ð4Ð4¨TÐ4Ð4Ð4Ð4r   c                 óN   — t          |t          ¦  «        st          d¦  «        ‚|S )Nz!Can only set to MySubArray values)r_   rm   Ú
ValueError)r+   rg   s     r   re   z#ComplicatedSubArray._validate_inputu   s*   € Ý˜%Õ!4Ñ5Ô5ð 	BÝÐ@ÑAÔAÐAØˆr   c                 ór   •— t          ¦   «                              ||                      |¦  «        ¦  «         d S r   )r(   rh   re   ©r+   Úitemrg   r-   s      €r   rh   zComplicatedSubArray.__setitem__z   s3   ø€ õ 	‰Œ×Ò˜D $×"6Ò"6°uÑ"=Ô"=Ñ>Ô>Ð>Ð>Ð>r   c                 óÖ   •— t          ¦   «                              |¦  «        }t          |t          j        ¦  «        s,|                     ¦   «                              t          ¦  «        }|S r   )r(   r^   r_   r   rV   r`   r   rm   rx   s      €r   r^   zComplicatedSubArray.__getitem__   sR   ø€ å‘”×#Ò# DÑ)Ô)ˆÝ˜%¥¤Ñ,Ô,ð 	@Ø—O’OÑ%Ô%×*Ò*Õ+>Ñ?Ô?ˆEØˆr   c                 ó    — t          | ¦  «        S r   )rS   r[   s    r   rW   zComplicatedSubArray.flat†   s   € å˜4Ñ Ô Ð r   c                 ó<   — |                       ¦   «         }||d d …<   d S r   )Úravel)r+   rg   Úys      r   rW   zComplicatedSubArray.flatŠ   s    € à�JŠJ‰LŒLˆØˆˆ!ˆ!ˆ!‰ˆˆr   NFc                 óÆ   •— t          ¦   «                              |||¦  «        }|�:|d         t          j        u r&|j                             dd¦  «        dz   |j        d<   |S )Nr   Ú
multipliedr0   )r(   Ú__array_wrap__r   Úmultiplyr!   r2   )r+   r,   ÚcontextÚreturn_scalarr-   s       €r   r�   z"ComplicatedSubArray.__array_wrap__�   sZ   ø€ Ý‰gŒg×$Ò$ S¨'°=ÑAÔAˆØÐ 7¨1¤:µ´Ð#<Ð#<Ø%(¤X§\¢\°,ÀÑ%BÔ%BÀQÑ%FˆCŒH�\Ñ"àˆ
r   rL   )r9   r:   r;   ro   rt   re   rh   r^   rP   rW   Úsetterr�   r<   r=   s   @r   rm   rm   l   sÔ   ø€ € € € € ð;ð ;ð ;ð5ð 5ð 5ðð ð ð
?ð ?ð ?ð ?ð ?ð
ð ð ð ð ð ð!ð !ñ „Xð!ð 
„[ðð ñ „[ððð ð ð ð ð ð ð ð ð r   rm   c                   ó4   — e Zd ZdZdZdZd„ Zd„ Zd	d„Zd„ Z	dS )
ÚWrappedArrayz 
    Wrapping a MaskedArray rather than subclassing to test that
    ufunc deferrals are commutative.
    See: https://github.com/numpy/numpy/issues/15200)
    ©Ú_arrayÚattrsé   c                 ó"   — || _         || _        d S r   rˆ   )r+   r   rŠ   s      r   rY   zWrappedArray.__init__    s   € ØˆŒØˆŒ
ˆ
ˆ
r   c                 ó@   — | j         j        › d| j        › d| j        › d�S )Nz(
ú
z
))r-   r9   r‰   rŠ   r[   s    r   rt   zWrappedArray.__repr__¤   s*   € Ø”.Ô)ÐLÐL¨d¬kÐLÐL¸T¼ZÐLÐLÐLÐLr   Nc                 ó4   — t          j        | j        ¦  «        S r   )r   r   r‰   )r+   Údtyper    s      r   r`   zWrappedArray.__array__§   s   € ÝŒz˜$œ+Ñ&Ô&Ð&r   c                 ól   ‡ — |dk    r'ˆ fd„|D ¦   «         } ‰ j          ||i |¤Žfi ‰ j        ¤ŽS t          S )NÚ__call__c                 óL   •— g | ] }t          |‰j        ¦  «        r|j        n|‘Œ!S rQ   )r_   r-   r‰   )Ú.0Úargr+   s     €r   ú
<listcomp>z0WrappedArray.__array_ufunc__.<locals>.<listcomp>¬   s@   ø€ ð )ð )ð )Øõ %/¨s°D´NÑ$CÔ$CÐL�c”j�jÈð )ð )ð )r   )r-   rŠ   ÚNotImplemented)r+   ÚufuncÚmethodÚinputsrB   s   `    r   Ú__array_ufunc__zWrappedArray.__array_ufunc__ª   sg   ø€ Ø�ZÒÐð)ð )ð )ð )Ø!'ð)ñ )ô )ˆFà!�4”> % %¨Ð":°6Ð":Ð":ÐIÐI¸d¼jÐIÐIÐIå!Ð!r   )NN)
r9   r:   r;   rC   Ú	__slots__Ú__array_priority__rY   rt   r`   r›   rQ   r   r   r‡   r‡   —   so   € € € € € ðð ð
 $€IØÐðð ð ðMð Mð Mð'ð 'ð 'ð 'ð"ð "ð "ð "ð "r   r‡   c                   ó\   — e 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 )ÚTestSubclassingc                 ój   — t          j        dd¬¦  «        }t          |g d¢¬¦  «        }||f| _        d S )Né   Úfloat)r�   )r   r0   r   r   r   ©rH   )r   r   Ú	msubarrayrG   ©r+   r$   Úmxs      r   Úsetup_methodzTestSubclassing.setup_method¶   s;   € ÝŒI�a˜wÐ'Ñ'Ô'ˆÝ�q˜˜˜Ð/Ñ/Ô/ˆØ˜�GˆŒ	ˆ	ˆ	r   c                 ó2  — t          j        d¦  «        }g d¢}t          |¦  «        }t          ||¬¦  «        }t	          t          |t          ¦  «        ¦  «         t          |j        |¦  «         t	          t          |j        t          ¦  «        ¦  «         d S )Nr¡   ©r   r   r0   r   r   r£   )	r   r   r   r   r   r_   r
   r   rJ   )r+   r$   ÚmÚxsubÚxmsubs        r   Útest_data_subclassingz%TestSubclassing.test_data_subclassing»   s   € åŒI�a‰LŒLˆØˆOˆOˆÝ˜‰{Œ{ˆÝ˜T¨Ð*Ñ*Ô*ˆÝ•
˜5¥+Ñ.Ô.Ñ/Ô/Ð/Ý�U”[ $Ñ'Ô'Ð'Ý•
˜5œ;­Ñ1Ô1Ñ2Ô2Ð2Ð2Ð2r   c                 óh   — | j         \  }}t          t          |j        t          ¦  «        ¦  «         d S r   )rG   r   r_   rJ   Úsubarrayr¥   s      r   Útest_maskedarray_subclassingz,TestSubclassing.test_maskedarray_subclassingÅ   s-   € à”)‰ˆˆBÝ•
˜2œ8¥XÑ.Ô.Ñ/Ô/Ð/Ð/Ð/r   c                 ó2  — | j         \  }}t          j        d¬¦  «        5  t          t	          t          |¦  «        t          ¦  «        ¦  «         t          t          |¦  «        t          j        |¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S ©NÚignore)r   )rG   r   Úerrstater   r_   r   r¤   r   r¥   s      r   Útest_masked_unary_operationsz,TestSubclassing.test_masked_unary_operationsÊ   sÀ   € à”)‰ˆˆBÝŒ[ Ð)Ñ)Ô)ð 	,ð 	,Ý•J�s 2™wœw­	Ñ2Ô2Ñ3Ô3Ð3Ý�˜Q™œ¥¤¨¡¤Ñ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,ð 	,ð 	,s    ABÂBÂBc                 ó°  — | j         \  }}t          t          t          ||¦  «        t          ¦  «        ¦  «         t          t          t          ||¦  «        t          ¦  «        ¦  «         t          t          ||¦  «        ||z   ¦  «         t          t          t          ||¦  «        j        t          ¦  «        ¦  «         t          t          t          j        ||¦  «        t          ¦  «        ¦  «         t          t          t          ||¦  «        t          ¦  «        ¦  «         t          t          t          ||¦  «        t          ¦  «        ¦  «         d S r   )
rG   r   r_   r   r¤   r   rJ   r¯   Úouterr   r¥   s      r   Útest_masked_binary_operationsz-TestSubclassing.test_masked_binary_operationsÑ   sö   € à”)‰ˆˆBå•
�3˜r 2™;œ;­	Ñ2Ô2Ñ3Ô3Ð3Ý•
�3˜r 1™:œ:¥yÑ1Ô1Ñ2Ô2Ð2å•S˜˜Q‘Z”Z  A¡Ñ&Ô&Ð&Ý•
�3˜r 2™;œ;Ô,­hÑ7Ô7Ñ8Ô8Ð8Ý•
�3œ9 R¨Ñ,Ô,­iÑ8Ô8Ñ9Ô9Ð9Ý•
�5  R™=œ=­)Ñ4Ô4Ñ5Ô5Ð5Ý•
�5  Q™<œ<­Ñ3Ô3Ñ4Ô4Ð4Ð4Ð4r   c                 óŒ  — | j         \  }}t          |j                              ¦   «         |j        ¬¦  «        }t	          t          t          ||¦  «        t          ¦  «        ¦  «         t	          t          t          ||¦  «        t          ¦  «        ¦  «         t          t          ||¦  «        t          ||¦  «        ¦  «         d S )Nr£   )	rG   r   r`   rH   r   r_   r   r¤   r   )r+   r$   r¦   Úxmxs       r   Útest_masked_binary_operations2z.TestSubclassing.test_masked_binary_operations2Þ   s—   € à”)‰ˆˆBÝ˜2œ7×,Ò,Ñ.Ô.°R´WÐ=Ñ=Ô=ˆÝ•
�6 " b™>œ>­9Ñ5Ô5Ñ6Ô6Ð6Ý•
�6 " a™=œ=­)Ñ4Ô4Ñ5Ô5Ð5Ý•V˜B ‘^”^¥V¨C°Ñ%5Ô%5Ñ6Ô6Ð6Ð6Ð6r   c                 ó~  — t          t          d¦  «        dgdgdz  z   ¬¦  «        }t          t          |¦  «        ¦  «        }t	          |¦  «        }|dz   }t          t          |t          ¦  «        ¦  «         t          t          |t          ¦  «         ¦  «         t          t          |j	        t          ¦  «        ¦  «         t          |j	        j        i ¦  «         |dz   }t          t          |t          ¦  «        ¦  «         t          t          |t          ¦  «        ¦  «         t          t          |j	        t          ¦  «        ¦  «         t          |j	        j        d         dk    ¦  «         |dz  }t          t          |t          ¦  «        ¦  «         t          t          |t          ¦  «        ¦  «         t          t          |j	        t          ¦  «        ¦  «         t          |j	        j        d         dk    ¦  «         |                     g d¢¦  «         t          |j        g d¢¦  «         |j                             g d	¢¦  «         t          |j        g d	¢¦  «         t          |d
di¬¦  «        }t          |¦  «        }t          t!          |d¦  «        ¦  «         t          |j        |j        ¦  «         d S )Nr¡   r   r0   é   r£   r/   r7   )r0   r   r   r   r0   )r   r   r   r   r0   Únamer$   )r!   r!   )r   r   r   r¯   r¤   r   r_   r
   rE   rJ   r   r   r!   Ú	_set_maskÚ_maskrO   Úhasattr)r+   r$   ÚmyÚymÚzr«   Úmxsubs          r   Útest_attributepropagationz)TestSubclassing.test_attributepropagationæ   s=  € Ý•&˜‘)”) 1 # q c¨!¡e¡)Ð,Ñ,Ô,ˆÝ�( 1™+œ+Ñ&Ô&ˆÝ�q‰\Œ\ˆà�‰TˆÝ•
˜1�kÑ*Ô*Ñ+Ô+Ð+Ý•J˜q¥)Ñ,Ô,Ð,Ñ-Ô-Ð-Ý•
˜1œ7¥HÑ-Ô-Ñ.Ô.Ð.Ý�Q”W”\ 2Ñ&Ô&Ð&à�‰TˆÝ•
˜1�kÑ*Ô*Ñ+Ô+Ð+Ý•
˜1�iÑ(Ô(Ñ)Ô)Ð)Ý•
˜1œ7¥HÑ-Ô-Ñ.Ô.Ð.Ý�””˜WÔ%¨Ò)Ñ*Ô*Ð*à
ˆa‰ˆÝ•
˜2�{Ñ+Ô+Ñ,Ô,Ð,Ý•
˜2�yÑ)Ô)Ñ*Ô*Ð*Ý•
˜2œ8¥XÑ.Ô.Ñ/Ô/Ð/Ý�””˜hÔ'¨!Ò+Ñ,Ô,Ð,à
�Š�_�_�_Ñ%Ô%Ð%Ý�R”X˜˜˜Ñ/Ô/Ð/Ø
Œ
×Ò˜_˜_˜_Ñ-Ô-Ð-Ý�R”X˜˜˜Ñ/Ô/Ð/å˜ ¨ Ð-Ñ-Ô-ˆÝ˜TÑ"Ô"ˆÝ•˜˜vÑ&Ô&Ñ'Ô'Ð'Ý�U”Z ¤Ñ+Ô+Ð+Ð+Ð+r   c                 óÎ  — t          j        d¦  «        }g d¢}t          t          ||¦  «        ¦  «        }t	          ||d|i¬¦  «        }t          |d¬¦  «        }t          t          |t          ¦  «         ¦  «         t          t          |t          ¦  «        ¦  «         t          |j
        |¦  «         t          |¦  «        }t          t          |t          ¦  «         ¦  «         t          t          |t          ¦  «        ¦  «         t          |j
        |¦  «         t          |d¬¦  «        }t          t          |t          ¦  «        ¦  «         t          |j        |j        ¦  «         t          |j
        |j
        ¦  «         t          |¦  «        }t          t          |t          ¦  «        ¦  «         t          |j        |j        ¦  «         t          |j
        |¦  «         d S )Nr¡   r©   r«   )rH   r!   F)ÚsubokT)r   r   ÚlistÚziprE   r   r   r_   r
   r   rÀ   r   r!   r   )r+   r$   rª   Úxinfor«   rÅ   s         r   Útest_subclasspreservationz)TestSubclassing.test_subclasspreservation  s�  € åŒI�a‰LŒLˆØˆOˆOˆÝ•S˜˜A‘Y”Y‘”ˆÝ˜ ¨&°¨Ð8Ñ8Ô8ˆå˜T¨Ð/Ñ/Ô/ˆÝ•J˜u¥iÑ0Ô0Ð0Ñ1Ô1Ð1Ý•
˜5¥+Ñ.Ô.Ñ/Ô/Ð/Ý�U”[ !Ñ$Ô$Ð$å˜‘”ˆÝ•J˜u¥iÑ0Ô0Ð0Ñ1Ô1Ð1Ý•
˜5¥+Ñ.Ô.Ñ/Ô/Ð/Ý�U”[ !Ñ$Ô$Ð$å˜T¨Ð.Ñ.Ô.ˆÝ•
˜5¥)Ñ,Ô,Ñ-Ô-Ð-Ý�U”Z ¤Ñ+Ô+Ð+Ý�U”[ $¤*Ñ-Ô-Ð-å˜4Ñ Ô ˆÝ•
˜5¥)Ñ,Ô,Ñ-Ô-Ð-Ý�U”Z ¤Ñ+Ô+Ð+Ý�U”[ !Ñ$Ô$Ð$Ð$Ð$r   c                 ó2  — t          j        d¦  «        }t          |¦  «        }t          |g d¢¬¦  «        }t	          t          |d         t          ¦  «        ¦  «         t	          t          |d         t          ¦  «        ¦  «         t	          t          |dd…         t          ¦  «        ¦  «         t	          t          |d         t          ¦  «        ¦  «         t	          t          |d         j        t          ¦  «        ¦  «         t	          |d         t          u ¦  «         t	          t          |d         j        t          ¦  «        ¦  «         t	          t          |dd…         j        t          ¦  «        ¦  «         t	          t          |j        d         j        t          ¦  «        ¦  «         t	          |j        d         t          u ¦  «         t	          t          |j        dd…         j	        t          ¦  «        ¦  «         t          t          |j        d|d         ¦  «         t          t          |j        d|d         ¦  «         t          t          |j        t          dd¦  «        |dd…         ¦  «         |d         |d<   |dd…         |dd…<   t          t          |j        j        d|d         ¦  «         t          t          |j        j        t          dd¦  «        |dd…         ¦  «         |d         |j        d<   |dd…         |j        dd…<   d	S )
z,test that getter and setter go via baseclassr¡   ©TFTFFr£   r0   ©r0   .r½   r   ©r   .N)r   r   rm   r   r   r_   rG   r	   rW   Úbaser   rv   rh   Úslice)r+   r$   ÚxcsubÚmxcsubs       r   Útest_subclass_itemsz#TestSubclassing.test_subclass_items"  s„  € åŒI�a‰LŒLˆÝ# AÑ&Ô&ˆÝ˜eÐ*KÐ*KÐ*KÐLÑLÔLˆõ 	•
˜5 œ8Õ%8Ñ9Ô9Ñ:Ô:Ð:Ý•
˜5 œ<Õ)<Ñ=Ô=Ñ>Ô>Ð>Ý•
˜5  1 œ:Õ':Ñ;Ô;Ñ<Ô<Ð<õ 	•
˜6 !œ9Õ&9Ñ:Ô:Ñ;Ô;Ð;Ý•
˜6 %œ=Ô-Õ/BÑCÔCÑDÔDÐDÝ��q”	�VÐ#Ñ$Ô$Ð$Ý•
˜6 %œ=Ô-Õ/BÑCÔCÑDÔDÐDÝ•
˜6 ! A #œ;Ô+Õ-@ÑAÔAÑBÔBÐBõ 	•
˜6œ; qœ>Ô.Õ0CÑDÔDÑEÔEÐEÝ�”˜A”¥&Ð(Ñ)Ô)Ð)Ý•
˜6œ; q¨ sÔ+Ô0Õ2EÑFÔFÑGÔGÐGõ 	•j %Ô"3°Q¸¸!¼Ñ=Ô=Ð=å•j &Ô"4°a¸¸1¼Ñ>Ô>Ð>Ý•j &Ô"4µe¸A¸q±k´kÀ1ÀQÀqÀSÄ6ÑJÔJÐJØ˜!”Hˆˆq‰	Ø˜A˜a˜C”jˆˆq�ˆs‰å•j &¤+Ô"9¸1¸aÀ¼dÑCÔCÐCÝ•j &¤+Ô"9½5ÀÀA¹;¼;ÈÈ!ÈAÈ#ÌÑOÔOÐOØ˜qœˆŒ�A‰Ø   1 œ:ˆŒ�A�a�CÑÐÐr   c                 ó¾  — t          j        d¦  «        }t          |¦  «        }t          |¦  «        }t	          t          |d         j        t          ¦  «        ¦  «         t	          t          |d         j        t          ¦  «        ¦  «         t	          t          |d         t          ¦  «        ¦  «         t	          t          |d         t          ¦  «        ¦  «         d S )Nr¡   rÏ   rÐ   r0   r   )r   r   rm   r   r   r_   rG   )r+   r$   rÓ   Úmxcsub_nomasks       r   Útest_subclass_nomask_itemsz*TestSubclassing.test_subclass_nomask_itemsG  s­   € ÝŒI�a‰LŒLˆÝ# AÑ&Ô&ˆÝ$ UÑ+Ô+ˆå•
˜=¨Ô/Ô4Õ6IÑJÔJÑKÔKÐKÝ•
˜=¨Ô/Ô4Õ6IÑJÔJÑKÔKÐKå•
˜=¨Ô+Õ-@ÑAÔAÑBÔBÐBÝ•
˜=¨Ô+Õ-@ÑAÔAÑBÔBÐBÐBÐBr   c                 ó(  — t          j        d¦  «        }t          |g d¢¬¦  «        }t          t	          |¦  «        d¦  «         t          |¦  «        }t          |g d¢¬¦  «        }t          t	          |¦  «        dt
          j        › d�¦  «         dS )zOtest that repr uses the name of the subclass
        and 'array' for np.ndarrayr¡   rÎ   r£   r   Úmasked_z(data=[--, 1, --, 3, 4]N)r   r   r   r   Úreprr   r9   )r+   r$   r¦   r«   rÅ   s        r   Útest_subclass_reprz"TestSubclassing.test_subclass_reprR  sž   € õ ŒI�a‰LŒLˆÝ˜!Ð"CÐ"CÐ"CÐDÑDÔDˆÝ�$˜r™(œ( NÑ3Ô3Ð3Ý˜‰{Œ{ˆÝ˜TÐ(IÐ(IÐ(IÐJÑJÔJˆÝ�$˜u™+œ+Ø@•hÔ'Ð@Ð@Ð@ñ	Bô 	Bð 	Bð 	Bð 	Br   c                 óŠ  — t          j        d¦  «        }t          |¦  «        }t          |g d¢¬¦  «        }t	          t          |¦  «        d¦  «         t          |¦  «        }t          t          |j	        dt           j
        j        j        ¦  «         t          |g d¢¬¦  «        }t	          t          |¦  «        d¦  «         dS )z7test str with subclass that has overridden str, setitemr¡   rÎ   r£   z[-- 1 -- 3 4]r   z myprefix [-- 1 -- 3 4] mypostfixN)r   r   r   r   r   Ústrrm   r   rv   rh   ÚmaÚcoreÚmasked_print_option)r+   r$   r«   rÅ   rÓ   rÔ   s         r   Útest_subclass_strz!TestSubclassing.test_subclass_str]  s³   € õ ŒI�a‰LŒLˆÝ˜‰{Œ{ˆÝ˜TÐ(IÐ(IÐ(IÐJÑJÔJˆÝ•S˜‘Z”Z Ñ1Ô1Ð1å# AÑ&Ô&ˆÝ•j %Ô"3°QÝ”e”jÔ4ñ	6ô 	6ð 	6å˜eÐ*KÐ*KÐ*KÐLÑLÔLˆÝ•S˜‘[”[Ð"DÑEÔEÐEÐEÐEr   c                 óT  — t          dg d¢¬¦  «        }t          g d¢¬¦  «        }t          j        ||¦  «        }t          d|j        v ¦  «         t          |j        d         dk    ¦  «         ||z
  }t          d|j        v ¦  «         t          |j        d         dk    ¦  «         d S )NÚtest)r0   é   é   r½   r¡   é   )rG   )r   r0   rå   ræ   r½   r¡   r!   )r?   r   Úsubtractr   rA   )r+   Úarr1Úarr2Údiff1Údiff2s        r   Ú$test_pure_subclass_info_preservationz4TestSubclassing.test_pure_subclass_info_preservationk  s¬   € õ ˜f¨=¨=¨=Ð9Ñ9Ô9ˆÝ = = =Ð1Ñ1Ô1ˆÝ”˜D $Ñ'Ô'ˆÝ�˜%œ.Ð(Ñ)Ô)Ð)Ý�”˜vÔ&¨&Ò0Ñ1Ô1Ð1Ø�t‘ˆÝ�˜%œ.Ð(Ñ)Ô)Ð)Ý�”˜vÔ&¨&Ò0Ñ1Ô1Ð1Ð1Ð1r   N)r9   r:   r;   r§   r­   r°   rµ   r¸   r»   rÆ   rÌ   rÕ   rØ   rÜ   râ   rí   rQ   r   r   rŸ   rŸ   ³   sâ   € € € € € ðð ð ð
3ð 3ð 3ð0ð 0ð 0ð
,ð ,ð ,ð5ð 5ð 5ð7ð 7ð 7ð,ð ,ð ,ðB%ð %ð %ð6#&ð #&ð #&ðJ	Cð 	Cð 	Cð	Bð 	Bð 	BðFð Fð Fð
2ð 
2ð 
2ð 
2ð 
2r   rŸ   c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚArrayNoInheritancez6Quantity-like class that does not inherit from ndarrayc                 ó"   — || _         || _        d S r   )Ú	magnitudeÚunits)r+   rG   rò   s      r   rY   zArrayNoInheritance.__init__z  s   € ØˆŒØˆŒ
ˆ
ˆ
r   c                 ó,   — t          | j        |¦  «        S r   )r*   rñ   )r+   Úattrs     r   Ú__getattr__zArrayNoInheritance.__getattr__~  s   € Ý�t”~ tÑ,Ô,Ð,r   N)r9   r:   r;   rC   rY   rõ   rQ   r   r   rï   rï   x  s8   € € € € € Ø@Ð@ðð ð ð-ð -ð -ð -ð -r   rï   c                  ó�  — t           j                             g d¢g d¢¬¦  «        } t          | d¦  «        }t           j                             |¦  «        }t	          | j        |j        ¦  «         t	          | j        |j        ¦  «         g d¢| _        t	          | j        |j        ¦  «         t          |j        ¦  «         t           j                             |d¬¦  «        }t	          | j        |j        ¦  «         t	          | j        |j        ¦  «         g d¢| _        t	          g d¢|j        ¦  «         t          |j         ¦  «         t           j                             |d¬	¦  «        }t	          | j        |j        ¦  «         t	          | j        g d¢¦  «         t          |j         ¦  «         t          |j         ¦  «         d S )
N)r0   rå   ræ   )TFTr£   Úmeters)TFFT)r    F)Ú	keep_mask)	r   rß   r   rï   r   rG   rH   r   Ú
sharedmask)Údata_maskedÚdata_masked_unitsÚ	new_arrays      r   Útest_array_no_inheritancerý   ‚  s�  € Ý”%—+’+˜i˜i˜iÐ.AÐ.AÐ.A�+ÑBÔB€KÝ*¨;¸ÑAÔAÐõ ”—’Ð-Ñ.Ô.€IÝ�Ô! 9¤>Ñ2Ô2Ð2Ý�Ô! 9¤>Ñ2Ô2Ð2à+Ð+Ð+€KÔÝ�Ô! 9¤>Ñ2Ô2Ð2ÝˆIÔ Ñ!Ô!Ð!õ ”—’Ð-°D�Ñ9Ô9€IÝ�Ô! 9¤>Ñ2Ô2Ð2Ý�Ô! 9¤>Ñ2Ô2Ð2à*Ð*Ð*€KÔÝÐ%Ð%Ð% y¤~Ñ6Ô6Ð6Ý�	Ô$Ð$Ñ%Ô%Ð%õ ”—’Ð-¸�Ñ?Ô?€IÝ�Ô! 9¤>Ñ2Ô2Ð2å�Ô!Ð#6Ð#6Ð#6Ñ7Ô7Ð7å�	”ÐÑÔÐÝ�	Ô$Ð$Ñ%Ô%Ð%Ð%Ð%r   c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestClassWrappingc                 ó€   — t           j                             g d¢g d¢¬¦  «        }t          |¦  «        }||f| _        d S )N©r0   ræ   r¡   ©FTFr£   )r   rß   r   r‡   rG   ©r+   rª   Úwms      r   r§   zTestClassWrapping.setup_method¥  sA   € ÝŒE×Ò˜y˜y˜yÐ/CÐ/CÐ/CÐÑDÔDˆÝ˜!‰_Œ_ˆØ˜�GˆŒ	ˆ	ˆ	r   c                 óÞ   — | j         \  }}t          j        d¬¦  «        5  t          t	          t          j        |¦  «        t          ¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r²   )rG   r   r´   r   r_   r   r‡   r  s      r   rµ   z.TestClassWrapping.test_masked_unary_operationsª  s¤   € à”)‰ˆˆBÝŒ[ Ð)Ñ)Ô)ð 	:ð 	:Ý•J�rœv b™zœz­<Ñ8Ô8Ñ9Ô9Ð9ð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:ð 	:ð 	:s    5A"Á"A&Á)A&c                 ó0  — | j         \  }}t          t          t          j        ||¦  «        t
          ¦  «        ¦  «         t          t          t          j        ||¦  «        t
          ¦  «        ¦  «         t          t          t          j        ||¦  «        t
          ¦  «        ¦  «         t          t          j        ||¦  «        ||z   ¦  «         t          t          t          j        ||¦  «        t
          ¦  «        ¦  «         t          t          t          j        ||¦  «        t
          ¦  «        ¦  «         t          t          t          j        ||¦  «        t
          ¦  «        ¦  «         t          t          t          j        ||¦  «        t
          ¦  «        ¦  «         t          t          j        ||¦  «        |z  t          j        ||¦  «        |z  ¦  «         t          j	        ||g¦  «        }t          t          t          j        ||¦  «        t
          ¦  «        ¦  «         t          t          t          j        ||¦  «        t
          ¦  «        ¦  «         t          t          j        ||¦  «        t          j        ||¦  «        ¦  «         d S r   )
rG   r   r_   r   r   r‡   r   r   r   Ústack)r+   rª   r  Úm2s       r   r¸   z/TestClassWrapping.test_masked_binary_operations°  sÖ  € à”)‰ˆˆBå•
�2œ6 " b™>œ>­<Ñ8Ô8Ñ9Ô9Ð9Ý•
�2œ6 ! R™=œ=­,Ñ7Ô7Ñ8Ô8Ð8Ý•
�2œ6 " a™=œ=­,Ñ7Ô7Ñ8Ô8Ð8å•R”V˜A˜r‘]”] A¨¡FÑ+Ô+Ð+Ý•
�2œ8 A r™?œ?­LÑ9Ô9Ñ:Ô:Ð:Ý•
�2œ8 B¨™?œ?­LÑ9Ô9Ñ:Ô:Ð:å•
�2œ9 R¨Ñ+Ô+­\Ñ:Ô:Ñ;Ô;Ð;Ý•
�2œ9 Q¨Ñ+Ô+­\Ñ:Ô:Ñ;Ô;Ð;Ý•R”Y˜r 1Ñ%Ô%¨Ñ)­2¬9°Q¸©?¬?¸RÑ+?Ñ@Ô@Ð@åŒX�q˜!�fÑÔˆÝ•
�2œ9 R¨Ñ,Ô,­lÑ;Ô;Ñ<Ô<Ð<Ý•
�2œ9 R¨Ñ,Ô,­lÑ;Ô;Ñ<Ô<Ð<Ý•R”Y˜r 2Ñ&Ô&­¬	°"°bÑ(9Ô(9Ñ:Ô:Ð:Ð:Ð:r   c                 óú   — t          ¦   «         }t          t          |j        dd¦  «         t          j                             g d¢g d¢¬¦  «        }t          |¦  «        }t          t          |j        dd¦  «         d S )NÚnot_a_real_attrr0   r  r  r£   Únot_an_attrrå   )r   r   ÚAttributeErrorÚ__setattr__r   rß   r   r‡   )r+   Úmixinrª   r  s       r   Útest_mixins_have_slotsz(TestClassWrapping.test_mixins_have_slotsÅ  sq   € Ý%Ñ'Ô'ˆå•n eÔ&7Ð9JÈAÑNÔNÐNåŒE×Ò˜y˜y˜yÐ/CÐ/CÐ/CÐÑDÔDˆÝ˜!‰_Œ_ˆÝ•n b¤n°mÀQÑGÔGÐGÐGÐGr   N)r9   r:   r;   r§   rµ   r¸   r  rQ   r   r   rÿ   rÿ   ¢  sU   € € € € € ðð ð ð
:ð :ð :ð;ð ;ð ;ð*Hð Hð Hð Hð Hr   rÿ   )%rC   Únumpyr   Únumpy.lib.mixinsr   Únumpy.testingr   r   Únumpy.ma.testutilsr   Únumpy.ma.corer   r   r	   r
   r   r   r   r   r   r   r   r   r   rV   r   r¯   r?   rE   r¤   rS   rm   r‡   rŸ   rï   rý   rÿ   rQ   r   r   ú<module>r     s¯  ððð ð Ð Ð Ð Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø +Ð +Ð +Ð +Ð +Ð +ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð  ð  ðð ð ð ð ˆrŒzñ ô ð ð0 €ðð ð ð ð �[ñ ô ð ðð ð ð ð �˜+ñ ô ð ð €	ðKð Kð Kð Kð Kñ Kô Kð Kð8(ð (ð (ð (ð (˜(ñ (ô (ð (ðV"ð "ð "ð "ð "Ð(ñ "ô "ð "ð8B2ð B2ð B2ð B2ð B2ñ B2ô B2ð B2ðJ-ð -ð -ð -ð -ñ -ô -ð -ð&ð &ð &ð@*Hð *Hð *Hð *Hð *Hñ *Hô *Hð *Hð *Hð *Hr   