B { `r<ã@süddlZddlmZddlZddlmZddlmmZddl m Z ej ddej Z Gdd„dƒZ ed krød Zd eZd \ZZxted dƒD]fZdeZe ee¡ eed¡Ze e¡Zededƒeedeƒƒededed fƒqŽWdS)éN)Úreduce)Úfloat_)Ú build_err_msgÚignore)Úallc@sxeZdZdd„Zddd„Zddd„Zd d „Zd d „Zd d„Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„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-4iou4664/numpy/ma/timer_comparison.pyÚ__init__s@ zModuleTester.__init__ÚTc Cs,| |¡}| |¡}| | |¡| |¡¡} | |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} | sLt||g|d|j |j f|dd} | sLt| ƒ‚|||ƒ} | |jk rv|rv|j| | d} t| tƒrŽ| } dg} n|  ¡} |  ¡} |  ¡} | sòd d |  d¡t| ƒ}t||g|d |f|dd} | sòt| ƒ‚Wn2tk r&t||g||dd} t| ƒ‚YnXd S) zZ Assert that a comparison of two masked arrays is satisfied elementwise. )ÚmaskÚOérr%z (shapes %s, %s mismatch))ÚxÚy)ÚheaderÚnamesédgY@z (mismatch %s%%)N)rrrrÚdtypeÚcharÚastyperÚ isinstanceÚnpZndarrayÚsizeÚisnanÚshaperÚAssertionErrorrÚboolZravelrÚtolistr ÚlenÚ ValueError)r$Z comparisonr,r-Úerr_msgr.Z fill_valueÚxfZyfÚmZcondÚmsgÚvalZreducedÚmatchr%r%r&Úassert_array_compare3s^        $    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_equalkszModuleTester.assert_array_equalcCs\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)r5r Úpir)r$r,r@Úxmr%r%r&Útest_0ss&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&rIŽrJ))éé)éécSs||S)Nr%)r,r-r%r%r&rI–rJN)r5r rFrÚwhereZset_fill_valuerÚanyr9r8r6rr r<) r$r,r-Úm1Úm2rGZymr?Úsr%r%r&Útest_1}s&&" & 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+rNrKrLr)r)é écNégð?g@Zhello)r)Úcopy)r5r ÚstrÚreprÚtyper9rErrr rÚobjectr8r) r$Úx1Zx2Zx3Úx4Únr@rRÚ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 rKrN)érr+)rNrNrNrN)ÚaxisrLN) r rrr r r9rrrE)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. érWrMrNrLrK)rNrr+r+rÚabcÚdefN) r r5rÚreshaper rr9rrrrr 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 é rNr+gð?g@)rkN)r rr r9rErr3r)r$r,r-rGr%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 rk)r1rNéÿÿÿÿN)r rrr)r r9r)r$r,r-rGr@Ú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ð?rrmrNr+rM)r))ÚsqrtÚlogÚlog10ÚexpÚ conjugateN) r rFÚgetattrr!r"Ú fromnumericrZninrErZ_mask)r$ÚdÚfZufZmfÚargsÚurÚmrr%r%r&Útest_7Ss*.  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))rc)Úweights)r}Úreturnedg@rN)rcr~rMg@)rcr}g(@g«ªªªªª @g$@gÀX@g@g@)r rEZaverager9rrhr r5Úaddrr rrr )r$ZottÚresultZwtsZw1Zw2r,r-rQrRr`Zm4Zm5Úzr%r%r&Útest_99usT     *$2$2   $ "zModuleTester.test_99cCs*| d¡}|j|dd…<| ddd¡}dS)NrerWrMrNrLrK)r rrh)r$r,r%r%r&Útest_A¢s zModuleTester.test_AN)r(r(T)r()Ú__name__Ú __module__Ú __qualname__r'rDrErHrTrardrjrlror|r‚rƒr%r%r%r&rs" 7  *43"-rÚ__main__zNfrom __main__ import ModuleTester import numpy tester = ModuleTester(module) zimport numpy.ma.core as module )rkrkr+rbztester.test_%i()rkz#%iz2..................................................zModuleTester.test_%i.__doc__zcore_current : %.3f - %.3f)ZtimeitÚ functoolsrZnumpyr5rZnumpy.core.fromnumericr#rvZ numpy.testingrZseterrrFrr„Z setup_baseZ setup_curZnrepeatZnloopÚrangeÚiÚfuncÚTimerrÚcurrÚprintÚevalr%r%r%r&Ús,