o 6a*=@sddlZddlmZddlZddlmZddlmmZddl m Z ej Z GdddZ e dkrxdZd eZd \ZZed d D]9Zd eZeeeeedZeeZededeedeededdded dq@dSdS)N)reduce)float_) build_err_msgc@seZdZddZ  d ddZd!ddZejd d d d Zejd d d dZ ejd d ddZ ejd d ddZ ejd d ddZ ejd d ddZ ejd d ddZejd d ddZejd d ddZejd d ddZdS)" 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|_dSN)moduleallequalarangearray concatenatecountequalfilledgetmask getmaskarrayidinner make_maskmasked masked_array masked_valuesmask_ornomaskonesouterrepeatresizesorttake transposezerosMaskTypeumathAttributeErrorcore testnames)selfrr';/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} | st||g|d|j d|j d|d d } | sJ| |||} | |jur|r|j| | d} t| tr| } dg} n | } | } | } | sd d | dt| }t||g|d |f|d d } | sJ| WdSWdSty}zt||g||d d } t| |d}~ww)zZ Assert that a comparison of two masked arrays is satisfied elementwise. maskOrr'z (shapes z, z mismatch)xy)headernamesdgY@z (mismatch %s%%)N)rrrrdtypecharastyper isinstancenpndarraysizeisnanshaperrboolravelalltolistr len ValueError)r& comparisonr0r1err_msgr2 fill_valuexfyfmcondmsgvalreducedmatcher'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_equalignore)r@cCsHtddddtddddddddg }gd }|j||d }|d d S) ! Tests creation ?@@@$$@@ r.rrrrrr.rrrrrr+rN)r9r pir)r&r0rIxmr'r'r(test_0os& zModuleTester.test_0c Cs tddddtddddddddg }tgd }gd }gd }|j||d }|j||d }t|d |}|d ||dsGJ|j}|j t dd|ksVJ| |t |t dd|kshJdD]#}||_||_||_||_||_| |t |t dd|ksJqjdS)rSrTrUrVrWrXrYrZr[) rXr[rVggr`rYrZrTr`r[r\) rrr.rrr.r.rrrrr.r+g@xDrcSs||Srr'r/r'r'r(z%ModuleTester.test_1..cS||Srr'r/r'r'r(rarb)))cSrcrr'r/r'r'r(rarbN) r9r r]rwhereset_fill_valueranyr=r;rr rB) r&r0r1m1m2r^ymrGsr'r'r(test_1zs(& $&zModuleTester.test_1c Cstgd}|j|gdd}|j|gdd}||}t|t|t|dt|dus4J|d|dks>Jd|d<d|d<|||d|dd <d|dd <|j|d<|j|dd <||d d <|j|d<|gd gd |d d <|gd gd |d d <td d}| |d}|gdt }tgdt }|d|d|ddj dksJgd}| |}| |}||usJ|j |dd}||usJd S)z2 Tests conversions and indexing. )r.rgrdrer.rrrr+)rr.rr.r. rgcreN)r.rgrerd)rr.r.rrTr[)r.hellorgre)r)rrr.rr)copy) r9r strreprtyperQrrr robjectr=r) r&x1x2x3x4nrIrlm3r'r'r(test_2s@           zModuleTester.test_2cCs|d}|j|d<||d}||||g|sJ|||gds*J|j|ddd}||gd|j|ddd}|||sJJ|jddd}|||sYJ|dd}|||sgJd S) z& Tests resize/repeat rdrg))rrr.rrrr.r)rgrgrgrgraxis)rrr.r.rgrgrereN)r rrrr rrrQ)r&r}y4y5y6y7y8r'r'r(test_3s    zModuleTester.test_3c Cs@|d}td}|j|dd<|ddd}|ddd}|t|d||ds/J|t|dd||ddsAJ|t||d ||d |||sYJ|t ||d ||d | ||sqJ| gd t }|j|d<||gd }|d d ksJ|ddksJ|ddksJd S)zB Test of take, transpose, inner, outer products. rsrfrgrerd)rgrr.r.r)abcr.defrgre)rrerdrN) r r9rreshaperrrrrrr ry)r&r0r1tr'r'r(test_4s&   $   zModuleTester.test_4cCs|d}|d}|d}|j|d<|d7}|||ds"J|d7}|||ds0J|d}|d}|j|d<|d8}|||dsMJ|d8}|||ds[J|dd}|dd}|j|d<|d9}|||ds|J|d9}|||dsJ|dd}|dd}|j|d<|d}|||sJ|d}|||sJ|dd}|dd}|j|d<|d}|||dsJ||d}|||d|dt}|d}|j|d<|d7}|||dsJdS)z* Tests inplace w/ scalar rgr.rTrV)rN)r rrrQrr7r)r&r0r1r^r'r'r(test_5sR            zModuleTester.test_5cCs*|jdtd}|d}|jdtd}|j|d<|j}|jdtd}|j|d<||7}||7}||||s9J||||sCJ||j|||jsQJ|jdtd}|jdtd}|j|d<|j}|jdtd}|j|d<||8}||8}||||sJ||||sJ||j|||jsJ|jdtd}|jdtd}|j|d<|j}|jdtd}|j|d<||9}||9}||||sJ||||sJ||j|||jsJ|jdtd}|jdtd}|j|d<|j}|jdtd}|j|d<||}||}dS)z) Tests inplace w/ array r)r5rgN)r rrr,rr)r&r0r1r^rIar'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 ufuncrTrrrgr.rfr+)sqrtloglog10exp conjugateN) r r]getattrr"r# fromnumericrninrQr_mask)r&dfufmfargsurmrr'r'r(test_7Vs **  zModuleTester.test_7c Cs|jgdgdd}|d|j|dd|d|j|gdd|j|gdd d \}}|d||d ks;J|j|dd<|j|dd|jusNJ|jgdgdd}|d d }|j|ddd f<||j|dddd g|j|d dd|jusJ|dd g|j|dd|j|dd d\}}||dd ggd}gdgdg}|d}||j|ddd||j|d|dd||dd|dg}|||dtjtddd||j|ddtddd||j|d d|j|dd|j|dddg||j|d|dd||j|d|dgd||j|d d|j|dd|j|dddg| d}gd} gdgdg} | d} gd} ||j| ||ddd||j| || ddd||j| || ddd || |j| || ddd| || } ||| dd||j| ddgd||j| d dddg||j| d|dgddS)N)r`rTrVr[rpr+rVrr)rTrTrVrT)weightsr.)rreturnedrWrgr`)rrrT)rr.r.r.r.r)r.rrrrr.rfg@)rrr[g(@g @)r`rTrVr[rWrZ)rrr.r.rr)rr.r.r.r.r.)r`rTX@rrWg@rX)r`rTrrrWrZ) r rQaveragerrr r9addrr rrr )r&ottresultwtsw1w2r0r1rkrlrm4m5zr'r'r(test_99ysT    *$22  $  zModuleTester.test_99cCs*|d}|j|dd<|ddd}dS)Nrrsrfrgrerd)r rr)r&r0r'r'r(test_As zModuleTester.test_AN)r*r*T)r*)__name__ __module__ __qualname__r)rPrQr9errstater_rorrrrrrrrr'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 functoolsrnumpyr9rnumpy.core.fromnumericr$r numpy.testingrr]rr setup_base setup_curnrepeatnlooprangeifuncTimerrcurrprintevalr'r'r'r(s0   $ "