ó
    mñ:iû'  ã                   ó4  • S r SSKrSSKrSSKJs  Jr  SSKrSSKJr  SSKJ	r	J
r
JrJrJr  SSKJrJrJrJrJrJr  / SQrSSKJr  / S	Qr\\-   rSS
 jrSS jrSS jrS rSS jrSS jr\r SS jr!\!r"  SS jr#SS jr$SS jr%SS jr&SS jr'SS jr(SS jr)g)z…Miscellaneous functions for testing masked arrays and subclasses

:author: Pierre Gerard-Marchant
:contact: pierregm_at_uga_dot_edu

é    N)Úndarray)Úassert_Úassert_allcloseÚassert_array_almost_equal_nulpÚassert_raisesÚbuild_err_msgé   )ÚfilledÚgetmaskÚmask_orÚmaskedÚmasked_arrayÚnomask)ÚalmostÚapproxÚassert_almost_equalÚassert_array_almost_equalÚassert_array_approx_equalÚassert_array_compareÚassert_array_equalÚassert_array_lessÚassert_closeÚassert_equalÚassert_equal_recordsÚassert_mask_equalÚassert_not_equalÚfail_if_array_equal)ÚTestCase)r   r   r   r   r   c                 óŽ  • [        [        U 5      [        U5      5      n[        U 5      n[        U5      nUR                  R                  S:X  d  UR                  R                  S:X  a$  [
        R                  " Xg5      R                  5       $ [        [        USUS9U5      R                  [
        R                  5      n[        [        USUS9S5      R                  [
        R                  5      n	[
        R                  " [        R                  " X‰-
  5      XC[        R                  " U	5      -  -   5      n
U
R                  5       $ )aj  
Returns true if all components of a and b are equal to given tolerances.

If fill_value is True, masked values considered equal. Otherwise,
masked values are considered unequal.  The relative error rtol should
be positive and << 1.0 The absolute error atol comes into play for
those elements of b that are very small or zero; it says how small a
must be also.

ÚOF©ÚcopyÚmaskr	   )r   r   r
   ÚdtypeÚcharÚnpÚequalÚravelr   ÚastypeÚfloat64Ú
less_equalÚumathÚabsolute)ÚaÚbÚ
fill_valueÚrtolÚatolÚmÚd1Úd2ÚxÚyÚds              ÚU/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/numpy/ma/testutils.pyr   r   -   sè   € ô 	”˜“
œG A›JÓ'€AÜ	�‹€BÜ	�‹€BØ	‡x�x‡}�}˜Ó˜rŸx™xŸ}™}°Ó3Ü�xŠx˜Ó×%Ñ%Ó'Ð'ÜÜ�R˜e¨!Ñ,¨jó	ç�fŒR�Z‰ZÓð ô 	Œ|˜B U°Ñ3°QÓ7×>Ñ>¼r¿z¹zÓJ€AÜ
�Š”e—n’n Q¡UÓ+¨T¼5¿>º>È!Ó;LÑ4LÑ-LÓM€AØ�7‰7‹9Ðó    c                 ój  • [        [        U 5      [        U5      5      n[        U 5      n[        U5      nUR                  R                  S:X  d  UR                  R                  S:X  a$  [
        R                  " XV5      R                  5       $ [        [        USUS9U5      R                  [
        R                  5      n[        [        USUS9S5      R                  [
        R                  5      n[
        R                  " [
        R                  " Xx-
  5      U5      SU* -  :*  n	U	R                  5       $ )z£
Returns True if a and b are equal up to decimal places.

If fill_value is True, masked values considered equal. Otherwise,
masked values are considered unequal.

r    Fr!   r	   ç      $@)r   r   r
   r$   r%   r&   r'   r(   r   r)   r*   ÚaroundÚabs)
r.   r/   Údecimalr0   r3   r4   r5   r6   r7   r8   s
             r9   r   r   E   sâ   € ô 	”˜“
œG A›JÓ'€AÜ	�‹€BÜ	�‹€BØ	‡x�x‡}�}˜Ó˜rŸx™xŸ}™}°Ó3Ü�xŠx˜Ó×%Ñ%Ó'Ð'ÜÜ�R˜e¨!Ñ,¨jó	ç�fŒR�Z‰ZÓð ô 	Œ|˜B U°Ñ3°QÓ7×>Ñ>¼r¿z¹zÓJ€AÜ
�	Š	”"—&’&˜™“- Ó)¨T°w°hÑ-?Ñ?€AØ�7‰7‹9Ðr:   c           	      ó¨   • [        [        U 5      [        U5      U5        [        [        U5      5       H  n[        X   X   SU< SU 35        M     g)z3
Asserts the equality of two non-array sequences.

úitem=Ú
N)r   ÚlenÚrange)ÚactualÚdesiredÚerr_msgÚks       r9   Ú_assert_equal_on_sequencesrI   Z   sH   € ô
 ”�V“œc '›l¨GÔ4Ü”3�w“<Ö ˆÜ�V‘Y ¡
¨e°A±5¸¸7¸)Ð,DÖEò !r:   c                 óh  • [        U R                  UR                  5        U R                  R                   Hx  n[        R                  " X5      [        R                  " X5      pCU[
        Ld  M9  U[
        Ld  MD  [        [        R                  " X5      [        R                  " X5      5        Mz     g)z=
Asserts that two records are equal.

Pretty crude for now.

N)r   r$   ÚnamesÚoperatorÚgetitemr   )r.   r/   ÚfÚafÚbfs        r9   r   r   d   sr   € ô �—‘˜!Ÿ'™'Ô"Ø�W‰W�]Œ]ˆÜ×$Ò$ QÓ*¬H×,<Ò,<¸QÓ,BˆRØ”f” r¬V¤|Üœ×)Ò)¨!Ó/´×1AÒ1AÀ!Ó1GÖHò r:   c           	      ó  • [        U[        5      (       a˜  [        U [        5      (       d  [        [        [	        U 5      5      5      e[        [        U 5      [        U5      U5        UR                  5        H2  u  p4X0;  a  [        U SU  35      e[        X   X   SU< SU 35        M4     g[        U[        [        45      (       a%  [        U [        [        45      (       a
  [        XSS9$ [        U [        5      (       d3  [        U[        5      (       d  [        X/U5      nX:X  d  [        U5      egU [        L a	  U[        Ld  U[        L a!  U [        La  [        X/USSS9n[        U5      e[        R                   " U 5      n [        R                   " U5      nU R"                  UR"                  pvUR$                  S	:X  a7  UR$                  S	:X  a'  [        U R'                  5       UR'                  5       SS9$ [)        XU5      $ )
z$
Asserts that two items are equal.

z not in úkey=rB   NÚ ©rG   ©r6   r7   )ÚheaderrK   ÚS)Ú
isinstanceÚdictÚAssertionErrorÚreprÚtyper   rC   ÚitemsÚlistÚtuplerI   r   r   r   Ú
ValueErrorr&   Ú
asanyarrayr$   r%   Útolistr   )rE   rF   rG   rH   ÚiÚmsgÚactual_dtypeÚdesired_dtypes           r9   r   r   r   sµ  € ô �'œ4× Ñ Ü˜&¤$×'Ñ'Ü ¤¤d¨6£lÓ!3Ó4Ð4Ü”S˜“[¤# g£,°Ô8Ø—M‘M–O‰DˆAØ‹Ü$¨ s¨(°6°(Ð%;Ó<Ð<Ü˜™ G¡J°$°q±e¸2¸g¸YÐ0GÖHñ $ð 	ä�'œD¤%˜=×)Ñ)¬j¸Ä$ÌÀ×.OÑ.OÜ)¨&À2ÑFÐFÜ�vœw×'Ñ'¬:°g¼w×+GÑ+GÜ˜VÐ-¨wÓ8ˆØÓ Ü  Ó%Ð%Øà	”6Ò	 G¬vÒ$5ØœÒ¨&´FÒ*:Ü˜VÐ-Ø#¨B°jñBˆä˜‹oÐÜ�]Š]˜6Ó"€FÜ�mŠm˜GÓ$€GØ%+§\¡\°7·=±=�=Ø×Ñ˜CÓ M×$6Ñ$6¸#Ó$=Ü)¨&¯-©-«/Ø*1¯.©.Ó*:Ø24ñ6ð 	6ô ˜f¨wÓ7Ð7r:   c           	      óF  • [        U[        5      (       aœ  [        U [        5      (       d  [        [        [	        U 5      5      5      e[        [        U 5      [        U5      U5        UR                  5        H6  u  p4X0;  a  [        [        U5      5      e[        X   X   SU< SU 35        M8     g[        U[        [        45      (       an  [        U [        [        45      (       aS  [        [        U 5      [        U5      U5        [        [        U5      5       H  n[        X   X   SU< SU 35        M     g[        U [        R                  5      (       d  [        U[        R                  5      (       a  [        XU5      $ [        X/U5      nX:w  d  [        U5      eg)z4
Raises an assertion error if two items are equal.

rR   rB   NrA   )rX   rY   rZ   r[   r\   Úfail_if_equalrC   r]   r^   r_   rD   r&   r   r   r   )rE   rF   rG   rH   rc   rd   s         r9   rh   rh   ™   sI  € ô
 �'œ4× Ñ Ü˜&¤$×'Ñ'Ü ¤¤d¨6£lÓ!3Ó4Ð4Ü”c˜&“k¤3 w£<°Ô9Ø—M‘M–O‰DˆAØ‹Ü$¤T¨!£WÓ-Ð-Ü˜&™) W¡Z°4¸±u¸B¸w¸iÐ1HÖIñ $ð 	Ü�'œD¤%˜=×)Ñ)¬j¸Ä$ÌÀ×.OÑ.OÜ”c˜&“k¤3 w£<°Ô9Ü”s˜7“|Ö$ˆAÜ˜&™) W¡Z°5¸¹¸RÀ¸yÐ1IÖJñ %àÜ�&œ"Ÿ*™*×%Ñ%¬°G¼R¿Z¹Z×)HÑ)HÜ" 6°GÓ<Ð<Ü
˜Ð)¨7Ó
3€CØÓÜ˜SÓ!Ð!ð r:   c                 óø   • [        U [        R                  5      (       d  [        U[        R                  5      (       a  [        XUX4S9$ [	        X/X4S9n[        [        X-
  5      U5      S:X  d  [        U5      eg)zr
Asserts that two items are almost equal.

The test is equivalent to abs(desired-actual) < 0.5 * 10**(-decimal).

)r?   rG   Úverbose)rG   rj   r   N)rX   r&   r   r   r   Úroundr>   rZ   )rE   rF   r?   rG   rj   rd   s         r9   r   r   ¶   st   € ô �&œ"Ÿ*™*×%Ñ%¬°G¼R¿Z¹Z×)HÑ)HÜ(¨À'Ø18ñKð 	Kä
˜Ð)Ø 'ñ:€Cä”�WÑ%Ó&¨Ó0°AÓ5Ü˜SÓ!Ð!ð 6r:   c           	      óh  • [        [        U5      [        U5      5      n[        USUSSS9n[        USUSSS9nU[        L a	  U[        Ld  U[        L a!  U[        La  [	        X/X4USS9n[        U5      e[        R                  R                  U UR                  U5      UR                  U5      UXES9$ )zb
Asserts that comparison between two masked arrays is satisfied.

The comparison is elementwise.

F)r"   r#   Ú	keep_maskÚsubokrU   )rG   rj   rV   rK   ©rG   rj   rV   )
r   r   r   r   r   r`   r&   Útestingr   r
   )	Ú
comparisonr6   r7   rG   rj   rV   r0   r3   rd   s	            r9   r   r   É   s³   € ô 	”˜“
œG A›JÓ'€AÜ�Q˜U¨°eÀ5ÑI€AÜ�Q˜U¨°eÀ5ÑI€AØ	
ŒfŠ˜q¤Fš{Ø”6Šk A¬¢KÜ˜Q˜F¨GØ#)°ñ=ˆä˜‹oÐä�:‰:×*Ñ*¨:Ø+,¯8©8°JÓ+?Ø+,¯8©8°JÓ+?Ø3:Ø3:ð	 +ð Kð Kr:   c           	      ó8   • [        [        R                  XX#SS9  g)z8
Checks the elementwise equality of two masked arrays.

úArrays are not equalro   N)r   rL   Ú__eq__©r6   r7   rG   rj   s       r9   r   r   â   s   € ô
 œŸ™¨!Ø!(Ø 6ó8r:   c           	      ó"   • S n[        X@XUSS9  g)zL
Raises an assertion error if two masked arrays are not equal elementwise.

c                 óJ   • [         R                  " [        X5      5      (       + $ )N)r&   Úallr   rU   s     r9   ÚcompareÚ$fail_if_array_equal.<locals>.compareñ   s   € Ü—F’Fœ6 !›<Ó(Ô(Ð)r:   rs   ro   N©r   )r6   r7   rG   rj   ry   s        r9   r   r   ì   s   € ò
*ä˜ QÀØ 6ó8r:   c           	      ó*   ^• U4S jn[        XPXUSS9  g)úp
Checks the equality of two masked arrays, up to given number odecimals.

The equality is checked elementwise.

c                 ó    >• [        XST* -  S9$ )ú<Returns the result of the loose comparison between x and y).r<   )r1   )r   ©r6   r7   r?   s     €r9   ry   Ú*assert_array_approx_equal.<locals>.compareþ   s   ø€ ä�a ¨¨¡Ñ1Ð1r:   úArrays are not almost equalro   Nr{   ©r6   r7   r?   rG   rj   ry   s     `   r9   r   r   ÷   s   ø€ õ2ô ˜ QÀØ =ó?r:   c           	      ó*   ^• U4S jn[        XPXUSS9  g)r}   c                 ó   >• [        XT5      $ )r   )r   r€   s     €r9   ry   Ú*assert_array_almost_equal.<locals>.compare  s   ø€ ä�a˜GÓ$Ð$r:   r‚   ro   Nr{   rƒ   s     `   r9   r   r     s   ø€ õ%ô ˜ QÀØ =ó?r:   c           	      ó8   • [        [        R                  XX#SS9  g)z/
Checks that x is smaller than y elementwise.

zArrays are not less-orderedro   N)r   rL   Ú__lt__ru   s       r9   r   r     s   € ô
 œŸ™¨!Ø!(Ø =ó?r:   c                 ó€   • U [         L a  [        U[         L 5        U[         L a  [        U [         L 5        [        XUS9  g)z%
Asserts the equality of two masks.

rT   N)r   r   r   )Úm1Úm2rG   s      r9   r   r     s4   € ð
 
ŒV‚|Ü�”f�ÔØ	ŒV‚|Ü�”f�ÔÜ�r wÓ/r:   )Tgñhãˆµøä>g:Œ0âŽyE>)é   T)rS   )é   rS   T)rS   TrS   T)rS   T)rŒ   rS   T)*Ú__doc__rL   Únumpyr&   Únumpy._core.umathÚ_corer,   Únumpy.testingr   r   r   r   r   r   Úcorer
   r   r   r   r   r   Ú__all__maskedÚunittestr   Ú__some__from_testingÚ__all__r   r   rI   r   r   rh   r   r   r   r   r   r   r   r   r   r   © r:   r9   Ú<module>r™      sµ   ðñó ã ß !Ð !Û Ý ÷õ ÷ I× Hò€õ òÐ ð
 Ð.Ñ
.€ôô0ô*FòIô$8ôN"ð4 !Ð ô"ð  #€ð MOØ$(ôKô28ô8ô?ô?ô?õ	0r:   