
    /hh                       S SK r S SKrS SKJr  S SKJr  S SKrS SKJrJ	r	  S SK
JrJrJr  S SKrS SKrS SKrS SKrS SKrS SKJr  S SKJr  S SKJr   S S	K7   S SKr S SKr \R:                  " 5        \l        \R>                  " 5          S S
K Jr!  SSS5        SSS5         S SK"r"Sr#0 SS _SS _SS _SS _SS _SS _SS _SS _SS _SS _SS _SS _SS _SS _SS _SS _r$\!(       a  \$S	 \$S	 \(       a   \RJ                  " SS5        S \$S'   S \$S'   SS S!S S"S#S$S%S$S%S&S'S(S&S)S*-  * S)S*-  4S+.r'S, r(\$\$\'\'\'\'S-.r)\(       a  \)S.    H  r*\(" \*5      \)S.   \*'   M     \$RW                  5       r,\$RW                  5       r-\$ H  r.\.S/;  d  M  \-\.	 M     \$RW                  5       r/\$ H  r.\.S0;  d  M  \/\.	 M     \,\)S1'   \,\)S2'   \-\)S3'   \/\)S'   \/\)S4'   S r0S)r1/ S-Q/ S5Q4S3/S6/4S6/S6/4S2S1/S6/4S4S/S6/4S7.r2S8 r3S9 r4S: r5S; r6SsS< jr7S
S= jr8S
S> jr9S? r:S@ r;\)S.    V s/ s H  n \:" U 5      (       a  M  U PM     sn r<SA r=SB r>SC r?SD r@SE rASF rBSG rCSH rDSI rESJ rFSK rGSL rHSM rISN rJSO rKSP rLSQ rMSR rNSS rOST rPSU rQSV rRStSX jrSSY rTSZ rUSuS[ jrVS\ rWSvS] jrXS^ rYSwS_ jrZS` r[Sa r\Sb r]SxSc jr^SxSd jr_SySe jr`SwSf jraSg rbShrcSWrdSire\#(       a  SircSjrdSkre\_r\\`r]\ar\R                  " \Sl5      \R                  " \Sm5       " Sn So\R                  5      5       5       rh " Sp Sq\R                  5      ri\jSr:X  a  \R                  " 5         gg! \ a    Sr GNf = f! \ a    Sr GNf = f! \ a    Sr GNf = f! , (       d  f       GN= f! , (       d  f       GN= f! \ a    Sr! GNf = f! \ a    Sr" GNf = f! \RL                   a     GNf = fs  sn f )z    N)support)	os_helper)permutationsproduct)	randrangesamplechoice)Decimal)Fraction)warnings_helper)*)ndarrayT?cbBhHiIlLnNefdPQ    qr      r      )i   )i    )r   i   )           )r   l        l                     r               i i       )r   r   r   r   r   r   r   r   r   r   r!   r   r   r   r   c                 8   U S:X  a  SnU$ U S:X  a  SnU$ U S:X  a  SnU$ U S:X  a  SnU$ U S	:X  a  S
S-  * S
S-  4nU$ S H!  n [         R                  " U S
U-  S
-
  5          O   WS
-  (       a  S
U-  * S
U-  4OSS
U-  4nU$ ! [         R                   a     MZ  f = f)zReturn range of a native type.r   r$   r   r"   r   r.   r   r*   r   r/   r0   )
r&      @   ?                      r   )structpackerror)fmtlhexps      9/opt/python-3.13.8/usr/lib/python3.13/test/test_buffer.pynative_type_rangerB   b   s    
cz" I! 
 I 
 I 
 I 
4j!T'" I <CC!S&!, < %(!G3iC !QVI << s   BBB) @<>=!rD   
bBhHiIlLfdBbcm@ma@b)rC   123rC   )r   arraynumpy
memoryviewbytefmtc                     [        [        U    U   6 nUS:X  a  [        U/5      nUS:X  a  US:X  a  SnUS:X  a  [        U5      nUS;   a/  [        R
                  " X5      n[        R                  " X5      S   nU$ )zPReturn random item for a type specified by a mode and a single
format character.r   rS          r   efdr   )r   fmtdictbytesboolr;   r<   unpack)modecharobjxs       rA   randrange_fmtrb      sx     	74=&'As{1#J'>a7lAs{Gu}KK MM$"1%H    c                     U R                  S5      u  p#/ nU H  nUR                  [        X%U5      5        M      [        U5      S:X  a  US   $ [	        U5      $ )zReturn single random item.#r/   r   )splitappendrb   lentuple)r>   r`   r^   charsra   r   s         rA   gen_itemrk      sP    ))C.KD
A	t,- q6Q;1Q4,E!H,rc   c                 r    U S:X  a  [        X5      $ S/U -  n[        U 5       H  n[        X5      X4'   M     U$ )z,Return a list of random items (or a scalar).r   )rk   range)r   r>   r`   lstr   s        rA   	gen_itemsro      s>    Av!!#'C1X## Jrc   c                 z   [        [        U   [           5      nUS-   nUR                  S5      n[	        SS5      n[        U5       HW  n[        [        [        U   5      5      n[        [        U   [           5      nX7[        U(       a  UOS5      -  -  nXHU-   -  nMY     [        XU5      n	[        X15      n
XIU
4$ )Nre   ambr#   
   r/   )r	   capMODEstripr   rm   ri   rZ   MULTintro   rk   )r   r`   r^   xfmtr>   nmemb_r_   
multiplieritemsitems              rA   struct_itemsr~      s    #c(4.!D#:D
**U
CaE5\eGDM*+CHTN+
*J!<<=T!"	 
 as#EDDtrc   c                 F   Uc  [        [        U   [           5      nUc  [        [        [        U   5      5      n[        [        U   [
           5      nUS-   U[        U(       a  UOS5      -  -   n[        XU5      n[        XQ5      nUR                  S5      U-   U-   nXVU4$ )z"Return random format, items, item.re   r/   rq   )
r	   rs   rt   ri   rZ   rv   rw   ro   rk   ru   )r   r`   r^   r_   r{   r>   r|   r}   s           rA   	randitemsr      s    |c#htn%|eGDM*+C'J
*tc
*BB
BCac"ECD
**U
j
(4
/Ctrc   c              #   v   #    [         U   [            H!  n[        U    H  n[        XX#5      v   M     M#     g7f)z1Iterate through supported mode/char combinations.N)rs   rt   rZ   r   )r   r`   r^   r_   s       rA   	iter_moder      s2     CDMDAD// " s   79c              #   `   #    [        X5       H  nUv   M	     US:w  a  g[        X5      v   g7f)zpYield (format, items, item) for all possible modes and format
characters plus one random compound format string.r   N)r   r~   )nitemstestobjts      rA   iter_formatr      s1      v' ()
v
''s   ,.c                 <    SU ;   =(       d    SU ;   =(       d    SU ;   $ )Nr   r   r    )r>   s    rA   is_byte_formatr      s    #:11scz1rc   c                     [        U 5      nUS:H  =(       d    US:H  =(       a    U S   S:H  =(       a    XS-
     [        ;   $ )zformat suitable for memoryviewr/   r#   r   rD   )rh   
MEMORYVIEW)r>   ra   s     rA   is_memoryview_formatr      s@    CA!V1Q03q6S= #!H
"$rc   c                 ,    [        U [        5      (       + $ )z9Tuple items (representing structs) are regarded as atoms.
isinstancelistrn   s    rA   atompr      s    #t$$$rc   c                 "    [        U [        5      $ Nr   r   s    rA   listpr     s    c4  rc   c                 P    [        U 5      S:X  a  gU S   nU SS  H  nX-  nM	     U$ )zProduct of list elements.r   r/   N)rh   )rn   ra   vs      rA   prodr     s5    
3x1}AAW	 Hrc   c                    U S:X  a  gUS:X  a<  [        USS 5      U/-   n[        U S-
  SS5       H  nXE==   XES-      -  ss'   M     U$ U/[        USS 5      -   n[        SU 5       H  nXE==   XES-
     -  ss'   M     U$ )zHCalculate strides of a contiguous array. Layout is 'C' or
'F' (Fortran).r   r   Cr/   Nr#   )r   rm   )ndimshapeitemsizelayoutstridesr   s         rA   strides_from_shaper     s     qy}uQRy/XJ.tAvr2&AJ'A#,&J ' N *tE#2J//q$AJ'A#,&J  Nrc   c                     [        U 5      (       a  U $ [        U5      S:X  a  U S   $ S/US   -  nUS   (       a  [        U 5      US   -  OSn[        US   5       H  nXC-  n[        XXS-    USS 5      X$'   M     U$ )zfConvert flat item list to the nested list representation of a
multidimensional C array with shape 's'.r   r/   N)r   rh   rm   _ca)r|   srn   strider   starts         rA   r   r     s     U||
1v{Qx#!*C#$Q4SZ1Q4QF1Q4[U.!"6  Jrc   c                     [        U 5      (       a  U $ [        U5      S:X  a  U S   $ S/US   -  nUS   n[        US   5       H  n[        XSU2   USS 5      X$'   M     U$ )zlConvert flat item list to the nested list representation of a
multidimensional Fortran array with shape 's'.r   Nr/   )r   rh   rm   _fa)r|   r   rn   r   r   s        rA   r   r   -  sr     U||
1v{Qx#!*CqTF1Q4[U9f9%qu- Jrc   c                     [        U 5      (       a)  SU;  a#  [        U5      [        U 5      :w  a  [        S5      e[	        X5      $ Nr   zprod(shape) != len(items))r   r   rh   
ValueErrorr   r|   r   s     rA   carrayr   :  7    U||AJ4;#e*+D455urc   c                     [        U 5      (       a)  SU;  a#  [        U5      [        U 5      :w  a  [        S5      e[	        X5      $ r   )r   r   rh   r   r   r   s     rA   farrayr   ?  r   rc   c                 R    U  Vs/ s H  n[        U5      PM     nn[        U6 $ s  snf )z(Generate all possible tuples of indices.)rm   r   )r   r   	iterabless      rA   indicesr   D  s*    #()5aq5I)I *s   $c                 F    Sn[        U 5       H  nX2U   X   -  -  nM     U$ )zAConvert multi-dimensional index to the position in the flat list.r   rm   )r   indr   retr   s        rA   getindexr   I  s-    
C4[qzCF"" Jrc   c                     U(       d  U $ [        U5      n[        X!SS5      n[        X!SSS2   SS5      nS/[        U 5      -  n[        U5       H'  n[        X&U5      n[        X&SSS2   U5      nX   XX'   M)     U$ )z~Transpose flat item list that is regarded as a multi-dimensional
matrix defined by shape: dest...[k][j][i] = src[i][j][k]...  r/   r   Nr   r   )rh   r   r   r   )	srcr   r   sstridesdstridesdestr   frtos	            rA   	transposer   P  s     
u:D!$q#6H!$ddQ<H3S>Du~d*d"Ix07  Krc   c                 r    U / :X  a  U $ [        U 5      (       a  U /$ [        U S   5      [        U SS 5      -   $ )zflatten listr   r/   Nr   _flattenr   s    rA   r   r   _  s=    
by
SzzuCFhs12w///rc   c                 <    [        U 5      (       a  U $ [        U 5      $ )zflatten list or return scalarr   r   s    rA   flattenr   g  s    Szz
C=rc   c                 n    [        U 5      (       a  / $ [        XS      5      /[        U S   USS 5      -   $ )zFGet the shape of lst after slicing: slices is a list of slice
objects.r   r/   N)r   rh   slice_shape)rn   slicess     rA   r   r   m  s<     Szz	1I ;s1vvabz#BBBrc   c           	      x    [        U 5      (       a  U $ XS       Vs/ s H  n[        X!SS 5      PM     sn$ s  snf )z=Multi-dimensional slicing: slices is a list of slice objects.r   r/   N)r   
multislice)rn   r   sublsts      rA   r   r   t  s9    Szz
9<AYHvJvabz*HHHs   7c                     [        U5      (       a  U$ [        XS      XS      5       VVs/ s H  u  pE[        XEUSS USS 5      PM     nnnXUS   '   U $ s  snnf )a  Multi-dimensional slice assignment: llst and rlst are the operands,
lslices and rslices are lists of slice objects. llst and rlst must
have the same structure.

For a two-dimensional example, this is not implemented in Python:

  llst[0:3:2, 0:3:2] = rlst[1:3:1, 1:3:1]

Instead we write:

  lslices = [slice(0,3,2), slice(0,3,2)]
  rslices = [slice(1,3,1), slice(1,3,1)]
  multislice_assign(llst, rlst, lslices, rslices)
r   r/   N)r   zipm_assign)llstrlstlslicesrslicesr   rs         rA   r   r   z  sw     T{{D,d1:.>?A? Q712;4? 	 AKAs   Ac                     [        X5      n[        X5      n[        U5      [        U5      :w  a  g[        [        U5      5       H  nXF   XV   :w  a    gXF   S:X  d  M    g   g)z9Compare the structure of llst[lslices] and rlst[rslices].r   r   )r   rh   rm   )r   r   r   r   lshapershaper   s          rA   cmp_structurer     s\    'F'FFs6{"3v;9	!9>	  
 rc   c                 P    [        XX#5      S:  a  [        S5      e[        XX#5      $ )z:Return llst after assigning: llst[lslices] = rlst[rslices]r   z+lvalue and rvalue have different structures)r   r   r   )r   r   r   r   s       rA   multislice_assignr     s*    T2Q6FGGD11rc   c                 |  ^^^ UT-  (       a  gUS:  d	  UT-   U :  a  g[        U4S jT 5       5      (       a  gUS::  a!  US:H  =(       a    T(       + =(       a    T(       + $ ST;   a  g[        UU4S j[        U5       5       5      n[        UU4S j[        U5       5       5      nSXV-   :*  =(       a
    XW-   T-   U :*  $ )zVerify that the parameters represent a valid array within
the bounds of the allocated memory:
    char *mem: start of the physical memory block
    memlen: length of the physical memory block
    offset: (char *)buf - mem
Fr   c              3   ,   >#    U  H	  oT-  v   M     g 7fr   r   ).0r   r   s     rA   	<genexpr>#verify_structure.<locals>.<genexpr>  s     
)Ax<s   Tc              3   V   >#    U  H  nTU   S ::  d  M  TU   TU   S-
  -  v   M      g7fr   r/   Nr   r   jr   r   s     rA   r   r     s4      #1!*/ 'wqz58A:&   ))c              3   V   >#    U  H  nTU   S :  d  M  TU   TU   S-
  -  v   M      g7fr   r   r   s     rA   r   r     s4      "1!*q. 'wqz58A:&r   )anysumrm   )memlenr   r   r   r   offsetiminimaxs    ` ``   rA   verify_structurer     s     zVH_v-

)
)))qyqy6Y6w;6Ez #d # #D "d " "D >H 4 >>rc   c                      U H  nX   n M	     U $ r   r   )rn   r   r   s      rA   get_itemr     s    f Jrc   c                 R    Uu  p#pEpgUn[        U5       H  n	XU	   X	   -  -  nM     U$ )z-Location of an item in the underlying memory.r   )
r   r   r   r   r   r   r   r   pr   s
             rA   memory_indexr     s9    562Fd7A4[	QZ
"" Hrc   c                 |    U u  pp4pVSU-  n[        U5       H"  n[        X5      n	SU	-  n
Xz-  (       a    gXz-  nM$     g)zThe structure 't' is overlapping if at least one memory location
is visited twice while iterating through all possible tuples of
indices.r/   TF)r   r   )r   r   r   r   r   r   r   visitedr   r   bits              rA   is_overlappingr     sN     672Fd7iGu~ d=  rc      c                   ^^ T(       d  [        US-   5      nUS:X  a9  U(       a  X USSS4$ [        SS5      nX`-  n[        S5      S:X  a  U * OUnXpUSSU4$ Sn	[        S5      n
U
S:  a
  U(       a  Sn	OU
S:  a  Sn	S/U-  m[        U5       H  n[        XS-   5      TU'   M     O[        T5      nS	n[        S5      n
U
S:  a  U
S-  (       a  S
OSnS/U-  mU [        U* US-   5      -  TUS-
  '   U(       d  TUS-
     S:X  a  U TUS-
  '   [        US-
  SS5       H`  nUTUS-      (       a  TUS-      OS-  nU(       a  U [        U* US-   5      -  TU'   M<  S[        S5         U -  [        SUS-   5      -  TU'   Mb     S=pST;  a>  [        UU4S j[        U5       5       5      n[        UU4S j[        U5       5       5      nX-
  nU(       a  U* U -  nXS-   U -  -   nO U* U-   U -  n[        S5      S:X  a  U* U -
  OUnXpUTTU4$ )zReturn random structure:
    (memlen, itemsize, ndim, shape, strides, offset)
If 'valid' is true, the returned structure is valid, otherwise invalid.
If 'shape' is given, use that instead of creating a random shape.
r/   r   r      r#   d   _   Z   r   TFr   r/   r   c              3   V   >#    U  H  nTU   S ::  d  M  TU   TU   S-
  -  v   M      g7fr   r   r   s     rA   r   !rand_structure.<locals>.<genexpr>!  s4      'KqajAo +71:uQxz*Kr   c              3   V   >#    U  H  nTU   S :  d  M  TU   TU   S-
  -  v   M      g7fr   r   r   s     rA   r   r   #  s4      &Kqaj1n +71:uQxz*Kr   )r   rm   rh   r   )r   validmaxdimmaxshaper   r   r   r   r   minshaper   r   	maxstridezero_strider   r   r   s       `           @rA   rand_structurer    sX    "AI4R::"1d+*&/la&7(Vr2v==cN7uH"WHd
tA A:6E!H  5zI#Ar'a!e$KcDjGI:y{!CCGDFO746?a/"Q462r"51:U1Q3Z14	!Iyj)A+$FFGAJ 1."#%.q)A+%>?GAJ # OD: 'E$K ' ' &E$K & & [F!6X--%$,(*#,Q<1#4$x&T5'699rc   c                     X-
  n[        US-   5      nU (       a  X-
  U -  OSn[        SUS-   5      nX0U-  -   n[        X6U5      n[        Xq5      u      pX:w  a  [        eU$ )z=Create a random slice of len slicelen that fits into listlen.r/   )r   sliceslice_indicesRuntimeError)
slicelenlistlenmaxstartr   maxstepstepstopr   rz   controls
             rA   randslice_from_slicelenr  /  sr    !Hhqj!E/7w8+QGQ	"Dd?"De4 A$Q0Aq!Hrc   c                     S/U -  nS/U -  n[        U 5       H8  nX   nUS:  a  [        SUS-   5      OSn[        Xe5      X$'   [        Xe5      X4'   M:     [        U5      [        U5      4$ )zqCreate two sets of slices for an array x with shape 'shape'
such that shapeof(x[lslices]) == shapeof(x[rslices]).r   r/   )rm   r   r  ri   )r   r   r   r   r   r   r  s          rA   randslice_from_shaper  <  st     cDjGcDjG4[H()A9Q!$1,X9
,X9
	 
 >5>))rc   c                    [        SU S-   5      nSn[        S5      nUS:  a  SnOUS:  a  Sn[        S5      S:  a  SOS	nS/U-  nS/U-  nS/U-  nS/U-  n	[        U5       H  n[        X1S-   5      n
[        X1S-   5      nX:  a  XpU(       a[  [        U
* U
S-   5      n[        U
* U
S-   5      nS
[        S5         [        SU
S-   5      -  n[        XU5      n[        X5      u      nnO#U
S:  a  [        SU
S-   5      OSn[	        UU
5      n[	        UU5      n[        S5      S:X  a  XsXt'   Xd'   UUsX'   X'   M  XsXt'   Xd'   UUsX'   X'   M     Xg[        U5      [        U	5      4$ )zCreate (lshape, rshape, tuple(lslices), tuple(rslices)) such that
shapeof(x[lslices]) == shapeof(y[rslices]), where x is an array
with shape 'lshape' and y is an array with shape 'rshape'.r/   r#   r   r   r   r   P   TFr   )r   rm   r  r	  r  ri   )r  r  r   r  r   
all_randomr   r   r   r   smallbigr   r  r  s_smallrz   r  s_bigs                      rA   rand_aligned_slicesr  H  s    Qq!DH#ABw	
b"32-5JSXFDvc$hG1#d(4[(QJ/1*-; ufeAg.EeVU1W-D)A,')AuQw*??DE.G -g =Aq!X05	yE!G,qH-h>G (#6Q<1#& FIvy%*G"GJ
#( FIvy%,e"GJ
1 4 5>5>99rc   c                 6    Uu  p#      n[        X#-  SU -   S5      $ )zFReturn a list of random items for structure 't' with format
'fmtchar'.re   rS   )ro   )r>   r   r   r   rz   s        rA   randitems_from_structurer  s  s*     $% FaAqV%s3w88rc   c           	      4    Uu  pEpgp[        XXU	[        U-  S9$ )z:Return ndarray from the tuple returned by rand_structure()r   r   formatr   flags)r   ND_WRITABLE)
r|   r>   r   r"  r   r   r   r   r   r   s
             rA   ndarray_from_structurer$  y  s)    562Fd75w E(9; ;rc   c                     Uu  p4pVpx[        U5      n	[        U 5       H  u  p[        R                  " XX-  U5        M!     [	        XUXS9$ )z>Return numpy_array from the tuple returned by rand_structure())bufferr   r   dtyper   )	bytearray	enumerater;   	pack_intonumpy_array)r|   r>   r   r   r   r   r   r   r   bufr   r   s               rA   numpy_array_from_structurer-    sQ    562Fd7
F
C% 1:q1 !c 1 1rc   c                    U R                   nU(       a  [        U5      U-  U:w  a  SU4$ O:U/ :X  a  U R                  S:X  d  X$:w  a  SU4$ O[        XB5      u  pVU/nUS:w  a  SU4$ U R	                  5       n[        S[        U5      U5       Vs/ s H	  oXU-    PM     n	n/ n
U	 H8  n[        R                  " X5      S   nX:w  a  SU4s  $ U
R                  U5        M:     U/ :w  a  X4$ U
S   U4$ s  snf )a  Interpret the raw memory of 'exporter' as a list of items with
size 'itemsize'. If shape=None, the new structure is assumed to
be 1-D with n * itemsize = bytelen. If shape is given, the usual
constraint for contiguous arrays prod(shape) * itemsize = bytelen
applies. On success, return (items, shape). If the constraints
cannot be met, return (None, None). If a chunk of bytes is interpreted
as NaN as a result of float conversion, return ('nan', None).Nr   nan)
nbytesr   r   divmodtobytesrm   rh   r;   r]   rg   )exporterr>   r   r   bytelenr   r   memr   	byteitemsr|   r   r}   s                rA   
cast_itemsr7    s    ooG;!W,; -	"==A!4; "5 g(6;



C,1!SXx,HI,HqQz",HIIE}}S$Q'<%<T	  #b[E>?uQx.?? Js   C/c               #   j  #    [        S5       H  n U /v   M
     [        SS5      n[        S5      S:  a  SOSn[        U5       Vs/ s H  n[        US5      PM     snv   [        SS5      n[        S5      S:  a  SOSn[        U5       Vs/ s H  n[        US5      PM     snv   g	s  snf s  snf 7f)
z Generate shapes to test casting.r5         r   r  r/   r#   r   N)rm   r   )r   r   r  rz   s       rA   gencastshapesr;    s     2Yc	 Q?DcNR'qQH+0;
7;a9Xq!;
77Q?DcNR'qQH+0;
7;a9Xq!;
77 8 8s   AB3B)1B3B.#B3c           	      p    [        [        U * U S-   5      [        U * U S-   5      [        U * U S-   5      5      $ )z4Generate all possible slices for a single dimension.r/   )r   rm   )r   s    rA   	genslicesr=    s5    5!QqS>5!QqS>5!QqS>BBrc   c                 h    [        U 5       Vs/ s H  n[        X   5      PM     nn[        U6 $ s  snf )z/Generate all possible slice tuples for 'shape'.)rm   r=  r   )r   r   r   r   s       rA   genslices_ndimr?    s1    .3Dk:k58$kI:I ;s   /c                 V    U(       d  U S:X  a  SOSn[        X S-   5      n[        X05      $ )zGenerate random slice for a single dimension of length n.
If zero=True, the slices may be empty, otherwise they will
be non-empty.r   r/   )r   r  )r   allow_emptyminlenr  s       rA   rslicerC    s,     aQQF1%H"8//rc   c              #   J   #    [        S5       H  n[        X5      v   M     g7f)z.Generate random slices for a single dimension.r   N)rm   rC  )r   rA  rz   s      rA   r   r     s     1XQ$$ s   !#c              #     ^#    [        U5       H#  n[        U4S j[        U 5       5       5      v   M%     [        U5       H#  n[        U4S j[        U 5       5       5      v   M%     [        S [        U 5       5       5      v   g7f)z)Generate random slice tuples for 'shape'.c              3   @   >#    U  H  n[        TU   5      v   M     g 7fr   rC  r   r   r   s     rA   r   rslices_ndim.<locals>.<genexpr>  s     :kF58$$ks   c              3   >   >#    U  H  n[        TU   S S9v   M     g7f)T)rA  NrG  rH  s     rA   r   rI    s     L1F586s   c              3   <   #    U  H  n[        S SS 5      v   M     g7fr   )r  )r   rz   s     rA   r   rI    s     2ka!ks   N)rm   ri   )r   r   
iterationsrz   s    `  rA   rslices_ndimrM    si      ::eDk:::  :LdLLL  2eDk2
22s   BBc              #   n   #    [        U 5      nUc  [        U5      OUn[        [        X!5      5      v   g 7fr   )ri   rh   r   )iterabler   pools      rA   rpermutationrQ    s,     ?DYD	AA
t
  s   35c                     U R                  5       n[	        U [
        5      (       a  U R                  nU R                  nOSnSn[        SU< SU R                  < SU R                  < SU R                  < SU< SU R                  < SU R                  < S	U< S
35        [        R                  R!                  5         g! [        [        4 a    U R                  5       n Nf = f)zPrint ndarray for debugging.unknownzndarray(z, shape=z
, strides=z, suboffsets=z	, offset=z
, format='z', itemsize=z, flags=)N)tolist	TypeErrorNotImplementedErrorr2  r   r   r   r"  printr   r   
suboffsetsr!  r   sysstdoutflush)ndra   r   r"  s       rA   ndarray_printr^    s    IIK "g	bhh

BMM699bkk5* + JJ *+ JJLs   C  C$#C$r   rr      r9  z%struct module required for this test.z%ndarray object required for this testc                      \ rS rSrS rSSS.S jrSXS jr\R                  " S5      S 5       r	S	 r
S
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S  r!S! r"S" r#S# r$S$ r%S% r&S& r'S' r(S( r)S) r*S* r+S+ r,\RZ                  r-S, r.S- r/S. r0S/ r1S0 r2\R                  " S5      S1 5       r3S2 r4S3 r5S4 r6\7Rp                  S5 5       r9S6 r:S7 r;S8 r<S9 r=S: r>\?R                  " \AS;9S< 5       rBS= rCS> rDS? rES@ rFSA rGSB rHSC rISD rJSE rKSF rLSG rMSH rNSI rOSJ rPSK rQSL rRSM rSSN rTSO rUSP rVSQ rWSR rXSS rY\R                  ST 5       r[\R                  SU 5       r\SVr]gW)YTestBufferProtocoli  c                 "    [        5       U l        g r   )get_sizeof_void_psizeof_void_pselfs    rA   setUpTestBufferProtocol.setUp  s    .0rc   F)slicedcastc       
         &  ^ ^^^^^^^	^
^'^(^) T(       a  [        T5      T-  m(OT(       d  [        T	5      m(OTm(Sm)TR                  (       a  T R                  TS5        Sn[	        ST5       H+  nTU   S:X  a    O!TU   S::  d  M  UTU   * TU   S-
  -  -  nM-     U/[	        TS-
  5       Vs/ s H  nSPM     sn-   m)T R
                  nTS   S:  a  U* nU/[        TSS  5      -   mT R                  TR                  U5        T R                  TR                  T(5        T R                  TR                  T5        T R                  TR                  T5        T R                  TR                  U5        T R                  TR                  T5        T R                  TR                  [!        T5      5        T
(       a  T)(       d%  T R                  TR"                  [!        T5      5        T R                  TR                  [!        T)5      5        [%        T[&        5      (       d  [)        T5      (       a9  T(       a  TR+                  5       OTR-                  5       nT R                  UT	5        T(       d  g U(       Gd3  [/        5       nS n[1        T5       H  n [3        TU5      n[5        T	U5      n[%        U[         5      (       a  [6        R8                  " T/UQ76 nO[6        R8                  " TU5      nUR;                  U5        T R                  UU5        M     U(       Gd  T R                  TR-                  5       U5        [?        T5      nSRA                  S U 5       5      nT R                  URC                  5       U5        T(       a  TOSn[E        T	5      nS	 GH  nTnUS
:X  a?  [G        TS5      (       a  [G        TS5      (       a  [I        UT5      n['        UTU[J        S9nO3[G        TS5      (       a  [G        TS
5      (       a  US:X  a  ['        UTUS9n[M        T[N        U5      nT R                  UR-                  5       U5        T RQ                  [S        UU5      5        TS:X  a  M  [        U5      nU(       a  SO[T        n [W        TS[X        5      nT R                  [        U5      UT-  5        [	        U5       Vs/ s H  n[6        RZ                  " TUUT-  5      PM      n!n[        U!S   5      S:X  a  U! Vs/ s H  oS   PM	     n!n['        U!TU TS9n"T R                  [?        U"5      [?        T5      5        [?        T5      R-                  5       n#T R                  U#U5        [?        T5      R-                  S S9n#T R                  U#U5        [?        T5      R-                  SS9n#T R                  U#U5        [W        TS
[X        5      nT R                  [        U5      UT-  5        [	        U5       Vs/ s H  n[6        RZ                  " TUUT-  5      PM      n!n[        U!S   5      S:X  a  U! Vs/ s H  oS   PM	     n!n['        U!TU [J        -  TS9n"T R                  [?        U"5      [?        T5      5        [?        T5      R-                  S
S9n#T R                  U#U5        [W        TS[X        5      nT R                  [        U5      UT-  5        [	        U5       Vs/ s H  n[6        RZ                  " TUUT-  5      PM      n!n[        U!S   5      S:X  a  U! Vs/ s H  oS   PM	     n!n[G        TS
5      (       a  [J        OSn$['        U!TU$U -  TS9n"T R                  [?        U"5      [?        T5      5        [?        T5      R-                  SS9n#T R                  U#U5        GM     [)        T5      (       a|   [?        T5      n[%        T[>        5      (       a  TR                  OTm'U4U'U(UUU	UUU UU
UU)4S jjn%U%" U5        UR]                  5        n&U%" U&SS9  S S S 5        UR-                  5         g g s  snf ! [<         a    Sn   GM8  f = fs  snf s  snf s  snf s  snf s  snf s  snf ! [<         a     g f = f! , (       d  f       Nh= f)Nr   r   r/   r   TrC   c              3   ,   #    U  H
  nS U-  v   M     g7f)z%02xNr   )r   r   s     rA   r   ,TestBufferProtocol.verify.<locals>.<genexpr>]  s     21FQJs   r   r   FAro  rp  r   r   r!  r"  r   r!  r   r"  r!  orderc                 r  > T
R                  U R                  T5        T
R                  U R                  T5        T
R                  U R                  T5        T
R                  U R
                  T5        T
R                  U R                  U5        T
R                  U R                  T5        T
R                  U R                  [        T5      5        T(       a  T(       d%  T
R                  U R                  [        T5      5        T
R                  U R                  [        T5      5        TS:X  a  T
R                  [        [        U 5        O$T
R                  [        U 5      [        T5      5        T(       a  T	R                  5       OT	R!                  5       nT
R                  UT5        T
R                  U T	5        g )Nr   )assertIsr`   assertEqualr0  r   r!  readonlyr   r   ri   r   rY  assertRaisesrV  rh   rU  r2  )rK   expected_readonlyrepexexpected_lenr>   r   rn   r   resultrf  r   ri  r   rY  s      rA   check_memoryview3TestBufferProtocol.verify.<locals>.check_memoryview  s/   aeeR(  <8  X6  3/  ->?  .  %,7:$$QYYg?  uZ/@A19%%ia8$$SVSX6),fmmo&..2B  c*  F+rc   )r{  )/r   rh   rY  assertGreaterrm   rd  r   rw  r`   rx  r0  r   r!  ry  r   r   ri   r   r   r   r   rU  r2  r(  r   get_pointerr   r;   r<   extendBufferErrorrT   joinhexr   is_contiguousr   
ND_FORTRANget_contiguous
PyBUF_READ
assertTrue
cmp_contigr#  py_buffer_to_contiguousPyBUF_FULL_ROunpack_from
toreadonly)*rf  r  r`   r   r>   ry  r   r   r   rn   ri  rj  
suboffset0r   r   stride0r|  r   buf_errr   item1item2ra   rK   r   ff	flattenedru  expectedtranscontigry   roinitlstycontig_bytesr   r  mmr}  r~  rY  s*   `` `` `````                            @@@rA   verifyTestBufferProtocol.verify  s   
 ;x/L"3x' 
tQ'J1d^8q=1:?71:+q!"<<J	 $ %U46](C]](CCJ ((GqzA~"(i$wqr{"33Gfjj#&5(3,foox0d+uU|4:V^^U7^<**E*,=>fg&&*>s*C*C%(&--/fnn.>CS#& AGu~
'4E$S#.E!%//"KK4e4"KKU3HHQK   . &   !115 v&GG222  !,  SS#CL	
 -E%H|,VS99(55 %.i$?E'.uE"5?(AH  -VS99(55%3,'.yb'QH+FJFF$$V^^%5q9OOJvx$@Aqy 	NE&KB 5VS-PF$$S[%(2BC(-e6(41  &11#vqzJ(4  671:!+18"9AQ4"9uBsKA$$Z]Jv4FG#-f#5#=#=#?L$$\6:#-f#5#=#=D#=#IL$$\6:#-f#5#=#=C#=#HL$$\6: 5VS-PF$$S[%(2BC(-e6(41  &11#vqzJ(4  671:!+18"9AQ4"9uBzM'*,A$$Z]Jv4FG#-f#5#=#=C#=#HL$$\6: 5VS-PF$$S[%(2BC(-e6(41  &11#vqzJ(4  671:!+18"9AQ4"9&3FC&@&@
aAuAbDMA$$Z]Jv4FG#-f#5#=#=C#=#HL$$\6:[ -^  $$v&  *&*==6B6> , , ,* Q2 t<  IIK? %c )DX # "Gl6 #:"6 #:6 #:  4  s[   ,`:A-`?%a a;%a8a#%%a("a->a2 b?aa2
a?>a?
bc                    S nUR                   (       a  U" U[        5      (       d  U" U[        5      (       a  UR                  (       a  U" U[        5      (       a  UR
                  (       a  U" U[        5      (       a  UR                  (       aj  U" U[        5      (       d  UR                  (       dG  U" U[        5      (       d  UR                  (       a$  U" U[        5      (       d,  U" U[        5      (       a  U R                  [        [        X#S9  g [!        U[        5      (       d  [#        UR$                  5      (       a  UR'                  5       nO[        U[(        S9nUR'                  5       nU" U[        5      (       a  SOUR                   nUR$                  n	UR*                  n
UR,                  nU" U[        5      (       d  Sn	UR/                  5       nU" U[        5      (       d  SnU" U[        5      (       a  UR0                  OSnU" U[        5      (       a  UR2                  OSn[        X#S9nU R5                  XrXUXUXdS9
  g )Nc                     X-  U:H  $ r   r   )reqflags     rA   match/TestBufferProtocol.verify_getbuf.<locals>.match  s    X$&'rc   getbufFrC   r/   r   )	r`   r   r>   ry  r   r   r   rn   ri  )ry  PyBUF_WRITABLEPyBUF_C_CONTIGUOUSc_contiguousPyBUF_F_CONTIGUOUSf_contiguousPyBUF_ANY_CONTIGUOUS
contiguousPyBUF_INDIRECTrY  PyBUF_STRIDESPyBUF_NDPyBUF_FORMATrz  r  r   r   r   r!  rU  r  r   r   r2  r   r   r  )rf  orig_exr}  r  ri  r  rn   r]  r  r>   r   r   r   r   s                 rA   verify_getbuf TestBufferProtocol.verify_getbuf  s   	( [[U3773*++BOO3*++BOO3,--bmmsN++sM**2??sH%%%\*B*Bk7BCb'""&:299&E&E))+CM2B))+C C00Ubkkii;;wwS,'' C//#CS(##D!&sH!5!52%*3%>%>'//BR$B%G 	 	,rc   cpuc                 b	   [         [        [        [        [        [
        [        [        [        [        [        [        [        [        [        4n[        S5       Vs/ s H  o"S-  (       a  SOSPM     snS4/ SQS4/ SQS4[        S5       Vs/ s H  o"S-  (       a  S	U-
  OS
U-   PM     snS44n/ / S4/ SQ/ S4S// S4S/S/S4S/S/S4S/S/S4SS// S4SS/SS/S4SS/SS/S4SS/SS/S44
nS[         ["        ["        [         -  [$        [$        [         -  4nS[&        [(        [&        [(        -  4nU GH  u  px[*        R,                  " U5      n	U GH  u  pnU Vs/ s H  oU	-  PM	     nnX-  nU GHb  nU(       a  U["        -  (       a  M  U
(       d  U[$        -  (       a  M2  U
(       a  UOUS   n[/        XUXUS9nU
(       a  US S S2   OS n[1        U5      nU(       a  [1        U5      nUR2                  S:X  d  UR2                  S:X  a   U
(       a  U(       a  U R5                  UU5        U(       a0  UR2                  S:X  a   U
(       a  U(       a  U R5                  WU5        U Hk  nU Hb  nU R7                  UUUU-  5        U R7                  UUUU-  5        U(       d  M8  U R7                  UUUU-  SS9  U R7                  UWUU-  SS9  Md     Mm     GMe     GM     GM     / SQn[/        US/[8        S9nU R;                  [<        [.        U5        [/        S/S/5      n[/        U[        S9nU R;                  [<        [.        U[&        S9  U R;                  [<        [.        U[        S9  U R;                  [<        [.        U[        S9  U R;                  [<        [.        U[        S9  U R;                  [<        [.        U[
        S9  U R;                  [<        [.        U[        S9  [/        U[        S9n/ SQ/ SQ4 H  n
S["        4 H  n[/        XzU[         -  S9nU R?                  [A        US5      5        U R?                  [A        US5      5        U HC  n[/        UUS9nU R?                  [A        US5      5        U R?                  [A        US5      5        ME     M     M     g s  snf s  snf s  snf ) N   r#   TFr   r/   r#   r_  r9  r   r:  r:   r9   	   rr      r  r   r   r)   r(   r   r   )r/   r_  r/   r   r  r:  r_  r9  r/   r9   )r!  r"  r   r   r   )ri  r   r"  r  r  )r/   r  r/   )r:   r   r:   ro  r   )!r  r  r  PyBUF_SIMPLEr  r  r  
PyBUF_FULLr  PyBUF_RECORDSPyBUF_RECORDS_ROPyBUF_STRIDEDPyBUF_STRIDED_ROPyBUF_CONTIGPyBUF_CONTIG_ROrm   r#  r  ND_PILr  r  r;   calcsizer   rT   r   rx  r  ND_GETBUF_FAILrz  r  r  r  )rf  requestsra   	items_fmt	structurendflags
real_flagsr|   r>   r   r   r   r   r   r"  _itemsex1ex2m1m2r  bitsr}  baser]  ru  s                             rA   test_ndarray_getbuf&TestBufferProtocol.test_ndarray_getbuf  sq    M8\ 24H++/	
 16b	:	1!ed&	:C@)3/)3/:?)D)Qq5uQwvax0)DcJ	
	 QKb!T2qMTB4S1#qMS2$OVROVb"Xr"VaVQVb"Xq!
	 {J
;(>F;&

 $\13
 $JEs+H*3&189Ax<9"$EE*$4  eFl &+UqF!&E(-vOC',#dd)$C#CB'_xx1}Q5W((S1sxx1}7((S1'$.D ..sCTB ..sBDA"s $ 2 23SX:> !3 !@ $ 2 23CH:> !3 !@ %/  () % +4 $F - U2$n=+w3 sQC T,/+w>J+w8D+w=I+w;MN+w;MN+w;OPR- w&EJUu[7HIb# 67b# 67%E E2BOOM"c$:;OOM"c$:; & ' 'c ; E6 :s   R"R'
R,c           
         [        S/S/5      n[        S/S/[        S9n[         UR                  UR                  4 GH  nU R                  [        U1 Sk5        U R                  [        U/ SQ5        U R                  [        U/ SQ5        U R                  [        U/ SQS1S	9  U R                  [        U/ SQS/S1S
9  U R                  [        U/ SQS// S9  U R                  [        US/S/0 S9  U R                  [        US/S/0 S9  U R                  [        US/S/0 S9  U R                  [        US/S/S/[
        S9  U R                  [        US// [        S9  U R                  [        U/ S/S	9  U R                  [        US/S/SS9  U R                  [        R                  US/S/SS9  U R                  [        USS/S/SS9  U R                  [        U/ SQS/SS9  [        S-   nU R                  [        US/U-  S/U-  S	9  U R                  [        US/S/S	9  U R                  [        U/ SQS/S	9  U R                  [        US/SS-  /S	9  U R                  [        U/ SQSS/SS9  U R                  [        U/ SQS/S/S
9  U R                  [        US/S/SS-  /S
9  U R                  [        USS/SS/S/S
9  U R                  [        U/ SQS/S/SS9  U R                  [        U/ SQS/SS9  U R                  [        U/ SQS/SSS9  U R                  [        U/ SQS/S S9  U R                  [        R                  US/S/S!S9  / S"QnU R                  [        X5SS/S#S$/S%S&9  U R                  [        U[        5       S'S(9  U R                  [        US/S/[        S9  U R                  [        US/5        GM     U R                  [        [         S)[        S*9  [        S/S/[        S9nU R                  [        UR                  S/S/[        S9  [        S)5      nU R                  [        UR                  S/S/5        U R                  [        UR                   5        [        S/S/5      nUR                  S/S/5        [#        U5      nU R                  [        UR                  S/S/5        U R                  [        UR                   5        UR%                  5         UR!                  5         U R                  [        UR                   5        AU R                  [        [&        0 / SQ5        U R                  [        [&        S)0 5        [        [)        [+        S+5      5      S/S+-  S	9nU R                  [        [&        US%/5        [        [)        [+        S,5      5      SS/S	9nU R                  [        [&        U/ S-Q5        U R                  [        [&        USS/5        U R                  [        [&        US#S/5        U R                  [        [&        US.S/5        [        / SQS/SS9n[        U[,        S*9nU R                  [        UR.                  5        [        / SQS/SS9n[        U5      n	[        U	5      nU R                  [        UR0                  5        [        S//S/S0S9nU R                  [        UR0                  5        [        n[        [)        [+        U5      5      S/U-  S	9nU R                  [        UR0                  5        [        S/S/S	9nU R                  [        [2        SSSSS%5        U R                  [        [2        US1S25        U R                  [        [2        US.S25        U R                  [        [2        U[4        S35        U R                  [6        [2        U[4        S45        U R                  [        [2        U[4        S55        U R                  [        [2        US6S75        [        S/S/S	9nU R                  [        [8        SSSSS%5        U R                  [        [8        0 U5        U R                  [        [8        U0 5        [        S/S/S	9nU R                  [        [:        SSSSS%5        U R                  [        [:        0 S75        U R                  [        [:        US85        g )9Nr  r/   r"  >   r/   r#   r_  )r/   r#   rQ   )r/   r#   r_  r9  r/   r#   r_  r_  r   r   r   r   r   rr  r  )r   r  r   r   r"  XXXr   i  r   r#   r_  r#   QLr   rQ   r&   r/   r#   r_  r9  r   rO   r/   r#   r_  r9  r   r   r!  r9  )r   r   r!  rC   z@#$)
r/   r#   r_  r9  r   r:  r:   r9   r  rr   r  r   )r   r   r   r   r!     123r  r   r  )r#   r_  r9  r-   )r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLxyzr     u    Z   rp     )r   ND_VAREXPORTpushrz  rV  r  r  r   r;   r=   ND_MAX_NDIMOverflowErrorr(  r  r  r  poprT   releaser  r   rm   r  rU  memoryview_from_bufferr  r  UnicodeEncodeErrorr  r  )
rf  r]  ndmr   r   r|   rK   r}  r  r  s
             rA   test_ndarray_exceptions*TestBufferProtocol.test_ndarray_exceptionsr  s+   aS1#qcA3l3 277CHH-AiG4iI6iK8iGA3?iGA3LiGA3rJiQCs2FiQCs"EiQCs2F iQCsQC$.  0 iQCrH j!Rs;j!eWQCLfllAvaSMj!aYqc#Nj!WQCM AAj!aSU1#a%@ j!aS=j!WSEBmQAsF8Dj![1aP j!WQC#OmQA3'(#vh  0 j!aU1Q%!Mj!YqcA3%(  * j!WQCJj!WQC%(  * j!WQCKfllAy%*  , +Ej!1Q%')2hq  : iIKD iQCs:N iQC0O .V 	+w~N aS1#\2*bggsQC|L V_+rwwaS9+rvv. aS1#
aSrN+rwwaS9+rvv.			
 	+rvv. 	)["g>)[&"=T%*%aSW5*k2s;T%)_QqE2*k2w?*k2!u=*k21v>-b5)D WQC4R-*bii0 gaS5clS\)R%>%>?hZs7;)R%>%>?T%(^A3q51*b&?&?@ aS$)^Q1aC)^RD-UCH)^RSI,nb*"	$*nb*cJ*nb#sC aS$)ZAq!Q?)ZR8)ZR8 aS$)]Aq!QB)]B<)]B<rc   c                 |   [        [        S5      5       H  nS/S-  n[        / SQS/[        S9n[	        U5      US'   [        SS5       H#  nUR                  / SQS/S9  [	        U5      X$'   M%     [        S5       H  nX!U      R                  5         M     U R                  [        UR                  5        AM     g )Nr   r   r  r_  r  r/   r  )
r   rm   r   r  rT   r  r  rz  r  r  )rf  permrK   r]  r   s        rA   test_ndarray_linked_list+TestBufferProtocol.test_ndarray_linked_list  s     q*DAA<@Bb>AaD1a[s+!"~ ! 1Xq'
""$  k2662 +rc   c                     [        S5       H=  u  pn[        R                  " U5      n[        USUS9nU R	                  US XASSSSUS9	  M?     g )Nr   r   rr  Tr`   r   r>   ry  r   r   r   rn   )r   r;   r  r   r  )rf  r>   scalarrz   r   r]  s         rA   test_ndarray_format_scalar-TestBufferProtocol.test_ndarray_format_scalar   sT    )!nNCs+Hr#6BKK!)Tb""  $ -rc   c                     [        SS5      n[        U5       HN  u  p#n[        R                  " U5      nS[        4 H&  n[        X1/X&S9nU R                  US XRSSU4U4US9	  M(     MP     g )Nr/   rr   r   rq  Tr  )r   r   r;   r  r  r   r  )rf  r   r>   r|   rz   r   r"  r]  s           rA   test_ndarray_format_shape,TestBufferProtocol.test_ndarray_format_shape*  ss    Ar"(0MCs+HVU(3LBD%-!"6)h[ %  ' % 1rc   c                 `   [        SS5      n[        U5       H  u  p#n[        R                  " U5      n[	        SS5       Hg  nUS:X  a  M  [        US S U2   5      /nXe-  /nUS:  a  XQS-
  -  OSn	S[        4 H*  n
[        X7UX)U
S9nU R                  US XRSSXxUS S U2   S9	  M,     Mi     M     g )	Nr/      r   r   r   Tr  )	r   r   r;   r  rm   rh   r  r   r  )rf  r   r>   r|   rz   r   r  r   r   r   r"  r]  s               rA   test_ndarray_format_strides.TestBufferProtocol.test_ndarray_format_strides6  s    1b!(0MCs+Hb!19U6T6]+,=/04q!8,a[E W(+%IBKK)1T%&e$)&D&M   3 ) % 1rc   c                     / SQn[        USSS9n[        U[        [        -  S9nU R                  UR	                  5       [        US5      5        g )Nr  r  )r/   r_  r  r  )r   r  r  rx  rU  r   )rf  r|   r}  r]  s       rA   test_ndarray_fortran'TestBufferProtocol.test_ndarray_fortranK  sD    ,U&&9R 2< ?@fUF&;<rc   c                    [        S5       GHu  n[        U5       Vs/ s H  n[        SS5      PM     nn[        U5      n[        U5       GH1  n[	        U5      u  pgn[
        R                  " U5      nS[        4 H  n	US:X  a  U	[        :X  a  M  [        XuXiS9n
[        XUS5      n[        Xu5      nU R                  U
S XSXUUS9	  [        U5      (       ab  [        XuUS	9n[        U[        [        -  S
9n
U R                  U
R                   S:H  5        U
R#                  5       nU R                  US XSXUUS9	  [        XuUU	[$        -  S9n
[        XUS5      n['        Xu5      nU R                  U
S XSXUUS9	  M     GM4     GMx     g s  snf )Nr   r#   rr   r   rq  r   Tr  rr  r  r   ro  )rm   r   r   r   r   r;   r  r  r   r   r   r  r   r  r  r  r   r  r  r   )rf  r   rz   shape_tr   r   r>   r|   r   r"  r]  r   rn   r}  mvs                  rA   test_ndarray_multidim(TestBufferProtocol.test_ndarray_multidimQ  s   !HD16t=AyB'G=']F%g. )& 1A!??3/[EqyUf_  !CMB0hLG .CKK)1T%)$'   )
 ,C00$UD$R0LM

b(89668BD-5)-G(+ $ - !C',Z'79B 1hLG .CKK)1T%)$'   )? ) / =s   Fc                    [        S/S/S9nU R                  [        UR                  SS5        [	        U5      nU R                  X!5        U R                  [        UR                  SS5        [        S/S/[        S9nU R                  [        UR                  S5        [	        U5      nU R                  X!5        U R                  [        UR                  S5        [        S/S/[        S9nU R                  [        UR                  S5        U R                  [        UR                  SS5        [	        U5      nU R                  X!5        U R                  [        UR                  S5        U R                  [        UR                  SS5        / SQn[        U[        U5      /S[        S9nU R                  [        R                  UR                  S	S
5        U R                  [        UR                  SS5        [	        U5      nU R                  X!5        U R                  [        UR                  S	S
5        U R                  [        UR                  SS5        / SQn[        U[        U5      /S[        S9nU R                  [        UR                  S	S
5        U R                  [        R                  UR                  SS5        g )Nr/   r  r9   r  r-   r/   r#   r_  r9  r   r:  r:   r9   r   rq  r#   i,  )r      )r/   r#   r  )r   r:  LQ)s    1r  )r   rz  rV  __setitem__rT   rx  r#  __delitem__r  __getitem__
IndexErrorrh   r;   r=   r   )rf  r]  r  r|   s       rA   test_ndarray_index_invalid-TestBufferProtocol.test_ndarray_index_invalid~  s   aS$)R^^Q:^ )R^^Q: aS;7)R^^Q7^ )R^^Q7 aS;7-?-B^ *bnne<*bnneQ? "U3u:,s+N&,,3?*bnnaD^ *bnna=)R^^Q
C%U3u:,t;O*bnna=&,,?Krc   c                 .   [        SS[        S9n[        U5      nU R                  X!5        US   o0R                  US5        US   o0R                  UR	                  5       UR	                  5       5        US   o0R                  US5        US   o0R                  UR	                  5       UR	                  5       5        U R                  [        UR                  S5        U R                  [        UR                  S5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        U R                  UR	                  5       S5        U R                  UR	                  5       S5        SUS'   U R                  UR	                  5       S5        SUS'   U R                  UR	                  5       S5        SUS'   U R                  UR	                  5       S5        SUS'   U R                  UR	                  5       S5        g )	Nr/   r   r  .r   r9   r  r   )	r   r#  rT   rx  rU  rz  rV  r  r  )rf  r]  r  ra   s       rA   test_ndarray_index_scalar,TestBufferProtocol.test_ndarray_index_scalar  s   Qb4^ rF%%a+sG%%ahhj"))+>rF%%a+sG%%ahhj"))+>)R^^Q7)R^^Q7)R^^Q:)R^^Q:a(a(2D$$RYY[!42D$$RYY[!43T%%biik153T%%biik15rc   c           	          [        [        [        S5      5      SS/[        S9n[        U[        S9nU R                  [        UR                  S5        U R                  [        UR                  [        SSS5      5        g )	Nr9   r#   r9  r  r  r/   r_  r   )	r   r   rm   r#  r  rz  r  r  r  )rf  r}  r]  s      rA   test_ndarray_index_null_strides2TestBufferProtocol.test_ndarray_index_null_strides  s_    T%*%aV;GR- 	+r~~q9+r~~uQq|Drc   c                    [        S5       GH  u  pn[        US/US9n[        SS5       H  nU R                  XE   X%   5        M     U R	                  [
        UR                  S5        U R	                  [
        UR                  S5        [        U5      (       d  M  [        U5      nU R                  Xd5        [        SS5       H  nU R                  Xe   X%   5        M     U R	                  [
        UR                  S5        U R	                  [
        UR                  S5        GM     [        S5       H  u  pn[        US/[        US9n[        U[        [        -  S9n[        SS5       H  nU R                  XE   X%   5        M     [        U5      (       d  Mg  UR                  5       nU R                  UR                  U5      [        5        [        SS5       H  nU R                  Xe   X%   5        M     M     / SQn[        US/S9n[        U[         S9n[        SS5       H  nU R                  XE   X%   5        M     / SQn[        US/S9n[        U["        S9n[        SS5       H  nU R                  XE   X%   5        M     g )	Nr   rr  r  rs  r  r  r  )r   r   rm   rx  rz  r  r  r   rT   r#  r  r  r  rw  __eq__NotImplementedr  r  )rf  r>   r|   rz   r]  r   r  r}  s           rA   !test_ndarray_index_getitem_single4TestBufferProtocol.test_ndarray_index_getitem_single  s$   (^MCqc#6B2q\  1 " j".."=j"..!<#C((^  (r1A$$RUEH5 & !!*bnnbA!!*bnna@ ,$ )^MCqcSIBL$=>B2q\  1 " $C((..0biim^<r1A$$RUEH5 & , U1#&R0r1ARUEH-  U1#&R-r1ARUEH- rc   c                    [        S5       GHS  u  pn[        US/U[        S9n[        S5       H  nX2U'   X4U'   M     U R	                  UR                  5       U5        U R                  [        UR                  SU5        U R                  [        UR                  SU5        [        U5      (       d  M  [        US/U[        S9n[        U5      nU R	                  Xd5        [        S5       H  nX2U'   X6U'   M     U R	                  UR                  5       U5        U R                  [        UR                  SU5        U R                  [        UR                  SU5        GMV     [        S5       H  u  pn[        US/U[        S9n[        SS5       H  nX%S-      X%'   XES-      XE'   M     U R	                  UR                  5       U5        [        U5      (       d  Mn  [        US/U[        S9n[        U5      nU R	                  Xd5        [        SS5       H  nX%S-      X%'   XeS-      Xe'   M     U R	                  UR                  5       U5        M     g )Nr   rq  r(  r  r9  r/   )r   r   r#  rm   rx  rU  rz  r  r  r   rT   )rf  r>   r|   single_itemr]  r   r  s          rA   !test_ndarray_index_setitem_single4TestBufferProtocol.test_ndarray_index_setitem_single  s   '21~#Cqc#[IB1X&a#1  RYY[%0j".."kJj"..![I',,qc#[IBBBR$1X&a#1  RYY[%0j".."kJj"..![I- (64 (31~#Cqc#[IB2q\ 1:Q3 " RYY[%0',,qc#[IBBBR$2q\ 1:Q3 " RYY[%0! (6rc   c           
         Sn[        U5      n[        U5       GH  n[        U5      u  pEnS[        4 GH  n[	        XSXGS9n[        XS5      n	[        US   * US   5       H  n
U R                  X   X   R                  5       5        [        US   * US   5       Hi  nU R                  X   U   X   U   R                  5       5        [        US   * US   5       H%  nU R                  X   U   U   X   U   U   5        M'     Mk     M     [	        XSUU[        -  S9n[        XS5      n	[        US   * US   5       H  n
U R                  X   X   R                  5       5        [        US   * US   5       Hh  nU R                  X   U   X   U   R                  5       5        [        US   US   5       H%  nU R                  X   U   U   X   U   U   5        M'     Mj     M     GM     GM     g )Nr#   r_  r   r   rq  r/   r#   )r   r   r   r  r   r   rm   rx  rU  r  r   )rf  r  r   r   r>   r|   rz   r"  r]  rn   r   r   ks                rA   #test_ndarray_index_getitem_multidim6TestBufferProtocol.test_ndarray_index_getitem_multidim&  s   g!'*E%f-MCVUIU*ay%(3A$$SVRU\\^<"E!H9eAh7((BE!HOO4EF!&ay%(!;A ,,SVAYq\258A;G "< 8 4 U#(#35U*ay%(3A$$SVRU\\^<"E!H9eAh7((BE!HOO4EF!&uQxq!:A ,,SVAYq\258A;G "; 8 4# %	 +rc   c                 H   [        SSS9nU R                  [        [        S[	        5       5        [        U5      nU R                  X!5        U R                  [        [        S[	        5       5        [        S5       H  u  p4n[        US/US9n[        U5       H,  u  pgU R                  XtU   5        U R                  Xq;   5        M.     [        U5      (       d  M_  [        U5      n[        U5       H,  u  pgU R                  XtU   5        U R                  Xr;   5        M.     M     g )Nr/   r   r  z1 in ndz1 in mvr   rr  )r   rz  rV  evallocalsrT   rx  r   r)  r  r   )rf  r]  r  r>   r|   rz   r   r   s           rA   test_ndarray_sequence(TestBufferProtocol.test_ndarray_sequenceE  s    Qb!)T9fh?^ )T9fh?(^MCqc#6B!"  !H-( & $C((^%bMDA$$Qa1OOAG, * ,rc   c           
      p   / SQn[        US/[        S9n[        U5      nU R                  [        UR
                  [        SSS5      U5        U R                  [        UR
                  [        SSS5      U5        [        US/[        S9n[        US/[        S9n[        U[        S9nU R                  [        UR
                  [        SSS5      U5        [        US/S[        S9n[        U5      nU R                  [        UR                  [        SSS5      5        U R                  [        UR                  [        SSS5      5        [        US	S
/S[        S9n[        U5      nU R                  [        UR                  [        SSS5      [        SSS5      45        U R                  [        UR                  [        SSS5      [        SSS5      45        U R                  [        UR                  S5        U R                  [        UR                  S[        SSS5      45        U R                  [        UR                  [        SSS5      0 45        U R                  [        UR                  [        SSS5      [        SSS5      45        U R                  [        UR                  S5        [        US/S[        S9n[        US/SS9n[        U5      n[        U5      nU R                  [        UR
                  [        SSS5      USS 5        U R                  UR                  5       U5        U R                  [        UR
                  [        SSS5      USS 5        U R                  UR                  5       U5        [        US/S[        S9n[        US/SS9n	[        U5      n[        U5      nU R                  [        UR
                  [        SSS5      USS 5        U R                  UR                  5       U5        U R                  [        UR
                  [        SSS5      USS 5        U R                  UR                  5       U5        [        US	S
/S[        S9n[        US/SS9n[        U5      n[        U5      nU R                  [        UR
                  [        SSS5      USS 5        U R                  UR                  5       / SQ/ SQ/5        U R                  [        UR
                  [        SSS5      USS 5        [        US/S[        S9n[        US/SS9n[        U5      n[        U5      nU R                  [        UR
                  [        SS	S5      USS 5        U R                  UR                  5       U5        U R                  [        UR
                  [        SS	S5      USS 5        U R                  UR                  5       U5        U R                  [        [        [        SSS	5      0 5        U R                  [        [        SS5        U R                  [        [        [        SSS5      S
5        [        US/S[        S9n
U R                  [        U
R                   5        [        US/SS9n[        U["        S9n
U R                  [        U
R                   5        g )Nr  r9   r  r   r/   r  r   rq  r#   r9  z@%$r   r   rr  r:   r  )r   r:  r:   r9   z###########)r   r#  rT   rz  rV  r  r  r  r  r   r  rW  rx  rU  r	  r  add_suboffsetsr  )rf  r|   xlmlr}  xrr]  r  mryrra   s              rA   test_ndarray_slice_invalid-TestBufferProtocol.test_ndarray_slice_invalidX  sz   ! U1#[9^)R^^U1Qq\5I)R^^U1Qq\5I U1#[9U1#[9R)+r~~uQq|RH U1#cE^*bnneAalC*bnneAalCU1Q%;G^*bnn 1Q<q16	8*bnn 1Q<q16	8)R^^U;)R^^eU1Qq\5JK)R^^eAalB5GH 	-r~~ 1Q<q16	8)R^^U; U1#cEU1#c2^^*bnneAalBqGLe,*bnneAalBqGLe, U1#cEU1#c2^^*bnneAalBqGLe,*bnneAalBqGLe, U1a&KHU1#c2^^*bnneAalBqGLy)&<=-r~~uQq|Qq'	# U1#cEU1#c2^^*bnneAalBqGLe,*bnneAalBqGLe, 	)]E!AaL"E)]M1E*mU1Qq\1EE!S?)Q%5%56U1#c2B|,)Q%5%56rc   c                    / SQn[        US/S[        S9n[        US/SS9nUSS USS& U R                  UR                  5       U5        [	        U5      n[	        U5      nU R                  XB5        U R                  XC5        USS USS& U R                  UR                  5       U5        [        USS/S[        S9n[        USS/SS9nUS	S
2SS24   US	S
2S
S
24'   U R                  UR                  5       [        USS/5      5        g )Nr  r  r   rq  rr  r  r9  r_  r/   r#   )r   r#  rx  rU  rT   r   )rf  r|   ra   r  r>  r@  s         rA   test_ndarray_slice_zero_shape0TestBufferProtocol.test_ndarray_slice_zero_shape  s   ,E"cEE"c21Q!AU+]]Qq'1Qe,E!Q;GE!Q4!QqSk!A#qs(VEAq6%:;rc   c           	      F   Sn[        U5      n[        U5      n[        U5       H  n[        U5      u  pVn[        R
                  " U5      nS[        4 H  n	[        XdXYS9n
[        Xd5      n[        X$5       HZ  nS n [        X5      nS n X   nU(       d  U(       a  U R                  UU5        M:  U R                  WR                  5       W5        M\     M     M     g ! [         a  nUR                  n S nANqS nAff = f! [         a  nUR                  n S nANS nAff = fNr2  r   rq  )rh   r   r   r   r;   r  r  r   r   rM  r   	Exception	__class__rw  rx  rU  )rf  r  r   r   r   r>   r|   rz   r   r"  r]  rn   r   listerrri  r   nderrndsliceds                     rA   test_ndarray_slice_multidim.TestBufferProtocol.test_ndarray_slice_multidim  s    7|g!'*E%f-MCs+HVUIU**47F"G.!+C!8 !E,#%: eW5(():FC# 8	 % + % ."#++. % , !,s0   <C
D 
C=	'C8	8C=	 
D 	
D	D 	c                    Sn[        U5      n[        U5      n[        U5       H  n[        U5      u  pVn[        R
                  " U5      n[        XdUS9n	U	R                  5         [        XdUS9n
U
R                  5         [        U
5      n[        Xd5      n[        X$5       HZ  nS n [        X5      nS n X   nU(       d  U(       a  U R                  UU5        M:  U R                  WR!                  5       W5        M\     M     g ! [         a  nUR                  n S nANmS nAff = f! [         a  nUR                  n S nANS nAff = f)N)r#   r_  r   r#   rr  )rh   r   r   r   r;   r  r   r<  rT   r   rM  r   rI  rJ  rw  rx  rU  )rf  r  r   r   r   r>   r|   rz   r   r]  r}  r  rn   r   rK  ri  r   rL  rM  s                      rA   'test_ndarray_slice_redundant_suboffsets:TestBufferProtocol.test_ndarray_slice_redundant_suboffsets  s   7|g!'*E%f-MCs+HC8BC8BBB&C&t3*'4F (!zH GMM%1$$X__%6?# 4 +" ! *kkG* ! (KKE(s0   &D4D&
D#DD#&
E0EEc                 v   [        S5       GH  u  pn[        S5       GH  n[        S5       GH  nS[        4 GH  nU[        -  n[	        US/XS9n[	        US/XS9n	[        U	5      n
S nS nUS S  n X   nX   nX   X'   [        U5      [        U5      :g  nS n X   X'   U(       a  U R                  U[        5        O2U R                  UR                  5       U5        U R                  UU5        [        U5      (       d  M  S n X   X'   U(       a  U R                  U[        5        M  U R                  U
R                  5       U5        U R                  X5        U R                  UU5        U R                  XUR                  USUR                   UR"                  UR$                  UR                  5       S9	  GM     GM     GM     GM     g ! [         a  nUR                  n S nAGNSS nAff = f! [         a  nUR                  n S nAGNnS nAff = f! [         a  nUR                  n S nAGN'S nAff = f)Nr   r   rq  Fr  )r   r=  r  r#  r   rT   rh   rI  rJ  rw  r   rx  rU  r   r  r   r   r   r   )rf  r>   r|   rz   lslicerC  r"  r   r]  r}  r  lsterrdiff_structurern   lvalrvalr   rL  mverrs                      rA    test_ndarray_slice_assign_single3TestBufferProtocol.test_ndarray_slice_assign_single  s   (^MC#A,'lF"#V!+-$U1#cK$U1#cK'^!%)-#Ah1#&;D#&;D*-+CK-0Y#d)-CN !%0)+BJ * MM%< ,,RYY[#> MM%83C88$ $0)+BJ * MM%< ,,RYY[#> ,,R4 MM%8 KK'){{e#%77"((BJJ"$))+ ( /[ "- + ' ,$  ) 1%&[[F1  ) 0$%KKE0  ) 0$%KKE0sH   3%GG3H
G0G++G03
H=HH
H8!H33H8c           
      R   Sn[        U5      n[        U5      n[        U5       H  n[        U5      u  pVnS[        4 H  n[        [        5       H  n[        X$5      u  p[        XdUU[        -  S9n[        Xd5      nS n [        XX5      nS n X   X'   U(       d  U(       a  U R                  UU5        Mg  U R                  UR!                  5       W5        M     M     M     g ! [         a  nUR                  n S nANsS nAff = f! [         a  nUR                  n S nANS nAff = frH  )rh   r   r   r   r  rm   
ITERATIONSr  r   r#  r   r   rI  rJ  rw  rx  rU  )rf  r  r   r   r   r>   r|   rz   r"  r   r   r]  rn   rK  r  r   rL  s                    rA   "test_ndarray_slice_assign_multidim5TestBufferProtocol.test_ndarray_slice_assign_multidim>  s   7|g!'*E%f-MCVz*A';D'H$G C',['8:B .C"G.!23W!N !E,&(k eW5((f=- + %	 + % ."#++. % , !,s0   ?C#D#
D	-C>	>D	
D&	D!	!D&	c                    [        [        5       GH  n[        S    GH  n[        R                  " U5      n[        US[        [        S9nU R                  [        U6 5        [        X$5      n[        XRU5      nUR                  5       n[        U5      n[        U5      (       a!  UR                  5       n	U R                  X5        US   S:  a}  [        XRU[         S9n
U
R                  5       nU R                  X{5        [        U
5      n[        U5      (       a2  U R                  X5        UR                  5       n	U R                  X5        ["        (       d  GM<  US   nSU;   a  GMJ  [%        XRU5      nU R'                  US UR(                  USUR*                  UR,                  UR.                  UR                  5       S	9	  GM     GM     g )
NrD   Tr  r  r#   r   r  r_  Fr  )rm   r]  rZ   r;   r  r  MAXDIMMAXSHAPEr  r   r  r$  rU  rT   r   rx  r  r+  r-  r  r   r   r   r   )rf  rz   r>   r   r   r|   ra   xlistr  mvlistr  ylistr   zs                 rA   test_ndarray_random&TestBufferProtocol.test_ndarray_random_  sn   z"As|!??3/"8T&,46 0! 4508*5q9
]',,YY[F$$V3Q4!8.u1FKAHHJE$$U2#AB+C00((/!#((7;aDEEz 25qAAKKt)*u%&VV177AII$%HHJ   0C $ #rc   c           	         [        [        5       H  n[        S    H  n[        R                  " U5      n[        US[        [        S9nU R                  [        U6 5        [        X$5      nSn [        XRU5      nU R                  U5        [        (       d  M|  Sn	 [!        XRU5      n
M     M     g ! [         a  nUR                  n S nANQS nAff = f! [         a  nUR                  n	 S nANGS nAff = f)NrD   Fra  )rm   r]  rZ   r;   r  r  rb  rc  assertFalser   r  r$  rI  rJ  r  r+  r-  )rf  rz   r>   r   r   r|   rL  ra   r   	numpy_errr  s              rA   test_ndarray_random_invalid.TestBufferProtocol.test_ndarray_random_invalid  s    z"As|!??3/"8U6,46  !11!5608(.u1=A &; %I06u1E - $ # ! (KKE( % 0$%KK	0s0   .B0C0
C:CC
C3C..C3c                    [        [        5       GH  n[        S    GH  n[        R                  " U5      n[        [        [        S9u  pEpg[        USUS9n[        USUS9n	U R                  [        U6 5        U R                  [        U	6 5        [        X(5      n
[        X)5      n[        XU5      n[        XU	5      nX   X'   UR                  5       nUR                  5       n[        U5      n[        U5      nU R                  UR                  5       U5        U R                  UR                  5       U5        US   S:  a  U	S   S:  a  [        XU[         S9n[        XU	[         S9nUU   UU'   UR                  5       nUR                  5       nU R                  UU5        U R                  UU5        [        U5      n[        U5      nU R                  UR                  5       U5        U R                  UR                  5       U5        ["        (       d  GM  SU;   d  SU;   a  GM  [%        XU5      n[%        XU	5      nUU   UU'   ['        U5      (       d]  ['        U	5      (       dM  U R)                  US UR*                  USUR,                  UR.                  UR0                  UR                  5       S	9	  U R)                  US UR*                  USUR,                  UR.                  UR0                  UR                  5       S	9	  GM     GM     g )
NrD   ra  Tr  r#   r   r  Fr  )rm   r]  rZ   r;   r  r  rb  rc  r  r  r   r  r$  rU  rT   rx  r  r+  r-  r   r  r   r   r   r   )rf  rz   r>   r   r   r   r   r   tltrlitemsritemsr=  r?  xllistxrlistr>  r@  ylrA  yllistyrlistzlzrs                           rA    test_ndarray_random_slice_assign3TestBufferProtocol.test_ndarray_random_slice_assign  s   z"As|!??3/ (vI 1#Hd&A#Hd&A 0" 56 0" 561#:1#:+F<+F< k^^  f5  f5a519A/RvNB/RvNB"$W+BwKYY[FYY[F$$VV4$$VV4#BB#BB$$RYY[&9$$RYY[&9;F{a6k 3FDB3FDB"$W+BwK)"--nR6H6H BD-/[[cE)+,.JJBIIK $ I
 KK)+#%'WWBHH(*

		   Em $ #rc   c                    / SQn[        USS/[        S9n[        U5      nU R                  UR                  [        -  5        U R	                  UR
                  U5        U R                  UR                  S5        U R                  UR                  5        U R                  UR                  5        U R                  UR                  5        g )Nr  r_  r9  r  )r   r   )r   r  r  r"  rw  r`   rx  rY  rk  r  r  r  )rf  r|   r]  r}  s       rA   test_ndarray_re_export)TestBufferProtocol.test_ndarray_re_export  s    ,U1Q%v6R[6)*bffb!0))'rc   c           	      2   S[         4 GH
  n[        / SQS/US9n[        U5      nU R                  X25        U R                  UR	                  5       / 5        U R                  UR	                  5       / 5        [        / SQ/ SQUS9nU R                  UR	                  5       / 5        [        / SQ/ SQUS9nU R                  UR	                  5       / / / /5        [        / SQ/ SQUS9nU R                  UR	                  5       / / / // / / // / / //5        GM     g )Nr   r  r  r   r_  r_  r_  r   r_  )r_  r_  r   r  r   rT   rx  rU  rf  r"  r]  r  s       rA   test_ndarray_zero_shape*TestBufferProtocol.test_ndarray_zero_shape  s    [E59BBBR$RYY["-RYY["-u=BRYY["-u=BRYY[2r2,7u=BRYY[!2rlRRL2r2,GI !rc   c                     S[         4 Hr  n[        S/S/S/US9n[        U5      nU R                  X25        U R                  UR	                  5       / SQ5        U R                  UR	                  5       / SQ5        Mt     g )Nr   r/   r   r  )r/   r/   r/   r/   r/   r  r  s       rA   test_ndarray_zero_strides,TestBufferProtocol.test_ndarray_zero_strides  si    [E!QC!EBBBBR$RYY[/:RYY[/: !rc   c                     [        [        [        S5      5      S/SS9nU R                  UR                  S5        U R                  UR                  5       / SQ5        g )N   r_  r:   r  )r:   r9   r  )r   r   rm   rx  r   rU  rf  r]  s     rA   test_ndarray_offset&TestBufferProtocol.test_ndarray_offset  sD    T%)_QC:A&g.rc   c                     S[         4 HB  n[        [        [        S5      5      S/US9nUR	                  5       nU R                  X25        MD     g Nr   r_  r  )r  r   r   rm   r  rx  )rf  r"  r]  rK   s       rA   #test_ndarray_memoryview_from_buffer6TestBufferProtocol.test_ndarray_memoryview_from_buffer  sD    [EeAhs%@B))+AQ# !rc   c           	          S[         4 HQ  n[        [        [        S5      5      S/US9n[        S5       H!  nU R	                  X#   [        X#/5      5        M#     MS     g r  )r  r   r   rm   rx  r  )rf  r"  r]  r   s       rA   test_ndarray_get_pointer+TestBufferProtocol.test_ndarray_get_pointer  sO    [EeAhs%@B1X  B(<=  !rc   c                 8   [        [        [        S5      5      / SQS9n[        U[        [        -  S9nU R                  UR                  5       UR                  5       5        [        U5      nU R                  UR                  5       UR                  5       5        g )Nr  )r#   r#   r   r  r  )r   r   rm   r  r  rx  rU  rT   )rf  r}  r]  rK   s       rA    test_ndarray_tolist_null_strides3TestBufferProtocol.test_ndarray_tolist_null_strides  sh    T%)_G4R 56biik2rNRYY[1rc   c                 l   U R                  [        SS5      5        [        [        [	        S5      5      SS/S9n[        [        [	        S5      5      SS/S9nU R                  [        X5      5        [        S/S/SS	9nU R                  [        US
5      5        U R                  [        S
U5      5        g )Nr  s   456r  r_  r9  r  r/   r   rr  rX   )rk  r  r   r   rm   r  )rf  ra   r  s      rA   test_ndarray_cmp_contig*TestBufferProtocol.test_ndarray_cmp_contig%  s    FF34DrOAa51DrOAa51A)*QCs3/
1g./
7A./rc   c           	      h   [         R                   " S/ SQ5      n[        U5      nU R                  [        [        U5        [        [        [        S5      5      5      n[        [        [        S5      5      S/S9nU R                  [	        U5      [	        U5      5        [        [        [        S5      5      SS/S9nU R                  [	        U5      [	        U5      5        [        [        [        S5      5      / SQS9nU R                  [	        U5      [	        U5      5        [        [        [        [        S5      5      SS/S95      n[        [        [        S5      5      SS/[        S9nU R                  [	        U5      [	        U5      5        [        [        [        [        S5      5      / S	QS95      n[        [        [        S5      5      / S	Q[        S9nU R                  [	        U5      [	        U5      5        [        [        [        S5      5      5      n[        [        [        S5      5      / S
Q[        S9nU R                  [	        U5      [	        U5      5        [        [        [        S5      5      / S
QSS9nU R                  [	        U5      [	        UR                  5       5      5        g )Nr   r  r  r  r_  r9  )r_  r#   r#   r  r#   r_  r#   r#   r#   r_  rr  )rR   r   rz  r   hashr[   r   rm   rx  r   r  r  r2  )rf  rM   r]  r   s       rA   test_ndarray_hash$TestBufferProtocol.test_ndarray_hash1  s   KKW%QZ*dB/ $uRy/"T%)_RD1b47+ T%)_QqE2b47+T%)_G4b47+ )DrOAa59:T%)_QqEDb47+)DrO7;<T%)_G:Fb47+ $uRy/"T%)_G6Bb47+ T%)_GC@b4

#56rc   c                    [         [        [        [        [        [
        [        [        [        [        [        [        4nU R                  [        [        0 S[
        5        [        SSS[         S9nS H7  nU H.  n[        X#U5      nU R#                  XRR%                  5       5        M0     M9     [        S/S/S[         S9nS H*  nU H!  n[        X#U5      nU R#                  US	5        M#     M,     [        ['        [)        S
5      5      / SQS[         S9nS H*  nU H!  n[        X#U5      nU R#                  US	5        M#     M,     S[*        4 H  n[        S/S/SU[         -  S9nUR%                  5       nS H)  nU H   n[        X#U5      nU R#                  XW5        M"     M+     [        / SQS/SU[         -  S9nUR%                  5       nS H)  nU H   n[        X#U5      nU R#                  XW5        M"     M+     M     [        / SQS/S/[         S9nUR%                  5       nS H3  n[        [        4 H   n[        X#U5      nU R#                  XW5        M"     M5     US S S2   nUR%                  5       nS H*  nU H!  n [        X#U5      nU R#                  XW5        M#     M,     ['        [)        S5      5      nS[*        4 GH  n[        USS/U[         -  S9n[.        (       a  [/        [1        U5      SS/SUS:X  a  SOSS9n	U[*        :X  a.  [        [3        USS/5      SS/[         S9n
U
R%                  5       nOUR%                  5       nU H  n [        USU5      nU R#                  X[5        [        U Vs/ s H  oPM     snSS/[         S9nU R#                  [5        U5      [5        U5      5        [.        (       d  Mt  U R#                  UW	R%                  SS95        M     US:X  a  [        [3        USS/5      SS/[         S9n
O[        USS/[         S9n
U
R%                  5       n[        [
        [         [        [        4 H  n [        USU5      nU R#                  X[5        [        U Vs/ s H  oPM     snSS/[*        [         -  S9nU R#                  [5        U5      [5        U5      5        [.        (       d  M{  U R#                  UW	R%                  SS95        M     U[*        :X  a"  [        USS/[         S9n
U
R%                  5       nOUR%                  5       n[        [
        [         [        [        4 H  n [        USU5      nU R#                  X[5        [        U Vs/ s H  oPM     snSS/U[         -  S9nU R#                  [5        U5      [5        U5      5        [.        (       d  Mw  U R#                  UW	R%                  SS95        M     GM     [        ['        [)        S5      5      SS/[         [6        -  S9n[        US[
        5      nU R#                  XRR%                  5       5        [        U Vs/ s H  oPM     snSS/[         S9nU R#                  [5        U5      [5        U5      5        [        US[
        5      n[        [3        USS/5      SS/[         S9n
U R#                  XZR%                  5       5        [        U Vs/ s H  oPM     snSS/[*        [         -  S9nU R#                  [5        U5      [5        U5      5        [        US[
        5      nU R#                  XRR%                  5       5        [        U Vs/ s H  oPM     snSS/[         S9nU R#                  [5        U5      [5        U5      5        g ! [,         a     GM  f = f! [,         a     GMY  f = fs  snf ! [,         a     GMy  f = fs  snf ! [,         a     GM  f = fs  snf s  snf s  snf s  snf )Nro  r  r   r   rq  rn  r/   r   rc   r9   r#   r   r:   r   r  r_  r   r#   r  r   r  r9  r  r   r   )r&  r   r'  ru  rt  rp  )r  r  r  r  r  r  r  r  r  r  r  r  rz  rV  r  r   r#  rx  r2  r   rm   r  r  r+  r(  r   rT   r  )rf  r  r]  ru  requestr   r   ndbytesrn   nara   r  r   r  s                 rA   test_py_buffer_to_contiguous/TestBufferProtocol.test_py_buffer_to_contiguousV  s    M8\++/
 	)%<b#'	) QbK@$E#+Bw?  JJL1 $ % aSC{C$E#+Bw?  C( $ %
 T%(^9S&($E#+Bw?  C( $ % ZA!QC1[=IBjjlG('G/7CA$$Q0  ( )
 1#c;OBjjlG('G/7CA$$Q0  ( ) !  YqcA3kJ**,$E):6+Bw?  , 7 %
 "X**,$E#/7CA   , $ %P 59oZAQF!K-@B{ 	#()1vS./1fs#?
 JIcAq621a&"-/99;::<#/CAA   - N1QN1a&L  A
2?;$$Q


(=> $" AvIcAq621a&"-/ C1v[Ayy{H&~)85/CAA   - N1QN1a&
;@VW  A
2?;$$Q


(=>5" JC1v[A99;::<&~)85/CAA   -
 N1QN1a&+N  A
2?;$$Q


(=>!5w !\ T%)_QF+f:LM $B];JJL)N1QN1a&DA
27 $B];IcAq6*1a&LIIK(N1QN1a&
;8NOA
27 $B];JJL)N1QN1a&DA
27M # l #  +" #  +  #  + # # #sl   ;^^3^%^**^<8__6___"
^^
^"!^"*
^98^9
__c                    S/ 4/ SQS/4[        [        S5      5      / SQ4/nU GH  u  p#[        X#S9n[        U5      nU R	                  UR
                  5        U R	                  UR                  5        [        U5      n[        XcSS5      n[        X#5      nU R                  XTSS	S
XcUUS9	  [        U5      n	U R                  XSS	S
XcUUS9	  [        U[        [        -  S9n
U R                  U
R                  S5        U
R                  5       nU R                  US SS	S
XcUUS9	  [        U[         S9n
U R                  U
R"                  S5        U R                  U
R$                  S5        U R                  U
R                  S5        U
R                  5       nUS:X  a  U/OUnU R                  US SS	S
SUR&                  /SUS9	  GM     U H  u  p#[        X#[(        S9n[        U5      nU R	                  UR*                  5        U R	                  UR                  5        [        U5      n[        XcSS5      n[-        X#5      nU R                  XTSS	S
XcUUS9	  [        U5      n	U R                  XSS	S
XcUUS9	  M     USS   H}  u  p#[        X#[.        S9n[        U5      n[        U5      n[        X#5      nU R                  XTSS	S
XcUR                  US9	  [        U5      n	U R                  XSS	S
XcUR                  US9	  M     U R1                  [2        [        SS5        U R1                  [2        [        0 5        [        / SQS/S9n[        U[         S9n
U R1                  [4        [        U
5        [        U[        [        -  S9n
U R1                  [4        [        U
5        [        S/S-  S/S-  SS9n
U R1                  [6        [        U
5        U R1                  [6        U
R                  5        U R1                  [6        [8        U
[:        S5        U R1                  [6        [8        U
[:        S5        U R1                  [6        [8        U
S S S2   [:        S5        g )Nr  r  r_  r
  r2  r  r/   r   r   Tr  r  r   rC   r   r/   r  ro     9ra   r&   r   rr  r   )r   rm   r   rT   r  r  r  rh   r   r   r  r  r  rx  r   r  r  r!  r   r0  r  r  r   r  rz  rV  r  r   r  r  )rf  items_shaper|   r   r}  rK   r   r   rn   r  r]  s              rA   test_memoryview_construction/TestBufferProtocol.test_memoryview_constructionF	  s   2w1#eEl1CW0MN (LE ,B2AOOANN+OOALL)u:D(a=G&CKK!"d!  ! ABKK!"d!  ! OL$@ABRZZ,))+AKKt!"d!  ! L1BRYY+RXXr*RZZ,))+A!QY5'ECKKt!"dryyk4  !S (^ (LE :>B2AOOANN+OOALL)u:D(a=G&CKK!"d!  ! ABKK!"d!  !' (2 (OLE 6:B2Au:D&CKK!"d!

  ! ABKK!"d!

  !! ,, 	)Zs;)Z4WQC(R-+z26R <=+z26 aSWQCGC8*j"5*b&?&?@*nb*cJ*nb*cJ*nb2h
CPrc   c                    / SQn/ SQ/ SQ/ SQ4 HS  n[        XS9nU R                  UR                  5        [        U5      nU R	                  [
        UR                  S5        MU     [        SS5       Hc  u  n  n[        S5      nUR                  U5      nU R                  UR                  5       S5        U R                  UR                  5       / 5        Me     g )	Nr  r  r  r  r   r/   rT   rc   )r   r  r  rT   rz  rV  rj  r   rx  r2  rU  )rf  r|   r   r}  msrcr>   rz   rK   s           rA   test_memoryview_cast_zero_shape2TestBufferProtocol.test_memoryview_cast_zero_shape	  s    
 w0E,BOOBOO,b>DiC8	 1 %Q5ICAc?D		#AQYY[#.QXXZ,	 6rc   c                 T   U R                   n[        R                  nSnSn[        [	        S5      5      nU" [        S5      U" USU-  -   5      5        [        USS/SS	9nU" [        U5      U" USU-  -   5      5        [        U/ S
QSS	9nU" [        U5      U" USU-  -   5      5        g )NzPnin 2P2n2i5P P3nr9   rc   r/   r#   r9  r   rr  )r#   r#   r#   r_  )check_sizeofr   calcvobjsizer   rm   rT   r   )rf  checkvsizebase_structper_dimr|   rM   s          rA   test_memoryview_sizeof)TestBufferProtocol.test_memoryview_sizeof	  s    !!$$'U1Xjou[1w;%>?@E!Q4jmU;W#<=>E37jmU;W#<=>rc   c                     " S S[         5      n " S S[         5      nS nU" S5      U" S5      S[        S5      S	[        S
S5      / SQ1 SkSS0SSSSS [        SS[	        S5      [	        S5      SSSSUS /n[        SS5       H  u  pVn[        US/U[        S9n[        US/U[        S9n	[        U5      n
[        R                  " XYSU5        XzS'   U R                  U
S   U	S   5        [        R                  " U5      nSU;   a  M  U Hp  nS n [        R                  " XYX5        S n XS'   U(       d  U(       a&  U R#                  US 5        U R#                  US 5        MX  U R                  U
S   U	S   5        Mr     M     g ! [        R                   a    [        R                  n Nf = f! [        [        4 a  nUR                   n S nANS nAff = f)Nc                        \ rS rSrS rS rSrg)=TestBufferProtocol.test_memoryview_struct_module.<locals>.INTi	  c                     Xl         g r   valrf  r  s     rA   __init__FTestBufferProtocol.test_memoryview_struct_module.<locals>.INT.__init__	      rc   c                     U R                   $ r   r  re  s    rA   __int__ETestBufferProtocol.test_memoryview_struct_module.<locals>.INT.__int__	      xxrc   r  N)__name__
__module____qualname____firstlineno__r  r  __static_attributes__r   rc   rA   INTr  	       rc   r  c                        \ rS rSrS rS rSrg)=TestBufferProtocol.test_memoryview_struct_module.<locals>.IDXi	  c                     Xl         g r   r  r  s     rA   r  FTestBufferProtocol.test_memoryview_struct_module.<locals>.IDX.__init__	  r  rc   c                     U R                   $ r   r  re  s    rA   	__index__GTestBufferProtocol.test_memoryview_struct_module.<locals>.IDX.__index__	  r  rc   r  N)r  r  r  r  r  r  r  r   rc   rA   IDXr  	  r  rc   r  c                      g)Nr:   r   r   rc   rA   r   ;TestBufferProtocol.test_memoryview_struct_module.<locals>.f	  s    rc   r  y@      @z-21.1gffffff(@r   r#   r  >   r9  r   r:  r:   r9   r   )r  TF   a   abcrM   abcc                     U $ r   r   )ra   s    rA   <lambda>BTestBufferProtocol.test_memoryview_struct_module.<locals>.<lambda>	  s    qrc   rr   rT   rq  r   r   r/   )objectr
   r   Ellipsisr(  r   r   r#  rT   r;   r*  rx  r  r=   rV  r   rJ  assertIsNot)rf  r  r  r   valuesr>   r|   r}   r}  r]  rK   r   r   
struct_errmv_errr   s                   rA   test_memoryview_struct_module0TestBufferProtocol.test_memoryview_struct_module	  s   	 & 	 	 & 	  	a&#a&''*D(1a.7QqE2ttX	$61BudF[" !,B =Crd3kJBrd3kJB2ASa.aDQqT2a5)s+Hcz!
.$$Sh: )aD $$Z6$$VT2$$QqT2a51#  !>" || .!'J. ":. )[[F)s*   F,F/$F,+F,/G?GGc                     [        / SQS/S/S9nU R                  UR                  5        [        U5      nU R	                  [
        UR                  S5        g )Nr  r_  r   r  r   )r   rk  r  rT   rz  rV  rj  )rf  r}  r  s      rA   !test_memoryview_cast_zero_strides4TestBufferProtocol.test_memoryview_cast_zero_strides
  sG     WQC!5)"~)TYY4rc   c           	         [          H  n[        S5      (       a  SU-   OUn[        R                  " U5      n[          H  n[        S5      (       a  SU-   OUn[        R                  " U5      n[	        [        [        S5      5      SU-  /US9n[        U5      nU R                  [        UR                  USU-  /5        M     M     [        S5       H  u  pn
[	        U	S/US9n[        U5      n[        S5       H  u  n  n
[        U5      (       d(  U R                  [        UR                  USW-  /5        M?  [        U5      (       a  MQ  [        U5      (       a  Mc  U R                  [        UR                  USW-  /5        M     M     [        R                  " S5      n[        R                  " S5      n[	        [        [        SU-  5      5      SSU/SS9n[        U5      nU R                  [        UR                  SSU/SS9  [	        [        [        S	5      5      / S
QS9n[        U5      nU R                  [        UR                  5        U R                  [        UR                  SSS5        U R                  [        UR                  0 5        U R                  [        UR                  S5        U R                  [        UR                  S5        U R                  [        UR                  S5        U R                  [        UR                  S5        U R                  [        UR                  S5        U R                  [        UR                  S5        U R                  [        UR                  S5        U R                  [        UR                  S5        U R                  [        UR                  S5        [	        SS/S/SS9n[        U5      nU R                  [        UR                   S5        U R                  [        UR"                  SS5        U R                  [        UR$                  5        [	        [        [        S	5      5      / S
QS9n[        U5      nU R                  [        UR                  S0 S9  [	        [        [        S	5      5      S	/S9n[        U5      nU R                  [&        UR                  SS/S9  U R                  [        UR                  SS/S9  U R                  [        UR                  S/ SQS9  U R                  [        UR                  S/ SQS9  U R                  [        UR                  S/ S QS9  [	        [        [        S!5       V
s/ s H  n
S"PM     sn
5      / S#QS9n[        U5      nU R                  [        UR                  S$/ S%QS9  [	        [        [        S&5      5      S&/S$S9n[        U5      nU R                  [        UR                  S$S/S&-  5        [	        [        [        S!5       V
s/ s H  n
S"PM     sn
5      S!/S9n[        U5      nU R                  [        UR                  S$/ S%QS9  [	        [        [        S!5       V
s/ s H  n
S"PM     sn
5      S!/S9n[        U5      nU R                  [        UR                  S/ S%QS9  [	        [        [        S&5      5      S&/S$S9n[        U5      n[	        [        [        S&5      5      S&/SS9n[        U5      n[(        R*                  S':X  am  U R                  [        UR                  S/ S(Q5        U R                  [        UR                  S/ S)Q5        U R                  [        UR                  S$/ S*Q5        g U R                  [        UR                  SSS+/5        U R                  [        UR                  S/ S,Q5        U R                  [        UR                  S$/ S-Q5        g s  sn
f s  sn
f s  sn
f ).Nr#   rD   r5   rr  r/   r   r   r9  x   r  r  r_  Xz@Xz@XYz=Bz!Lz<Pz>lBIxBIr  r  IIr   r9   r   r-   r   )r#   r_  r9  r   r:  r:   r   )r#   r_  r9  r   r:  r:   r   )r#   r_  r9  r   r:  r:   ra   i  r  )r_  r   r:   r  r   )r#   r_  r9  r   r&   l    )r:   r:   I   r2   iQ  iAj i	 )   r     r  r9   )r  r  r  r  r#   )r  r  r5   r5   r#   )r  r  r5   r9   r#   )NON_BYTE_FORMATr   r;   r  r   r   rm   rT   rz  rV  rj  r   r   r   r   rW  r  r  rU  r  rZ  maxsize)rf  sfmtsformatssizedfmtdformatdsizer}  r  sitemsrz   size_hsize_drK   r]  r  r  s                    rA   test_memoryview_cast_invalid/TestBufferProtocol.test_memoryview_cast_invalid
  s[   #D$-aLLcDjdGOOG,E'(1!#*$0T%)_RYKP!"~!!)TYYr5ykJ ( $  +1~OD!s48Bb>D)!n
a+D11%%j$))T')5yk3 *$//t8L8L)))TYY+-u9+7 -  . %%T%F
+,QqLM"~)TYYq6l3OT%*%[9rN 	)QVV,)QVVQ15 	)QVVR0 	*affc2*affd3*affe4 	*affd3*affd3*affd3*affd3*affd3*affe4 eU^A3t<rN-q}}a@-q}}aC-qxx8 T%*%[9rN)QVVS; T%*%gY7rN-UGD*affc">*affc9IJ*affcI)QVVS8IJ TeHo6o1o67zJrN)QVVS	B T%*%cU3?rN*affcA3s7; TeHo6o1o67zJrN)QVVS	B TeHo6o1o67zJrN)QVVS	B T%*%cU3?^T%*%cU3?^;;'!i#ACj"''3@Bj"''3@B i# *o/j"''3>@j"''3>@I 7 7
 7s   *_4_90_>c                   ^ ^ SS 4SS 4SS 44mUU 4S jn[         R                  " S5      n[        S	/ SS
9n[        USS5      u  pE[	        U5      nUR                  S5      nT R                  XsSSSSUSUSS9
  [         R                  " S5      n[        S	/U-  U/SS
9n[        USU/ S9u  pE[	        U5      nUR                  S/ S9nT R                  XsUSSSSSUSS9
  [        SS5       H0  u  pn[        R                  " X5      n[	        U5      nU" X6X5        M2     [        SS5       H+  u  pn[        U
S/U	[        S9n[	        U5      nU" X6X5        M-     g )Nr   c                 4    [        U R                  5       5      $ r   r   r2  )r}  s    rA   r  9TestBufferProtocol.test_memoryview_cast.<locals>.<lambda>
  s    4

-rc   r   c                 t    [        U R                  5       5       Vs/ s H  oS:  a  US-
  OUPM     sn$ s  snf )Nr2   r%   r  r}  ra   s     rA   r  r  
  s0    T"**,=OP=OWAcE!3=OPPs   5r   c                     [        U R                  5       5       Vs/ s H  n[        [        U5      S5      PM     sn$ s  snf )Nzlatin-1)r   r2  r[   chrr	  s     rA   r  r  
  s.    d2::<>PQ>PE#a&)4>PQQs   >c                 D  > [         R                  " U5      nT
 H  u  pVUR                  U5      nU" U 5      nTR                  XpSUSSSU-  /SUSS9
  UR                  U5      n	TR	                  X5        U R                  5       nTR                  XXCSSS/U4USS9
  M     g )Nr/   Fr6   r  T	r`   r   r>   ry  r   r   r   rn   rj  )r;   r  rj  r  rx  rU  )r}  rK   r|   r>   srcsizerU   to_bytelistr  rn   m3bytespecrf  s             rA   iter_roundtrip?TestBufferProtocol.test_memoryview_cast.<locals>.iter_roundtrip
  s    ooc*G(0$VVG_!"oB%&Ge!"2g:, #$  0
 WWS\  (iikB%,!"2$
 #$  0 )1rc   r   r  rr  r/   Tr  r  r  r   r   r6   rR   rT   rq  )
r;   r  r   r7  rT   rj  r  r   rR   r#  )rf  r  r  r}  	destitems	destshaperK   r  destsizer>   r|   rz   r  s   `           @rA   test_memoryview_cast'TestBufferProtocol.test_memoryview_cast
  s   -
.P
QQ
R
	0( //#&Qb-)"c15	rNVVC[BC$)T! 	 	. ??3'aS\(C@)"c82F	rNVVCrV"B%3"b! 	 	. )W5MCS(B2A2%- 6 )\:MCrd3kJB2A2%- ;rc   c                    [        5        GH  n[        S    GH  nUS:X  a  M  S[        S5         U-   n[        R                  " U5      n[        U5      U-  n[        U5      (       a  SOSn[        XV5       GHH  u  pxn	[        R                  " U5      n
US:  a  U/O/ nX/-   n[        XUS9n[        U5      n[        XXLS	9u  pUc#  U R                  [        UR                  X<5        Mt  US
:X  a  M|  [        XUS9nUR                  X<S	9n[        U5      nUR                  nUR!                  5       nU R#                  UUXCSUUUUSS9
  UR                  U5      nUR                  X{S	9n[        U5      nUR                  nUR!                  5       nU R#                  UUXSUUUUSS9
  U R#                  UUXSUUUUSS9
  GMK     GM     GM     [$        (       Ga   " S S[$        R&                  5      nU" SS5      n[        U5      nUR                  S5      nU R)                  UR*                  U5        U R)                  UR,                  S5        U R/                  UR0                  S5        U R)                  UR2                  S5        U R)                  UR4                  UR6                  45        U R)                  UR                  S5        U R)                  UR8                  S5        [$        R:                  " S5      n[        U5      nUR                  S5      nU R)                  UR*                  U5        U R)                  UR,                  S5        U R/                  UR0                  S5        U R)                  UR2                  S5        U R)                  UR4                  UR6                  45        U R)                  UR                  S5        U R)                  UR8                  S5        g g )NrD   r   )rC   rD   r#   rT   rU   r   rr  r  r/  Tr  c                   L    \ rS rSrS\R
                  4S\R                  4/rSrg)>TestBufferProtocol.test_memoryview_cast_1D_ND.<locals>.BEPointi	  ra   r  r   N)	r  r  r  r  ctypesc_longc_double_fields_r  r   rc   rA   BEPointr  	  s     &--032HIrc   r   r   g33333i@r   r/   Fr  r   333333?r   )r;  rZ   r   r;   r  r   r   r   r   rT   r7  rz  rV  rj  rh   r   rU  r  r  BigEndianStructurerx  r`   r   rw  ry  r   r   r0  rY  r  )rf  _tshaper_   tfmttsizer   r`   r>   r|   rz   sizer   tshaper}  rK   titemsr]  r  r   r   rn   r  m4r   pointr  ra   s                              rA   test_memoryview_cast_1D_ND-TestBufferProtocol.test_memoryview_cast_1D_ND
  sc    %G 3; 1.5-ME)&4T&:&:l	%0%8MC!??3/D#$q5QCbE$v-F C@B"2A%/%%NNF~)))QVVTJ   !dCB3Bv;D jjG))+CKK).4%)$'d   4 B2Bu:D jjG))+CKK)-%)$'d   4
 KK)-%)$'d   4Q &9 % 'n 6J&33 JC'EE"BBRVVU+R[[!,MM"++u-RWWa(RXX		|4RZZ.R]]B/$AABBRVVQ'R[[!,MM"++u-RWWa(RXX		|4RZZ.R]]B/1 rc   c           	         [         R                   " S[        [        SS5      5      5      n[        U5      nU R	                  X!5        U R	                  UR                  5       UR                  5       5        USS S2   nUSS S2   nU R	                  X!5        U R	                  UR                  5       UR                  5       5        [        [        [        S5      5      / SQSS	9n[        U5      nU R	                  UR                  5       UR                  5       5        [        S
S/S/SS	9n[        U5      nU R                  [        UR
                  5        [        S/S/SS	9n[        U5      nU R                  [        UR
                  5        [        / SQSS/SS	9n[        U5      nU R                  [        UR
                  5        g )Nr   r(  r:  r#   r_  i	  )r  r#   r:   r_  r   r   rr  )r#   r   )r:   r  r?      12345r/   r   )r     b   c   d   e   f)	rR   r   rm   rT   rx  rU  r   rz  rW  )rf  rM   rK   r}  s       rA   test_memoryview_tolist)TestBufferProtocol.test_memoryview_tolist!  sk    KKT%A,/0qMQXXZ0addGaddGQXXZ0T%
+,LMrNRYY[1fg&qc$?rN-qxx8hZs37rN-qxx84QqE#NrN-qxx8rc   c                    [        [        S5      5      nUR                  5       nU R                  UR	                  S5      5        UR                  5         UR                  5       nU R                  UR	                  S5      5        g )Nr  z<memoryz	<released)rT   r(  __repr__r  
startswithr  )rf  rK   r   s      rA   test_memoryview_repr'TestBufferProtocol.test_memoryview_repr?  sY    y|$JJLY/0			JJL[12rc   c                 V   S Hi  n[        S5      n[        R                  " USUS/5      n[        U5      nU R                  SU5        U R                  SU5        U R                  SU5        Mk     [	        S/ SS9n[        U5      nU R                  [        [        S[        5       5        g )	N)r   r   g            ?g      @g      "@r   r  z9.0 in m)	floatrR   rT   assertInr   rz  rV  r7  r8  )rf  r>   infr}  rK   s        rA   test_memoryview_sequence+TestBufferProtocol.test_memoryview_sequenceH  s    C,CS3S/2B2AMM#q!MM%#MM#q!  S"S)rN)T:vx@rc   c              #      #    U R                  [        5       nS v   S S S 5        U R                  [        WR                  5      SU4-  5        g ! , (       d  f       N8= f7f)Nz#index out of bounds on dimension %d)rz  r  rx  str	exception)rf  dimcms      rA   assert_out_of_bounds_error-TestBufferProtocol.assert_out_of_bounds_errorV  sI     z*b +R\\*>#G	I +*s   A A2A 
AA c                    [        S/ SS9n[        U5      nU R                  US   S5        U R                  US   U5        U R                  US   U5        U R                  [        UR
                  S5        [        S/ SS9n[        U5      nU R                  [        UR
                  S5        [        [        [        S	5      5      S	/[        S
9n[        U5      nU R                  [        UR
                  S5        U R                  [        UR
                  S5        U R                  [        UR
                  S5        U R                  [        UR
                  S5        U R                  [        UR
                  S5        [        [        [        S5      5      SS/[        S
9n[        U5      nU R                  US   S5        U R                  US   S5        U R                  US   S5        U R                  US   S5        U R                  US   S5        S H!  nU R                  SS9   X#S4     S S S 5        M#     S H"  nU R                  SS9   USU4     S S S 5        M$     U R                  [        UR
                  S5        U R                  [        UR
                  S5        U R                  [        UR
                  S 5        U R                  [        UR
                  S!5        U R                  [        UR
                  S5        U R                  [        UR
                  S5        g ! , (       d  f       GM$  = f! , (       d  f       GM  = f)"N      )@r   rr  r   .r   r  iiir:   r  r-          @        r9   r  r_  r9  r   r   )r#   r   r  r  r   r   )r  r  r_  r  r/   rE  r9  r  r#   r-   r   r,   r   r   r   rM  rM  )r   rT   rx  rz  rV  r  rW  r   rm   r#  r  rG  )rf  r}  rK   indexs       rA   test_memoryview_index(TestBufferProtocol.test_memoryview_index]  s    TC0rN2%3#3$)Q]]A6WBu5rN-q}}bA T%(^A3kBrN*ammU;)Q]]C8)Q]]C8 	*ammR8*ammQ7 T%)_QqEErN4!$4!$4"%6B'6A& E00Q07( 87  E00Q07!U( 87  	*ammZ@*ammZ@)Q]]I>)Q]]J? 	-q}}bA-q}}a@ 87 87s   +L-M -
L=	 
M	c                    [        S/ S[        S9n[        U5      nSUS'   U R                  US   S5        SUS'   U R                  US   S5        U R	                  [
        UR                  SS	5        [        [        [        S
5      5      S
/S9n[        U5      nU R	                  [
        UR                  SS5        [        [        [        S
5      5      S
/[        S9n[        U5      nU R	                  [        UR                  SS5        U R	                  [
        UR                  SS5        U R	                  [
        UR                  SS5        U R	                  [        UR                  SS5        U R	                  [        UR                  SS5        [        S    Hi  nUS:X  d  US:X  a  M  [        / SQS/U[        S9n[        U5      n[        SS5      nSX$'   U R                  X$   S5        U R                  X$   X   5        Mk     [        / SQS/S[        S9n[        U5      nSUS'   U R                  US   S5        [        / S QS/S[        S9n[        U5      nS!US"'   U R                  US"   S!5        [        S#/S"/S[        S9n[        U5      nU R	                  [
        UR                  SS$5        [        [        [        S%5      5      / S&Q[        S9n[        U5      n[        S   R                  5        H  u  p7US:X  a  M  US:X  a  M  UR                  U5      nUu  pUS':X  d  US:X  a
  SS(-  * SS(-  pUS):w  aG  U R	                  [        UR                  SU	S"-
  5        U R	                  [
        UR                  SS*5        U R	                  [        UR                  SU
5        M     UR                  S5      nU R	                  [        UR                  SS+5        [        [        [        S"5      5      S"/S,[        S9n[        U5      nU R	                  [         UR                  SS"5        [        S-/S"/S.[        S9n[        U5      nU R	                  [         UR                  SS"5        [        [        [        S/5      5      SS0/[        S9n[        U5      nS1US2'   U R                  US   S"   S15        S3US4'   U R                  US   S   S35        S5 H!  nU R#                  S"S69   SX+S4'   S S S 5        M#     S7 H"  nU R#                  SS69   SUSU4'   S S S 5        M$     U R	                  [        UR                  S8S5        U R	                  [        UR                  S9S5        U R	                  [
        UR                  S:S5        U R	                  [
        UR                  S;S5        U R	                  [         UR                  SSS/5        g ! , (       d  f       GM
  = f! , (       d  f       M  = f)<NrJ  r   rq  g     6@r   g     7@.r   g333338@r:   r  r#   rr   r  r-   r  rL  rM  r  rN  r  r9      rD   r   r   r  r_  r  )   1   2   3r  )TFTTr/      xr   r  r  r   r  r   r  s   xLr.  r   r  r9  *   )r   r/   +   rP  rQ  rR  rS  rT  r,   rU  rV  )r   r#  rT   rx  rz  rV  r  r   rm   r  rZ   r   rw  r|   rj  r   rW  rG  )rf  r}  rK   r>   r   r]  r  _ranger  lohirW  s               rA   test_memoryview_assign)TestBufferProtocol.test_memoryview_assign  s/    TC{CrN"2%#2%)Q]]At< T%(^A3/rN)Q]]Ar: T%(^A3kBrN*ammUA>)Q]]C<)Q]]C< 	*ammR<*ammQ; 3<CczSCZC{KB2A"a AADQT1%QT25)   's3&(rN!1t$(C&(rN!adD! dVA3s+FrN)Q]]As;T%*%[L^"3<--/KCs
czBFBczSCZT'1d7Bcz!!*bnnaAF!!)R^^QFj"..!R@ 0 WWS\*bnnaE T%(^A3t;OrN-q}}aChZs3kJrN-q}}aC T%)_QqEErN#Aq2&%Aq2&E00Q07( 87  E00Q07!U( 87  	*ammZC*ammZC)Q]]IqA)Q]]JB 	-q}}a!QH 87 87s   .WW)
W&	)
W8	c           
      l   [        [        [        S5      5      S/[        S9n[	        U5      nU R                  [        UR                  [        SSS5      5        U R                  [        UR                  [        SSS5      [        SS/5      5        U R                  [        UR                  S5        [        [        [        S5      5      S/[        S9n[	        U5      nU R                  [        UR                  [        SSS5      [        SSS5      45        U R                  [        UR                  [        SSS5      [        SSS5      4[        SS/5      5        U R                  [        UR                  [        SSS5      0 45        U R                  [        UR                  [        SSS5      0 4[        SS/5      5        U R                  [        UR                  [        SSS5      S/5        S[        4 GH4  n[        [        [        S5      5      S/S/S[        U-  S	9n[        [        [        S
5      5      S/S/US9n[	        U5      n[	        U5      nUSS USS& USS USS& U R                  Xd5        U R                  Xu5        USS S S S2   USS S S S2'   USS S S S2   USS S S S2'   U R                  Xd5        U R                  Xu5        USSS2   S S S2   USSS2   S S S2'   USSS2   S S S2   USSS2   S S S2'   U R                  Xd5        U R                  Xu5        GM7     g )Nr  r  r   r#   r/   r   r   r  )r   r   r   r"     r  r   r_  r9  r  )r   r   rm   r#  rT   rz  r   r  r  r  r(  rW  rV  r  rx  )rf  r}  rK   r"  r  r  r  r  s           rA   test_memoryview_slice(TestBufferProtocol.test_memoryview_slice  s   T%)_RDDrN 	*ammU1Qq\B*ammU1Qq\#QqE*	, 	-q}}bA T%)_RDDrN-q}} 1Q<q16	8-q}} 1Q<q16	1Q%8H	J 	)Q]]U1Qq\24FG)Q]]U1Qq\24F#QqE*	, 	)Q]]E!AaL1#F [E$uRy/"tB +E 13C$uRy/"s%PCCBCB1QxC!H1gBqGR%R% 1Xcc]C!HTrTNqGCaCLBqGDbDMR%R% #AaE
3Q3C!BK"!!Aa%y1~Bq2vJttR%R%/ !rc   c                    S n[        SS5       GH  n[        US5       GH  u  p4n[        U5       GH  n[        U5       GH  n[        R                  " X45      n[        R                  " X45      n	[	        U	5      n
U R                  X5        U R                  U
R                  5       UR                  5       5        U R                  U
R                  5       UR                  5       5        U R                  [        U
5      [        U5      5        U" XXU5        S nS n X   nX   nX   X'   [        U5      [        U5      :g  nS n X   X'   U(       a  U R                  U[        5        GM)  U(       d  U(       a  U R                  UU5        GML  U R                  X5        U R                  U
R                  5       UR                  5       5        U R                  U
R                  5       UR                  5       5        U" XXU5        GM     GM     GM     GM     g ! [         a  nUR                  n S nANS nAff = f! [         a  nUR                  n S nAGNS nAff = f)Nc                 V   [        U5       H  u  pVX   nX5   nU R                  Xx5        XAU'   XG:w  a#  U R                  X5        U R                  X5        O"U R                  X5        U R                  X5        XCU'   U R                  X5        U R                  X#5        XqU'   XU'   M     g r   )r)  rx  assertNotEqual)	testcaserM   r   rK   
singleitemr   rz   aimis	            rA   cmptest9TestBufferProtocol.test_memoryview_array.<locals>.cmptest9  s    !!TT$$R,!!#++A1++A1((.((.!!$$Q*$$Q*!! %rc   r/   r   rR   )rm   r   r=  rR   rT   rx  rU  r2  rh   rI  rJ  rw  r   )rf  rs  r   r>   r|   rp  rT  rC  rM   r   rK   	array_errhave_resizealarr   m_errs                    rA   test_memoryview_array(TestBufferProtocol.test_memoryview_array7  s   	$ q!A*5a*A&J'lF"+A,!KK3!KK3&qM((.((QXXZ@((aiikB((QQ8z:$(	&*4!"B!"B()	AI*-b'SW*<K !%0()	AI ' MM%<"i MM%; ,,Q2 ,,QXXZD ,,QYY[!))+F#DQ:>K #/ + +B .  ) 4()I4  ) 0$%KKE0s0   %HH<
H9#H44H9<
IIIc                 L   [         R                   " S/ SQ5      n[         R                   " S/ SQ5      n[        U5      n[        U5      nS HM  nU R                  [        X55      " U5      [        5        U R                  [        X5      " U5      [        5        MO     [        U5      nUR                  5         U R                  X35        U R                  X15        U R                  X5        [        U5      n[        U5      nUR                  5         U R                  X45        U R                  XC5        [        U5      nU R                  U/ SQ5        [        S/S/S[        S9nS	[        S
5      4US'   U R                  [        U5      U5        [        (       a   " S S[        R                  5      nU" SS5      n[        U5      n[        U5      nU R                  X5        U R                  X5        U R                  X5        U R                  [        UR                  5        g g )Nr   r  )r/   r#   r:   )__lt____le____gt____ge__rO  r/   zl x d xrq  r   r/  r   c                   L    \ rS rSrS\R
                  4S\R
                  4/rSrg)ITestBufferProtocol.test_memoryview_compare_special_cases.<locals>.BEPointi  ra   r  r   Nr  r  r  r  r  r  r  r  r   rc   rA   r   r         &--032FGrc   r   r   r  )rR   rT   rw  getattrr*  r  rx  rn  r   r#  r=  r  r"  rz  rW  rU  )	rf  rM   r   r   wattrr]  r   r*  s	            rA   %test_memoryview_compare_special_cases8TestBufferProtocol.test_memoryview_compare_special_casesu  s   KKY'KKY' qMqM<DMM'!*1-~>MM'!*1-~> =
 qM			A!A!qMqM			A!A! qMAy) fXaS+NU5\"1JrNB/ 6H&33 HC%E5!A5!A%))1188< rc   )categoryc                     [         R                   " SS5      n[        U5      nU R                  X5        U R                  X!5        g )Nur  )rR   rT   rn  )rf  rM   r   s      rA   <test_memoryview_compare_special_cases_deprecated_u_type_codeOTestBufferProtocol.test_memoryview_compare_special_cases_deprecated_u_type_code  s9     KKU#qMA!A!rc   c                    [        S/ SS9n[        S/ S[        S9n[        U5      n[        U5      nU R                  X45        U R                  XC5        U R                  X25        U R                  X#5        U R                  XA5        U R                  X5        U R	                  UR                  U5      5        U R	                  UR                  U5      5        SUS'   U R                  X45        U R                  XC5        U R                  X25        U R                  X#5        U R                  XA5        U R                  X5        U R	                  UR                  U5      5        U R	                  UR                  U5      5        [        [        [        S5      5      S/[        [        -  S	9n[        [        [        S5      5      S/[        [        -  S	9n[        U5      nU R                  Xu5        S
US'   U R                  Xu5        [        S/ SS9n[        S/ S[        S9n[        U5      n[        U5      nU R                  X45        U R                  XC5        U R                  X25        U R                  X#5        U R                  XA5        U R                  X5        [        S/ SS9n[        S/ S[        S9n[        U5      n[        U5      nU R                  X45        U R                  XC5        U R                  X25        U R                  X#5        U R                  XA5        U R                  X5        U R                  X15        U R                  XB5        g )N  @Lrr  r   rq  i  r   r  r  r   r  )r  r!  r.  Lf5shf5s)i?r!  r.  )r   r#  rT   rx  rk  __ne__rn  r)  r   rm   r  )rf  nd1nd2r   r  r]  r}  rK   s           rA   !test_memoryview_compare_ndim_zero4TestBufferProtocol.test_memoryview_compare_ndim_zero  s   d"T2d"SDsOsO    !%!%"A!A!A#C#A#C#!%!%T%)_RDF8JKT%)_RDF8JKrN!A" +2fE+2f')sOsO     +2fE,Bv')sOsOA!A!A#C#A#C#  rc   c                    [        / SQS/SS9n[        / SQS/SS9n[        U5      n[        U5      nU R                  X15        U R                  XB5        U R                  X25        U R                  XA5        U R                  X45        [        / SQS/SS9n[        / SQS/SS9n[        U5      n[        U5      nU R                  X15        U R                  XB5        U R                  X25        U R                  XA5        U R                  X45        [        / SQS	/SS9n[        / SQS/SS9n[        U5      n[        U5      nU R                  X2S S S
2   5        U R                  US S S
2   U5        U R                  X4S S S
2   5        U R                  US S S2   US S S2   5        [        / SQS	/SS9n[        / SQS/SS9n[        U5      n[        U5      nU R                  X2S S S
2   5        U R                  US S S
2   U5        U R                  X4S S S
2   5        U R                  US S S2   US S S2   5        [        / SQS	/SS9n[        / SQS/S[        S9n[        U5      n[        U5      nU R                  X2S S S
2   5        U R                  US S S
2   U5        U R                  X4S S S
2   5        U R                  US S S2   US S S2   5        [        / SQS	/SS9n[        / SQS/S[        S9n[        U5      n[        U5      nU R                  X2S S S
2   5        U R                  US S S
2   U5        U R                  X4S S S
2   5        U R                  US S S2   US S S2   5        g )N@    'r   @hrr  )r  r  r  r  i  z<iz>h)r  r  r  r_  r#   r   r  z!hz<lrq  zh  0cz>  h)r   rT   rx  rn  r  rf  r  r  r   r  s        rA    test_memoryview_compare_ndim_one3TestBufferProtocol.test_memoryview_compare_ndim_one  sl    21#dK1!TJsOsO  A#A#A! 21#dK1!TJsOsO  A#A#A! (DA21#dKsOsO!H%3Q3%ccF#4R4!DbD'* (DA21#dKsOsO!H%3Q3%ccF#4R4!DbD'* (DA21#d"$sOsO!H%3Q3%ccF#4R4!DbD'* (GD21#f"$sOsO!H%3Q3%ccF#4R4!DbD'*rc   c                     [        SS/S/SS9n[        SS/S/SS9n[        U5      n[        U5      nU R                  X15        U R                  XB5        U R                  X25        U R                  XA5        U R                  X45        [        SS/S/SS9n[        SS/S/S	S9n[        U5      n[        U5      nU R                  X15        U R                  XB5        U R                  X25        U R                  XA5        U R                  X45        g )
N  r  r   r  rr  i|i?z= h0cz@   ir   rT   rx  r  s        rA   "test_memoryview_compare_zero_shape5TestBufferProtocol.test_memoryview_compare_zero_shape4  s    sCjD9tTl1#d;sOsO     sCjG<tTl1#g>sOsO    rc   c                 (   [        / SQS/SS9n[        S/S/S/SS9n[        U5      n[        U5      nU R                  X15        U R                  XB5        U R                  X25        U R                  XA5        U R                  X45        [        S	/S-  S/S
S9n[        S	/S/S/SS9n[        U5      n[        U5      nU R                  X15        U R                  XB5        U R                  X25        U R                  XA5        U R                  X45        g )N)r  r  r  r  r9  r  rr  r  r   r   r  )r  r  z@ Liz!L  hr  r  s        rA   $test_memoryview_compare_zero_strides7TestBufferProtocol.test_memoryview_compare_zero_stridesN  s	    *1#dCseA3C@sOsO     zl1nQC?zl1#s7KsOsO    rc   c           	         Sn[         S    Hn  n[        USSU5      u  p4nS[        4 HN  n[        XA/X6S9n[	        U5      nU R                  X5        US S S2   n[	        U5      nU R                  X5        MP     Mp     Sn[        S5       Hk  n	[        U5      u  p4nS[        4 HN  n[        XA/X6S9n[	        U5      nU R                  X5        US S S2   n[	        U5      nU R                  X5        MP     Mm     g )	Nrr   rL   rT   rD   r   rq  r  r   )rZ   r   r  r   rT   rx  rm   )
rf  r   r_   r>   r|   rp  r"  r]  rK   rz   s
             rA   &test_memoryview_compare_random_formats9TestBufferProtocol.test_memoryview_compare_random_formatsh  s     DMD%.q,T%J"C
VU#cGrN  '"XrN  ' % " sA%.q\"C
VU#cGrN  '"XrN  ' % rc   c                 2   [        [        [        SS5      5      / SQSS9n[        [        [        SS5      5      / SQSS9n[        U5      n[        U5      nU R	                  X15        U R	                  XB5        U R                  X25        U R                  XA5        U R                  X45        [        S/S-  / SQS	S9n[        S
/S-  / SQSS9n[        U5      n[        U5      nU R	                  X15        U R	                  XB5        U R                  X25        U R                  XA5        U R                  X45        [        [        [        S5      5      / SQSS9n[        [        [        S5      5      / SQSS9n[        U5      n[        U5      nU R	                  X15        U R	                  XB5        U R                  X25        U R                  XA5        U R                  X45        [        S/S-  SS/SS9n[        S/S-  SS/SS9n[        U5      n[        U5      nU R	                  X15        U R	                  XB5        U R                  X25        U R                  XA5        U R                  X45        [        [        [        S5      5      / SQSS9n[        [        [        S5      5      / SQSS9n[        U5      n[        U5      nU R	                  X15        U R	                  XB5        U R	                  X25        U R	                  XA5        U R	                  X45        g )Nr8   r_  r#   r   r  rr  r   r
  r   r/   r#   z=f q xxL)g333333r/   r#   z< f 2Qr2  r      r_  r:   z! b B xLz
= Qx l xxLr   r   r   rm   rT   rx  rn  r  s        rA   "test_memoryview_compare_multidim_c5TestBufferProtocol.test_memoryview_compare_multidim_c  s    d5b>*)DId5B<(	$GsOsO  A#A#A! yk"nIjI|nR'yJsOsO  A#A#A! d59oYsCd59oYsCsOsO  A#A#A! yk"nQF:Fyk"nQF<HsOsO  A#A#A! d59oYsCd59oYsCsOsO    rc   c                    [        [        [        SS5      5      / SQS[        S9n[        [        [        SS5      5      / SQS[        S9n[	        U5      n[	        U5      nU R                  X15        U R                  XB5        U R                  X25        U R                  XA5        U R                  X45        [        S/S	-  S
S/S[        S9n[        S/S	-  S
S/S[        S9n[	        U5      n[	        U5      nU R                  X15        U R                  XB5        U R                  X25        U R                  XA5        U R                  X45        [        [        [        SS5      5      / SQS[        S9n[        [        [        SS5      5      / SQS[        S9n[	        U5      n[	        U5      nU R                  X15        U R                  XB5        U R                  X25        U R                  XA5        U R                  X45        [        [        [        SS5      5      / SQS[        S9n[        [        [        SS5      5      / SQS[        S9n[	        U5      n[	        U5      nU R                  X15        U R                  XB5        U R                  X25        U R                  XA5        U R                  X45        [        [        [        S5      5      / SQS[        S9n[        [        [        S5      5      / SQS[        S9n[	        U5      n[	        U5      nU R                  X15        U R                  XB5        U R                  X25        U R                  XA5        U R                  X45        g )Nr  r8   )r   r#   r_  r  rq  r   r
  r    r   r:  r#   r_  =Qq)r   r    z=qQr2  r   r  0llrN   )r   r   rm   r  rT   rx  rn  r  s        rA   (test_memoryview_compare_multidim_fortran;TestBufferProtocol.test_memoryview_compare_multidim_fortran  s    d5b>*)D&(d5B<(	$&(sOsO  A#A#A! }oa'1ve&(}oa'1ve&(sOsO  A#A#A! d5b>*)C&(d5b>*)C&(sOsO  A#A#A! d5b>*)E&(d5b>*)C&(sOsO  A#A#A! d59oYt&(d59oYt&(sOsO    rc   c                 >	   [        [        SS5      5      n[        U/ SQ5      n[        U/ SQSS9n[        U/ SQS[        S9n[        U5      n[        U5      nU R                  XS5        U R                  Xd5        U R                  XV5        S/S	-  nS
US'   [        U/ SQ5      n[        U/ SQSS9n[        U/ SQS[        S9n[        U5      n[        U5      nU R                  XS5        U R                  Xd5        U R                  XV5        [        [        [        S5      5      SS/SS9nUSSS2S S S24   n[        [        [        S5      5      SS/SS9nUSSS2S S S24   n[        U5      n[        U5      nU R                  XS5        U R                  Xd5        U R                  XT5        U R                  Xc5        U R                  XV5        [        S/S-  SS/SS9nUSSS2S S S24   n[        S/S-  SS/SS9nUSSS2S S S24   n[        U5      n[        U5      nU R                  XS5        U R                  Xd5        U R                  XT5        U R                  Xc5        U R                  XV5        [        [        [        S	5      5      / SQSS9nUSS2S S S24   n[        [        [        S	5      5      / SQSS9nUSS2S S S24   n[        U5      n[        U5      nU R                  XS5        U R                  Xd5        U R                  XT5        U R                  Xc5        U R                  XV5        [        [        [        S	5      5      / SQSS9nUSS2S S S24   n[        [        [        S	5      5      / SQSS9nUSS2S S S24   n[        U5      n[        U5      nU R                  XS5        U R                  Xd5        U R                  XT5        U R                  Xc5        U R                  XV5        [        S/S	-  / S QS!S9nUSS2S S S24   n[        S/S	-  / S QS"S9nUSS2S S S24   n[        U5      n[        U5      nU R                  XS5        U R                  Xd5        U R                  XT5        U R                  Xc5        U R                  XV5        g )#Nr  r8   r  @lrr  r   rq  )gffffff
r_  r
  )gr  r_  r   zd b czd h c(   r9   @Ir_  r/   r   r  r   )r  r(      r  r#   z=iiz>iir2  r   r   )r#   r  r   r_  r#   b3si3s)r   rm   r   r   r  rT   rx  rn  )	rf  lst1lst2r  r  r   r  r  r  s	            rA   &test_memoryview_compare_multidim_mixed9TestBufferProtocol.test_memoryview_compare_multidim_mixed
  s    E#rN#y)d)D9d)CzJsOsO   ""2%#Qy)d)G<d)G:NsOsO   d59oaVDA!Ab&$B$,d59oaVC@!Aa%2+sOsO  A#A#A! ()",RGEJ!Ab&$B$,()",RGEJ!Aa%2+sOsO     d59oYsC!A$"*od59oYsC!A$"*osOsO  A#A#A! d59oYsC!A$"*od59oYsC!A$"*osOsO  A#A#A! {mB&iF!A$"*o{mB&iF!A$"*osOsO  A#A#A!rc   c                    [        [        [        S5      5      / SQSS9n[        [        [        S5      5      / SQSS9n[        U5      n[        U5      nU R	                  X15        U R	                  XB5        U R                  X25        U R                  XA5        U R                  X45        [        [        [        S5      5      / SQSS9n[        [        [        S5      5      / SQSS9n[        U5      n[        U5      nU R	                  X15        U R	                  XB5        U R                  X25        U R                  XA5        U R                  X45        g )Nr
  )r   r_  r#   r   rr  )r   r   r#   z@ir  r  s        rA   +test_memoryview_compare_multidim_zero_shape>TestBufferProtocol.test_memoryview_compare_multidim_zero_shapek  s    d59oYsCd59oYtDsOsO  A#A#A! d59oYsCd59oYtDsOsO  A#A#A!rc   c                    [        S/S-  / SQSS9n[        S// SQ/ SQSS9n[        U5      n[        U5      nU R                  X15        U R                  XB5        U R                  X25        U R                  XA5        U R                  X45        U R                  UR                  5       UR                  5       5        [        S	/S
-  SS/SS9n[        S	/SS/SS/SS9n[        U5      n[        U5      nU R                  X15        U R                  XB5        U R                  X25        U R                  XA5        U R                  X45        g )Nr  r  )r9  r   r9  r  rr  rU  r   r  r  rr   r#   r   z=lQr   z<lQ)r   rT   rx  rU  r  s        rA   -test_memoryview_compare_multidim_zero_strides@TestBufferProtocol.test_memoryview_compare_multidim_zero_strides  s*    seBhi=se9iLsOsO    QXXZ0 vhrk!Q>vhq!fq!fUKsOsO    rc   c                    [        [        [        S5      5      SS/SS9nUSSS2S S S	24   n[        [        [        S5      5      SS/S
[        S9nUSSS2S S S	24   n[	        U5      n[	        U5      nU R                  XR5        U R                  Xd5        U R                  XT5        U R                  Xb5        U R                  XV5        [        S/S-  SS/S[        S9nSUS   S'   USSS2S S S	24   n[        S/S-  SS/S[        [        -  S9nSUS   S'   USSS2S S S	24   n[	        U5      n[	        U5      nU R                  XR5        U R                  Xd5        U R                  XT5        U R                  Xb5        U R                  XV5        [        [        [        S5      5      / SQS[        S9nUSS2S S S	24   n[        [        [        S5      5      / SQSS9nUSS2S S S	24   n[	        U5      n[	        U5      nU R                  XR5        U R                  Xd5        U R                  XT5        U R                  Xb5        U R                  XV5        [        S/S-  / SQS[        [        -  S9nUSS2S S S	24   n[        S/S-  / SQSS9nUSS2S S S	24   n[	        U5      n[	        U5      nU R                  XR5        U R                  Xd5        U R                  XT5        U R                  Xb5        U R                  XV5        [        [        [        S5      5      / SQS[        S9nUSS2S S S	24   n[        [        [        S5      5      / SQS[        S9nUSS2S S S	24   n[	        U5      n[	        U5      nU R                  XR5        U R                  Xd5        U R                  XT5        U R                  Xb5        U R                  XV5        [        S/S-  / SQS[        [        -  S9nSUS   S   S'   USS2S S S	24   n[        S/S-  / SQS[        [        -  S9nSUS   S   S'   USS2S S S	24   n[	        U5      n[	        U5      nU R                  XR5        U R                  Xd5        U R                  XT5        U R                  Xb5        U R                  XV5        [        [        SS 5      5      n[        U/ SQ5      n[        U/ SQS![        S9n[        U/ SQS"[        [        -  S9n[	        U5      n[	        U5      nU R                  XR5        U R                  Xd5        U R                  XV5        S#/S-  nS$US%'   [        U/ SQ5      n[        U/ SQS&[        S9n[        U/ SQS'[        [        -  S9n[	        U5      n[	        U5      nU R                  XR5        U R                  Xd5        U R                  XV5        g )(Nr  r   r9   r  rr  r_  r/   r   r  r   rq  r  r  )r/   r  r#   r:   z>Qqr
  r2  r   r  )r  r   Bbr  r   )   hellorc   r/      )r_  r_  r_  5s0sP)s   sushirc   r/   r  r8   r  r   )s   sashimis   slicedg4@)s   ramens   spicygfffff"@r  z
< 10p 9p dz
> 10p 9p d)
r   r   rm   r  rT   rx  rn  r#  r   r  )	rf  r  r  r  r  r   r  r  r  s	            rA   +test_memoryview_compare_multidim_suboffsets>TestBufferProtocol.test_memoryview_compare_multidim_suboffsets  s    d59oaVDA!Ab&$B$,d59oaVCvN!Aa%2+sOsO  A#A#A! }ob(Au')Aq	!Ab&$B$,}ob(Au";.0Aq	!Aa%2+sOsO     d59oYs"$!A$"*od59oYsC!A$"*osOsO  A#A#A! |nR'y";.0!A$"*o|nR'yF!A$"*osOsO  A#A#A! d59oYs&Q!A$"*od59oYt6R!A$"*osOsO     )*2-Yw";.0)Aq	!!A$"*o)*2-Yw";.0)Aq	!!A$"*osOsO  A#A#A! E#rN#y)d)DGd)Cz&?PQsOsO   //2-Ry)d)LOd)L&v-/sOsO  rc   c                    S GHd  n[        S/S-  / SQUS-   S9n[        S/S-  / SQUS-   [        [        -  S9nSUS	   S
   S   S   S'   [        U5      n[        U5      nU R	                  XB5        U R	                  XS5        U R                  XE5        U R                  XC5        U R                  XR5        [        S/S-  / SQUS-   S9n[        S/S-  / SQUS-   [        [        -  S9nSUS	   S
   S   S   S'   [        U5      n[        U5      nU R	                  XB5        U R	                  XS5        U R                  XE5        U R                  XC5        U R                  XR5        GMg     g )N)rG   rE   rF   rH   r+   r  )r_  r   r#   r#   r#   r   rr  rq  r/   r#   r_  )r+   r)   r'   QLH)r/   r/   r/   )r   r#  r  rT   rx  rn  )rf  	byteorderra   r  rM   r   s         rA   !test_memoryview_compare_not_equal4TestBufferProtocol.test_memoryview_compare_not_equal!  sp    .I;y}MA;y})*46A AaDGAJqM!1A1AQ"Q"%%%./3;(0A./3;(k*6LNA(AaDGAJqM!1A1AQ"Q"%%%1 .rc   c                    [         R                   " S/ SQ5      n[        U5      nUR                  5         U R                  [        [        U5        U R                  [        UR
                  S5        U R                  [        UR                  5        U R                  [        [        U5        U R                  [        UR                  5        U R                  [        UR                  5        U R                  [        [        S[        5       5        U R                  [        UR                  S5        U R                  [        UR                  SS5        S H$  nU R                  [        UR                  U5        M&     [         R                   " S/ SQ5      n[        U5      n[        U5      nU R                  XV5        UR                  5         U R!                  XV5        U R!                  XQ5        U R                  XU5        g )Nr   )g?g@gffffff
@r   z1.0 in mr   r/   )r`   r0  ry  r   r!  r   r   r   rY  r  r  r  )rR   rT   r  rz  r   rj  __iter__r   rU  r2  r7  r8  r  r  __getattribute__rx  rn  )rf  rM   rK   r  r   r  r  s          rA   test_memoryview_check_released1TestBufferProtocol.test_memoryview_check_released>  sk   KK_-qM			 	*j!4*affc2*ajj1*gq1*ahh/*aii0*dJA*ammQ7*ammQ:3D j!*<*<dC3 KK_-]] 


B#B" rc   c                    Sn[        US/SS9n[        U5      nU R                  X25        U R                  UR                  5       UR                  5       5        [        U/S/SS9n[        U5      nU R                  X25        U R                  UR                  5       UR                  5       5        [        [	        S5       Vs/ s H  oAPM     sn/ SQS	S9n[        U5      nU R                  X25        U R                  UR                  5       UR                  5       5        [        [	        S
5       Vs/ s H  oAPM     sn/ SQSS9n[        U5      nU R                  X25        U R                  UR                  5       UR                  5       5        [
        (       aW   " S S[
        R                  5      nU" SS5      n[        U5      nU R                  UR                  5       [        U5      5        g g s  snf s  snf )Nr  r   r  rr  r/   z>hQiLlr  r  z=hQiLlr  )r   r#   r#   r_  r#   z<hQiLlc                   L    \ rS rSrS\R
                  4S\R
                  4/rSrg);TestBufferProtocol.test_memoryview_tobytes.<locals>.BEPointi  ra   r  r   Nr  r   rc   rA   r   r    r  rc   r   r   r  )r   rT   rx  r2  rm   r  r"  r[   )rf  r   r]  rK   rz   r   r*  rM   s           rA   test_memoryview_tobytes*TestBufferProtocol.test_memoryview_tobytesh  s    )Qqc$/rNbjjl3aSH5rNbjjl3r+Aa+78LrNbjjl3s,Aa,K$&rNbjjl3 6H&33 HC%E5!AQYY[%,7  ,
 -s   G32G8c                 ~   U R                  [        [        0 [        S5        U R                  [        [        S[
        S5        [        / SQS/S/S9nU R                  [        [        U[
        S5        [        SS	S
S9nS H:  n[        U[        U5      nU R                  X15        U R                  US	   S5        M<     [        SS	S
[        S9nS H:  n[        U[        U5      nU R                  X15        U R                  US	   S5        M<     S Hn  nSUS	'   [        U[
        U5      nU R                  X15        U R                  US	   S5        SUS	'   U R                  US	   S5        U R                  US	   S5        Mp     [        S/S/S
[        S9nS Hf  n[        U[        U5      nU R                  [        UR                  S5        U R                  X15        U R                  UR                  5       / 5        Mh     [        [        [        S5      5      / SQS
[        S9nS H?  n[        U[        U5      nU R                  [        U5      R                  5       / / /5        MA     [        S/S/S[        S9nS HS  n[        U[
        U5      nU R                  X15        U R                  UR                  5       UR                  5       5        MU     [        / SQS/S[        S9nS HS  n[        U[
        U5      nU R                  X15        U R                  UR                  5       UR                  5       5        MU     [        / SQS/S/[        S9nS H  n[        U[        U5      nU R                  X15        U R                  UR                  5       UR                  5       5        U R                  [        UR                  SS5        U R                  US   S5        U R                  US   S5        M     US S S2   nS H  n[        U[        U5      nU R                  X15        U R                  UR                  5       UR                  5       5        U R                  [        UR                  SS5        U R                  US   S5        U R                  US   S5        M     [        [        [        S5      5      SS/[        S9nS HK  n[        U[
        U5      nU R                  [        U5      R                  5       UR                  5       5        MM     U R                  [        [        U[
        S5        [        U[        W5      nU R                  [        U5      R                  5       UR                  5       5        [        [        [        S5      5      SS/[        [        -  S9nS HK  n[        U[
        U5      nU R                  [        U5      R                  5       UR                  5       5        MM     U R                  [        [        U[
        S5        [        U[        U5      nU R                  [        U5      R                  5       UR                  5       5        [        [        [        S5      5      SS/[        [         -  S9nS Hl  nU R                  [        [        U[
        U5        [        U[        U5      nU R                  [        U5      R                  5       UR                  5       5        Mn     [        / SQS/S/S9n[        U[        S5      nU R#                  UR$                  5        g )Nro  r_  r   r  r#   r  rp  r  r   r   rr  rn  rq  rr   r/   r   r9   r  r   r_  r   r  r  r   r  r9  r  )r   rp  )ro  rp  r  )rz  rV  r  r  r  PyBUF_WRITEr   rx  r#  r  r  rU  r   rm   r  r  r  r  r  )rf  r]  ru  rK   s       rA   test_memoryview_get_contiguous1TestBufferProtocol.test_memoryview_get_contiguous  s    	)^RSI 	+~t[#N YqcA37+~r;L Qb-$Er:u5AQ#QrUA& % QbK@$Er:u5AQ#QrUA& % %EBrFr;6AQ#QrUA&AbEQrUB'RVR( % aSC{C$Er:u5Aj!--;Q#QXXZ,	 % T%(^9S&($Er:u5AWQZ..02r(; %
 aSC{C$Er;6AQ#QXXZ5 %
 Yqc#[I$Er;6AQ#QXXZ5 % YqcA3kJ$Er:u5AQ#QXXZ5i2>QqT1%RUA& % "X$Er:u5AQ#QXXZ5i2>QqT1%RUA& % T%)_QF+FEr;6AWQZ..0"))+>   	+~r;L2z51**,biik:T%)_QF&z13Er;6AWQZ..0"))+>   	+~r;L2z51**,biik: T%)_QF+f:LM$Ek>2{#%r:u5AWQZ..0"))+>	 % [aS92z3/'rc   c                 L   [         R                  " S5      n[        R                  " S/ SQ5      n[        U5      n[        R
                  " U5      n[        SU-  5      nUR                  U5        U R                  UR                  5       U5        [         R                  " S5      n[        [        [        S5      5      / SQSS9n[        U5      n[        R
                  " U5      n[        SU-  5      nUR                  U5        U R                  UR                  5       U5        g )Nr   r  r   r   r  r  rr  )r;   r  rR   rT   ioBytesIOr(  readintorx  r2  r   r   rm   )rf  r&  rM   rK   r,  r   r]  s          rA   test_memoryview_serializing.TestBufferProtocol.test_memoryview_serializing   s     s#KK[)qMjjmafQa( s#T%)_GC@rNjjmeDj!Qa(rc   c                 *   [        [        [        S5      5      5      n[        U5      nU R	                  [        U5      [        U5      5        UR                  SSS/S9nU R	                  [        U5      [        U5      5        US S S2   n[        [        [        S5      5      S S S2   5      nU R	                  [        U5      [        U5      5        [        [        [        S5      5      / SQ[        S	9n[        U5      nU R	                  [        U5      [        U5      5        [        [        [        S5      5      / SQS9nUS S S
2S S 2S S S24   n[        U5      nU R	                  [        U5      [        U5      5        [        [        [        S5      5      / SQ[        S	9nUS S S
2S S 2S S S24   n[        U5      nU R	                  [        U5      [        U5      5        [        [        [        S5      5      S/SS9n[        U5      n[        [        [        S5      5      S/SS9n[        U5      nU R	                  Xq5        U R	                  [        U5      [        U5      5        [        [        [        S5      5      / SQSS9n[        U5      nU R                  [        UR                  5        [        [        [        SS5      5      / SQSS9n[        U5      nU R                  [        UR                  5        [        [        [        S5      5      / SQSS9n[        U5      nU R                  [        UR                  5        [        [        [        SS5      5      / SQSS9n[        U5      nU R                  [        UR                  5        g )Nr  r   r_  r9  r  r  r
  r  r  r#   r   )r#   r   r_  r   rr  r   r  r   r(  r:  r   z= Lz< h)r[   r   rm   rT   rx  r  rj  r   r  r  rz  r   __hash__)	rf  r   rK   mcmxr]  ra   rM   r  s	            rA   test_memoryview_hash'TestBufferProtocol.test_memoryview_hash  s    $uRy/"qMa$q'* VVC!uV%b47+ ttW$uRy/$B$'(b47+ T%)_G:FrNa$r(+ T%)_G4ssB"}qMa$q'* T%)_G6BssB"}qMa$q'* DrOB4<qMDrOB4<qMa$q'* T%)_GC@rN*ajj1T%A,'wsCrN*ajj1T%)_GEBrN*ajj1T%A,'wuErN*ajj1rc   c           
      ,   [        / SQ5      n[        U5      n[        U5      nU R                  [        UR
                  5        AUR                  5         [        / SQ5      n[        U5      n[        U[        [        S9n[        U[        [        S9nU R                  UR                  U5        U R                  [        UR
                  5        AAUR                  5         [        / SQ5      n[        U5      n[        U5      n[        U5      nUR                  5         U R                  [        UR
                  5        AUR                  5         [        / SQ5      n[        U5      n[        U5      n[        U[        [        S9n[        U[        [        S9nU R                  UR                  U5        UR                  5         U R                  [        UR
                  5        AAUR                  5         [        / SQS/[        S9n[        U5      nUR                  / SQS/S9  [        U5      n[        U5      nU R                  UR                  5       UR                  5       5        [        U5      n	U R                  U	R                  5       UR                  5       5        U R                  U	R                  5       UR                  5       5        UR                  5         U	R                  5         UR                  5         U R                  UR                  5       UR                  5       5        AUR                  5         UR                  5         S n
[        S	5      n[        U5       nU
" U5        U R                  US
   [        S5      5        S S S 5        [        [!        [#        S5      5      / SQSS9n[        U[        [        S9n	[        U	[        [        S9nU R                  UR                  U5        [        U5       nU
" U5        U R                  US
S R                  5       / SQ/ SQ//5        S S S 5        S
[        4 GH  n[        S	5      n[        U5       nA[        U[        US9n	[        U	5       nA	[        U[        US9n[        U5       nAU
" U5        U
" U5        U
" U5        U R                  US
   [        S5      5        U R                  US   [        S5      5        U R                  US   [        S5      5        AS S S 5        AS S S 5        AS S S 5        [        S	5      n[        U5       nA[        U[        US9n	[        U	5       nA	[        U[        US9n[        U5       nAU
" U5        U
" U5        U
" U5        U R                  US
   [        S5      5        U R                  US   [        S5      5        U R                  US   [        S5      5        AAAS S S 5        S S S 5        S S S 5        GM     [        S	5      nU R                  [        5         [        U5       n[        U5      nUS
   [        S5      :H    S S S 5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GNF= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       GM  = f! , (       d  f       N= f! , (       d  f       g = f)Nr  r  r"  r_  r  )r9  r   r:  r:   r9   r   r  c                 P    [        U 5       n S S S 5        g ! , (       d  f       g = fr   rT   )r   r  s     rA   catch22;TestBufferProtocol.test_memoryview_release.<locals>.catch22  s    A" s   
%r  r   r\  r  r  r   rr  r/   r  )r_  r9  r   r]  r#   r^  )r(  rT   r   rz  r  r  r  ND_REDIRECTrw  r`   r  r  rx  rU  r  ordr   rm   )rf  rM   rK   r]  r  r  r  r  ra   r  r  rg  r"  r  r}  s                  rA   test_memoryview_release*TestBufferProtocol.test_memoryview_releaseZ  s>    gqMQZ+qyy1			gqMa[Ac-{Ccggq!+qyy1			 g]^R[


+rzz2


g]^bkBc-{Ccggr"


+rzz2


 WQC|<^
A3'^rNRYY[1rNRYY[1RYY[1


			
RYY[1


			
	 f]bBKRUCI.  DrO73?Am;?Am;?aeeQ]aAJQqV]]_	9/E.FG 
 %E&!AA"B}EB]b=FA#A"((AD	:((AD	:((AD	: '  # ! $ &!AA"B}EB]b=FA#A"((AD	:((AD	:((AD	:B ' # + &L f{+A!QZ!D	!  ,+i ] ] ' #] 2 ' #] &  ,+s   *'Y%3Y7"Z->ZA5Z			Z	Z-?[![7A7Z?	.[6[!+\7[4\%
Y47
Z	
ZZ
Z*%Z--
Z<	?
[	[
[[!!
[1	4
\	>\
\c                    [        [        S5       Vs/ s H  nSU-  PM
     snS/SS9n[        R                  " S[        S5       Vs/ s H  nSU-  PM
     sn5      nX#4 GH  n[        U[        [        S9n[        U[        [        S9n[        U5      nU R                  UR                  U5        U R                  UR                  U5        U R                  UR                  U5        U R                  Xa5        U R                  Xd5        U R                  Xe5        U R                  USS USS 5        U R                  USS USS 5        U R                  USS USS 5        AAU R                  USS USS 5        GM!     g s  snf s  snf )Nr  r<  r   rr  r  r/   r_  )	r   rm   rR   r  r  rT   rw  r`   rx  )rf  ra   r]  rM   r  rg  rK   s          rA   test_memoryview_redirect+TestBufferProtocol.test_memoryview_redirect  s^   uRy1y!cAgy1"cJKKuRy9y!cAgy9:A-{CA-{CA1AMM!%%#MM!%%#MM!%%#Q"Q"Q"QqVQqV,QqVQqV,QqVQqV,1QqVQqV,#  29s   FF

c                    Sn/ SQnU R                  [        [        SSS5        [        5       n[        U5      nU R	                  XCSUSSS/S/US9	  [        S5       H  nU R                  XE   U5        M     AA[        5       n[        U5      nAA[        5       n[        U[        S	9n[        U[        S	9n[        U5      nU R                  UR                  U5        U R                  UR                  U5        U R	                  XvSUSSS/S/US9	  AAAA[        5       n[        U[        [        S
9n[        U[        [        S
9n[        U5      nU R                  UR                  U5        U R                  UR                  U5        U R                  UR                  U5        U R	                  XsSUSSS/S/US9	  AAAA[        SS9n[        U5      nU R	                  US SUSSS/S/US9	  [        S5       H  nU R                  XE   U5        M     AA[        SS9n[        U5      nAA[        SS9n[        U[        S	9n[        U[        S	9n[        U5      nU R                  UR                  S 5        U R                  UR                  U5        U R	                  XvSUSSS/S/US9	  AAAA[        SS9n[        U[        [        S
9n[        U[        [        S
9n[        U5      nU R                  UR                  S 5        U R                  UR                  U5        U R                  UR                  U5        U R	                  XtSUSSS/S/US9	  AAAAg )Nr   )r   r/   r#   r_  r9  r   r:  r:   r9   r  rr   r  r/   r#   r_  Tr  r  r  r  )legacy_mode)rz  rV  staticarrayrT   r  rm   rx  r   r  rw  r`   r  )rf  r>   rn   ra   r  r   rg  rK   s           rA   $test_memoryview_from_static_exporter7TestBufferProtocol.test_memoryview_from_static_exporter  sL   ) 	)[!Q: MqMAC$2$ 	 	 rAQT1% MqMMAm,Am,qMaeeQaeeQAC$2$ 	 	 q!QMAm;?Am;?qMaeeQaeeQaeeQAC$2$ 	 	 q!Q D)qMA4C$2$ 	 	 rAQT1% D)qMD)Am,Am,qMaeeT"aeeQAC$2$ 	 	 q!QD)Am;?Am;?qM 	aeeT"aeeQaeeQAC$2$ 	 	 q!Qrc   c                 l    [        / SQS/[        [        -  S9nU R                  [        [
        U5        g )Nr  r_  r  )r   r  ND_GETBUF_UNDEFINEDrz  r  rT   r  s     rA   #test_memoryview_getbuffer_undefined6TestBufferProtocol.test_memoryview_getbuffer_undefinedP  s,     Wqc8K)KL+z26rc   c                 ^    [        / SQS/[        S9nU R                  [        [        U5        g )Nr  r_  r  )r   r  rz  r  rT   )rf  ra   s     rA   test_issue_7385"TestBufferProtocol.test_issue_7385V  s$    GA3n=+z15rc   c                 z   [        S5      nU R                  [        5         UR                  [        R
                  R                  5        S S S 5        U R                  [        5         UR                  [        R
                  R                  5        S S S 5        g ! , (       d  f       NV= f! , (       d  f       g = f)Nr  )r(  rz  SystemError
__buffer__inspectBufferFlagsREADWRITE)rf  r`   s     rA   'test_bytearray_release_buffer_read_flag:TestBufferProtocol.test_bytearray_release_buffer_read_flagZ  su    {+NN7..334 ,{+NN7..445 ,+ ,+++s   *B(*B,
B),
B:c                     S H=  nU R                  [        R                  " U5      [        R                  " U5      5        M?     g )N)rC   ii3s)rx  	_testcapiPyBuffer_SizeFromFormatr;   r  )rf  r!  s     rA   test_pybuffer_size_from_format1TestBufferProtocol.test_pybuffer_size_from_formatb  s5     'FY>>vF#__V46 'rc   c                 8    SSK JnJn  SnUS-
  US-   4 HJ  nU R	                  US9   U R                  [        5         UR                  U5        S S S 5        S S S 5        ML     g ! [         a    SnSn Nkf = f! , (       d  f       N/= f! , (       d  f       M  = f)Nr   )INT_MININT_MAXr(   r  r  r/   r  )r  r   r!  ImportErrorsubTestrz  r  r  )rf  r   r!  r`   r"  s        rA   test_flags_overflow&TestBufferProtocol.test_flags_overflowi  s    	"2
 k7Q;/EE*&&}5NN5) 6 +* 0  	" G!G	" 65 +*s3   A% B
A9B
%A65A69
BB


B	)rd  NF)^r  r  r  r  rg  r  r  r   requires_resourcer  r  r  r  r  r  r  r  r  r"  r%  r+  r/  r4  r9  rB  rE  rN  rQ  rZ  r^  rh  rm  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r+  r4  r9  r@  
contextlibcontextmanagerrG  rX  rf  rj  rz  r  r   ignore_warningsDeprecationWarningr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  cpython_onlyr  r$  r  r   rc   rA   ra  ra    s|   1 "'UJX.,` u%g< &g<R\=| $
'3*=+)Z%LN64E..`,1\H>-&W7r<(D@!@F4/l>B'0R38<E|(I&;/
$>2
0#7Jn8`sQj-$ ''L?62p5q@f:.x u%R0 &R0h9<3A I I3AjkIZ6&p<?|-=^ $$.@A" B"=!~F+P44(8<|FP_"B"46B&:(!T!8Fs(j)<:2x~"@-0\|766 6 6 * *rc   ra  c                   F   \ rS rSrS rS rS rS rS rS r	\
R                  " \SL S	5      S
 5       r\
R                  " \SL S	5      S 5       r\
R                  " \SL S	5      S 5       r\
R                  " \SL S	5      S 5       rS rS rS rS rS rS rS rS rS rSrg)TestPythonBufferProtocoliy  c                      " S S5      n[        U" 5       5      nU R                  UR                  5       S5        U R                  [        U" 5       5      S5        g )Nc                       \ rS rSrS rSrg)5TestPythonBufferProtocol.test_basic.<locals>.MyBufferi{  c                     [        S5      $ Nr  r  rf  r"  s     rA   r  @TestPythonBufferProtocol.test_basic.<locals>.MyBuffer.__buffer__|      !(++rc   r   Nr  r  r  r  r  r  r   rc   rA   MyBufferr1  {      ,rc   r8  r  )rT   rx  r2  r[   )rf  r8  r  s      rA   
test_basic#TestPythonBufferProtocol.test_basicz  sG    	, 	, 
#x0xz*H5rc   c                      " S S5      nU R                  [        [        U" 5       5         " S S5      nU R                  [        [        U" 5       5         " S S5      nU R                  [        [        U" 5       5        g )Nc                       \ rS rSrS rSrg)ETestPythonBufferProtocol.test_bad_buffer_method.<locals>.MustReturnMVi  c                     g)Nra  r   r4  s     rA   r  PTestPythonBufferProtocol.test_bad_buffer_method.<locals>.MustReturnMV.__buffer__  s    rc   r   Nr7  r   rc   rA   MustReturnMVr>    s    rc   rA  c                       \ rS rSrS rSrg)FTestPythonBufferProtocol.test_bad_buffer_method.<locals>.NoBytesEitheri  c                     gr3  r   r4  s     rA   r  QTestPythonBufferProtocol.test_bad_buffer_method.<locals>.NoBytesEither.__buffer__  s    rc   r   Nr7  r   rc   rA   NoBytesEitherrC    s     rc   rF  c                       \ rS rSrS rSrg)CTestPythonBufferProtocol.test_bad_buffer_method.<locals>.WrongArityi  c                     [        S5      $ r3  r  re  s    rA   r  NTestPythonBufferProtocol.test_bad_buffer_method.<locals>.WrongArity.__buffer__  r6  rc   r   Nr7  r   rc   rA   
WrongArityrH    r9  rc   rK  )rz  rV  rT   )rf  rA  rF  rK  s       rA   test_bad_buffer_method/TestPythonBufferProtocol.test_bad_buffer_method  sb    	 	 	)Z@	  	  	)ZA	, 	, 	)Z>rc   c                 R    " S S5      nU" 5       nU R                  UR                  5        [        U5       nU R                  UR                  5        U R	                  UR                  5       S5        S S S 5        U R                  UR                  5        g ! , (       d  f       N*= f)Nc                   &    \ rS rSrS rS rS rSrg)CTestPythonBufferProtocol.test_release_buffer.<locals>.WhatToReleasei  c                 2    SU l         [        S5      U l        g NFr  )heldr(  bare  s    rA   r  LTestPythonBufferProtocol.test_release_buffer.<locals>.WhatToRelease.__init__  s    !	#H-rc   c                 r    U R                   (       a  [        S5      eSU l         [        U R                  5      $ Nzalready heldT)rS  rV  rT   rT  r4  s     rA   r  NTestPythonBufferProtocol.test_release_buffer.<locals>.WhatToRelease.__buffer__  s*    99#N33 	!$''**rc   c                     SU l         g NF)rS  rf  r&  s     rA   __release_buffer__VTestPythonBufferProtocol.test_release_buffer.<locals>.WhatToRelease.__release_buffer__  s	    !	rc   )rT  rS  Nr  r  r  r  r  r  r\  r  r   rc   rA   WhatToReleaserP    s    .+"rc   r_  r  rk  rS  rT   r  rx  r2  rf  r_  wrr  s       rA   test_release_buffer,TestPythonBufferProtocol.test_release_buffer  sw    	" 	" _!^rOOBGG$RZZ\84  	! ^   <B
B&c                 R    " S S5      nU" 5       nU R                  UR                  5        [        U5       nU R                  UR                  5        U R	                  UR                  5       S5        S S S 5        U R                  UR                  5        g ! , (       d  f       N*= f)Nc                   &    \ rS rSrS rS rS rSrg)ITestPythonBufferProtocol.test_same_buffer_returned.<locals>.WhatToReleasei  c                 @    SU l         [        S5      U l        S U l        g rR  )rS  r(  rT  
created_mvre  s    rA   r  RTestPythonBufferProtocol.test_same_buffer_returned.<locals>.WhatToRelease.__init__  s    !	#H-"&rc   c                     U R                   (       a  [        S5      eSU l         [        U R                  5      U l        U R                  $ rW  )rS  rV  rT   rT  rj  r4  s     rA   r  TTestPythonBufferProtocol.test_same_buffer_returned.<locals>.WhatToRelease.__buffer__  s5    99#N33 	",TWW"5&rc   c                 2    XR                   L d   eSU l        g rZ  )rj  rS  r[  s     rA   r\  \TestPythonBufferProtocol.test_same_buffer_returned.<locals>.WhatToRelease.__release_buffer__  s    000!	rc   )rT  rj  rS  Nr^  r   rc   rA   r_  rh    s    '
'"rc   r_  r  r`  ra  s       rA   test_same_buffer_returned2TestPythonBufferProtocol.test_same_buffer_returned  sw    	" 	"" _!^rOOBGG$RZZ\84  	! ^re  c                     " S S5      nU" SS5      nU" SS5      n[         R                  U[        R                  R                  5       nU R                  UR                  5       S5        [        S5      US'   U R                  UR                  5       S5        S S S 5        [         R                  U[        R                  R                  5       nU R                  UR                  5       S5        U R                  [        5         [        S	5      US'   S S S 5        U R                  UR                  5       S5        S S S 5        [         R                  U[        R                  R                  5       nU R                  UR                  5       S5        U R                  [        5         [        S5      US'   S S S 5        U R                  UR                  5       S5        S S S 5        U R                  [        5         [         R                  U[        R                  R                  5        S S S 5        [        U5       nU R                  UR                  5       S5        U R                  [        5         [        S5      US'   S S S 5        U R                  UR                  5       S5        S S S 5        g ! , (       d  f       GN"= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN:= f! , (       d  f       GN$= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)
Nc                   $    \ rS rSrSS jrS rSrg)CTestPythonBufferProtocol.test_buffer_flags.<locals>.PossiblyMutablei  Nc                 0    [        U5      U l        X l        g r   )r(  _data_mutable)rf  datamutables      rA   r  LTestPythonBufferProtocol.test_buffer_flags.<locals>.PossiblyMutable.__init__  s    &t_
 'rc   c                     U[         R                  R                  -  (       a1  U R                  (       d  [	        S5      e[        U R                  5      $ [        [        U R                  5      5      $ )Nznot mutable)r  r  WRITABLErw  r
  rT   rv  r[   r4  s     rA   r  NTestPythonBufferProtocol.test_buffer_flags.<locals>.PossiblyMutable.__buffer__  sK    7..777==*=99%djj11%eDJJ&788rc   )rv  rw  )returnN)r  r  r  r  r  r  r  r   rc   rA   PossiblyMutablert    s    (9rc   r  r  TFr_  r   s   xello   h)rT   _from_flagsr  r  r|  rx  r2  r  SIMPLErz  rV  r
  )rf  r  ry  	immutabler  s        rA   test_buffer_flags*TestPythonBufferProtocol.test_buffer_flags  sA   	9 	9 "(D1#He4	##GW-@-@-I-IJbRZZ\84IBqERZZ\84 K ##GW-@-@-G-GHBRZZ\84""9-D	1 .RZZ\84	 I
 ##Iw/B/B/I/IJbRZZ\84""9-D	1 .RZZ\84	 K |,""9g.A.A.J.JK -	"bRZZ\84""9-D	1 .RZZ\84	 #"# KJ .- IH .- KJ -, .- #"s   AJ56KK(K36K=)K+8(K==/L?6L15L (L15
K
K	K
K(+
K:	5K==
L
L 
L.	*L11
L?c                 @   [        S5      nUR                  S5      nU R                  UR                  5       S5        UR	                  U5        U R                  [        5         UR                  [        R                  S-   5        S S S 5        g ! , (       d  f       g = f)Nr  r   r/   )	r(  r  rx  r2  r\  rz  r  rZ  r  )rf  rT  r  s      rA   test_call_builtins+TestPythonBufferProtocol.test_call_builtins  sl    x ]]1x0
b!}-MM#++/* .--s   ##B
BNzrequires _testcapic                    [         R                  " 5       nU R                  UR                  S5        UR	                  S5      nU R                  U[        5        U R                  UR                  5       S5        U R                  UR                  S5        UR                  U5        U R                  UR                  S5        U R                  [        5         UR                  5         S S S 5        U R                  [        5         UR                  U5        S S S 5        U R                  UR                  S5        g ! , (       d  f       NZ= f! , (       d  f       N<= f)Nr   s   testr/   )r  testBufrx  
referencesr  assertIsInstancerT   r2  r\  rz  r   )rf  r,  r  s      rA   test_c_buffer&TestPythonBufferProtocol.test_c_buffer  s    !+^^Ab*-w/+r"+z*JJL + z*""2& ++ +* +*s   D<E<
E

Ec                     [         R                  " 5       nU R                  [        UR                  [
        5        U R                  [        UR                  [        5        g r   )r  r  rz  r  r  r  r  )rf  r,  s     rA   test_c_buffer_invalid_flags4TestPythonBufferProtocol.test_c_buffer_invalid_flags  s<    !+s~~zB+s~~{Crc   c                     SnU R                  [        [        R                  US[        5        U R                  [        [        R                  US[
        5        g )Nr  r   )rz  r  r  buffer_fill_infor  r  )rf  sources     rA    test_c_fill_buffer_invalid_flags9TestPythonBufferProtocol.test_c_fill_buffer_invalid_flags  sG     +y'A'A !Z	1+y'A'A ![	2rc   c                    Sn[         R                  " US[        5       nU R                  [	        U5      S5        U R                  UR                  5        S S S 5        [         R                  " US[        5       nU R                  [	        U5      S5        U R                  UR                  5        S S S 5        U R                  [        [         R                  US[        5        g ! , (       d  f       N= f! , (       d  f       NK= f)Nr  r/   r   )r  r  r  rx  r[   r  ry  r  rk  rz  r  )rf  r  rK   s      rA   (test_c_fill_buffer_readonly_and_writableATestPythonBufferProtocol.test_c_fill_buffer_readonly_and_writable  s    ''<@AU1Xv.OOAJJ' A ''>BaU1Xv.QZZ( C 	+y'A'A !^	5 A@ CBs   7C%:7C6%
C36
Dc                      " S S[         5      nU" S5      n[        U5      nU R                  UR                  5       S5        g )Nc                   (   ^  \ rS rSrU 4S jrSrU =r$ )4TestPythonBufferProtocol.test_inheritance.<locals>.Ai!  c                 "   > [         TU ]  U5      $ r   superr  rf  r"  rJ  s     rA   r  ?TestPythonBufferProtocol.test_inheritance.<locals>.A.__buffer__"      w)%00rc   r   r  r  r  r  r  r  __classcell__rJ  s   @rA   rp  r  !      1 1rc   rp  r  r(  rT   rx  r2  )rf  rp  rM   r  s       rA   test_inheritance)TestPythonBufferProtocol.test_inheritance   s8    	1	 	1 hK]x0rc   c                   ^ Sm " U4S jS[         5      nU" S5      n[        U5       nU R                  UR                  5       S5        U R                  TS5        S S S 5        U R                  TS5        g ! , (       d  f       N!= f)Nr   c                   8   >^  \ rS rSrU 4S jrU U4S jrSrU =r$ )BTestPythonBufferProtocol.test_inheritance_releasebuffer.<locals>.Bi+  c                 "   > [         TU ]  U5      $ r   r  r  s     rA   r  MTestPythonBufferProtocol.test_inheritance_releasebuffer.<locals>.B.__buffer__,  r  rc   c                 .   > TS-  m[         TU ]  U5        g )Nr/   r  r\  )rf  viewrJ  rb_call_counts     rA   r\  UTestPythonBufferProtocol.test_inheritance_releasebuffer.<locals>.B.__release_buffer__.  s    "*40rc   r   r  r  r  r  r  r\  r  r  )rJ  r  s   @rA   r   r  +  s    11 1rc   r   r  r/   r  )rf  r   r   r  r  s       @rA   test_inheritance_releasebuffer7TestPythonBufferProtocol.test_inheritance_releasebuffer)  sm    	1	 	1 hK]bRZZ\84]A.  	* ]s   3A77
Bc                   ^^  " S S[         5      nU" S5      n[        U5       nU R                  UR                  5       S5        S S S 5        SmSm " UU4S jS[         5      nU" S5      n[        U5       nU R                  UR                  5       S5        U R                  TS5        S S S 5        U R                  TS5        U R	                  TS	5        g ! , (       d  f       N= f! , (       d  f       ND= f)
Nc                       \ rS rSrS rSrg)JTestPythonBufferProtocol.test_inherit_but_return_something_else.<locals>.Ai:  c                     [        S5      $ r3  r  r4  s     rA   r  UTestPythonBufferProtocol.test_inherit_but_return_something_else.<locals>.A.__buffer__;  r6  rc   r   Nr7  r   rc   rA   rp  r  :  r9  rc   rp  r  r   Fc                   4   >^  \ rS rSrS rU UU4S jrSrU =r$ )JTestPythonBufferProtocol.test_inherit_but_return_something_else.<locals>.BiD  c                     [        S5      $ r3  r  r4  s     rA   r  UTestPythonBufferProtocol.test_inherit_but_return_something_else.<locals>.B.__buffer__E  r6  rc   c                 T   > TS-  m [         TU ]  U5        g ! [         a    Sm g f = f)Nr/   T)r  r\  r   )rf  r  rJ  r  	rb_raiseds     rA   r\  ]TestPythonBufferProtocol.test_inherit_but_return_something_else.<locals>.B.__release_buffer__G  s3    "%G.t4! % $I%s    ''r   r  )rJ  r  r  s   @rA   r   r  D  s    ,% %rc   r   r/   T)r(  rT   rx  r2  rw  )rf  rp  rM   r  r   r   r  r  s         @@rA   &test_inherit_but_return_something_else?TestPythonBufferProtocol.test_inherit_but_return_something_else9  s    	,	 	, hK]bRZZ\84  	
	% 
	%	 
	% hK]bRZZ\84]A.  	*i&- ]$ ]s   !C83C)
C&)
C7c                      " S S[         5      nU" S5      n[        U5       nU R                  UR                  5       S5        S S S 5        g ! , (       d  f       g = f)Nc                   (   ^  \ rS rSrU 4S jrSrU =r$ )>TestPythonBufferProtocol.test_override_only_release.<locals>.CiX  c                 $   > [         TU ]  U5        g r   r  )rf  r&  rJ  s     rA   r\  QTestPythonBufferProtocol.test_override_only_release.<locals>.C.__release_buffer__Y  s    *62rc   r   )r  r  r  r  r\  r  r  r  s   @rA   r   r  X  s    3 3rc   r   r  r  )rf  r   r   r  s       rA   test_override_only_release3TestPythonBufferProtocol.test_override_only_releaseW  sB    	3	 	3 hK]bRZZ\84 ]]s   !A
Ac                 j  ^ ^ S m " U U4S jS[         5      nU" S5      n[        U5       nT R                  UR                  5       S5        S S S 5        UR	                  5         T R                  [        5         TR                  5         S S S 5        g ! , (       d  f       NM= f! , (       d  f       g = f)Nc                   6   >^  \ rS rSrS\4U UU4S jjrSrU =r$ )@TestPythonBufferProtocol.test_release_saves_reference.<locals>.Cic  r&  c                   > TR                  [        5         [        U5        S S S 5        TR                  [        5         UR                  S5        S S S 5        TR                  [        5         UR	                  5         S S S 5        TR                  [        5         US S   S S S 5        TR                  [        5         UR                  S5        S S S 5        UmTR                  UR                  5       S5        [        TU ]%  U5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f)Nr   r/   r   r  )
rz  r   rT   rj  r  r  rx  r2  r  r\  )r   r&  rJ  rf  smuggled_buffers     rA   r\  STestPythonBufferProtocol.test_release_saves_reference.<locals>.C.__release_buffer__d  s    &&z2v& 3&&z2KK$ 3&&z2%%' 3&&z22AJ 3&&z2%%a( 3 #)  !18<*62 3222222222s;   D D/D.D? E
D
D+.
D<?
E
Er   )r  r  r  r  rT   r\  r  r  )rJ  rf  r  s   @rA   r   r  c  s    3j 3 3rc   r   r  )r(  rT   rx  r2  clearrz  r   )rf  r   r   r  r  s   `   @rA   test_release_saves_reference5TestPythonBufferProtocol.test_release_saves_reference`  s    	3 	3	 	3" hK]bRZZ\84 		z*##% +* ] +*s   !B9B$
B!$
B2c                   ^ [        S5      m " U4S jS5      nU" 5       n[        U5       nU R                  UR                  5       S5        S S S 5        U R                  UR                  R                  5       S5        U R                  [        5         TR                  5         S S S 5        UR                  R                  5         TR                  5         g ! , (       d  f       N= f! , (       d  f       NJ= f)Nr  c                   (   > \ rS rSrU 4S jrS rSrg)OTestPythonBufferProtocol.test_release_saves_reference_no_subclassing.<locals>.Ci~  c                    > [        T5      $ r   r  )rf  r"  rT  s     rA   r  ZTestPythonBufferProtocol.test_release_saves_reference_no_subclassing.<locals>.C.__buffer__  s    !"~%rc   c                     Xl         g r   r&  r[  s     rA   r\  bTestPythonBufferProtocol.test_release_saves_reference_no_subclassing.<locals>.C.__release_buffer__      $rc   r  Nr  r  r  r  r  r\  r  )rT  s   rA   r   r  ~  s    &%rc   r   )	r(  rT   rx  r2  r&  rz  r  r  r  )rf  r   r   r  rT  s       @rA   +test_release_saves_reference_no_subclassingDTestPythonBufferProtocol.test_release_saves_reference_no_subclassing{  s    x 	% 	% C]bRZZ\84 ))+X6{+HHJ ,	

 ] ,+s   !CC)
C&)
C7c                 R    " S S5      n " S SU[         5      nU" S5      n[        U5       nU R                  UR                  5       S5        S S S 5         " S S5      n " S	 S
U[         5      nU" S5      n[        U5       nU R                  UR                  5       S5        S S S 5        UR	                  5         U R                  [        5         UR                  R                  5         S S S 5        g ! , (       d  f       N= f! , (       d  f       Nh= f! , (       d  f       g = f)Nc                       \ rS rSrS rSrg)ITestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.Ai  c                     [        S5      $ )N   hello Ar  r4  s     rA   r  TTestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.A.__buffer__  s    !*--rc   r   Nr7  r   rc   rA   rp  r    s    .rc   rp  c                   (   ^  \ rS rSrU 4S jrSrU =r$ )ITestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.Bi  c                 "   > [         TU ]  U5      $ r   r  r  s     rA   r  TTestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.B.__buffer__  r  rc   r   r  r  s   @rA   r   r    r  rc   r   r  r  c                       \ rS rSrS rSrg)PTestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.Releaseri  c                     Xl         g r   r  r[  s     rA   r\  cTestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.Releaser.__release_buffer__  r  rc   r  N)r  r  r  r  r\  r  r   rc   rA   Releaserr    s    %rc   r  c                   (   ^  \ rS rSrU 4S jrSrU =r$ )ITestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.Ci  c                 "   > [         TU ]  U5      $ r   r  r  s     rA   r  TTestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.C.__buffer__  r  rc   r   r  r  s   @rA   r   r    r  rc   r   s   hello C)r(  rT   rx  r2  r  rz  r   r&  rf  rp  r   r   r  r  r   r   s           rA   %test_multiple_inheritance_buffer_last>TestPythonBufferProtocol.test_multiple_inheritance_buffer_last  s    	. 	.	19 	1 hK]bRZZ\:6 	% 	%	1) 	1 jM]bRZZ\:6 		z*HH +* ] ] +*s#   !C6!DD6
D
D
D&c                     " S S5      n " S S[         U5      nU" S5      n[        U5       nU R                  UR                  5       S5        S S S 5         " S S5      n " S S	[         U5      nU" S5      n[        U5       nU R                  UR                  5       S5        S S S 5        UR	                  5         U R                  UR                  S 5        g ! , (       d  f       N= f! , (       d  f       NL= f)
Nc                        \ rS rSrS rS rSrg)QTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.Ai  c                     [        S5      eNzshould not be calledr
  r4  s     rA   r  \TestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.A.__buffer__      "#9::rc   c                     [        S5      er  r  r[  s     rA   r\  dTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.A.__release_buffer__  r  rc   r   Nr  r   rc   rA   rp  r    s    ;;rc   rp  c                   (   ^  \ rS rSrU 4S jrSrU =r$ )QTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.Bi  c                 "   > [         TU ]  U5      $ r   r  r  s     rA   r  \TestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.B.__buffer__  r  rc   r   r  r  s   @rA   r   r    r  rc   r   r  c                       \ rS rSrSrS rSrg)XTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.Releaseri  Nc                     Xl         g r   r  r[  s     rA   r\  kTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.Releaser.__release_buffer__  r  rc   r  )r  r  r  r  r&  r\  r  r   rc   rA   r  r    s    F%rc   r  c                   (   ^  \ rS rSrU 4S jrSrU =r$ )QTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.Ci  c                 "   > [         TU ]  U5      $ r   r  r  s     rA   r  \TestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.C.__buffer__  r  rc   r   r  r  s   @rA   r   r
    r  rc   r   )r(  rT   rx  r2  r  rw  r&  r  s           rA   -test_multiple_inheritance_buffer_last_raisingFTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising  s    	; 	;	1	1 	1 hK]bRZZ\84 	% 	%
	1	8 	1 hK]bRZZ\84 		ahh%! ] ]s   !C!C+
C(+
C9c                     " S S5      n[        S5      n[        U5         U R                  [        5         UR	                  U" 5       5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc                        \ rS rSrS rS rSrg)JTestPythonBufferProtocol.test_release_buffer_with_exception_set.<locals>.Ai  c                 *    [        [        S5      5      $ )Nr9   )rT   r[   r4  s     rA   r  UTestPythonBufferProtocol.test_release_buffer_with_exception_set.<locals>.A.__buffer__  s    !%(++rc   c                     g r   r   )rf  r  s     rA   r\  ]TestPythonBufferProtocol.test_release_buffer_with_exception_set.<locals>.A.__release_buffer__  s    rc   r   Nr  r   rc   rA   rp  r    s    ,rc   rp  r9   )r(  rT   rz  r  r  )rf  rp  r   s      rA   &test_release_buffer_with_exception_set?TestPythonBufferProtocol.test_release_buffer_with_exception_set  sT    	 	 aL]"";/ 0 ]// ]s"   A0AA0
A-	)A00
A>r   )r  r  r  r  r:  rL  rc  rp  r  r  unittestskipIfr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rc   rA   r.  r.  y  s    6?&","2%5N+ __Y$&(<=, >,  __Y$&(<=D >D
 __Y$&(<=2 >2 __Y$&(<=	5 >	51+ '<5&6(8&>rc   r.  __main__)r   NN)r   r7   r   )r   r7   )r   r   r&  )r   )lr(  r  testr   test.supportr   r  	itertoolsr   r   randomr   r   r	   warningsrZ  rR   r  osdecimalr
   	fractionsr   r   _testbufferr"  r   r;   r  EnvironmentVarGuardenvironcatch_warningsrS   r+  r  
SHORT_TESTNATIVEr<   r=   STANDARDrB   rZ   r>   copyr   ARRAYr3  BYTEFMTrt   rv   rs   rb   rk   ro   r~   r   r   r   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r$  r-  r7  r;  r=  r?  rC  r   rM  rQ  r^  r]  rb  rc  
skipUnlessTestCasera  r.  r  main)r   s   0rA   <module>r0     s-       "  + , ,      (		&	&	(BJ		 	 	"0 
# 
)
 


q
a
Q

q
a
Q
 
 q
 a
 Q
 	
 q	
 a	
 Q	
 ss	C!ss 	yyzzzz0d7QW	.  
s|-c2S  [[]
 		A!H 
 ++-	A:AJ 
  	.0CD5555 -0(2$ &clDl.2C1lD%!


0CI,2<?4
=:~
*):V9;1@B	8 C
0%
	3!
& 
	
JFHI!NL 
VDE	WEFp9*** p9* G Fp9*fs\x00 \~
 zMMO sU  G
  F
  F
 
#	" 
)	(  K
  I< << L Es   L9 M M "N
 3M8
M&M8N
 "N /N( N?&N?9MMMMM#"M#&
M5	0M88
NN
 N
 
NNN%$N%(N<;N<