U ã€C^}(ã@sfdZddlmZmZmZddlZddlZddlmZm Z ddl m m Z ddl Zddl mZmZmZmZmZddl mZmZmZmZmZmZdd d d d d ddddddddgZddlmZdddddgZeeZd2dd „Zd3d!d„Zd4d#d$„Z d%d„Z!d5d&d„Z"d6d'd(„Z#e#Z$d7d*d „Z%e%Z&d8d+d „Z'd9d,d„Z(d:d-d„Z)d;d.d „Z*dd1d„Z-dS)?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 $ é)ÚdivisionÚabsolute_importÚprint_functionN)ÚndarrayÚfloat_)Ú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)ÚTestCaser!rrr r Tçñh㈵øä>ç:Œ0âŽyE>c Csªtt|ƒt|ƒƒ}t|ƒ}t|ƒ}|jjdks:|jjdkrJt ||¡ ¡Stt|d|d�|ƒ  t ¡}tt|d|d�dƒ  t ¡} t  t   || ¡||t   | ¡¡} |  ¡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 rrÚdtypeÚcharÚnpÚequalÚravelrÚastyperZ less_equalÚumathZabsolute) ÚaÚbÚ fill_valueÚrtolZatolÚmÚd1Úd2ÚxÚyÚd©r9ú5/tmp/pip-install-6_kvzl1k/numpy/numpy/ma/testutils.pyr+s $éc Cs¦tt|ƒt|ƒƒ}t|ƒ}t|ƒ}|jjdks:|jjdkrJt ||¡ ¡Stt|d|d�|ƒ  t ¡}tt|d|d�dƒ  t ¡}t  t  ||¡|¡d| 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 rrr(r)r*r+r,rr-rZaroundÚabs) r/r0Údecimalr1r3r4r5r6r7r8r9r9r:rAs ÚcCsFtt|ƒt|ƒ|ƒtt|ƒƒD] }t||||d||fƒq dS)z; Asserts the equality of two non-array sequences. ú item=%r %sN)rÚlenÚrange)ÚactualÚdesiredÚerr_msgÚkr9r9r:Ú_assert_equal_on_sequencesTsrGcCsdt|j|jƒ|jjD]H}t ||¡t ||¡}}|tk r|tk rtt ||¡t ||¡ƒqdS)zI Asserts that two records are equal. Pretty crude for now. N)rr(ÚnamesÚoperatorÚgetitemr)r/r0ÚfÚafZbfr9r9r:r_s  cCsŒt|tƒr‚t|tƒs$ttt|ƒƒƒ‚tt|ƒt|ƒ|ƒ| ¡D]<\}}||kr`td||fƒ‚t||||d||fƒq@dSt|tt fƒr¬t|tt fƒr¬t ||dd�St|t ƒsât|t ƒsât ||g|ƒ}||ksÞt|ƒ‚dS|t krô|t k �s|t k�r$|t k �r$t ||g|ddd�}t|ƒ‚tj|dd d �}tj|dd d �}|j|j}}|jd k�r€|jd k�r€t | ¡| ¡dd�St|||ƒS) z, Asserts that two items are equal. z %s not in %sú key=%r %sNr?©rE©r6r7)ÚheaderrHFT)r&ÚsubokÚS)Ú isinstanceÚdictÚAssertionErrorÚreprÚtyperrAÚitemsÚlistÚtuplerGrr rÚ ValueErrorr*Úarrayr(r)Útolistr)rCrDrErFÚiÚmsgZ actual_dtypeZ desired_dtyper9r9r:rnsH  ÿÿÿþcCs*t|tƒr~t|tƒs$ttt|ƒƒƒ‚tt|ƒt|ƒ|ƒ| ¡D]8\}}||kr\tt|ƒƒ‚t||||d||fƒq@dSt|tt fƒràt|tt fƒràtt|ƒt|ƒ|ƒt t|ƒƒD] }t||||d||fƒqºdSt|t j ƒsút|t j ƒ�rt |||ƒSt||g|ƒ}||k�s&t|ƒ‚dS)z< Raises an assertion error if two items are equal. rMNr@)rSrTrUrVrWÚ fail_if_equalrArXrYrZrBr*rr r )rCrDrErFr^r_r9r9r:r`•s&     r`écCs^t|tjƒst|tjƒr*t|||||d�St||g||d�}tt||ƒ|ƒdksZt|ƒ‚dS)z~ Asserts that two items are almost equal. The test is equivalent to abs(desired-actual) < 0.5 * 10**(-decimal). )r>rEÚverbose)rErbrN)rSr*rrr Úroundr=rU)rCrDr>rErbr_r9r9r:r²sÿÿc Cs˜tt|ƒt|ƒƒ}t|d|ddd�}t|d|ddd�}|tkrF|tk sV|tkrt|tk rtt||g|||dd�}t|ƒ‚tjj||  |¡|  |¡|||d�S)zn Asserts that comparison between two masked arrays is satisfied. The comparison is elementwise. F)r&r'Z keep_maskrQrO)rErbrPrH©rErbrP) r rrrr r[r*Ztestingrr) Z comparisonr6r7rErbrPr1r3r_r9r9r:rÅs( ÿÿ ÿücCsttj||||dd�dS)z@ Checks the elementwise equality of two masked arrays. úArrays are not equalrdN)rrIÚ__eq__©r6r7rErbr9r9r:rÞs  þcCs dd„}t|||||dd�dS)zT Raises an assertion error if two masked arrays are not equal elementwise. cSst t||ƒ¡ S)N)r*ZalltruerrOr9r9r:Úcompareísz$fail_if_array_equal..comparererdN©r)r6r7rErbrhr9r9r:r ès ÿcs$‡fdd„}t|||||dd�dS)ú| Checks the equality of two masked arrays, up to given number odecimals. The equality is checked elementwise. cst||dˆ d�S)úr9r:rhúsz*assert_array_approx_equal..compareúArrays are not almost equalrdNri©r6r7r>rErbrhr9rlr:rós  ÿcs$‡fdd„}t|||||dd�dS)rjcs t||ˆƒS)rk)rrOrlr9r:rhsz*assert_array_almost_equal..comparermrdNrirnr9rlr:rs  ÿcCsttj||||dd�dS)z7 Checks that x is smaller than y elementwise. zArrays are not less-orderedrdN)rrIÚ__lt__rgr9r9r:rs  þcCs:|tkrt|tkƒ|tkr(t|tkƒt|||d�dS)z- Asserts the equality of two masks. rNN)rrr)Úm1Úm2rEr9r9r:rs   )Tr"r#)r;T)r?)r?)r?)rar?T)r?Tr?T)r?T)r?T)r;r?T)r;r?T)r?T)r?).Ú__doc__Ú __future__rrrrIZnumpyr*rrZnumpy.core.umathÚcorer.Z numpy.testingrrr r r r rrrrrZ __all__maskedZunittestr!Z__some__from_testingÚ__all__rrrGrrr`rrrrrr rrrrr9r9r9r:Úsb û þ    '  ÿ