B «@`*=ã@søddlZddlmZddlZddlmZddlmmZddl m Z ej Z Gdd„dƒZ e dkrôdZd eZd \ZZx|ed d ƒD]nZd eZe ee¡ eed¡Ze e¡Zededƒeedeƒƒededd›ded d›ƒq‚WdS)éN)Úreduce)Úfloat_)Ú 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|_y |j|_Wntk rþ|jj|_YnXg|_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#ú=/tmp/pip-unpacked-wheel-ecq9wray/numpy/ma/timer_comparison.pyÚ__init__s@ zModuleTester.__init__ÚTc CsB| |¡}| |¡}| | |¡| |¡¡} | |j|| d|¡}| |j|| d|¡}|jjdkr¢| t¡}t|t j ƒr”|j dkr”d|t   |¡<nt   |¡r¢d}|jjdkrì| t¡}t|t j ƒrÞ|j dkrÞd|t   |¡<nt   |¡rìd}y |j dkp|j dkp|j |j k} | sRt||g|d|j ›d|j ›d|d d } | sRt| ƒ‚|||ƒ} | |jk r||r||j| | d} t| tƒr”| } dg} n|  ¡} |  ¡} |  ¡} | sød d |  d¡t| ƒ}t||g|d |f|d d } | søt| ƒ‚WnBtk r<}z"t||g||d d } t| ƒ|‚Wdd}~XYnXdS)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ÚastyperÚ isinstanceÚnpZndarrayÚsizeÚisnanÚshaperÚAssertionErrorrÚboolZravelÚallÚtolistr ÚlenÚ ValueError)r"Z comparisonr*r+Úerr_msgr,Z fill_valueÚxfZyfÚmZcondÚmsgÚvalZreducedÚmatchÚer#r#r$Úassert_array_compare0s\        $   z!ModuleTester.assert_array_comparecCs|j|j|||dddS)zH Checks the elementwise equality of two masked arrays. zArrays are not equal)r=r,N)rDr )r"r*r+r=r#r#r$Úassert_array_equalgszModuleTester.assert_array_equalÚignore)r9cCs\t ddddtddddddddg ¡}d d d d d d d d d d d d g }|j||d }|d d S) z! Tests creation gð?gÀg@g@g@g$Àg$@g@r)r)r'N)r3r Úpir)r"r*r?Úxmr#r#r$Útest_0os&zModuleTester.test_0c Csft ddddtddddddddg ¡}t dd ddd d d dddd dg ¡}d d d d d d d d d d d d g }d d d d d d d d d d d d g }|j||d}|j||d}t |d|¡}| d¡|| d ¡ ¡sÊt‚|j }|j t dd„|ƒksèt‚|  |¡t |ƒt dd„|ƒkst‚xRdD]J}||_ ||_ ||_ ||_ ||_ |  |¡t |ƒt dd„|ƒkst‚qWdS)z! Tests creation gð?gÀg@g@g@g$Àg$@g@ggð¿gÀr)r)r'g@Œµx¯DcSs||S)Nr#)r*r+r#r#r$Ú‹óz%ModuleTester.test_1..cSs||S)Nr#)r*r+r#r#r$rJŒrK))éé)éécSs||S)Nr#)r*r+r#r#r$rJ”rKN)r3r rGrÚwhereZset_fill_valuer Úanyr7r6r4rr r;) r"r*r+Úm1Úm2rHZymr>Úsr#r#r$Útest_1zs&&" & zModuleTester.test_1c Csìt ddddg¡}|j|ddddgd}|j|ddddgd}| |¡}t|ƒt|ƒt|dƒt|dƒkstt‚|d|dksˆt‚d|d<d|d<| ||¡d|dd…<d|dd…<|j|d<|j|dd…<||d d …<|j|d<| ddddgddddg¡|d d …<| ddddgddddg¡|d d …<t  d ¡d }|  |d ¡}| dd ddgt ¡}t dd ddgt ¡}|d|d|dd…j dksœt‚dddddg}|  |¡}|  |¡}||ksÌt‚|j |dd}||k sèt‚d S)z2 Tests conversions and indexing. r)rOrLrMr)r'é écNégð?g@Zhello)r)Úcopy)r3r ÚstrÚreprÚtyper7rErrrrÚobjectr6r) r"Úx1Zx2Zx3Úx4Únr?rSÚm3r#r#r$Útest_2–s@       $$   zModuleTester.test_2c Csê| d¡}|j|d<| |d¡}| | ||g¡|¡s:t‚| | |¡ddddddddg¡s`t‚|j|ddd}| |ddddddddg¡|j|ddd}| ||¡s¬t‚|jddd}| ||¡sÊt‚| dd¡}| ||¡sæt‚d S) z& Tests resize/repeat rLrO)érr))rOrOrOrO)ÚaxisrMN) rrrrr r7rrrE)r"r_Zy4Zy5Zy6Zy7Zy8r#r#r$Útest_3Ás   & zModuleTester.test_3c CsN| d¡}t d¡}|j|dd…<| ddd¡}| ddd¡}| t |d¡| |d¡¡s^t‚| t |dd¡| |dd¡¡s‚t‚| t |  |d ¡|  |d ¡¡| ||¡¡s²t‚| t  |  |d ¡|  |d ¡¡|  ||¡¡sât‚|  d dd ddgt ¡}|j|d<| |d ddg¡}|d d ks&t‚|ddks8t‚|ddksJt‚d S) zB Test of take, transpose, inner, outer products. érXrNrOrMrL)rOrr)r)rÚabcÚdefN) rr3rÚreshaperrr7rrr rr r])r"r*r+Útr#r#r$Útest_4Õs"   $ zModuleTester.test_4cCs| d¡}| d¡}| d¡}|j|d<|d7}| ||d¡sDt‚|d7}| ||d¡s`t‚| d¡}| d¡}|j|d<|d8}| ||d¡sšt‚|d8}| ||d¡s¶t‚| d¡d}| d¡d}|j|d<|d9}| ||d¡søt‚|d9}| ||d¡st‚| d¡d}| d¡d}|j|d<|d}| ||¡sVt‚|d}| ||¡spt‚| d¡d}| d¡d}|j|d<|d}| ||d¡s´t‚|| d¡}| || d¡¡| d¡ t¡}| d¡}|j|d<|d7}| ||d¡st‚dS)z* Tests inplace w/ scalar é rOr)gð?g@)rlN)rrrr7rErr1r)r"r*r+rHr#r#r$Útest_5ísR            zModuleTester.test_5cCs6|jdtd}| d¡}|jdtd}|j|d<|j}|jdtd}|j|d<||7}||7}| |||¡srt‚| |||¡s†t‚| |j| ||j¡¡s¢t‚|jdtd}|jdtd}|j|d<|j}|jdtd}|j|d<||8}||8}| |||¡s t‚| |||¡s"t‚| |j| ||j¡¡s@t‚|jdtd}|jdtd}|j|d<|j}|jdtd}|j|d<||9}||9}| |||¡sªt‚| |||¡sÀt‚| |j| ||j¡¡sÞt‚|jdtd}|jdtd}|j|d<|j}|jdtd}|j|d<||}||}dS)z) Tests inplace w/ array rl)r/rOéÿÿÿÿN)rrrr'rr7r)r"r*r+rHr?Úar#r#r$Útest_6"sT         zModuleTester.test_6c Csî|jdddtdgdddgdgdd|jdddtdgdddgdgddf}xdD]ˆ}yt|j|ƒ}Wntk rtt|ƒ}YnXt|j|ƒ}|d |j…}||Ž}||Ž}| |  d¡|  d¡|¡| |j |j ¡q^Wd S) z Tests ufuncgð?rrnrOr)rN)r')ÚsqrtÚlogÚlog10ÚexpÚ conjugateN) r rGÚgetattrrr Ú fromnumericrZninrEr Z_mask)r"ÚdÚfZufZmfÚargsÚurÚmrr#r#r$Útest_7Vs*.  zModuleTester.test_7c Cs(|jddddgddddgd}| d|j|dd¡| d|j|ddddgd ¡|j|ddddgdd \}}| d|¡|d ks†t‚|j|dd…<|j|dd|jks¬t‚|jddddgddddgd}| d d ¡}|j|dd…df<| |j|ddddg¡|j|ddd|jks t‚| ddg|j|dd¡|j|ddd \}}| |ddg¡ddddddg}ddddddgddddddgg}| d¡}| |j|ddd¡| |j|d|dd¡| | d¡d| d¡g¡}| | |d¡tj  t d¡¡dd¡| |j|ddt d¡dd¡| |j|dd|j|dd|j|dddg¡| |j|d|d d¡| |j|d|dddddd dg¡| |j|dd|j|dd|j|dddg¡|  d¡}ddddddg} ddddddgddddddgg} |  d¡} ddddddg} | |j|  ||¡ddd¡| |j|  || ¡ddd¡| |j|  || ¡ddd¡| |  |j|  || ¡dd¡d¡|  || ¡} | | | d¡d¡| |j| ddddddd dg¡| |j| ddddg¡| |j| d|dddddd dg¡dS)Nggð?g@g@r)r)r')rd)Úweights)r~Úreturnedg@rO)rdrrNg@)rdr~g(@g«ªªªªª @g$@gÀX@g@g@)r rEZaverager7rrirr3Úaddrrrrr )r"ZottÚresultZwtsZw1Zw2r*r+rRrSraZm4Zm5Úzr#r#r$Útest_99ysT     *$2$2   $ "zModuleTester.test_99cCs*| d¡}|j|dd…<| ddd¡}dS)NrfrXrNrOrMrL)rrri)r"r*r#r#r$Útest_A§s zModuleTester.test_AN)r&r&T)r&)Ú__name__Ú __module__Ú __qualname__r%rDrEr3ZerrstaterIrUrbrerkrmrpr}rƒr„r#r#r#r$r s" 6  +54#.rÚ__main__zNfrom __main__ import ModuleTester import numpy tester = ModuleTester(module) zimport numpy.ma.core as module )rlrlr)rcztester.test_%i()rlz#%iz2..................................................zModuleTester.test_%i.__doc__zcore_current : z.3fz - )ZtimeitÚ functoolsrZnumpyr3rZnumpy.core.fromnumericr!rwZ numpy.testingrrGrr…Z setup_baseZ setup_curZnrepeatZnloopÚrangeÚiÚfuncÚTimerrÚcurrÚprintÚevalr#r#r#r$Ús*   $