a :jgN=ã@sèddlZddlmZddlZddlmmZddlm Z ej Z Gdd„dƒZ e dkrädZ de Zd \ZZed d ƒD]nZd eZe ee¡ eed ¡Ze e¡Zededƒeedeƒƒededd›ded d›ƒqtdS)éN)Úreduce)Ú build_err_msgc@sðeZdZdd„Zd dd„Zd!dd„Zejd d d d „ƒZejd d d d„ƒZ ejd d dd„ƒZ ejd d dd„ƒZ ejd d dd„ƒZ ejd d dd„ƒZ ejd d dd„ƒZejd d dd„ƒZejd d dd„ƒZejd d dd„ƒZdS)"Ú ModuleTestercCs||_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j |_ t |_ |j |_ |j |_ |j |_ |j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_z |j|_Wntyü|jj|_Yn0g|_dS©N)ÚmoduleÚallequalÚarangeÚarrayÚ concatenateÚcountÚequalÚfilledÚgetmaskZ getmaskarrayÚidÚinnerÚ make_maskÚmaskedÚ masked_arrayÚ masked_valuesÚmask_orÚnomaskÚonesÚouterÚrepeatÚresizeÚsortÚtakeÚ transposeÚzerosZMaskTypeÚumathÚAttributeErrorÚcoreZ testnames)Úselfr©r#úC/usr/local/lib/python3.9/site-packages/numpy/ma/timer_comparison.pyÚ__init__ s@  zModuleTester.__init__ÚTc CsH| |¡}| |¡}| | |¡| |¡¡} | |j|| d|¡}| |j|| d|¡}|jjdkr¤| tj¡}t |tj ƒr–|j dkr–d|t  |¡<nt  |¡r¤d}|jjdkrð| tj¡}t |tj ƒrâ|j dkrâd|t  |¡<nt  |¡rðd}z |j dkp|j dkp|j |j k} | sVt||g|d|j ›d|j ›d|d d } | sVJ| ƒ‚|||ƒ} | |jur€|r€|j| | d} t | tƒr˜| } dg} n|  ¡} |  ¡} |  ¡} | süd d |  d¡t| ƒ}t||g|d |f|d d } | süJ| ƒ‚WnDtyB}z*t||g||d d } t| ƒ|‚WYd}~n d}~00dS)zZ Assert that a comparison of two masked arrays is satisfied elementwise. ©ÚmaskÚOérr#z (shapes z, z mismatch)©ÚxÚy)ÚheaderÚnamesédgY@z (mismatch %s%%)N)r rrrÚdtypeÚcharÚastypeÚnpÚfloat64Ú isinstanceZndarrayÚsizeÚisnanÚshaperrÚboolZravelÚallÚtolistr ÚlenÚ ValueError)r"Z comparisonr,r-Úerr_msgr.Z fill_valueÚxfZyfÚmZcondÚmsgÚvalZreducedÚmatchÚer#r#r$Úassert_array_compare/sd        $ÿü  ÿüz!ModuleTester.assert_array_comparecCs|j|j|||dddS)zH Checks the elementwise equality of two masked arrays. zArrays are not equal)r?r.N)rFr )r"r,r-r?r#r#r$Úassert_array_equalfsÿzModuleTester.assert_array_equalÚignore)r;cCsHt ddddtddddddddg ¡}gd ¢}|j||d }|d d S) ú! Tests creation çð?çÀç@ç@ç@ç$Àç$@ç@© r*rrrrrr*rrrrrr'rN)r4r Úpir)r"r,rAÚxmr#r#r$Útest_0ns&zModuleTester.test_0c Cs t ddddtddddddddg ¡}t gd ¢¡}gd ¢}gd ¢}|j||d }|j||d }t |d |¡}| d ¡|| d¡ ¡sŽJ‚|j}|j t dd„|ƒks¬J‚|  |¡t |ƒt dd„|ƒksÐJ‚dD]F}||_||_||_||_||_|  |¡t |ƒt dd„|ƒksÔJ‚qÔdS)rIrJrKrLrMrNrOrPrQ) rNçrQrLgð¿gÀrVrOrPrJrVrQrR) rrr*rrr*r*rrrrr*r'g@Œµx¯DrcSs||Srr#r+r#r#r$ÚŠóz%ModuleTester.test_1..cSs||Srr#r+r#r#r$rW‹rX))éé)éécSs||Srr#r+r#r#r$rW“rXN) r4r rSrÚwhereZset_fill_valuer Úanyr9r7rr r=) r"r,r-Úm1Úm2rTZymr@Úsr#r#r$Útest_1ys&& $zModuleTester.test_1c CsÂt gd¢¡}|j|gd¢d}|j|gd¢d}| |¡}t|ƒt|ƒt|dƒt|dƒushJ‚|d|dks|J‚d|d<d|d<| ||¡d|dd …<d|dd …<|j|d<|j|dd …<||d d …<|j|d<| gd ¢gd ¢¡|d d …<| gd ¢gd ¢¡|d d …<t d ¡d}|  |d¡}| gd¢t ¡}t gd¢t ¡}|d|d|dd…j dksxJ‚gd¢}|  |¡}|  |¡}||us¢J‚|j |dd}||us¾J‚d S)z2 Tests conversions and indexing. )r*r\rYrZ©r*rrrr')rr*rr*r*é r\écrZN)r*r\rZrY)rr*r*rérJrQ)r*Zhellor\rZ)r)rrr*rr)Úcopy) r4r ÚstrÚreprÚtyperGrrrrÚobjectr9r) r"Úx1Zx2Zx3Úx4ÚnrAr`Úm3r#r#r$Útest_2•s@          zModuleTester.test_2cCsÒ| d¡}|j|d<| |d¡}| | ||g¡|¡s:J‚| | |¡gd¢¡sTJ‚|j|ddd}| |gd¢¡|j|ddd}| ||¡s”J‚|jddd}| ||¡s²J‚| dd¡}| ||¡sÎJ‚d S) z& Tests resize/repeat rYr\)é)rrr*rrrr*r)r\r\r\r\r©Úaxis)rrr*r*r\r\rZrZN)rrrrr rrrG)r"rmZy4Zy5Zy6Zy7Zy8r#r#r$Útest_3Às    zModuleTester.test_3c CsF| d¡}t d¡}|j|dd…<| ddd¡}| ddd¡}| t |d¡| |d¡¡s^J‚| t |dd¡| |dd¡¡s‚J‚| t | |d ¡| |d ¡¡| ||¡¡s²J‚| t  | |d ¡| |d ¡¡|  ||¡¡sâJ‚|  gd ¢t ¡}|j|d<| |gd ¢¡}|d d ksJ‚|ddks0J‚|ddksBJ‚d S)zB Test of take, transpose, inner, outer products. érfr[r\rZrY)r\rr*r*r)Úabcr*Údefr\rZ)rrZrYrvN) rr4rÚreshaperrrrr rr rk)r"r,r-Útr#r#r$Útest_4Ôs&   $ ÿ ÿ zModuleTester.test_4cCs| d¡}| d¡}| d¡}|j|d<|d7}| ||d¡sDJ‚|d7}| ||d¡s`J‚| d¡}| d¡}|j|d<|d8}| ||d¡sšJ‚|d8}| ||d¡s¶J‚| d¡d}| d¡d}|j|d<|d9}| ||d¡søJ‚|d9}| ||d¡sJ‚| d¡d}| d¡d}|j|d<|d}| ||¡sVJ‚|d}| ||¡spJ‚| d¡d}| d¡d}|j|d<|d}| ||d¡s´J‚|| d¡}| || d¡¡| d¡ tj¡}| d¡}|j|d<|d7}| ||d¡sJ‚dS)z* Tests inplace w/ scalar é r\r*rJrL)r{N)rrrrGrr3r4r5)r"r,r-rTr#r#r$Útest_5ìsR            zModuleTester.test_5cCsN|jdtjd}| d¡}|jdtjd}|j|d<|j}|jdtjd}|j|d<||7}||7}| |||¡sxJ‚| |||¡sŒJ‚| |j| ||j¡¡s¨J‚|jdtjd}|jdtjd}|j|d<|j}|jdtjd}|j|d<||8}||8}| |||¡sJ‚| |||¡s.J‚| |j| ||j¡¡sLJ‚|jdtjd}|jdtjd}|j|d<|j}|jdtjd}|j|d<||9}||9}| |||¡s¼J‚| |||¡sÒJ‚| |j| ||j¡¡sðJ‚|jdtjd}|jdtjd}|j|d<|j}|jdtjd}|j|d<||}||}dS)z) Tests inplace w/ array r{)r1r\éÿÿÿÿN)rr4r5rr(rr)r"r,r-rTrAÚar#r#r$Útest_6!sT         zModuleTester.test_6c Csè|jdddtdgdddgdgdd|jdddtdgdddgdgddf}dD]†}zt|j|ƒ}WntyŒtt|ƒ}Yn0t|j|ƒ}|d |j…}||Ž}||Ž}| |  d¡|  d¡|¡| |j |j ¡q\d S) z Tests ufuncrJrr}r\r*r[r')ÚsqrtÚlogÚlog10ÚexpÚ conjugateN) r rSÚgetattrrr Ú fromnumericrZninrGr Z_mask)r"ÚdÚfZufÚmfÚargsÚurÚmrr#r#r$Útest_7Us**ÿ  zModuleTester.test_7c CsÀ|jgd¢gd¢d}| d|j|dd¡| d|j|gd¢d¡|j|gd¢d d \}}| d|¡|d ksvJ‚|j|dd…<|j|dd|jusœJ‚|jgd¢gd¢d}| d d ¡}|j|dd…d f<| |j|dddd g¡|j|d dd|jusJ‚| dd g|j|dd¡|j|dd d\}}| |dd g¡gd¢}gd¢gd¢g}| d¡}| |j|ddd¡| |j|d|dd¡| | d¡d| d¡g¡}| | |d¡tj t d¡¡dd¡| |j|ddt d¡dd¡| |j|d d|j|dd|j|dddg¡| |j|d|dd¡| |j|d|dgd¢¡| |j|d d|j|dd|j|dddg¡|  d¡}gd¢} gd¢gd¢g} |  d¡} gd¢} | |j|  ||¡ddd¡| |j|  || ¡ddd¡| |j|  || ¡ddd ¡| |  |j|  || ¡dd¡d¡|  || ¡} | | | d¡d¡| |j| ddgd¢¡| |j| d dddg¡| |j| d|dgd¢¡dS)N)rVrJrLrQrcr'rLrrr)rJrJrLrJ)Úweightsr*)rŽÚreturnedrMr\rV)rsrrJ)rr*r*r*r*r)r*rrrrr*r[g@)rsrŽrQg(@g«ªªªªª @)rVrJrLrQrMrP)rrr*r*rr)rr*r*r*r*r*)rVrJçÀX@rrMg@rN)rVrJrrrMrP) r rGZaveragerrxrr4Úaddrrrrr )r"ZottÚresultZwtsZw1Zw2r,r-r_r`roZm4Zm5Úzr#r#r$Útest_99xsT    *$22  $ zModuleTester.test_99cCs*| d¡}|j|dd…<| ddd¡}dS)Nrurfr[r\rZrY)rrrx)r"r,r#r#r$Útest_A¦s zModuleTester.test_AN)r&r&T)r&)Ú__name__Ú __module__Ú __qualname__r%rFrGr4ZerrstaterUrbrprtrzr|rrr”r•r#r#r#r$r s2"ÿ 7      *      4  3  "  - rÚ__main__zNfrom __main__ import ModuleTester import numpy tester = ModuleTester(module) zimport numpy.ma.core as module )r{r{r*rqztester.test_%i()r{z#%iz2..................................................zModuleTester.test_%i.__doc__zcore_current : z.3fz - )ZtimeitÚ functoolsrÚnumpyr4Znumpy._core.fromnumericZ_corer†Z numpy.testingrrSrr–Z setup_baseZ setup_curZnrepeatZnloopÚrangeÚiÚfuncÚTimerrÚcurrÚprintÚevalr#r#r#r$Ús(  $