ó
    �œ‘hýC  ã                   óX  • S r SSKrSSKJr  SSKJrJrJrJ	r	J
r
JrJrJrJrJrJrJr  SSKJr  SSKJrJr  S r " S S	\R0                  5      r\r " S
 S\5      r " S S\\5      r\r " S S5      r " S S\5      r " S S\5      r  " S S5      r! " S S5      r"S r# " S S5      r$g)zoTests suite for MaskedArray & subclassing.

:author: Pierre Gerard-Marchant
:contact: pierregm_at_uga_dot_edu

é    N)ÚNDArrayOperatorsMixin)ÚMaskedArrayÚaddÚarangeÚarrayÚ
asanyarrayÚasarrayÚdivideÚhypotÚlogÚmaskedÚmasked_arrayÚnomask)Úassert_equal)Úassert_Úassert_raisesc                 ó4   • [        U S [        U5       U5        g ©N)r   Úlen)ÚaÚbs     ÚcC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\numpy/ma/tests/test_subclassing.pyÚassert_startswithr      s   € ä��7”C˜“F�˜QÕó    c                   óL   ^ • \ rS rSr0 4S jrU 4S jrU 4S jrU 4S jrSrU =r	$ )ÚSubArrayé    c                 óz   • [         R                  " U5      R                  U 5      nUR                  5       Ul        U$ r   )Únpr   ÚviewÚcopyÚinfo)ÚclsÚarrr"   Úxs       r   Ú__new__ÚSubArray.__new__#   s-   € Ü�MŠM˜#Ó×#Ñ# CÓ(ˆØ—‘“ˆŒØˆr   c                 ód   >• [         TU ]  U5        [        US0 5      R                  5       U l        g ©Nr"   )ÚsuperÚ__array_finalize__Úgetattrr!   r"   )ÚselfÚobjÚ	__class__s     €r   r+   ÚSubArray.__array_finalize__(   s)   ø€ Ü‰Ñ" 3Ô'Ü˜C ¨Ó,×1Ñ1Ó3ˆ�	r   c                 ó~   >• [         TU ]  U5      nUR                  R                  SS5      S-   UR                  S'   U$ )NÚaddedr   é   )r*   Ú__add__r"   Úget©r-   ÚotherÚresultr/   s      €r   r4   ÚSubArray.__add__,   s8   ø€ Ü‘‘ Ó'ˆØ%Ÿ{™{Ÿ™¨w¸Ó:¸QÑ>ˆ�‰�GÑØˆr   c                 ó~   >• [         TU ]  U5      nUR                  R                  SS5      S-   UR                  S'   U$ )NÚiaddedr   r3   )r*   Ú__iadd__r"   r5   r6   s      €r   r<   ÚSubArray.__iadd__1   s9   ø€ Ü‘Ñ! %Ó(ˆØ &§¡§¡°¸!Ó <¸qÑ @ˆ�‰�HÑØˆr   ©r"   )
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r&   r+   r4   r<   Ú__static_attributes__Ú__classcell__©r/   s   @r   r   r       s!   ø† ð  "ô õ
4õ÷
ó r   r   c                   ó0   ^ • \ rS rSrSrSU 4S jjrSrU =r$ )ÚSubMaskedArrayé:   z<Pure subclass of MaskedArray, keeping some info on subclass.c                 óF   >• [         TU ]  " U 40 UD6nXR                  S'   U$ r)   )r*   r&   Ú_optinfo)r#   r"   Úkwargsr.   r/   s       €r   r&   ÚSubMaskedArray.__new__<   s'   ø€ Ü‰gŠo˜cÑ, VÑ,ˆØ#�‰�VÑØˆ
r   © r   )r?   r@   rA   rB   Ú__doc__r&   rC   rD   rE   s   @r   rG   rG   :   s   ø† ÙF÷õ r   rG   c                   ó2   • \ rS rSr0 \4S jr\S 5       rSrg)Ú	MSubArrayéB   c                 óh   • [        X5      n[        R                  " XUS9nUR                  Ul        U$ )N)ÚdataÚmask)r   r   r&   r"   )r#   rS   r"   rT   ÚsubarrÚ_datas         r   r&   ÚMSubArray.__new__D   s.   € Ü˜$Ó%ˆÜ×#Ò# C¸4Ñ@ˆØ—[‘[ˆŒ
Øˆr   c                 ó>   • U R                  [        5      nSUl        U$ ©NF)r    r   Ú_sharedmask)r-   Ú_views     r   Ú_seriesÚMSubArray._seriesJ   s   € à—	‘	œ+Ó&ˆØ!ˆÔØˆr   rM   N)	r?   r@   rA   rB   r   r&   Úpropertyr\   rC   rM   r   r   rP   rP   B   s    † à "¨ô ð ñó ór   rP   c                   ó6   • \ rS rSrSrS rS rS rS rS r	Sr
g	)
ÚCSAIteratoréY   zË
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                 ól   • Xl         UR                  [        R                  5      R                  U l        g r   )Ú	_originalr    r   ÚndarrayÚflatÚ	_dataiter)r-   r   s     r   Ú__init__ÚCSAIterator.__init__`   s!   € ØŒØŸ™¤§
¡
Ó+×0Ñ0ˆ�r   c                 ó   • U $ r   rM   ©r-   s    r   Ú__iter__ÚCSAIterator.__iter__d   s   € Øˆr   c                 óâ   • U R                   R                  U5      n[        U[        R                  5      (       d  UR                  5       nUR                  [        U R                  5      5      nU$ r   )	rf   Ú__getitem__Ú
isinstancer   rd   Ú	__array__r    Útyperc   )r-   ÚindxÚouts      r   rn   ÚCSAIterator.__getitem__g   sN   € Ø�n‰n×(Ñ(¨Ó.ˆÜ˜#œrŸz™z×*Ñ*Ø—-‘-“/ˆCØ�h‰h”t˜DŸN™NÓ+Ó,ˆØˆ
r   c                 óT   • U R                   R                  U5      U R                  U'   g r   )rc   Ú_validate_inputrf   )r-   ÚindexÚvalues      r   Ú__setitem__ÚCSAIterator.__setitem__n   s   € Ø $§¡× >Ñ >¸uÓ Eˆ�‰�uÒr   c                 óŒ   • [        U R                  5      R                  5       R                  [	        U R
                  5      5      $ r   )Únextrf   rp   r    rq   rc   rj   s    r   Ú__next__ÚCSAIterator.__next__q   s.   € Ü�D—N‘NÓ#×-Ñ-Ó/×4Ñ4´T¸$¿.¹.Ó5IÓJÐJr   )rf   rc   N)r?   r@   rA   rB   rN   rg   rk   rn   ry   r}   rC   rM   r   r   r`   r`   Y   s"   † ñò1òòòFõKr   r`   c                   óŠ   ^ • \ rS rSrS rS rS rU 4S jrU 4S jr\	S 5       r
\
R                  S 5       r
SU 4S	 jjrS
rU =r$ )ÚComplicatedSubArrayéu   c                 ó4   • SU R                  [        5       S3$ )Nz	myprefix z
 mypostfix)r    r   rj   s    r   Ú__str__ÚComplicatedSubArray.__str__w   s   € Ø˜4Ÿ9™9¤XÓ.Ð/¨zÐ:Ð:r   c                 ó<   • SU R                   R                   SU  S3$ )NÚ<Ú Ú>)r/   r?   rj   s    r   Ú__repr__ÚComplicatedSubArray.__repr__z   s"   € à�4—>‘>×*Ñ*Ð+¨1¨T¨F°!Ð4Ð4r   c                 óF   • [        U[        5      (       d  [        S5      eU$ )Nz!Can only set to MySubArray values)ro   r€   Ú
ValueError)r-   rx   s     r   rv   Ú#ComplicatedSubArray._validate_input~   s!   € Ü˜%Ô!4×5Ñ5ÜÐ@ÓAÐAØˆr   c                 óB   >• [         TU ]  XR                  U5      5        g r   )r*   ry   rv   ©r-   Úitemrx   r/   s      €r   ry   ÚComplicatedSubArray.__setitem__ƒ   s   ø€ ô 	‰Ñ˜D×"6Ñ"6°uÓ"=Õ>r   c                 óª   >• [         TU ]  U5      n[        U[        R                  5      (       d#  UR                  5       R                  [        5      nU$ r   )r*   rn   ro   r   rd   rp   r    r€   r�   s      €r   rn   ÚComplicatedSubArray.__getitem__ˆ   s@   ø€ ä‘Ñ# DÓ)ˆÜ˜%¤§¡×,Ñ,Ø—O‘OÓ%×*Ñ*Ô+>Ó?ˆEØˆr   c                 ó   • [        U 5      $ r   )r`   rj   s    r   re   ÚComplicatedSubArray.flat�   s   € ä˜4Ó Ð r   c                 ó,   • U R                  5       nXS S & g r   )Úravel)r-   rx   Úys      r   re   r•   “   s   € à�J‰J‹LˆØ‰!‰r   c                 ó²   >• [         TU ]  XU5      nUbB  US   [        R                  L a,  UR                  R                  SS5      S-   UR                  S'   U$ )Nr   Ú
multipliedr3   )r*   Ú__array_wrap__r   Úmultiplyr"   r5   )r-   r.   ÚcontextÚreturn_scalarr/   s       €r   r›   Ú"ComplicatedSubArray.__array_wrap__˜   sP   ø€ Ü‰gÑ$ S°=ÓAˆØÑ 7¨1¡:´·±Ò#<Ø%(§X¡X§\¡\°,ÀÓ%BÀQÑ%FˆC�H‰H�\Ñ"àˆ
r   rM   rY   )r?   r@   rA   rB   rƒ   r‰   rv   ry   rn   r^   re   Úsetterr›   rC   rD   rE   s   @r   r€   r€   u   sR   ø† ò;ò5òõ
?õ
ð ñ!ó ð!ð 
‡[�[ñó ð÷õ r   r€   c                   ó<   • \ rS rSrSrSrSrS rS rS
S jr	S	 r
Srg)ÚWrappedArrayé    z�
Wrapping a MaskedArray rather than subclassing to test that
ufunc deferrals are commutative.
See: https://github.com/numpy/numpy/issues/15200)
©Ú_arrayÚattrsé   c                 ó   • Xl         X l        g r   r¤   )r-   r   r¦   s      r   rg   ÚWrappedArray.__init__©   s   € ØŒØ�
r   c                 óh   • U R                   R                   SU R                   SU R                   S3$ )Nz(
Ú
z
))r/   r?   r¥   r¦   rj   s    r   r‰   ÚWrappedArray.__repr__­   s.   € Ø—.‘.×)Ñ)Ð*¨#¨d¯k©k¨]¸"¸T¿Z¹Z¸LÈÐLÐLr   Nc                 óB   • [         R                  " U R                  5      $ r   )r   r	   r¥   )r-   Údtyper!   s      r   rp   ÚWrappedArray.__array__°   s   € Ü�zŠz˜$Ÿ+™+Ó&Ð&r   c                 óÚ   • US:X  a[  U Vs/ s H+  n[        XPR                  5      (       a  UR                  OUPM-     nnU R                  " U" U0 UD640 U R                  D6$ [        $ s  snf )NÚ__call__)ro   r/   r¥   r¦   ÚNotImplemented)r-   ÚufuncÚmethodÚinputsrK   Úargs         r   Ú__array_ufunc__ÚWrappedArray.__array_ufunc__³   sn   € Ø�ZÓá!'ó)Ú!'˜#ô %/¨s·N±N×$CÑ$C�c—j’jÈÒLÙ!'ð ð )à—>’>¡%¨Ð":°6Ñ":ÑI¸d¿j¹jÑIÐIä!Ð!ùò	)s   ‹2A()NN)r?   r@   rA   rB   rN   Ú	__slots__Ú__array_priority__rg   r‰   rp   r·   rC   rM   r   r   r¢   r¢       s)   † ñð
 $€IØÐòòMô'õ"r   r¢   c                   ób   • \ 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)ÚTestSubclassingé¼   c                 óV   • [         R                  " SSS9n[        U/ SQS9nX4U l        g )Né   Úfloat)r®   )r   r3   r   r   r   ©rT   )r   r   Ú	msubarrayrS   ©r-   r%   Úmxs      r   Úsetup_methodÚTestSubclassing.setup_method¿   s'   € Ü�IŠI�a˜wÑ'ˆÜ�qšÑ/ˆØ�Gˆ�	r   c                 ó  • [         R                  " S5      n/ SQn[        U5      n[        X2S9n[	        [        U[        5      5        [        UR                  U5        [	        [        UR                  [        5      5        g )Nr¿   ©r   r   r3   r   r   rÁ   )	r   r   r   r   r   ro   r   r   rV   )r-   r%   ÚmÚxsubÚxmsubs        r   Útest_data_subclassingÚ%TestSubclassing.test_data_subclassingÄ   sW   € ä�IŠI�a‹LˆÚˆÜ˜‹{ˆÜ˜TÑ*ˆÜ”
˜5¤+Ó.Ô/Ü�U—[‘[ $Ô'Ü”
˜5Ÿ;™;¬Ó1Õ2r   c                 óf   • U R                   u  p[        [        UR                  [        5      5        g r   )rS   r   ro   rV   ÚsubarrayrÃ   s      r   Útest_maskedarray_subclassingÚ,TestSubclassing.test_maskedarray_subclassingÎ   s    € à—)‘)‰ˆÜ”
˜2Ÿ8™8¤XÓ.Õ/r   c                 ó  • U R                   u  p[        R                  " SS9   [        [	        [        U5      [        5      5        [        [        U5      [        R
                  " U5      5        S S S 5        g ! , (       d  f       g = f©NÚignore)r
   )rS   r   Úerrstater   ro   r   rÂ   r   rÃ   s      r   Útest_masked_unary_operationsÚ,TestSubclassing.test_masked_unary_operationsÓ   sN   € à—)‘)‰ˆÜ�[Š[ Ó)Ü”Jœs 2›w¬	Ó2Ô3Üœ˜Q›¤§¢¨£Ô+÷ *×)Ö)ús   £AA8Á8
Bc                 ó  • U R                   u  p[        [        [        X"5      [        5      5        [        [        [        X!5      [        5      5        [        [        X!5      X!-   5        [        [        [        X"5      R                  [        5      5        [        [        [        R                  " X"5      [        5      5        [        [        [        X"5      [        5      5        [        [        [        X!5      [        5      5        g r   )
rS   r   ro   r   rÂ   r   rV   rÏ   Úouterr   rÃ   s      r   Útest_masked_binary_operationsÚ-TestSubclassing.test_masked_binary_operationsÚ   sš   € à—)‘)‰ˆä”
œ3˜r›;¬	Ó2Ô3Ü”
œ3˜r›:¤yÓ1Ô2ä”S˜“Z ¡Ô(Ü”
œ3˜r›;×,Ñ,¬hÓ7Ô8Ü”
œ3Ÿ9š9 RÓ,¬iÓ8Ô9Ü”
œ5 ›=¬)Ó4Ô5Ü”
œ5 ›<¬Ó3Õ4r   c                 ó<  • U R                   u  p[        UR                   R                  5       UR                  S9n[	        [        [        X"5      [        5      5        [	        [        [        X!5      [        5      5        [        [        X"5      [        X35      5        g )NrÁ   )	rS   r   rp   rT   r   ro   r
   rÂ   r   )r-   r%   rÄ   Úxmxs       r   Útest_masked_binary_operations2Ú.TestSubclassing.test_masked_binary_operations2ç   sc   € à—)‘)‰ˆÜ˜2Ÿ7™7×,Ñ,Ó.°R·W±WÑ=ˆÜ”
œ6 "›>¬9Ó5Ô6Ü”
œ6 "›=¬)Ó4Ô5Ü”V˜B“^¤V¨CÓ%5Õ6r   c                 óÊ  • [        [        S5      S/S/S-  -   S9n[        [        U5      5      n[	        U5      nUS-   n[        [        U[        5      5        [        [        U[        5      (       + 5        [        [        UR                  [        5      5        [        UR                  R                  0 5        US-   n[        [        U[        5      5        [        [        U[        5      5        [        [        UR                  [        5      5        [        UR                  R                  S   S:„  5        US-  n[        [        U[        5      5        [        [        U[        5      5        [        [        UR                  [        5      5        [        UR                  R                  S   S:„  5        UR                  / SQ5        [        UR                  / SQ5        UR                  R                  / S	Q5        [        UR                  / S	Q5        [        US
S0S9n[        U5      n[        [!        US5      5        [        UR                  UR                  5        g )Nr¿   r   r3   é   rÁ   r2   r;   )r3   r   r   r   r3   )r   r   r   r   r3   Únamer%   r>   r"   )r   r   r   rÏ   rÂ   r   ro   r   rP   rV   r   r   r"   Ú	_set_maskÚ_maskr\   Úhasattr)r-   r%   ÚmyÚymÚzrÊ   Úmxsubs          r   Útest_attributepropagationÚ)TestSubclassing.test_attributepropagationï   s¡  € Ü”&˜“) 1 #¨¨¨a©¡-Ñ0ˆÜœ( 1›+Ó&ˆÜ�q‹\ˆà�!‰VˆÜ”
˜1œkÓ*Ô+Ü”J˜q¤)Ó,Ô,Ô-Ü”
˜1Ÿ7™7¤HÓ-Ô.Ü�Q—W‘W—\‘\ 2Ô&à�!‰VˆÜ”
˜1œkÓ*Ô+Ü”
˜1œiÓ(Ô)Ü”
˜1Ÿ7™7¤HÓ-Ô.Ü�—‘—‘˜WÑ%¨Ñ)Ô*à
ˆa‰ˆÜ”
˜2œ{Ó+Ô,Ü”
˜2œyÓ)Ô*Ü”
˜2Ÿ8™8¤XÓ.Ô/Ü�—‘—‘˜hÑ'¨!Ñ+Ô,à
�‰’_Ô%Ü�R—X‘XšÔ/Ø
�
‰
×Ñš_Ô-Ü�R—X‘XšÔ/ä˜ ¨ Ñ.ˆÜ˜TÓ"ˆÜ”˜˜vÓ&Ô'Ü�U—Z‘Z §¡Õ+r   c                 óP  • [         R                  " S5      n/ SQn[        [        X5      5      n[	        XSU0S9n[        USS9n[        [        U[        5      (       + 5        [        [        U[        5      5        [        UR                  U5        [        U5      n[        [        U[        5      (       + 5        [        [        U[        5      5        [        UR                  U5        [        USS9n[        [        U[        5      5        [        UR                  UR                  5        [        UR                  UR                  5        [        U5      n[        [        U[        5      5        [        UR                  UR                  5        [        UR                  U5        g )Nr¿   rÈ   rÊ   )rT   r"   F)ÚsubokT)r   r   ÚlistÚziprP   r   r   ro   r   r   rä   r	   r"   r   )r-   r%   rÉ   ÚxinforÊ   ré   s         r   Útest_subclasspreservationÚ)TestSubclassing.test_subclasspreservation  s  € ä�IŠI�a‹LˆÚˆÜ”S˜“Y“ˆÜ˜¨&°%¨Ñ9ˆä˜T¨Ñ/ˆÜ”J˜u¤iÓ0Ô0Ô1Ü”
˜5¤+Ó.Ô/Ü�U—[‘[ !Ô$ä˜“ˆÜ”J˜u¤iÓ0Ô0Ô1Ü”
˜5¤+Ó.Ô/Ü�U—[‘[ !Ô$ä˜T¨Ñ.ˆÜ”
˜5¤)Ó,Ô-Ü�U—Z‘Z §¡Ô+Ü�U—[‘[ $§*¡*Ô-ä˜4Ó ˆÜ”
˜5¤)Ó,Ô-Ü�U—Z‘Z §¡Ô+Ü�U—[‘[ !Õ$r   c                 ó4  • [         R                  " S5      n[        U5      n[        U/ SQS9n[	        [        US   [        5      5        [	        [        US   [        5      5        [	        [        USS [        5      5        [	        [        US   [        5      5        [	        [        US   R                  [        5      5        [	        US   [        L 5        [	        [        US   R                  [        5      5        [	        [        USS R                  [        5      5        [	        [        UR                  S   R                  [        5      5        [	        UR                  S   [        L 5        [	        [        UR                  SS R                  [        5      5        [        [        UR                  SUS   5        [        [        UR                  SUS   5        [        [        UR                  [        SS5      USS 5        US   US'   USS USS& [        [        UR                  R                  SUS   5        [        [        UR                  R                  [        SS5      USS 5        US   UR                  S'   USS UR                  SS& g	)
z,test that getter and setter go via baseclassr¿   ©TFTFFrÁ   r3   ©r3   .rá   r   ©r   .N)r   r   r€   r   r   ro   rS   r   re   Úbaser   rŒ   ry   Úslice)r-   r%   ÚxcsubÚmxcsubs       r   Útest_subclass_itemsÚ#TestSubclassing.test_subclass_items+  s
  € ä�IŠI�a‹LˆÜ# AÓ&ˆÜ˜eÒ*KÑLˆô 	”
˜5 ™8Ô%8Ó9Ô:Ü”
˜5 ™=Ô*=Ó>Ô?Ü”
˜5  1˜:Ô':Ó;Ô<ô 	”
˜6 !™9Ô&9Ó:Ô;Ü”
˜6 &™>×.Ñ.Ô0CÓDÔEÜ��q‘	œVÐ#Ô$Ü”
˜6 &™>×.Ñ.Ô0CÓDÔEÜ”
˜6 ! A˜;×+Ñ+Ô-@ÓAÔBô 	”
˜6Ÿ;™; q™>×.Ñ.Ô0CÓDÔEÜ�—‘˜A‘¤&Ð(Ô)Ü”
˜6Ÿ;™; q¨Ð+×0Ñ0Ô2EÓFÔGô 	”j %×"3Ñ"3°Q¸¸!¹Ô=ä”j &×"4Ñ"4°a¸¸1¹Ô>Ü”j &×"4Ñ"4´e¸A¸q³kÀ1ÀQÀqÀ6ÔJØ˜!‘Hˆˆq‰	Ø˜A˜a�jˆˆq�ˆä”j &§+¡+×"9Ñ"9¸1¸aÀ¹dÔCÜ”j &§+¡+×"9Ñ"9¼5ÀÀA»;ÈÈ!ÈAÈÔOØ˜q™ˆ�‰�A‰Ø   1˜:ˆ�‰�A�aÑr   c                 ód  • [         R                  " S5      n[        U5      n[        U5      n[	        [        US   R                  [        5      5        [	        [        US   R                  [        5      5        [	        [        US   [        5      5        [	        [        US   [        5      5        g )Nr¿   rõ   rö   r3   r   )r   r   r€   r   r   ro   rS   )r-   r%   rù   Úmxcsub_nomasks       r   Útest_subclass_nomask_itemsÚ*TestSubclassing.test_subclass_nomask_itemsP  sƒ   € Ü�IŠI�a‹LˆÜ# AÓ&ˆÜ$ UÓ+ˆä”
˜=¨Ñ0×5Ñ5Ô7JÓKÔLÜ”
˜=¨Ñ0×5Ñ5Ô7JÓKÔLä”
˜=¨Ñ+Ô-@ÓAÔBÜ”
˜=¨Ñ+Ô-@ÓAÕBr   c                 óî   • [         R                  " S5      n[        U/ SQS9n[        [	        U5      S5        [        U5      n[        U/ SQS9n[        [	        U5      S[
        R                   S35        g)zGtest 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   r?   )r-   r%   rÄ   rÊ   ré   s        r   Útest_subclass_reprÚ"TestSubclassing.test_subclass_repr[  se   € ô �IŠI�a‹LˆÜ˜!Ò"CÑDˆÜœ$˜r›( NÔ3Ü˜‹{ˆÜ˜TÒ(IÑJˆÜœ$˜u›+Ø”h×'Ñ'Ð(Ð(?Ð@õ	Br   c                 ó\  • [         R                  " S5      n[        U5      n[        U/ SQS9n[	        [        U5      S5        [        U5      n[        [        UR                  S[         R                  R                  R                  5        [        U/ SQS9n[	        [        U5      S5        g)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   Ústrr€   r   rŒ   ry   ÚmaÚcoreÚmasked_print_option)r-   r%   rÊ   ré   rù   rú   s         r   Útest_subclass_strÚ!TestSubclassing.test_subclass_strf  s€   € ô �IŠI�a‹LˆÜ˜‹{ˆÜ˜TÒ(IÑJˆÜ”S˜“Z Ô1ä# AÓ&ˆÜ”j %×"3Ñ"3°QÜ—e‘e—j‘j×4Ñ4ô	6ä˜eÒ*KÑLˆÜ”S˜“[Ð"DÕEr   c                 ó2  • [        S/ SQS9n[        / SQS9n[        R                  " X5      n[        SUR                  ;   5        [        UR                  S   S:H  5        X-
  n[        SUR                  ;   5        [        UR                  S   S:H  5        g )NÚtest)r3   é   é   rá   r¿   é   ©rS   )r   r3   r  r  rá   r¿   r"   )rG   r   Úsubtractr   rJ   )r-   Úarr1Úarr2Údiff1Údiff2s        r   Ú$test_pure_subclass_info_preservationÚ4TestSubclassing.test_pure_subclass_info_preservationt  s   € ô ˜fÒ+=Ñ>ˆÜÒ#5Ñ6ˆÜ—’˜DÓ'ˆÜ�˜%Ÿ.™.Ñ(Ô)Ü�—‘˜vÑ&¨&Ñ0Ô1Ø‘ˆÜ�˜%Ÿ.™.Ñ(Ô)Ü�—‘˜vÑ&¨&Ñ0Õ1r   r  N)r?   r@   rA   rB   rÅ   rÌ   rÐ   rÖ   rÚ   rÞ   rê   rñ   rû   rÿ   r  r  r  rC   rM   r   r   r¼   r¼   ¼   sH   † òò
3ò0ò
,ò5ò7ò,òB%ò6#&òJ	Cò	BòFõ
2r   r¼   c                   ó$   • \ rS rSrSrS rS rSrg)ÚArrayNoInheritancei�  z6Quantity-like class that does not inherit from ndarrayc                 ó   • Xl         X l        g r   ©Ú	magnitudeÚunits)r-   rS   r  s      r   rg   ÚArrayNoInheritance.__init__ƒ  s   € ØŒØ�
r   c                 ó.   • [        U R                  U5      $ r   )r,   r  )r-   Úattrs     r   Ú__getattr__ÚArrayNoInheritance.__getattr__‡  s   € Ü�t—~‘~ tÓ,Ð,r   r  N)r?   r@   rA   rB   rN   rg   r#  rC   rM   r   r   r  r  �  s   † Ù@òõ-r   r  c                  óà  • [         R                  R                  / SQ/ SQS9n [        U S5      n[         R                  R                  U5      n[	        U R
                  UR
                  5        [	        U R                  UR                  5        / SQU l        [	        U R                  UR                  5        [        UR                  5        [         R                  R                  USS9n[	        U R
                  UR
                  5        [	        U R                  UR                  5        / SQU l        [	        / SQUR                  5        [        UR                  (       + 5        [         R                  R                  USS	9n[	        U R
                  UR
                  5        [	        U R                  / SQ5        [        UR                  (       + 5        [        UR                  (       + 5        g )
N)r3   r  r  )TFTrÁ   Úmeters)TFFT)r!   F)Ú	keep_mask)	r   r  r   r  r   rS   rT   r   Ú
sharedmask)Údata_maskedÚdata_masked_unitsÚ	new_arrays      r   Útest_array_no_inheritancer,  ‹  sT  € Ü—%‘%—+‘+šiÒ.A�+ÐB€KÜ*¨;¸ÓAÐô —‘—‘Ð-Ó.€IÜ�×!Ñ! 9§>¡>Ô2Ü�×!Ñ! 9§>¡>Ô2â+€KÔÜ�×!Ñ! 9§>¡>Ô2ÜˆI× Ñ Ô!ô —‘—‘Ð-°D�Ð9€IÜ�×!Ñ! 9§>¡>Ô2Ü�×!Ñ! 9§>¡>Ô2â*€KÔÜÒ% y§~¡~Ô6Ü�	×$Ñ$Ô$Ô%ô —‘—‘Ð-¸�Ð?€IÜ�×!Ñ! 9§>¡>Ô2ä�×!Ñ!Ò#6Ô7ä�	—‘ÔÔÜ�	×$Ñ$Ô$Õ%r   c                   ó,   • \ rS rSrS rS rS rS rSrg)ÚTestClassWrappingi«  c                 ón   • [         R                  R                  / SQ/ SQS9n[        U5      nX4U l        g )N©r3   r  r¿   ©FTFrÁ   )r   r  r   r¢   rS   ©r-   rÉ   Úwms      r   rÅ   ÚTestClassWrapping.setup_method®  s.   € Ü�E‰E×ÑšyÒ/CÐÐDˆÜ˜!‹_ˆØ�Gˆ�	r   c                 óÖ   • U R                   u  p[        R                  " SS9   [        [	        [        R
                  " U5      [        5      5        S S S 5        g ! , (       d  f       g = frÓ   )rS   r   rÕ   r   ro   r   r¢   r2  s      r   rÖ   Ú.TestClassWrapping.test_masked_unary_operations³  s<   € à—)‘)‰ˆÜ�[Š[ Ó)Ü”JœrŸvšv b›z¬<Ó8Ô9÷ *×)Ö)ús   £.AÁ
A(c                 ó˜  • U R                   u  p[        [        [        R                  " X"5      [
        5      5        [        [        [        R                  " X5      [
        5      5        [        [        [        R                  " X!5      [
        5      5        [        [        R                  " X5      X-   5        [        [        [        R                  " X5      [
        5      5        [        [        [        R                  " X!5      [
        5      5        [        [        [        R                  " X!5      [
        5      5        [        [        [        R                  " X5      [
        5      5        [        [        R                  " X!5      U-  [        R                  " X5      U-  5        [        R                  " X/5      n[        [        [        R                  " X#5      [
        5      5        [        [        [        R                  " X25      [
        5      5        [        [        R                  " X25      [        R                  " X#5      5        g r   )
rS   r   ro   r   r   r¢   r   r   r
   Ústack)r-   rÉ   r3  Úm2s       r   rÚ   Ú/TestClassWrapping.test_masked_binary_operations¹  sE  € à—)‘)‰ˆä”
œ2Ÿ6š6 "›>¬<Ó8Ô9Ü”
œ2Ÿ6š6 !›=¬,Ó7Ô8Ü”
œ2Ÿ6š6 "›=¬,Ó7Ô8ä”R—V’V˜A“] A¡FÔ+Ü”
œ2Ÿ8š8 A›?¬LÓ9Ô:Ü”
œ2Ÿ8š8 B›?¬LÓ9Ô:ä”
œ2Ÿ9š9 RÓ+¬\Ó:Ô;Ü”
œ2Ÿ9š9 QÓ+¬\Ó:Ô;Ü”R—Y’Y˜rÓ%¨Ñ)¬2¯9ª9°Q«?¸RÑ+?Ô@ä�XŠX�q�fÓˆÜ”
œ2Ÿ9š9 RÓ,¬lÓ;Ô<Ü”
œ2Ÿ9š9 RÓ,¬lÓ;Ô<Ü”R—Y’Y˜rÓ&¬¯	ª	°"Ó(9Õ:r   c                 óâ   • [        5       n[        [        UR                  SS5        [        R
                  R                  / SQ/ SQS9n[        U5      n[        [        UR                  SS5        g )NÚnot_a_real_attrr3   r0  r1  rÁ   Únot_an_attrr  )r   r   ÚAttributeErrorÚ__setattr__r   r  r   r¢   )r-   ÚmixinrÉ   r3  s       r   Útest_mixins_have_slotsÚ(TestClassWrapping.test_mixins_have_slotsÎ  sT   € Ü%Ó'ˆä”n e×&7Ñ&7Ð9JÈAÔNä�E‰E×ÑšyÒ/CÐÐDˆÜ˜!‹_ˆÜ”n b§n¡n°mÀQÕGr   r  N)	r?   r@   rA   rB   rÅ   rÖ   rÚ   rA  rC   rM   r   r   r.  r.  «  s   † òò
:ò;õ*Hr   r.  )%rN   Únumpyr   Únumpy.lib.mixinsr   Únumpy.ma.corer   r   r   r   r   r	   r
   r   r   r   r   r   Únumpy.ma.testutilsr   Únumpy.testingr   r   r   rd   r   rÏ   rG   rP   rÂ   r`   r€   r¢   r¼   r  r,  r.  rM   r   r   Ú<module>rH     sº   ðñó Ý 2÷÷ ÷ ó õ ,ß 0ò ôˆr�z‰zô ð. €ô�[ô ô�˜+ô ð €	÷Kñ Kô8(˜(ô (ôV"Ð(ô "÷8B2ñ B2÷J-ñ -ò&÷@*Hò *Hr   