§
    ÈÁ³g (  ã                   ó  — d Z ddlZddlZddlmZ ddlmc mZ ddlZddlm	Z	m
Z
mZmZmZ ddlmZmZmZmZmZmZ g d¢ZddlmZ g d	¢Zeez   Zdd„Zdd„Zd d„Zd„ Zd d„Zd d„ZeZ d!d„Z!e!Z"	 	 d"d„Z#d#d„Z$d#d„Z%d$d„Z&d$d„Z'd#d„Z(d d„Z)dS )%zÌMiscellaneous functions for testing masked arrays and subclasses

:author: Pierre Gerard-Marchant
:contact: pierregm_at_uga_dot_edu
:version: $Id: testutils.py 3529 2007-11-13 08:01:14Z jarrod.millman $

é    N)Úndarray)Úassert_Úassert_allcloseÚassert_array_almost_equal_nulpÚassert_raisesÚbuild_err_msgé   )Úmask_orÚgetmaskÚmasked_arrayÚnomaskÚmaskedÚfilled)Ú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   Tçñhãˆµøä>ç:Œ0âŽyE>c                 óÀ  — t          t          | ¦  «        t          |¦  «        ¦  «        }t          | ¦  «        }t          |¦  «        }|j        j        dk    s|j        j        dk    r't          j        ||¦  «                             ¦   «         S t          t          |d|¬¦  «        |¦  «         	                    t
          j
        ¦  «        }t          t          |d|¬¦  «        d¦  «         	                    t
          j
        ¦  «        }	t          j        t          j        ||	z
  ¦  «        ||t          j        |	¦  «        z  z   ¦  «        }
|
                     ¦   «         S )a†  
    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              úP/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/numpy/ma/testutils.pyr   r   )   s  € õ 	•˜‘
”
�G A™JœJÑ'Ô'€AÝ	�‰Œ€BÝ	�‰Œ€BØ	„x„}˜ÒÐ˜rœxœ}°Ò3Ð3ÝŒx˜˜BÑÔ×%Ò%Ñ'Ô'Ð'ÝÝ�R˜e¨!Ð,Ñ,Ô,¨jñ	ô 	ç‚f�RŒZÑÔð õ 	�|˜B U°Ð3Ñ3Ô3°QÑ7Ô7×>Ò>½r¼zÑJÔJ€AÝ
Œ•e”n Q¨¡UÑ+Ô+¨T°D½5¼>È!Ñ;LÔ;LÑ4LÑ-LÑMÔM€AØ�7Š7‰9Œ9Ðó    é   c                 ó   — t          t          | ¦  «        t          |¦  «        ¦  «        }t          | ¦  «        }t          |¦  «        }|j        j        dk    s|j        j        dk    r't          j        ||¦  «                             ¦   «         S t          t          |d|¬¦  «        |¦  «         	                    t
          j
        ¦  «        }t          t          |d|¬¦  «        d¦  «         	                    t
          j
        ¦  «        }t          j        t          j        ||z
  ¦  «        |¦  «        d| z  k    }	|	                     ¦   «         S )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)
r0   r1   Údecimalr2   r5   r6   r7   r8   r9   r:   s
             r;   r   r   A   s  € õ 	•˜‘
”
�G A™JœJÑ'Ô'€AÝ	�‰Œ€BÝ	�‰Œ€BØ	„x„}˜ÒÐ˜rœxœ}°Ò3Ð3ÝŒx˜˜BÑÔ×%Ò%Ñ'Ô'Ð'ÝÝ�R˜e¨!Ð,Ñ,Ô,¨jñ	ô 	ç‚f�RŒZÑÔð õ 	�|˜B U°Ð3Ñ3Ô3°QÑ7Ô7×>Ò>½r¼zÑJÔJ€AÝ
Œ	•"”&˜˜Q™‘-”- Ñ)Ô)¨T°w°hÑ-?Ò?€AØ�7Š7‰9Œ9Ðr<   Ú c           	      óà   — t          t          | ¦  «        t          |¦  «        |¦  «         t          t          |¦  «        ¦  «        D ]%}t          | |         ||         d|›d|› �¦  «         Œ&dS )z;
    Asserts the equality of two non-array sequences.

    úitem=ú
N)r   ÚlenÚrange)ÚactualÚdesiredÚerr_msgÚks       r;   Ú_assert_equal_on_sequencesrM   V   st   € õ
 •�V‘”�c '™lœl¨GÑ4Ô4Ð4Ý•3�w‘<”<Ñ Ô ð Fð FˆÝ�V˜A”Y ¨¤
Ð,D°AÐ,DÐ,D¸7Ð,DÐ,DÑEÔEÐEÐEØ
€Fr<   c                 ó<  — t          | j        |j        ¦  «         | j        j        D ]t}t          j        | |¦  «        t          j        ||¦  «        }}|t
          ur?|t
          ur6t          t          j        | |¦  «        t          j        ||¦  «        ¦  «         ŒudS )zI
    Asserts that two records are equal.

    Pretty crude for now.

    N)r   r&   ÚnamesÚoperatorÚgetitemr   )r0   r1   ÚfÚafÚbfs        r;   r   r   a   s‘   € õ �”˜!œ'Ñ"Ô"Ð"ØŒWŒ]ð Ið IˆÝÔ$ Q¨Ñ*Ô*­HÔ,<¸QÀÑ,BÔ,BˆRˆØ•f�� r­V | |Ý�Ô)¨!¨QÑ/Ô/µÔ1AÀ!ÀQÑ1GÔ1GÑHÔHÐHøØ
€Fr<   c           	      óœ  — t          |t          ¦  «        rÀt          | t          ¦  «        s)t          t          t	          | ¦  «        ¦  «        ¦  «        ‚t          t          | ¦  «        t          |¦  «        |¦  «         |                     ¦   «         D ]@\  }}|| vrt          |› d| › �¦  «        ‚t          | |         ||         d|›d|› �¦  «         ŒAdS t          |t          t          f¦  «        r.t          | t          t          f¦  «        rt          | |d¬¦  «        S t          | t          ¦  «        s>t          |t          ¦  «        s)t          | |g|¦  «        }|| k    st          |¦  «        ‚dS | t          u r	|t          us|t          u r-| t          ur$t          | |g|dd¬¦  «        }t          |¦  «        ‚t          j        | ¦  «        } t          j        |¦  «        }| j        |j        }}|j        d	k    rA|j        d	k    r6t          |                      ¦   «         |                     ¦   «         d¬¦  «        S t)          | ||¦  «        S )
z,
    Asserts that two items are equal.

    z not in úkey=rF   NrC   ©rK   ©r8   r9   )ÚheaderrO   ÚS)Ú
isinstanceÚdictÚAssertionErrorÚreprÚtyper   rG   ÚitemsÚlistÚtuplerM   r   r   r   Ú
ValueErrorr(   Ú
asanyarrayr&   r'   Útolistr   )rI   rJ   rK   rL   ÚiÚmsgÚactual_dtypeÚdesired_dtypes           r;   r   r   p   sT  € õ �'�4Ñ Ô ð Ý˜&¥$Ñ'Ô'ð 	5Ý ¥¥d¨6¡l¤lÑ!3Ô!3Ñ4Ô4Ð4Ý•S˜‘[”[¥# g¡,¤,°Ñ8Ô8Ð8Ø—M’M‘O”Oð 	Ið 	I‰DˆAˆqØ˜ˆˆÝ$¨Ð%;Ð%;°6Ð%;Ð%;Ñ<Ô<Ð<Ý˜ œ G¨A¤JÐ0G°qÐ0GÐ0G¸gÐ0GÐ0GÑHÔHÐHÐHØˆå�'�D¥%˜=Ñ)Ô)ð G­j¸Å$ÍÀÑ.OÔ.Oð GÝ)¨&°'À2ÐFÑFÔFÐFÝ�v�wÑ'Ô'ð ­:°g½wÑ+GÔ+Gð Ý˜V WÐ-¨wÑ8Ô8ˆØ˜&Ò Ð Ý  Ñ%Ô%Ð%Øˆà	•6Ð	Ð	 G­vÐ$5Ð$5Ø�ÐÐ¨&µFÐ*:Ð*:Ý˜V WÐ-Ø#¨B°jðBñ Bô Bˆå˜‰oŒoÐÝŒ]˜6Ñ"Ô"€FÝŒm˜GÑ$Ô$€GØ%+¤\°7´=�=€\ØÔ˜CÒÐ MÔ$6¸#Ò$=Ð$=Ý)¨&¯-ª-©/¬/Ø*1¯.ª.Ñ*:Ô*:Ø24ð6ñ 6ô 6ð 	6õ ˜f g¨wÑ7Ô7Ð7r<   c           	      óæ  — t          |t          ¦  «        rÈt          | t          ¦  «        s)t          t          t	          | ¦  «        ¦  «        ¦  «        ‚t          t          | ¦  «        t          |¦  «        |¦  «         |                     ¦   «         D ]H\  }}|| vrt          t          |¦  «        ¦  «        ‚t          | |         ||         d|›d|› �¦  «         ŒIdS t          |t          t          f¦  «        r‹t          | t          t          f¦  «        rot          t          | ¦  «        t          |¦  «        |¦  «         t          t          |¦  «        ¦  «        D ]%}t          | |         ||         d|›d|› �¦  «         Œ&dS t          | t          j        ¦  «        st          |t          j        ¦  «        rt          | ||¦  «        S t          | |g|¦  «        }|| k    st          |¦  «        ‚dS )z<
    Raises an assertion error if two items are equal.

    rV   rF   NrE   )r[   r\   r]   r^   r_   Úfail_if_equalrG   r`   ra   rb   rH   r(   r   r   r   )rI   rJ   rK   rL   rf   rg   s         r;   rk   rk   —   sØ  € õ
 �'�4Ñ Ô ð Ý˜&¥$Ñ'Ô'ð 	5Ý ¥¥d¨6¡l¤lÑ!3Ô!3Ñ4Ô4Ð4Ý•c˜&‘k”k¥3 w¡<¤<°Ñ9Ô9Ð9Ø—M’M‘O”Oð 	Jð 	J‰DˆAˆqØ˜ˆˆÝ$¥T¨!¡W¤WÑ-Ô-Ð-Ý˜& œ) W¨Q¤ZÐ1H¸Ð1HÐ1H¸wÐ1HÐ1HÑIÔIÐIÐIØˆÝ�'�D¥%˜=Ñ)Ô)ð ­j¸Å$ÍÀÑ.OÔ.Oð Ý•c˜&‘k”k¥3 w¡<¤<°Ñ9Ô9Ð9Ý•s˜7‘|”|Ñ$Ô$ð 	Kð 	KˆAÝ˜& œ) W¨Q¤ZÐ1I¸Ð1IÐ1IÀÐ1IÐ1IÑJÔJÐJÐJØˆÝ�&�"œ*Ñ%Ô%ð =­°G½R¼ZÑ)HÔ)Hð =Ý" 6¨7°GÑ<Ô<Ð<Ý
˜ Ð)¨7Ñ
3Ô
3€CØ�fÒÐÝ˜SÑ!Ô!Ð!ð Ðr<   é   c                 ó$  — t          | t          j        ¦  «        st          |t          j        ¦  «        rt          | ||||¬¦  «        S t	          | |g||¬¦  «        }t          t          || z
  ¦  «        |¦  «        dk    st          |¦  «        ‚dS )z~
    Asserts that two items are almost equal.

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

    )rB   rK   Úverbose)rK   rn   r   N)r[   r(   r   r   r   ÚroundrA   r]   )rI   rJ   rB   rK   rn   rg   s         r;   r   r   ´   s«   € õ �&�"œ*Ñ%Ô%ð K­°G½R¼ZÑ)HÔ)Hð KÝ(¨°À'Ø18À'ðKñ Kô Kð 	Kå
˜ Ð)Ø '°ð:ñ :ô :€Cå•�W˜vÑ%Ñ&Ô&¨Ñ0Ô0°AÒ5Ð5Ý˜SÑ!Ô!Ð!ð 6Ð5r<   c                 óÎ  — t          t          |¦  «        t          |¦  «        ¦  «        }t          |d|dd¬¦  «        }t          |d|dd¬¦  «        }|t          u r	|t          us|t          u r.|t          ur%t	          ||g|||d¬¦  «        }t          |¦  «        ‚t          j                             | | 	                    |¦  «        | 	                    |¦  «        |||¬¦  «        S )zn
    Asserts that comparison between two masked arrays is satisfied.

    The comparison is elementwise.

    F)r$   r%   Ú	keep_maskÚsubokrX   )rK   rn   rY   rO   ©rK   rn   rY   )
r
   r   r   r   r   rc   r(   Útestingr   r   )	Ú
comparisonr8   r9   rK   rn   rY   r2   r5   rg   s	            r;   r   r   Ç   sê   € õ 	•˜‘
”
�G A™JœJÑ'Ô'€AÝ�Q˜U¨°eÀ5ÐIÑIÔI€AÝ�Q˜U¨°eÀ5ÐIÑIÔI€AØ	
�fˆˆ˜q¥F˜{˜{Ø•6ˆkˆk A­ K KÝ˜Q ˜F¨G¸WØ#)°ð=ñ =ô =ˆå˜‰oŒoÐåŒ:×*Ò*¨:Ø+,¯8ª8°JÑ+?Ô+?Ø+,¯8ª8°JÑ+?Ô+?Ø3:Ø3:À6ð	 +ñ Kô Kð Kr<   c                 óD   — t          t          j        | |||d¬¦  «         dS )z@
    Checks the elementwise equality of two masked arrays.

    úArrays are not equalrs   N)r   rP   Ú__eq__©r8   r9   rK   rn   s       r;   r   r   à   s5   € õ
 �œ¨!¨QØ!(°'Ø 6ð8ñ 8ô 8ð 8ð 8ð 8r<   c                 ó6   — d„ }t          || |||d¬¦  «         dS )zT
    Raises an assertion error if two masked arrays are not equal elementwise.

    c                 óH   — t          j        t          | |¦  «        ¦  «         S )N)r(   Úallr   rX   s     r;   Úcomparez$fail_if_array_equal.<locals>.compareï   s   € Ý”F�6 ! Q™<œ<Ñ(Ô(Ð(Ð)r<   rw   rs   N©r   )r8   r9   rK   rn   r}   s        r;   r   r   ê   s?   € ð
*ð *ð *å˜ ! Q°ÀØ 6ð8ñ 8ô 8ð 8ð 8ð 8r<   c                 ó<   ‡— ˆfd„}t          || |||d¬¦  «         dS )ú|
    Checks the equality of two masked arrays, up to given number odecimals.

    The equality is checked elementwise.

    c                 ó0   •— t          | |d‰ z  ¬¦  «        S )ú<Returns the result of the loose comparison between x and y).r?   )r3   )r   ©r8   r9   rB   s     €r;   r}   z*assert_array_approx_equal.<locals>.compareü   s   ø€ å�a˜ ¨¨¡Ð1Ñ1Ô1Ð1r<   úArrays are not almost equalrs   Nr~   ©r8   r9   rB   rK   rn   r}   s     `   r;   r   r   õ   sL   ø€ ð2ð 2ð 2ð 2ð 2õ ˜ ! Q°ÀØ =ð?ñ ?ô ?ð ?ð ?ð ?r<   c                 ó<   ‡— ˆfd„}t          || |||d¬¦  «         dS )r€   c                 ó&   •— t          | |‰¦  «        S )r‚   )r   rƒ   s     €r;   r}   z*assert_array_almost_equal.<locals>.compare
  s   ø€ å�a˜˜GÑ$Ô$Ð$r<   r„   rs   Nr~   r…   s     `   r;   r   r     sL   ø€ ð%ð %ð %ð %ð %õ ˜ ! Q°ÀØ =ð?ñ ?ô ?ð ?ð ?ð ?r<   c                 óD   — t          t          j        | |||d¬¦  «         dS )z7
    Checks that x is smaller than y elementwise.

    zArrays are not less-orderedrs   N)r   rP   Ú__lt__ry   s       r;   r   r     s5   € õ
 �œ¨!¨QØ!(°'Ø =ð?ñ ?ô ?ð ?ð ?ð ?r<   c                 ó¦   — | t           u rt          |t           u ¦  «         |t           u rt          | t           u ¦  «         t          | ||¬¦  «         dS )z-
    Asserts the equality of two masks.

    rW   N)r   r   r   )Úm1Úm2rK   s      r;   r   r     sU   € ð
 
�V€|€|Ý�•f�ÑÔÐØ	�V€|€|Ý�•f�ÑÔÐÝ�r˜2 wÐ/Ñ/Ô/Ð/Ð/Ð/r<   )Tr   r    )r=   T)rC   )rl   rC   T)rC   TrC   T)rC   T)r=   rC   T)*Ú__doc__rP   Únumpyr(   r   Únumpy._core.umathÚ_corer.   Únumpy.testingr   r   r   r   r   Úcorer
   r   r   r   r   r   Ú__all__maskedÚunittestr   Ú__some__from_testingÚ__all__r   r   rM   r   r   rk   r   r   r   r   r   r   r   r   r   r   © r<   r;   ú<module>r˜      sW  ððð ð €€€à Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð IÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ Hðð ð €ð Ð Ð Ð Ð Ð ðð ð Ð ð
 Ð.Ñ
.€ðð ð ð ð0ð ð ð ð*ð ð ð ðð ð ð$8ð $8ð $8ð $8ðN"ð "ð "ð "ð4 !Ð ð"ð "ð "ð "ð  #€ð MOØ$(ðKð Kð Kð Kð28ð 8ð 8ð 8ð8ð 8ð 8ð 8ð?ð ?ð ?ð ?ð?ð ?ð ?ð ?ð?ð ?ð ?ð ?ð	0ð 	0ð 	0ð 	0ð 	0ð 	0r<   