o 6aAY@sBddlZddlmZddlmZmZmZmZm Z m Z ddl m Z m Z mZmZmZmZddlZddZddZd8d d Zd d ZddZddZddZddZddZddZddZddZddZd d!Z d"d#Z!d$d%Z"d&d'Z#Gd(d)d)Z$d*d+Z%Gd,d-d-ej&Z'Gd.d/d/e'Z(d0d1Z)d2d3Z*d4d5Z+d6d7Z,dS)9Nrational) assert_equalassert_array_equal assert_raisesassert_assert_raises_regex assert_warns) as_stridedbroadcast_arrays_broadcast_shape broadcast_tobroadcast_shapessliding_window_viewcCs@dd|D}t|}dd|D}|gt|}t||dS)NcSg|]}t|qSnpzeros.0srrD/usr/lib/python3/dist-packages/numpy/lib/tests/test_stride_tricks.py z)assert_shapes_correct..cSsg|]}|jqSr)shape)rarrrrs)r lenr) input_shapesexpected_shapeinarrays outarrays outshapesexpectedrrrassert_shapes_corrects r$cCs$dd|D}tttg|RdS)NcSrrrrrrrrrz4assert_incompatible_shapes_raise..)r ValueErrorr )rr rrr assert_incompatible_shapes_raisesr&Fc Cstj|td}ttj|}t||}|r|j}|j}|r/|ddd}|ddd}||}t||\}} t || dS)Ndtype) rrintmultiplyreducearangereshapeTr r) shape0shape1 transposedflippedx0nx1yb0b1rrrassert_same_as_ufunc!sr:cCs:td}td}t||\}}t||t||dS)N )rr-r r)xr7bxbyrrr test_same7s   r?cCsRtd}td}ttdt||ddWddS1s"wYdS)Nr;zgot an unexpected keywordfloat64r')rr-r TypeErrorr )r<r7rrrtest_broadcast_kwargs>s   "rBcCsntgdg}tdgdgdgg}t||\}}tgdgdgdg}|j}t||t||dS)NrDrErF)rarrayr r/r)r<r7r=r>bx0by0rrr test_one_offIs rJcCsLgd}|D]}|g}t||||g}t|||||g}t||qdS)N) rrDrFrrD)rrFrDr)rFrrDrFrFrDrFrFr$)datarr input_shapes2 input_shapes3rrrtest_same_input_shapesSs     rVcCsddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgd dgdgdd gdgddgdgddgdgdd gd gg }|D]\}}t||t|ddd |qEdS) NrKrLrOrQrPrDrDrNrrrMr)rRrSrrrrr(test_two_compatible_by_ones_input_shapesns$               rZcCsddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgdd gd gdd gd gdd gd gdd gd gddgd gdd gd gdd gd gdd gd gdd gd gg}|D]\}}t||t|ddd |qhdS) NrrLrQrPrKrWrOrrXrMrNr)rRrYrrr3test_two_compatible_by_prepending_ones_input_shapess2                      r\cCsDddgddggdddgg}|D]}t|t|dddqdS) NrLrErFrErLrLr]rDrFr^rErFrFr))r&)rSrrrr)test_incompatible_shapes_raise_valueerrorsrdcCs"gddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgd dgdgdd gdgddgdgddgdgdd gd gd dgdgddgdgddgdgddgdgd dgdgddgdgddgdgddgdgd dgdgd dgdgd d gd gd dgdgd d gdgddgdgd dgdgdd gdgdd gd gddgdgd dgdgd d gd g}|D]D\}}t|d |d d|d |d ft|d |d t|d |d dd |vrt|d |d ddt|d |d ddqdS)NrKrLrOrQrPrWrNrXrMrr[rrDz Shapes: %s %sTF)r:rYrrrtest_same_as_ufuncs                                 ! # recCsltddtdgtddtdgtddtdgtddtdgtddtdgtdd td gtddtdgtdd tddd gtdd tgd gd ggtddtdgtddtdgtddtdgtddtdgtddtdgtddtdgg}|D]\}}}t||}t||qdS)Nrr[rKrDrLrFr`rErCrOr)r_rrDrErDrE)rrErErD)rEr)rrGronesr-r.r r)rS input_arrayrr#actualrrrtest_broadcast_to_succeedss(   rlc svddgddgddgddgddgddgddgd dgdd gdd gdd gg }|D]\}t|ttfd dq%dS)Nr[rrKrLr`r]rgrhrWr))r))r)rEcs tSN)r rarr target_shaperrs z*test_broadcast_to_raises..)rrrr%)rS orig_shaperrnrtest_broadcast_to_raisess  rscsttdttddgdtttddtttdtddtttdgddtttdgd dtttdgddgdtdgdtd gdttfd d dS) NrrDrEr`rWrFr^rg drFctSrm)r rbad_argsrrrq%z&test_broadcast_shape..)rr rrirr%rrrxrtest_broadcast_shapes   r{cCsbgdgdgdgdgdgddgdgdgdgddgdggddgd gd gd d gd gd dgdgddgdgd dgdgddgdgdd gd gddgdgddgdgddgdgddgdgddgdgddgdgddgd gddgdgdd gd gdd gd gddgdgddgdgddgdgg}|D] \}}tt||qttdgddttdgddttdgdddS)Nrrgr`rWrt))r}r~rDr|)rrDr})rr~r}rrOrPrQrNrXrMr[rKrLrErFrErurv)rr)rSrrprrrtest_broadcast_shapes_succeeds(sB                       rcsnddgddggdddggdd dgg}|D] ttfd d qdgd dgd ttfd d dS)NrLr]r_r`rarbrc)rgrPr)r;rrEcrwrmrr)rrrrq\rzz.test_broadcast_shapes_raises..rucrwrmrrrxrrrq_rz)rr%)rSr)ryrrtest_broadcast_shapes_raisesQsrcCs tdg}t|}tdg}t|tdgtgd}t|dd|jfd}tddg}t||tgd}t|ddd|jfd}tgdgdgdg}t||td d g}tjd |d }tdd |d<t|dd|jfd}gdgd}dgdgd}t|j|t||dt||dtjd dd }t|dd|jfd}t|j|jtdgdgd}tjd |d }t|dd|jfd}t|j|jddt dD}tj|t d }t|dd|jfd}t|j|jt|gd|dS)NrDrErFr^r`rErstridesrDrFrtr)numi4)objOr]r'rrr^rV4)namesformatscSsg|]}t|qSrr)rirrrrsz#test_as_strided..) rrGr ritemsizer(emptyr-rranger)ra_viewr#dt expected_num expected_objrrrrtest_as_stridedbsB     rc@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS)TestSlidingWindowViewcCsDtd}t|d}tddgddgddgddgg}t||dS)NrrErrDrFr^)rr-rrGr)selfroarr_viewr#rrrtest_1ds   zTestSlidingWindowView.test_1dcCstjddddf\}}d||}d}t||}tddgddggddgdd ggddgd d gggddgd d ggdd gd d ggd d gd dgggg}t||dS)NrFr^r;)rErErrD rE rogridrrGrrrjrorrr#rrrtest_2ds  zTestSlidingWindowView.test_2dcCsdtjddddf\}}d||}t|dd}tgdgdgdgdgg}t||dS) NrFr^r;r)rr;r)rDrr)rErr)rFrrrrrrrorr#rrrtest_2d_with_axiss   z'TestSlidingWindowView.test_2d_with_axiscCsztjddddf\}}d||}t|dd}tgdgdgggdgd gggd gd ggg}t||dS) NrFr^r;r_rWrfrCr;rrrrrrrrrrrrrrrrtest_2d_repeated_axiss   z+TestSlidingWindowView.test_2d_repeated_axiscCstjddddf\}}d||}d}t||}tgdgdggdgdgggdgdggdgd gggdgd ggd gd ggg}t||dS) Nr^r;r_rfrrCrrr)ru)rru!rrrrrtest_2d_without_axiss  z*TestSlidingWindowView.test_2d_without_axiscCstjddddf\}}d||}tjtdd t|dWdn1s*wYtjtdd t|dWdn1sFwYtjtddt|d d d Wdn1sdwYtjtd dt|d WddS1swYdS)Nr^r;zcannot contain negative valuesmatch)r)rFz3must provide window_shape for all dimensions of `x`rKz2Must provide matching length window_shape and axisrbrM)axisz.window shape cannot be larger than input array)rr)rrpytestraisesr%r)rrrrorrr test_errorss.    "z!TestSlidingWindowView.test_errorscCstd}t|ddd}t|jj tjtdd d|d<Wdn1s)wYt|dd d}t|jjd|d <t |t gd dS) NrrEF writeablez#assignment destination is read-onlyrrFrXTrM)rrFrErFr^) rr-rrflagsrrrr%rrG)rroviewrrrtest_writeables   z$TestSlidingWindowView.test_writeablecCsnGdddtj}td|}ttt|ddd| ttt|ddd|ttt|d| dS)Nc@s eZdZdS)z1TestSlidingWindowView.test_subok..MyArrayN)__name__ __module__ __qualname__rrrrMyArraysrrrEFsubokT)rndarrayr-rr isinstancer)rrrorrr test_suboks z TestSlidingWindowView.test_subokN) rrrrrrrrrrrrrrrrs      rcCstd}t|dd}t|jj t|dd}t|jjd|d<t|t|dd|j_t|dd}t|dd}t|jj dS)Nr;FrTrF.)rrir rrrr full_like)rorrrras_strided_writeables      rc@seZdZddZdS)VerySimpleSubClasscOstj|ddi||S)NrT)rrGr)clsargskwargsrrr__new__ szVerySimpleSubClass.__new__N)rrrrrrrrrs rc@seZdZddZddZdS)SimpleSubClasscOs$tj|ddi||}d|_|S)NrTsimple)rrGrinfo)rrrrrrrrszSimpleSubClass.__new__cCst|ddd|_dS)Nrrz finalized)getattrr)rrrrr__array_finalize__sz!SimpleSubClass.__array_finalize__N)rrrrrrrrrr s rcCstgd}tt|tut|dd|jfd}tt|tjut|dd|jfdd}tt|tutgd}t|dd|jfdd}tt|tut|jdkt t | dd }t ||\}}tt|tjutt|tjut|j |j kt ||dd \}}tt|tut|jdktt|tjut|j |j kd }t||}tt|tjut|j |kt||dd }tt|tut|jdkt|j |kdS) Nrr`rErT)rrrzsimple finalizedr)rDr)rEr^)rrtyper rrrrrr-rr.r rr )rrbb_viewrrrrtest_subclassess8   rc Cstgd}t|d}t|jjdtt|jt dddt |fdt d|ffD]O\}}|D]H}|rqt t t|jjdWdn1sJwYt t d|dd<Wdn1sdwYt|jjdq0t|jjdq0q*t |t d|fD]}|D]}d|j_t|jjdd|dd<qqd|j_t d|\}}t|jjdd}dg}ttd||}td}t ||\} } t| j| jkdS)NrCr_FrTr`rK)rrGr rrrrr% __setitem__slicer r FutureWarningDeprecationWarningr rrr) originalresult is_broadcastresults_rr tricky_arrayotherfirstsecondrrrr<sF        rcCsbtgd}dt|fdtd|ffD]\}}|D]}|r&t|js%Jqt|jr-JqqdS)NrCFTr)rrGr memoryviewreadonly)rrrrrrrtest_writeable_memoryviewks   rcCsXtjdtd}tjdgdtd}t|d}t||t|td\}}t||dS)Nrr'rFrL)rrGobjectr rr ri)rjr#rkrrrrtest_reference_types~s   r)FF)-numpyrnumpy.core._rational_testsr numpy.testingrrrrrr numpy.lib.stride_tricksr r r r rrrr$r&r:r?rBrJrVrZr\rdrerlrsr{rrrrrrrrrrrrrrrrs<       4).f %/