o 6˜¿a*=ã@søddlZddlmZddlZddlmZddlmmZddl m Z ej Z Gdd„dƒZ e dkrxdZd eZd \ZZed d ƒD]9Zd eZe ee¡ eed¡Ze e¡Zededƒeedeƒƒededd›ded d›ƒq@dSdS)éN)Úreduce)Úfloat_)Ú build_err_msgc@sôeZdZdd„Z  d 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|_Ynwg|_dS©N)ÚmoduleÚallequalÚarangeÚarrayÚ concatenateÚcountÚequalÚfilledÚgetmaskÚ getmaskarrayÚidÚinnerÚ make_maskÚmaskedÚ masked_arrayÚ masked_valuesÚmask_orÚnomaskÚonesÚouterÚrepeatÚresizeÚsortÚtakeÚ transposeÚzerosÚMaskTypeÚumathÚAttributeErrorÚcoreÚ testnames)Úselfr©r'ú;/usr/lib/python3/dist-packages/numpy/ma/timer_comparison.pyÚ__init__sB  ÿ zModuleTester.__init__ÚTc Cs(| |¡}| |¡}| | |¡| |¡¡} | |j|| d|¡}| |j|| d|¡}|jjdkrQ| t¡}t|t j ƒrJ|j dkrJd|t   |¡<nt   |¡rQd}|jjdkrv| t¡}t|t j ƒro|j dkrod|t   |¡<nt   |¡rvd}z|j dkp†|j dkp†|j |j k} | s¤t||g|d|j ›d|j ›d|d d } | s¤J| ƒ‚|||ƒ} | |jur·|r·|j| | d} t| tƒrÂ| } dg} n |  ¡} |  ¡} |  ¡} | sòd d |  d¡t| ƒ}t||g|d |f|d d } | sõJ| ƒ‚WdSWdSty}zt||g||d d } t| ƒ|‚d}~ww)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)rrrrÚdtypeÚcharÚastyperÚ isinstanceÚnpÚndarrayÚsizeÚisnanÚshaperrÚboolÚravelÚallÚtolistr ÚlenÚ ValueError)r&Ú comparisonr0r1Úerr_msgr2Ú fill_valueÚxfÚyfÚmÚcondÚmsgÚvalÚreducedÚmatchÚer'r'r(Úassert_array_compare0sl         ÿü   ÿü ù €þz!ModuleTester.assert_array_comparecCs|j|j|||dddS)zH Checks the elementwise equality of two masked arrays. zArrays are not equal)rEr2N)rPr )r&r0r1rEr'r'r(Úassert_array_equalgs ÿzModuleTester.assert_array_equalÚignore)r@cCsHt ddddtddddddddg ¡}gd ¢}|j||d }|d d S) ú! Tests creation çð?çÀç@ç@ç@ç$Àç$@ç@© r.rrrrrr.rrrrrr+rN)r9r Úpir)r&r0rIÚxmr'r'r(Útest_0os& zModuleTester.test_0c Cs t ddddtddddddddg ¡}t gd ¢¡}gd ¢}gd ¢}|j||d }|j||d }t |d |¡}| d ¡|| d¡ ¡sGJ‚|j}|j t dd„|ƒksVJ‚|  |¡t |ƒt dd„|ƒkshJ‚dD]#}||_||_||_||_||_|  |¡t |ƒt dd„|ƒksJ‚qjdS)rSrTrUrVrWrXrYrZr[) rXçr[rVgð¿gÀr`rYrZrTr`r[r\) rrr.rrr.r.rrrrr.r+g@Œµx¯DrcSs||Srr'r/r'r'r(Ú‹óz%ModuleTester.test_1..cSó||Srr'r/r'r'r(raŒrb))éé)éécSrcrr'r/r'r'r(ra”rbN) r9r r]rÚwhereÚset_fill_valuerÚanyr=r;rr rB) r&r0r1Úm1Úm2r^ÚymrGÚsr'r'r(Útest_1zs(& $&úzModuleTester.test_1c Cs¼t gd¢¡}|j|gd¢d}|j|gd¢d}| |¡}t|ƒt|ƒt|dƒt|dƒus4J‚|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 dks»J‚gd¢}|  |¡}|  |¡}||usÏJ‚|j |dd}||usÜJ‚d S)z2 Tests conversions and indexing. )r.rgrdre©r.rrrr+)rr.rr.r.é rgécreN)r.rgrerd)rr.r.rérTr[)r.Úhellorgre)r)rrr.rr)Úcopy) r9r ÚstrÚreprÚtyperQrrr rÚobjectr=r) r&Úx1Úx2Úx3Úx4ÚnrIrlÚm3r'r'r(Útest_2–s@           zModuleTester.test_2cCsÒ| d¡}|j|d<| |d¡}| | ||g¡|¡sJ‚| | |¡gd¢¡s*J‚|j|ddd}| |gd¢¡|j|ddd}| ||¡sJJ‚|jddd}| ||¡sYJ‚| dd¡}| ||¡sgJ‚d S) z& Tests resize/repeat rdrg)é)rrr.rrrr.r)rgrgrgrgr©Úaxis)rrr.r.rgrgrereN)r rrrr rrrQ)r&r}Úy4Úy5Úy6Úy7Úy8r'r'r(Útest_3Ás    zModuleTester.test_3c Cs@| d¡}t d¡}|j|dd…<| ddd¡}| ddd¡}| t |d¡| |d¡¡s/J‚| t |dd¡| |dd¡¡sAJ‚| t | |d ¡| |d ¡¡| ||¡¡sYJ‚| t  | |d ¡| |d ¡¡|  ||¡¡sqJ‚|  gd ¢t ¡}|j|d<| |gd ¢¡}|d d ksŽJ‚|ddks–J‚|ddksžJ‚d S)zB Test of take, transpose, inner, outer products. érsrfrgrerd)rgrr.r.r)Úabcr.Údefrgre)rrerdr‹N) r r9rÚreshaperrrrrrr ry)r&r0r1Útr'r'r(Útest_4Õs&   $ ÿ ÿ zModuleTester.test_4cCs| d¡}| d¡}| d¡}|j|d<|d7}| ||d¡s"J‚|d7}| ||d¡s0J‚| d¡}| d¡}|j|d<|d8}| ||d¡sMJ‚|d8}| ||d¡s[J‚| d¡d}| d¡d}|j|d<|d9}| ||d¡s|J‚|d9}| ||d¡sŠJ‚| d¡d}| d¡d}|j|d<|d}| ||¡s©J‚|d}| ||¡sµJ‚| d¡d}| d¡d}|j|d<|d}| ||d¡sÖJ‚|| d¡}| || d¡¡| d¡ t¡}| d¡}|j|d<|d7}| ||d¡sJ‚dS)z* Tests inplace w/ scalar é rgr.rTrV)rN)r rrrQrr7r)r&r0r1r^r'r'r(Útest_5ísR            zModuleTester.test_5cCs*|jdtd}| d¡}|jdtd}|j|d<|j}|jdtd}|j|d<||7}||7}| |||¡s9J‚| |||¡sCJ‚| |j| ||j¡¡sQJ‚|jdtd}|jdtd}|j|d<|j}|jdtd}|j|d<||8}||8}| |||¡s…J‚| |||¡sJ‚| |j| ||j¡¡sJ‚|jdtd}|jdtd}|j|d<|j}|jdtd}|j|d<||9}||9}| |||¡sÑJ‚| |||¡sÛJ‚| |j| ||j¡¡séJ‚|jdtd}|jdtd}|j|d<|j}|jdtd}|j|d<||}||}dS)z) Tests inplace w/ array r)r5rgéÿÿÿÿN)r rrr,rr)r&r0r1r^rIÚar'r'r(Útest_6"sT          zModuleTester.test_6c Csè|jdddtdgdddgdgdd|jdddtdgdddgdgddf}dD]C}zt|j|ƒ}WntyFtt|ƒ}Ynwt|j|ƒ}|d |j…}||Ž}||Ž}| |  d¡|  d¡|¡| |j |j ¡q.d S) z Tests ufuncrTrr’rgr.rfr+)ÚsqrtÚlogÚlog10ÚexpÚ conjugateN) r r]Úgetattrr"r#Ú fromnumericrÚninrQrÚ_mask)r&ÚdÚfÚufÚmfÚargsÚurÚmrr'r'r(Útest_7Vs **ÿ ÿ äzModuleTester.test_7c Cs¾|jgd¢gd¢d}| d|j|dd¡| d|j|gd¢d¡|j|gd¢d d \}}| d|¡|d ks;J‚|j|dd…<|j|dd|jusNJ‚|jgd¢gd¢d}| d d ¡}|j|dd…d f<| |j|dddd g¡|j|d dd|jusƒJ‚| 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)r`rTrVr[rpr+rVrr‚)rTrTrVrT)Úweightsr.)r¦ÚreturnedrWrgr`)rƒr§rT)rr.r.r.r.r)r.rrrrr.rfg@)rƒr¦r[g(@g«ªªªªª @)r`rTrVr[rWrZ)rrr.r.rr)rr.r.r.r.r.)r`rTçÀX@r¨rWg@rX)r`rTr¨r¨rWrZ) r rQÚaveragerrr r9Úaddrr rrr )r&ÚottÚresultÚwtsÚw1Úw2r0r1rkrlrÚm4Úm5Úzr'r'r(Útest_99ysT    *$22  $  zModuleTester.test_99cCs*| d¡}|j|dd…<| ddd¡}dS)NrŠrsrfrgrerd)r rr)r&r0r'r'r(Útest_A§s zModuleTester.test_AN)r*r*T)r*)Ú__name__Ú __module__Ú __qualname__r)rPrQr9Úerrstater_ror€r‰rr‘r”r¥r³r´r'r'r'r(r s4" ÿ 7      *      4  3  "  -rÚ__main__zNfrom __main__ import ModuleTester import numpy tester = ModuleTester(module) zimport numpy.ma.core as module )rrr.rztester.test_%i()rz#%iz2..................................................zModuleTester.test_%i.__doc__zcore_current : z.3fz - )ÚtimeitÚ functoolsrÚnumpyr9rÚnumpy.core.fromnumericr$r›Ú numpy.testingrr]rrµÚ setup_baseÚ setup_curÚnrepeatÚnloopÚrangeÚiÚfuncÚTimerrÚcurrÚprintÚevalr'r'r'r(Ús0   $ "ó