
    C>qju                     Z   d dl Z d dlZd dlmZmZ d dlmZmZm	Z	m
Z
mZmZ d dlmZmZmZmZmZ d Zd Zd;dZd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z# G d d      Z$d Z% G d dejL                        Z' G d de'      Z(d Z)d Z*d Z+d  Z,e jZ                  j]                  d!ej^                  ej`                  ejb                  ejd                  ejf                  ejh                  ejj                  ejl                  ejn                  ejp                  ejr                  ejt                  g      d"        Z;e jZ                  j]                  d#g d$      d%        Z<e jZ                  j]                  d&g d'      d(        Z=e jZ                  j]                  d)g d*      d+        Z>e jZ                  j]                  d,g d-      d.        Z?e jZ                  j]                  d/g d0      d1        Z@d2 ZAd3 ZBd4 ZCd5 ZDd6 ZEd7 ZFe jZ                  j]                  d8g d9      d:        ZGy)<    N)rational	rational2)_broadcast_shape
as_stridedbroadcast_arraysbroadcast_shapesbroadcast_tosliding_window_view)assert_assert_array_equalassert_equalassert_raisesassert_raises_regexc                     | D cg c]  }t        j                  |       }}t        | }|D cg c]  }|j                   }}|gt	        |      z  }t        ||       y c c}w c c}w N)npzerosr   shapelenr   )input_shapesexpected_shapesinarrays	outarraysa	outshapesexpecteds           a/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/numpy/lib/tests/test_stride_tricks.pyassert_shapes_correctr      sc     &222H2 (+I"+,Q,I,#h-/HH%	 3,s
   A A%c                 |    | D cg c]  }t        j                  |       }}t        t        t        g|  y c c}w r   )r   r   r   
ValueErrorr   )r   r   r   s      r    assert_incompatible_shapes_raiser"   !   s4     &222H2*.:: 3s   9c                 j   t        j                  | t              }t        t         j                  j	                  |            }t        j
                  |      j                  |      }|r|j                  }|j                  }|r|d d d   }|d d d   }||z   }t        ||      \  }}	t        ||	       y )Ndtype)
r   r   intmultiplyreducearangereshapeTr   r   )
shape0shape1
transposedflippedx0nx1yb0b1s
             r   assert_same_as_ufuncr7   )   s     
&	$B 	BKKv&'A	1		f	%BTTTT"X"X 	RAb"%FBq"    c                      t        j                  d      } t        j                  d      }t        | |      \  }}t        | |       t        ||       y )N
   )r   r*   r   r   )xr4   bxbys       r   	test_samer>   ?   s@    
		"A
		"Aa#FBq"q"r8   c                      t        j                  d      } t        j                  d      }t        t        d      5  t	        | |d       d d d        y # 1 sw Y   y xY w)Nr:   zgot an unexpected keywordfloat64r$   )r   r*   r   	TypeErrorr   )r;   r4   s     r   test_broadcast_kwargsrB   F   sJ     			"A
		"A	Y(C	D 0AY/0 0 0s   AAc                     t        j                  g dg      } t        j                  dgdgdgg      }t        | |      \  }}t        j                  g dg dg dg      }|j                  }t	        ||       t	        ||       y )N         rE   rF   rG   )r   arrayr   r,   r   )r;   r4   r<   r=   bx0by0s         r   test_one_offrK   Q   sn    
)A
1#sQC!Aa#FB
((Iy)4
5C
%%CsBsBr8   c                  z    g d} | D ]2  }|g}t        ||       ||g}t        ||       |||g}t        ||       4 y )N)
 rE   rG   r   rE   )r   rG   rE   r   )rG   r   rE   rG   rG   rE   rG   rG   r   )datar   r   input_shapes2input_shapes3s        r   test_same_input_shapesrY   [   sT    D  	4wlE2mU3u-mU3	4r8   c                      ddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgd	dgdgdd	gdgddgdgddgdgdd	gd	gg} | D ]#  \  }}t        ||       t        |d d d
   |       % y )NrN   rO   rR   rT   rS   rE   rE   rQ   r   r   rP   r&   rU   rV   r   r   s      r   (test_two_compatible_by_ones_input_shapesr^   v   s    
 t
&	6"
&	6"
&	6"
&	6"
&	6"
&	6"
&	6"
&	6"
&	6"
&	6"
&	6"
&	6"D )- B$nlN;l4R40.ABr8   c                      ddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgdd	gd	gdd
gd	gdd	gd	gdd	gd	gddgdgdd
gd
gddgdgddgdgdd
gd
gg} | D ]#  \  }}t        ||       t        |d d d   |       % y )NrM   rO   rT   rS   rN   r[   rR   r   r\   rP   rQ   r&   rU   r]   s      r   3test_two_compatible_by_prepending_ones_input_shapesra      s0   
 dT
 
 
 
fv
$ 
 
 
fv
fv
dT
 
 
 
fv
$ 
 
 
fv
fv)D, )- B$nlN;l4R40.ABr8   c                  f    ddgddgg dddgg} | D ]  }t        |       t        |d d d            y )	NrO      rF   rG   rF   rO   rO   rc   rE   rG   rd   rF   rG   rG   r&   )r"   )rV   r   s     r   )test_incompatible_shapes_raise_valueerrorrj      sN     
t		I	D  =(6(dd);<=r8   c            
         g ddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgd	dgdgdd	gdgddgdgddgdgdd	gd	gd
dgdgddgdgddgdgddgdgd
dgdgddgdgddgdgddgdgd
dgdgd
dgdgd
dgdgddgdgdd	gdgddgdgd
dgdgddgdgdd	gd	gddgdgd
dgdgd
d	gd	g} | D ]v  \  }}t        |d   |d   d|d    d|d           t        |d   |d          t        |d   |d   d       d
|vsOt        |d   |d   dd       t        |d   |d   dd       x y )NrN   rO   rR   rT   rS   r[   rQ   r\   rP   rM   r`   r   rE   zShapes:  TF)r7   r]   s      r   test_same_as_ufuncrm      s.   "
t"
&	6"" &	6"" &	6"	"
 &	6"" &	6"" &	6"" &	6"" &	6"" &	6"" &	6"" &	6"" &	6"" dT"  "   !""  #"$ fv%"& $ '"(  )"*  +", fv-". fv/"0 dT1"2  3"4  5"6  7"8 fv9": $ ;"<  =">  ?"@ fvA"B fvC"DF )- O$n\!_l1o'Q'8,q/9JK	M 	\!_l1o>\!_l1otD \! a,q/5$O a,q/4NOr8   c                  f   t        j                  d      dt        j                  d      gt        j                  d      dt        j                  d      gt        j                  d      dt        j                  d      gt        j                  d      dt        j                  d      gt        j                  d      dt        j                  d      gt        j                  d      d	t        j                  d	      gt        j                  d      dt        j                  d      gt        j                  d      d
t        j                  d      j                  dd      gt        j                  d      dt        j                  g dg dg      gt        j                  d      dt        j                  d      gt        j                  d      dt        j                  d      gt        j                  d      dt        j                  d      gt        j                  d      dt        j                  d      gt        j                  d      dt        j                  d      gt        j                  d      dt        j                  d      gg} | D ]  \  }}}t        ||      }t        ||         y )Nr   r`   rN   rE   rO   rG   rf   rF   rD   rR   r&   re   r   rE   rF   rE   rF   )r   rF   rF   rE   )rF   r   )r   rH   r   onesr*   r+   r	   r   )rV   input_arrayr   r   actuals        r   test_broadcast_to_succeedsru      s   	!dBHHQK(	!dBHHQK(	!dBHHQK(	T2771:&	T2771:&	Y	 23	1tRYYq\*	1vryy|33Ar:;	1vrxxI(>?@	Q
#	Q
#	Q
# 
T2771:&	&"''&/2	&"''&/2%D( )- -$UHk518V,-r8   c                      ddgddgddgddgddgddgddgd	dgdd
gddgddgg} | D ].  \  }t        j                  |      t        t        fd       0 y )Nr`   rM   rN   rO   rf   rc   rp   rq   r[   r&   )r&   )r&   rF   c                      t               S r   )r	   )arrtarget_shapes   r   <lambda>z*test_broadcast_to_raises.<locals>.<lambda>  s    ,sL*I r8   )r   r   r   r!   )rV   
orig_shaperx   ry   s     @@r   test_broadcast_to_raisesr|     s    	r
	r
	r
	t	t	t			r
	u	D %) K 
Lhhz"j"IJKr8   c                      t        t               d       t        t        ddg      d       t        t        t        j                  d            d       t        t        t        j                  d      t        j                  d            d       t        t        t        j                  d      gdz   d       t        t        t        j                  d      gd	z   d       t        t        t        j                  d      gdz  dgz    d       t        j                  d      gdz  t        j                  d
      gdz  z    t	        t
         fd       y )NrM   rE   rF   rf   r[   rG   rd   rp       d   rG   c                      t          S r   )r   bad_argss   r   rz   z&test_broadcast_shape.<locals>.<lambda>-      &6&A r8   )r   r   r   rr   r   r!   r   s   @r   test_broadcast_shaper     s     !#R(!1a&)40!"''&/2F;!"''&/2776?CVL!RWWV_$5$:<fE!RWWV_$5$;=vF !RWWQZL2$5$;=tD
|b BGGAJ<"#44H*ABr8   c                     g dgdgdgdgdgddgdgdgdgddgdgg ddgd	gd	gd
dgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgg} | D ]  \  }}t        t        | |        t        t        dgdz   d       t        t        dgdz   d       t        t        dgdz   d       y )NrM      rp   rf   r[   r~   ))   r      r   rE   r   )r   rE   r   )r   r   r   r   rR   rS   rT   rQ   r\   rP   r`   rN   rO   rF   rG   rF   r   r   )r   r   )rV   r   ry   s      r   test_broadcast_shapes_succeedsr   0  s    
R
r


$ 
6
&	6"	-y9
i 
&	6"
&	6"
&	6"
&	6"
&	6"
&	6"
&	6"
dT
 
 
 
fv
$ 
 
 
fv
fv
t
Vf7D: '+ D"l%|4lCD !VHrM3V<!VHsN4f= !TFRK148r8   c                      ddgddgg dddgg dd	dgg} | D ]  t        t        fd
        dgdz  dgdz  z   t        t        fd       y )NrO   rc   re   rf   rg   rh   ri   )rp   rS   r   )r:   r   rF   c                      t          S r   r   )r   s   r   rz   z.test_broadcast_shapes_raises.<locals>.<lambda>d  s    *:L*I r8   r   c                      t          S r   r   r   s   r   rz   z.test_broadcast_shapes_raises.<locals>.<lambda>g  r   r8   )r   r!   )rV   r   r   s    @@r   test_broadcast_shapes_raisesr   Y  sp     
t		I)	
FD  Kj"IJK v{dVb[(H*ABr8   c                     t        j                  d g      } t        |       }t        j                  d g      }t        |t        j                  d g             t        j                  g d      } t        | dd| j                  z  f      }t        j                  ddg      }t        ||       t        j                  g d      } t        | ddd| j                  z  f      }t        j                  g dg dg dg      }t        ||       t        j
                  d	d
g      }t        j                  d|      } t        j                  dd      | d<   t        | dd| j                  f      }g dgdz  }d gdz  gdz  }t        |j
                  |       t        ||d          t        ||d          t        j                  dd      } t        | dd| j                  f      }t        | j
                  |j
                         t        j
                  dgdgd      }t        j                  d|      } t        | dd| j                  f      }t        | j
                  |j
                         t        d      D cg c]  }t        |       }}t        j                  |t              } t        | dd| j                  f      }t        | j
                  |j
                         t        |gdz  |       t        d      D cg c]  }t        |       }}t        j                  |t              } t        | dd| j                  f      }t        | j
                  |j
                         t        |gdz  |       y c c}w c c}w )NrE   rF   rG   rd   rf   rF   r   stridesrE   rG   r~   r   )numi4)objOrc   r$   r   r   rd   r   V4 )namesformats)r   rH   r   r   itemsizer%   emptyr*   r   ranger   r   )r   a_viewr   dtexpected_numexpected_objirs           r   test_as_stridedr   j  s   
$A]FxxHvrxx/0
AAJJ/@AFxxAHvx(
A!Q^1DEFxx|\BCHvx( 
=,/	0B
R AyyAAeH!QZZAF >A%LFQJ<!#Lr"|VE]3|VE]3 	T"A!QZZAF&,,' 
RDdV4	5B
R A!QZZAF&,,' $Ah'!'A'
(#A!QZZAF&,,'sQw'  %Qx(!1(A(
)$A!QZZAF&,,'sQw' 	( 	)s   <M<Nc                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestSlidingWindowViewc                     t        j                  d      }t        |d      }t        j                  ddgddgddgddgg      }t	        ||       y )Nr   rF   r   rE   rG   rd   )r   r*   r
   rH   r   )selfrx   arr_viewr   s       r   test_1dzTestSlidingWindowView.test_1d  sU    iil&sA.88aVVVV% & 	8X.r8   c                    t         j                  d dd df   \  }}d|z  |z   }d}t        ||      }t        j                  ddgddggddgdd	ggddgd	d
gggddgddggdd	gddggd	d
gddgggg      }t	        ||       y )NrG   rd   r:   )rF   rF   r   rE      rF                     r   ogridr
   rH   r   r   r   jrx   r   r   r   s          r   test_2dzTestSlidingWindowView.test_2d  s    xxBQB11fqj&sE2881vBx0 !1vBx0 !1vBx02 !#Bx"b2 "Bx"b2 "Bx"b245 6 	8X.r8   c                     t         j                  d dd df   \  }}d|z  |z   }t        |dd      }t        j                  g dg dg dg dgg      }t	        ||       y )	NrG   rd   r:   r   )r   r:   r   )rE   r   r   )rF   r   r   )rG   r   r   r   r   r   r   rx   r   r   s         r   test_2d_with_axisz'TestSlidingWindowView.test_2d_with_axis  sj    xxBQB11fqj&sAq188k)))+ , - 	8X.r8   c                     t         j                  d dd df   \  }}d|z  |z   }t        |dd      }t        j                  g dg dggg dg d	ggg d
g dggg      }t	        ||       y )NrG   rd   r:   re   r[   ro   rD   r:   r   r   r   r   r   r   r   r   r   r   r   r   r   s         r   test_2d_repeated_axisz+TestSlidingWindowView.test_2d_repeated_axis  s    xxBQB11fqj&sFF;88y(* +++- .++- .	/ 0 	8X.r8   c                    t         j                  d dd df   \  }}d|z  |z   }d}t        ||      }t        j                  g dg dgg dg dggg dg dgg dg d	ggg dg d
gg d	g dggg      }t	        ||       y )Nrd   r:   re   ro   r   rD   r   r   r   )      r   )r   r   !   r   r   s          r   test_2d_without_axisz*TestSlidingWindowView.test_2d_without_axis  s    xxBQB11fqj&sE288y,7(,79+\:+\:<+\:+\:<	= > 	8X.r8   c                 0   t         j                  d dd df   \  }}d|z  |z   }t        j                  t        d      5  t        |d       d d d        t        j                  t        d      5  t        |d       d d d        t        j                  t        d      5  t        |d	d
       d d d        t        j                  t        d      5  t        |d       d d d        y # 1 sw Y   xY w# 1 sw Y   xxY w# 1 sw Y   RxY w# 1 sw Y   y xY w)Nrd   r:   zcannot contain negative valuesmatch)r&   rG   z3must provide window_shape for all dimensions of `x`rN   z2Must provide matching length window_shape and axisrh   rP   )axisz.window shape cannot be larger than input arrayr   r   )r   r   pytestraisesr!   r
   )r   r   r   rx   s       r   test_errorsz!TestSlidingWindowView.test_errors  s   xxBQB11fqj]]:-MN 	.W-	.]]KM 	+  T*	+ ]]JL 	=  YV<	= ]]FH 	-  V,	- 	-	. 	.	+ 	+	= 	=	- 	-s0    C(0C4 D D(C14C= D	Dc                    t        j                  d      }t        |dd      }t        |j                  j
                          t        j                  t        d      5  d|d<   d d d        t        |dd	      }t        |j                  j
                         d|d
<   t        |t        j                  g d             y # 1 sw Y   ]xY w)Nr   rF   F	writeablez#assignment destination is read-onlyr   rG   r\   TrP   )r   rG   rF   rG   rd   )r   r*   r
   r   flagsr   r   r   r!   r   rH   )r   rx   views      r   test_writeablez$TestSlidingWindowView.test_writeable  s    iil"3U;DJJ((()]];= 	 DJ	 #3T:

$$%T
3 9:	 	s   CC
c           	      D    G d dt         j                        }t        j                  d      j                  |      }t	        t        t        |dd      |              t	        t        t        |dd      |             t	        t        t        |d      |              y )Nc                       e Zd Zy)1TestSlidingWindowView.test_subok.<locals>.MyArrayN)__name__
__module____qualname__rM   r8   r   MyArrayr     s    r8   r   r   rF   FsubokT)r   ndarrayr*   r   r   
isinstancer
   )r   r   rx   s      r   
test_subokz TestSlidingWindowView.test_subok  s    	bjj 	 iil(J239> @&( ( 	) 	
.sATBGLMJ23:GDDEr8   N)r   r   r   r   r   r   r   r   r   r   r   rM   r8   r   r   r     s+    ///
//-$;
Fr8   r   c                     t        j                  d      } t        | d      }t        |j                  j
                          t        | d      }t        |j                  j
                         d|d<   t        | t        j                  | d             d| j                  _        t        | d      }t        | d      }t        |j                  j
                          y )Nr:   Fr   TrG   .)r   rr   r   r   r   r   r   	full_like)rx   r   s     r   as_strided_writeabler     s    
''"+CcU+D

$$$% cT*DDJJ  !DIsBLLa01  CIIcU+DcT*D

$$$%r8   c                       e Zd Zd Zy)VerySimpleSubClassc                 N    t        j                  |ddi|j                  |       S )Nr   T)r   rH   r   )clsargskwargss      r   __new__zVerySimpleSubClass.__new__  s&    xx4T4V499#>>r8   N)r   r   r   r   rM   r8   r   r   r     s    ?r8   r   c                       e Zd Zd Zd Zy)SimpleSubClassc                 `    t        j                  |ddi|j                  |       }d|_        |S )Nr   Tsimple)r   rH   r   info)r   r   r   r   s       r   r   zSimpleSubClass.__new__  s1    xx4T4V499#>	r8   c                 .    t        |dd      dz   | _        y )Nr   r   z
 finalized)getattrr   )r   r   s     r   __array_finalize__z!SimpleSubClass.__array_finalize__"  s    C,|;	r8   N)r   r   r   r   r   rM   r8   r   r   r     s    
<r8   r   c                     t        g d      } t        t        |       t         u        t        | dd| j                  z  f      }t        t        |      t
        j                  u        t        | dd| j                  z  fd      }t        t        |      t         u        t        g d      } t        | dd| j                  z  fd      }t        t        |      t        u        t        |j                  dk(         t        j                  t        |             j                  dd	      }t        | |      \  }}t        t        |      t
        j                  u        t        t        |      t
        j                  u        t        |j                  |j                  k(         t        | |d
      \  }}t        t        |      t        u        t        |j                  dk(         t        t        |      t
        j                  u        t        |j                  |j                  k(         d}t        | |      }t        t        |      t
        j                  u        t        |j                  |k(         t        | |d
      }t        t        |      t        u        t        |j                  dk(         t        |j                  |k(         y )Nr   rf   rF   r   T)r   r   r   zsimple finalizedr&   rE   r   )rF   rd   )r   r   typer   r   r   r   r   r   r*   r   r+   r   r   r	   )r   r   bb_viewr   s        r   test_subclassesr   &  s   <(ADG))*AJJ/@AFDLBJJ&'AJJ/@MFDL../|$AAJJ/@MFDLN*+FKK--. 			#a&!!"a(A%a+NFFDLBJJ&'DLBJJ&'FLLFLL()%a$7NFFDLN*+FKK--.DLBJJ&'FLLFLL() E!U#FDLBJJ&'FLLE!"!U$/FDLN*+FKK--.FLLE!"r8   c                     t        j                  g d      } t        | d      }t        |j                  j
                  d       t        t        |j                  t        d       d       dt        |       fdt        d|       fg}|D ]  \  }}t        ||      D ]  \  }}|rt        j                  t              5  t        |j                  j
                  d       d d d        t        j                  t              5  d|d d  d d d        t        |j                  j
                  d       t        |j                  j
                  d         t        |       t        d|       fD ]?  }|D ]8  }d|j                  _        t        |j                  j
                  d       d|d d  : A d| j                  _        t        d|       \  }}t        |j                  j
                  d       d}dg}t!        t        j                  d      ||      }	t        j"                  d	      }
t        |	|
      \  }}t%        |j&                  |j&                  k(         y # 1 sw Y   {xY w# 1 sw Y   axY w)
NrD   re   Fr   FTFTrf   rN   )r   rH   r	   r   r   r   r   r!   __setitem__slicer   zipr   warnsFutureWarningDeprecationWarningr   r   r   r   )originalresult
test_casesis_broadcastresultsarray_is_broadcast_r   r   tricky_arrayotherfirstseconds                r   r   r   K  s   xx	"H(F+F''/*f00%+qA -h89 "21h"?@BJ!+ ;g*-lG*D 	;&!\\-0 ? !7!7>?\\"45 " !F1I" V\\33T: V\\33T:	;; %X.$Q13  	F%)FLL"//6F1I	  %HNN H-IAv''/ EcGbhhqk5':LHHTNE$\59ME6EKK6<<'(=? ?" "s   9!I;I I I*c                     t        j                  g d      } dt        |       fdt        d|       fg}|D ]J  \  }}t        ||      D ]6  \  }}|rt	        |      j
                  rJ t	        |      j
                  s6J  L y )NrD   r   r   r   )r   rH   r   r   
memoryviewreadonly)r  r  r  r  r	  r  s         r   test_writeable_memoryviewr  {  s    
 xx	"H.x9: "21h"?@BJ!+ 7g*-lG*D 	7&! "&)2222%f-6666	77r8   c                     t        j                  dt              } t        j                  dgdz  t              }t        | d      }t	        ||       t        | t        j                  d            \  }}t	        ||       y )Nr   r$   rG   rO   )r   rH   objectr	   r   r   rr   )rs   r   rt   r
  s       r   test_reference_typesr    s`    ((3f-Kxx	0H+t,Fx( bggaj9IFAx(r8   r%   c                     t        j                  d|       }t        |d|j                  dz  fd      }|j                  dk(  sJ |j
                  | k(  sJ y)z=Test as_strided with check_bounds=True with different dtypes.r:   r$   r   rF   Tr   r   check_boundsN)r   r*   r   r   r   r%   )r%   r;   r4   s      r   (test_as_strided_checked_different_dtypesr    sQ    & 			"E"A1D1::>*;$OA77d??77er8   zsize,view_size,stride_mult))r:   r   rE   )r:   r   rF   )r   r:   rF   )r   r:   r:   c                     t        j                  | t         j                        }|j                  }t	        ||f||z  fd      }|j
                  |fk(  sJ |dd|   d| }t        ||       y)z%Test 1D arrays with positive strides.r$   Tr  Nr   r*   int64r   r   r   r   )size	view_sizestride_multr;   r   r4   r   s          r   +test_as_strided_checked_1d_positive_stridesr!    ss     			$bhh'AzzH	);(>'@t	A 77yl""";
+Hq(#r8   zshape,window_shape))r:   rO   )r   r  )r   r"  c                 4   t        j                  | d   t         j                        }|j                  }| d   |d   z
  dz   }||d   f}||f}t	        |||d      }|j
                  |k(  sJ t        |d   |d|d           t        |d   ||d    d        y)z Test sliding window views in 1D.r   r$   rE   Tr  Nr&   r  )r   window_shaper;   r   	n_windows
view_shapeview_stridesr4   s           r   )test_as_strided_checked_sliding_window_1dr*    s     			%("((+AzzHa<?*Q.I\!_-Jh'L1J4PA77j   qtQ0a12quaa 0 234r8   r   )r~   )r   r   )r:   r:   c                     t        j                  t        j                  |       t         j                        j	                  |       }t        |d      }t        ||       y)z$Test 2D arrays with default strides.r$   T)r  N)r   r*   prodr  r+   r   r   )r   r;   r4   s      r   *test_as_strided_checked_2d_default_stridesr-    sA     			"''%.199%@A14(Aq!r8   r  )r   rE   rF   r:   r   c                     t        j                  dgt         j                        }t        || fdd      }|j                  | fk(  sJ | dkD  r"t        t        j                  |dk(               yy)z0Test zero strides (broadcasting a single value).*   r$   r`   Tr  r   N)r   rH   r  r   r   r   all)r  r;   r4   s      r   0test_as_strided_checked_zero_stride_broadcastingr1    s`     	"RXX&A1TGTEA77tgaxqBw  r8   zsize,shape,strides))r:   r  )r   )r:   r"     )r   )   r2  )r:   r#     )r:   r$  r5  )r   r   )P   r6  )r   )rG   r:   )@   r6  )r:   r  )r:   r"  r9  )r   r  )i)r:   rF   rG   rd   )`   r   r:  )r   r~   )r8  r:  )r   r;  )ir   r6  c                     t        j                  | t         j                        }t        j                  t
        d      5  t        |||d       ddd       y# 1 sw Y   yxY w)z:Test that out-of-bounds positive strides raise ValueError.r$   out of boundsr   Tr  Nr   r*   r  r   r   r!   r   )r  r   r   r;   s       r   6test_as_strided_checked_out_of_bounds_positive_stridesr@    sM    2 			$bhh'A	z	9 G1E7FG G Gs   AA#c                      t        j                  dt         j                        } | dd }t        |ddd      }t	        |j
                  d       t	        |d	   d	       t	        |d
   d       y)zmTest as_strided

    - with check_bounds=True
    - considers the base array bounds, not just the view.

      r$   NrF   rf   )i  Tr  r   rE   2   r   r*   r  r   r   r   r   r   r4   s      r   ,test_as_strided_checked_view_of_larger_arrayrF    s_     			$bhh'A	"1A 	1D&tDA$1q1rr8   c                      t        j                  dt         j                        } | dd }t        |ddd      }t	        |j
                  d       t	        |d	   d       t	        |d
   d       y)zgTest as_strided

    - with check_bounds=True
    - on a view that doesn't start at the beginning.
    rB  r$   r   f   rf   )r7  Tr  r   rE   n   NrD  rE  s      r   (test_as_strided_checked_view_with_offsetrJ  (  s]     			$bhh'A	#c
A1D%dCA$1s1sr8   c                      t        j                  dt         j                        } | dd }t        j                  t
        d      5  t        |ddd	
       ddd       y# 1 sw Y   yxY w)zDTest that negative strides on a view correctly detect out of bounds.rB  r$   r   r   r>  r   rf   )iTr  Nr?  r   r   s     r   3test_as_strided_checked_view_out_of_bounds_negativerM  8  sV    
		$bhh'A	!AA	z	9 E1D&tDE E E   AA(c                      t        j                  dt         j                        } | dd }t        j                  t
        d      5  t        |ddd	
       ddd       y# 1 sw Y   yxY w)zDTest that positive strides on a view correctly detect out of bounds.r   r$   _   a   r>  r   rf   )   Tr  Nr?  rL  s     r   3test_as_strided_checked_view_out_of_bounds_positiverS  B  sV    
		#RXX&A	"RA	z	9 E1D&tDE E ErN  c                      t        j                  dt         j                        } | dd }|dd }t        |ddd	      }t	        |j
                  d       t	        |d
   d       t	        |d   d       y)z;Test as_strided with check_bounds=True on a view of a view.rB  r$   r:   r   r   rf   )   Tr  r   r4  rE   #   NrD  )r   r   cr4   s       r   $test_as_strided_checked_nested_viewsrX  L  sf    
		$bhh'A	"S	A	!BA1D&tDA$1r1rr8   c                      t        j                  dt         j                        } | dd }t        |ddd      }t	        |j
                  d       | d	d	d
   }t        |ddd      }t	        |j
                  d       y	)zTest various slicing scenarios.rR  r$   r:   r   r  r2  Tr  NrF   r"  rD  )r   r   r4   rW  s       r   $test_as_strided_checked_sliced_arrayrZ  X  sj    
		#RXX&A	"RA1D%dCA$	#A#A1E5tDA% r8   z#start,stop,stride_bytes,should_pass))r   r:   i(  T)r   r:   i)  T)Z   rP  H   T)r[  rP  I   F)r   r   iT)r   r   iFc                 *   t        j                  dt         j                        }|| | }|r't        |d|fd      }t	        |j
                  d       yt        j                  t        d      5  t        |d|fd       ddd       y# 1 sw Y   yxY w)	z;Parametrized test for various view and stride combinations.r   r$   rf   Tr  r>  r   N)	r   r*   r  r   r   r   r   r   r!   )startstopstride_bytesshould_passr   r   r4   s          r   )test_as_strided_checked_view_parametrizedrc  e  s}     			#RXX&A	%Aq|oDQQWWd#]]:_= 	Rq|oDQ	R 	R 	Rs   /B		B)FF)Hr   numpyr   numpy._core._rational_testsr   r   numpy.lib._stride_tricks_implr   r   r   r   r	   r
   numpy.testingr   r   r   r   r   r   r"   r7   r>   rB   rK   rY   r^   ra   rj   rm   ru   r|   r   r   r   r   r   r   r   r   r   r   r   r  r  markparametrizeint8int16int32r  uint8uint16uint32uint64float32r@   	complex64
complex128r  r!  r*  r-  r1  r@  rF  rJ  rM  rS  rX  rZ  rc  rM   r8   r   <module>rt     sh     ;  &;,0 46B2B@=1Oh-4K&C"&9RC"2(jcF cFL&$? ?
<' <"#J-)`7() 





		
		
		







"#"  
$
$ 55  !34! 5! .G/.G$ EE	
! )

R

Rr8   