
    dafB                       d dl Z d dlZd dlmZ d dlmZ d dlZd dlmZm	Z	 d dl
mZmZmZ d dlZd dlZd dlZd dlZd dlZd dlmZ d dlmZ 	 d dl 	 d dlZ	 d dlZ	  ej8                         5 e_         ej<                         5  d d	lmZ  ddd       ddd       	 d dl!Z!d
Z"i dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd Z#e re#d= e#d= er	  ejH                  dd       d e#d<   d e#d<   ddd dd!d"d#d$d#d$d%d&d'd%d(d)z   d(d)z  fd*Z&d+ Z'e#e#e&e&e&e&d,Z(ere(d-   D ]  Z) e'e)      e(d-   e)<    e#jU                         Z+e#jU                         Z,e#D ]
  Z-e-d.vse,e-=  e#jU                         Z.e#D ]
  Z-e-d/vse.e-=  e+e(d0<   e+e(d1<   e,e(d2<   e.e(d<   e.e(d3<   d Z/d(Z0g d,g d4fd2gd5gfd5gd5gfd1d0gd5gfd3dgd5gfd6Z1d7 Z2d8 Z3d9 Z4d: Z5drd;Z6d	d<Z7d	d=Z8d> Z9d? Z:e(d-   D  cg c]  }  e9|       r|  c} Z;d@ Z<dA Z=dB Z>dC Z?dD Z@dE ZAdF ZBdG ZCdH ZDdI ZEdJ ZFdK ZGdL ZHdM ZIdN ZJdO ZKdP ZLdQ ZMdR ZNdS ZOdT ZPdU ZQdsdWZRdX ZSdY ZTdtdZZUd[ ZVdud\ZWd] ZXdvd^ZYd_ ZZd` Z[da Z\dwdbZ]dwdcZ^dxddZ_dvdeZ`df ZadgZbdVZcdhZde"rdhZbdiZcdjZde^Z[e_Z\e`Z ej                  edk       ej                  edl       G dm dnej                                      Zg G do dpej                        Zheidqk(  r ej                          yy# e$ r dZY w xY w# e$ r dZY w xY w# e$ r dZY w xY w# 1 sw Y   xY w# 1 sw Y   xY w# e$ r dZ Y w xY w# e$ r dZ!Y w xY w# ejJ                  $ r Y tw xY wc c} w )y    N)support)	os_helper)permutationsproduct)	randrangesamplechoice)Decimal)Fraction)*)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                    | dk(  rd}|S | dk(  rd}|S | dk(  rd}|S | dk(  rd}|S | d	k(  rd
dz   d
dz  f}|S dD ]   }	 t        j                  | d
|z  d
z
          n d
z  rd
|z   d
|z  fndd
|z  f}|S # t         j                  $ r Y Qw xY w)zReturn range of a native type.r   r#   r   r!   r   r-   r   r)   r   r.   r/   )
r%      @   ?                      r   )structpackerror)fmtlhexps      +/root/Python-3.12.4/Lib/test/test_buffer.pynative_type_rangerA   a   s    
cz" I! 
 I 
 I 
 I 
4j!T'" I < 	CC!S&!,	 %(!G3iC !QVI << s   A55B
B) @<>=!rC   
bBhHiIlLfdBbcm@ma@b)rB   123rB   )r   arraynumpy
memoryviewbytefmtc                     t        t        |    |    }|dk(  rt        |g      }|dk(  r|dk(  rd}|dk(  rt        |      }|dv r/t	        j
                  ||      }t	        j                  ||      d   }|S )zWReturn random item for a type specified by a mode and a single
       format character.r   rR          r   efdr   )r   fmtdictbytesboolr:   r;   unpack)modecharobjxs       r@   randrange_fmtra      s|     	74=&'As{1#J'>a7lAs{Gu}KKa MM$"1%H    c                     | j                  d      \  }}g }|D ]  }|j                  t        |||               t        |      dk(  r|d   S t	        |      S )zReturn single random item.#r.   r   )splitappendra   lentuple)r=   r_   r]   charsr`   r   s         r@   gen_itemrj      sY    ))C.KD%
A .	tQ,-.q6Q;1Q4,E!H,rb   c                 r    | dk(  rt        ||      S dg| z  }t        |       D ]  }t        ||      ||<    |S )z,Return a list of random items (or a scalar).r   )rj   range)r   r=   r_   lstr   s        r@   	gen_itemsrn      sI    AvS!!#'C1X $#s#A$Jrb   c                 v   t        t        |   t                 }|dz   }|j                  d      }t	        dd      }t        |      D ]S  }t        t        t        |               }t        t        |   t                 }||t        |r|nd      z  z  }|||z   z  }U t        | ||      }	t        ||      }
||	|
fS )Nrd   ambr"   
   r.   )r	   capMODEstripr   rl   rh   rY   MULTintrn   rj   )r   r_   r]   xfmtr=   nmemb_r^   
multiplieritemsitems              r@   struct_itemsr}      s    #c(4.!D#:D
**U
CaE5\ #eGDM*+CHTN+
*J!<<=
T!"	#
 as#ED#Dtrb   c                 >   |t        t        |   t                 }|t        t        t        |               }t        t        |   t
                 }|dz   |t        |r|nd      z  z   }t        | ||      }t        ||      }|j                  d      |z   |z   }|||fS )z"Return random format, items, item.rd   r.   rp   )
r	   rr   rs   rh   rY   ru   rv   rn   rj   rt   )r   r_   r]   r^   rz   r=   r{   r|   s           r@   	randitemsr      s    |c#htn%|eGDM*+C'J
*tc
*BB
BCac"ECD
**U
j
(4
/Ctrb   c              #   r   K   t         |   t           D ]   }t        |   D ]  }t        | |||        " yw)z1Iterate through supported mode/char combinations.N)rr   rs   rY   r   )r   r_   r]   r^   s       r@   	iter_moder      sA     C 0DM 	0DAsD$//	00s   57c              #   ^   K   t        | |      D ]  }|  |dk7  ryt        | |       yw)zwYield (format, items, item) for all possible modes and format
       characters plus one random compound format string.r   N)r   r}   )nitemstestobjts      r@   iter_formatr      s;      vw' )
vw
''s   +-c                 "    d| v xs
 d| v xs d| v S )Nr   r   r    )r=   s    r@   is_byte_formatr      s    #:11scz1rb   c                 d    t        |       }|dk(  xs |dk(  xr | d   dk(  xr | |dz
     t        v S )zformat suitable for memoryviewr.   r"   r   rC   )rg   
MEMORYVIEW)r=   r`   s     r@   is_memoryview_formatr      sB    CA!V1Q03q6S= #!H
"$rb   c                 $    t        | t               S )z9Tuple items (representing structs) are regarded as atoms.
isinstancelistrm   s    r@   atompr      s    #t$$$rb   c                 "    t        | t              S Nr   r   s    r@   listpr     s    c4  rb   c                 L    t        |       dk(  ry| d   }| dd D ]  }||z  }	 |S )zProduct of list elements.r   r.   N)rg   )rm   r`   vs      r@   prodr     s<    
3x1}AAW 	QHrb   c                     | dk(  ry|dk(  r<t        |dd       |gz   }t        | dz
  dd      D ]  }||xx   ||dz      z  cc<    |S |gt        |dd       z   }t        d|       D ]  }||xx   ||dz
     z  cc<    |S )zOCalculate strides of a contiguous array. Layout is 'C' or
       'F' (Fortran).r   r   Cr.   Nr"   )r   rl   )ndimshapeitemsizelayoutstridesr   s         r@   strides_from_shaper     s     qy}uQRy/XJ.tAvr2& 	'AAJ'!A#,&J	' N *tE#2J//q$ 	'AAJ'!A#,&J	'Nrb   c                     t        |       r| S t        |      dk(  r| d   S dg|d   z  }|d   rt        |       |d   z  nd}t        |d         D ]  }||z  }t        | |||z    |dd       ||<   ! |S )zmConvert flat item list to the nested list representation of a
       multidimensional C array with shape 's'.r   r.   N)r   rg   rl   _ca)r{   srm   strider   starts         r@   r   r     s     U|
1v{Qx#!*C#$Q4SZ1Q4QF1Q4[ 7&U5v.!"6A7 Jrb   c                     t        |       r| S t        |      dk(  r| d   S dg|d   z  }|d   }t        |d         D ]  }t        | |d|   |dd       ||<    |S )zsConvert flat item list to the nested list representation of a
       multidimensional Fortran array with shape 's'.r   Nr.   )r   rg   rl   _fa)r{   r   rm   r   r   s        r@   r   r   ,  sy     U|
1v{Qx#!*CqTF1Q4[ .U19f9%qu-A.Jrb   c                 |    t        |       r&d|vr"t        |      t        |       k7  rt        d      t	        | |      S Nr   zprod(shape) != len(items))r   r   rg   
ValueErrorr   r{   r   s     r@   carrayr   9  7    U|AJ4;#e*+D455uerb   c                 |    t        |       r&d|vr"t        |      t        |       k7  rt        d      t	        | |      S r   )r   r   rg   r   r   r   s     r@   farrayr   >  r   rb   c                 L    | D cg c]  }t        |       }}t        | S c c}w )z(Generate all possible tuples of indices.)rl   r   )r   r   	iterabless      r@   indicesr   C  s)    #()aq)I)I *s   !c                 F    d}t        |       D ]  }|||   ||   z  z  } |S )zAConvert multi-dimensional index to the position in the flat list.r   rl   )r   indr   retr   s        r@   getindexr   H  s6    
C4[ #wqzCF""#Jrb   c                     |s| S t        |      }t        ||dd      }t        ||ddd   dd      }dgt        |       z  }t        |      D ]*  }t        |||      }t        ||ddd   |      }| |   ||<   , |S )zTranspose 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   )rg   r   r   r   )	srcr   r   sstridesdstridesdestr   frtos	            r@   	transposer   O  s     
u:D!$q#6H!$ddQ<H3S>Du~ dC*dC"Ix0r7R Krb   c                 f    | g k(  r| S t        |       r| gS t        | d         t        | dd       z   S )zflatten listr   r.   Nr   _flattenr   s    r@   r   r   ^  s;    
by
SzuCFhs12w///rb   c                 2    t        |       r| S t        |       S )zflatten list or return scalarr   r   s    r@   flattenr   f  s    Sz
C=rb   c                 f    t        |       rg S t        | |d            gt        | d   |dd       z   S )zMGet the shape of lst after slicing: slices is a list of slice
       objects.r   r.   N)r   rg   slice_shape)rm   slicess     r@   r   r   l  s<     Sz	F1I ;s1vvabz#BBBrb   c           	      l    t        |       r| S | |d      D cg c]  }t        ||dd        c}S c c}w )z=Multi-dimensional slicing: slices is a list of slice objects.r   r.   N)r   
multislice)rm   r   sublsts      r@   r   r   s  s7    Sz
9<VAYHvJvvabz*HHHs   1c                     t        |      r|S t        | |d      ||d            D cg c]  \  }}t        |||dd |dd        }}}|| |d   <   | S c c}}w )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         r@   r   r   y  s}     T{D,d71:.>?A1 Q712;4 AD ADKAs   Ac                     t        | |      }t        ||      }t        |      t        |      k7  ryt        t        |            D ]  }||   ||   k7  r y||   dk(  s y y)z9Compare the structure of llst[lslices] and rlst[rslices].r   r   )r   rg   rl   )r   r   r   r   lshapershaper   s          r@   cmp_structurer     sk    w'Fw'FFs6{"3v; !9q	!!9>	
 rb   c                 V    t        | |||      dk  rt        d      t        | |||      S )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       r@   multislice_assignr     s2    T4'2Q6FGGD$11rb   c                 .   |z  ry|dk  s|z   | kD  ryt        fdD              ry|dk  r|dk(  xr  xr  S dv ryt        fdt        |      D              }t        fdt        |      D              }d||z   k  xr ||z   z   | k  S )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   (   K   | ]	  }|z    y wr   r   ).0r   r   s     r@   	<genexpr>z#verify_structure.<locals>.<genexpr>  s     
)A1x<
)s   Tc              3   J   K   | ]  }|   d k  r|   |   dz
  z    ywr   r.   Nr   r   jr   r   s     r@   r   z#verify_structure.<locals>.<genexpr>  s4      #1!*/ qz58A:& #    #c              3   J   K   | ]  }|   d kD  r|   |   dz
  z    ywr   r   r   s     r@   r   z#verify_structure.<locals>.<genexpr>  s4      "1!*q. qz58A:& "r   )anysumrl   )memlenr   r   r   r   offsetiminimaxs    ` ``   r@   verify_structurer     s     zVH_v-

)
))qyqy6Y6w;6Ez #d # #D "d " "D t>tH 4 >>rb   c                     |D ]  }| |   } 	 | S r   r   )rm   r   r   s      r@   get_itemr     s     !fJrb   c                 X    |\  }}}}}}|}t        |      D ]  }	|||	   | |	   z  z  } |S )z-Location of an item in the underlying memory.r   )
r   r   r   r   r   r   r   r   pr   s
             r@   memory_indexr     sH    562FHdE7FA4[ #	WQZ
""#Hrb   c                 z    | \  }}}}}}d|z  }t        |      D ]  }t        ||       }	d|	z  }
||
z  r y||
z  }! y)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              r@   is_overlappingr     s_     672FHdE7FiGu~ a dS=3 rb      c                    st        |dz         }|dk(  r6|r| | |dddfS t        dd      }|| z  }t        d      dk(  r|  n|}|| |dd|fS d}	t        d      }
|
dk\  r|rd}	n|
dk\  rd}	dg|z  t        |      D ]  }t        |	|dz         |<    nt              }d	}t        d      }
|
dk\  r|
dz  rd
nd}dg|z  | t        | |dz         z  |dz
  <   |s|dz
     dk(  r| |dz
  <   t        |dz
  dd      D ]T  }||dz      r|dz      ndz  }|r| t        | |dz         z  |<   1dt        d         | z  t        d|dz         z  |<   V dx}}dvr<t        fdt        |      D              }t        fdt        |      D              }||z
  }|r| | z  }||dz   | z  z   }n| |z   | z  }t        d      dk(  r| | z
  n|}|| ||fS )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   J   K   | ]  }|   d k  r|   |   dz
  z    ywr   r   r   s     r@   r   z!rand_structure.<locals>.<genexpr>   s4      'qajAo 1:uQxz* 'r   c              3   J   K   | ]  }|   d kD  r|   |   dz
  z    ywr   r   r   s     r@   r   z!rand_structure.<locals>.<genexpr>"  s4      &qaj1n 1:uQxz* &r   )r   rl   rg   r   )r   validmaxdimmaxshaper   r   r   r   r   minshaper   r   	maxstridezero_strider   r   r   s       `           @r@   rand_structurer    st    "AI4R::"1d+(*&/la&7(Vxr2v==cN7uH"WHd
t 	7A 8A:6E!H	7 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@ OD4: 'E$K ' ' &E$K & & D[F!46X--%$,(*#,Q<1#4$x&8T5'699rb   c                     || z
  }t        |dz         }| r||z
  | z  nd}t        d|dz         }|| |z  z   }t        |||      }t        ||      \  }}}}	|	| k7  rt        |S )z=Create a random slice of len slicelen that fits into listlen.r.   )r   sliceslice_indicesRuntimeError)
slicelenlistlenmaxstartr   maxstepstepstopr   ry   controls
             r@   randslice_from_slicelenr  .  s    !Hhqj!E/7w8+QGQ	"D8d?"DeT4 A$Q0Aq!W(Hrb   c                     dg| z  }dg| z  }t        |       D ];  }||   }|dkD  rt        d|dz         nd}t        ||      ||<   t        ||      ||<   = t        |      t        |      fS )zxCreate two sets of slices for an array x with shape 'shape'
       such that shapeof(x[lslices]) == shapeof(x[rslices]).r   r.   )rl   r   r  rh   )r   r   r   r   r   r   r  s          r@   randslice_from_shaper  ;  s     cDjGcDjG4[ :!H()A9Q!$1,Xq9
,Xq9
	:
 >5>))rb   c                    t        d| dz         }d}t        d      }|dk\  rd}n|dk\  rd}t        d      dk\  rdnd	}dg|z  }dg|z  }dg|z  }dg|z  }	t        |      D ]  }t        ||dz         }
t        ||dz         }||
k  r|
|}
}|r]t        |
 |
dz         }t        |
 |
dz         }d
t        d         t        d|
dz         z  }t        |||      }t        ||
      \  }}}}n"|
dkD  rt        d|
dz         nd}t	        ||
      }t	        ||      }t        d      dk(  r||
c||<   ||<   ||c|	|<   ||<   |
|c||<   ||<   ||c|	|<   ||<    ||t        |      t        |	      fS )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   rl   r  r  r  rh   )r   r   r   r   r   
all_randomr   r   r   r   smallbigr   r  r  s_smallry   r  s_bigs                      r@   rand_aligned_slicesr  G  s    Qq!DH#ABw	
b"32-5JSXFDvc$hG1#d(4[ 4(HQJ/(1*-;C ufeAg.EeVU1W-D)A,')AuQw*??DE4.G -gu =Aq!X05	yE!G,qH-h>G (#6Q<1#& F1Ivay%*G"GAJ
#(# F1Ivay%,e"GAJ
144 65>5>99rb   c                 :    |\  }}}}}}t        ||z  d| z   d      S )zMReturn a list of random items for structure 't' with format
       'fmtchar'.rd   rR   )rn   )r=   r   r   r   ry   s        r@   randitems_from_structurer  r  s.     $% FHaAqVX%s3w88rb   c           	      D    |\  }}}}}}	t        | ||||	t        |z        S )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
             r@   ndarray_from_structurer!  x  s3    562FHdE7F5ws E(9; ;rb   c                     |\  }}}}}}t        |      }	t        |       D ]   \  }
}t        j                  ||	|
|z  |       " t	        |	||||      S )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               r@   numpy_array_from_structurer*  ~  sf    562FHdE7F
F
C%  21c1X:q12c 1 1rb   c                    | j                   }|rt        |      |z  |k7  r<d|fS |g k(  r| j                  dk(  s||k7  rd|fS t        ||      \  }}|g}|dk7  rd|fS | j	                         }t        dt        |      |      D cg c]
  }||||z     }	}g }
|	D ]7  }t        j                  ||      d   }||k7  rd|fc S |
j                  |       9 |g k7  r|
|fS |
d   |fS c c}w )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tobytesrl   rg   r:   r\   rf   )exporterr=   r   r   bytelenr   r   memr   	byteitemsr{   r   r|   s                r@   
cast_itemsr4    s    ooG;!W,;	"==AW!4;gx(16;



C,1!SXx,HIqQqz"IIIE }}S!$Q'4<%<T	 #b[E5>?uQx.?? Js   C#c               #   V  K   t        d      D ]  } | g 	 t        dd      }t        d      dkD  rdnd}t        |      D cg c]  }t        |d       c} t        dd      }t        d      dkD  rdnd}t        |      D cg c]  }t        |d       c} y	c c}w c c}w w)
z Generate shapes to test casting.r4         r   r  r.   r"   r   N)rl   r   )r   r   r   ry   s       r@   gencastshapesr8    s     2Y c	Q?DcNR'qQH+0;
7a9Xq!
77Q?DcNR'qQH+0;
7a9Xq!
77 8 8s   AB)B0B)B$B)c           	      p    t        t        |  | dz         t        |  | dz         t        |  | dz               S )z4Generate all possible slices for a single dimension.r.   )r   rl   )r   s    r@   	genslicesr:    s5    5!QqS>5!QqS>5!QqS>BBrb   c                 d    t        |       D cg c]  }t        ||          }}t        | S c c}w )z/Generate all possible slice tuples for 'shape'.)rl   r:  r   )r   r   r   r   s       r@   genslices_ndimr<    s2    .3Dk:58$:I:I ;s   -c                 N    |s| dk(  rdnd}t        || dz         }t        ||       S )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       r@   rslicer@    s0     aQQF1%H"8Q//rb   c              #   H   K   t        d      D ]  }t        | |        yw)z.Generate random slices for a single dimension.r   N)rl   r@  )r   r>  ry   s      r@   r   r     s&     1X %Q$$%s    "c              #     K   t        |      D ]!  }t        fdt        |       D               # t        |      D ]!  }t        fdt        |       D               # t        d t        |       D               yw)z)Generate random slice tuples for 'shape'.c              3   :   K   | ]  }t        |           y wr   r@  r   r   r   s     r@   r   zrslices_ndim.<locals>.<genexpr>  s     :F58$:s   c              3   >   K   | ]  }t        |   d         yw)T)r>  NrD  rE  s     r@   r   zrslices_ndim.<locals>.<genexpr>  s     L1F5866Ls   c              3   6   K   | ]  }t        d dd         ywr   )r  )r   ry   s     r@   r   zrslices_ndim.<locals>.<genexpr>  s     2a!2s   N)rl   rh   )r   r   
iterationsry   s    `  r@   rslices_ndimrI    sv      : ;:eDk:::; : MLdLLLM 2eDk2
22s   A=B c              #   n   K   t        |       }|t        |      n|}t        t        ||             y wr   )rh   rg   r   )iterabler   pools      r@   rpermutationrM    s/     ?DYD	AA
tQ
  s   35c                    	 | j                         }t	        | t
              r| j                  }| j                  }nd}d}t        d|d| j                  d| j                  d| j                  d|d| j                  d| j                  d	|d
       t        j                  j!                          y# t        t        f$ r | j                         }Y w xY w)zPrint ndarray for debugging.unknownzndarray(z, shape=z
, strides=z, suboffsets=z	, offset=z
, format='z', itemsize=z, flags=)N)tolist	TypeErrorNotImplementedErrorr/  r   r   r   r  printr   r   
suboffsetsr  r   sysstdoutflush)ndr`   r   r  s       r@   ndarray_printrZ    s    IIK "g	bhh

BMM699bkk5* + JJ *+ JJLs   B4 4CCr   rq      r6  z%struct module required for this test.z%ndarray object required for this testc                      e Zd Zd ZddddZdRdZ ej                  d      d        Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d  Z!d! Z"d" Z#d# Z$d$ Z%d% Z&d& Z'd' Z(d( Z)d) Z*d* Z+ejX                  Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1 ej                  d      d0        Z2d1 Z3d2 Z4d3 Z5e6jn                  d4        Z8d5 Z9d6 Z:d7 Z;d8 Z<d9 Z=d: Z>d; Z?d< Z@d= ZAd> ZBd? ZCd@ ZDdA ZEdB ZFdC ZGdD ZHdE ZIdF ZJdG ZKdH ZLdI ZMdJ ZNdK ZOdL ZPdM ZQdN ZRdO ZSej                  dP        ZUyQ)STestBufferProtocolc                 "    t               | _        y r   )get_sizeof_void_psizeof_void_pselfs    r@   setUpzTestBufferProtocol.setUp  s    .0rb   F)slicedcastc       
         ,   	
'() rt              z  (nst        	      (n(d)j                  r j                  d       d}t	        d      D ]'  }|   dk(  r n|   dk  s||    |   dz
  z  z  }) |gt	        dz
        D cg c]  }d c}z   ) j
                  }d   dk  r| }|gt        dd        z    j                  j                  |        j                  j                  (        j                  j                          j                  j                          j                  j                  |        j                  j                          j                  j                  t!                     
r)s% j                  j"                  t!                      j                  j                  t!        )             t%        t&              st)              r4rj+                         nj-                         } j                  |	       sy |st/               }d }t1              D ]{  }	 t3        |      }t5        	|      }t%        |t               rt7        j8                  g| }nt7        j8                  |      }|j;                  |        j                  ||       } |sj j                  j-                         |       t?              }djA                  d |D              } j                  |jC                         |       rnd}tE        	      }d	D ]  }}|d
k(  r8tG        d      rtG        d      rKtI        |      }t'        ||tJ              }n+tG        d      rtG        d
      r|dk(  rt'        ||      }tM        tN        |      } j                  |j-                         |        jQ                  tS        ||             dk(  rt        |      }|rdntT        } tW        dtX              } j                  t        |      |z         t	        |      D cg c]  }t7        jZ                  ||z         }!}t        |!d         dk(  r|!D cg c]  }|d   	 }!}t'        |!|       }" j                  t?        |"      t?                     t?              j-                         }# j                  |#|       t?              j-                  d       }# j                  |#|       t?              j-                  d      }# j                  |#|       tW        d
tX              } j                  t        |      |z         t	        |      D cg c]  }t7        jZ                  ||z         }!}t        |!d         dk(  r|!D cg c]  }|d   	 }!}t'        |!| tJ        z        }" j                  t?        |"      t?                     t?              j-                  d
      }# j                  |#|       tW        dtX              } j                  t        |      |z         t	        |      D cg c]  }t7        jZ                  ||z         }!}t        |!d         dk(  r|!D cg c]  }|d   	 }!}tG        d
      rtJ        nd}$t'        |!|$| z        }" j                  t?        |"      t?                     t?              j-                  d      }# j                  |#|        t)              rx	 t?              }t%        t>              rj                  n'|f'(	 
)fd	}% |%|       |j]                         5 }& |%|&d       d d d        |j-                          y y c c}w # t<        $ r d}Y  w xY wc c}w c c}w c c}w c c}w c c}w c c}w # t<        $ r Y y w xY w# 1 sw Y   `xY w)Nr   r   r.   r   TrB   c              3   &   K   | ]	  }d |z    yw)z%02xNr   )r   r   s     r@   r   z,TestBufferProtocol.verify.<locals>.<genexpr>\  s     21FQJ2s   r   r   FAri  rj  r   r   r  r  r   r  r   r  r  orderc                 R   
j                  | j                         
j                  | j                         
j                  | j                         
j                  | j
                         
j                  | j                  |       
j                  | j                         
j                  | j                  t                     rs%
j                  | j                  t                     
j                  | j                  t                     dk(  r
j                  t        t        |        n$
j                  t        |       t                     r	j                         n	j!                         }
j                  |       
j                  | 	       y )Nr   )assertIsr_   assertEqualr-  r   r  readonlyr   r   rh   r   rU  assertRaisesrR  rg   rQ  r/  )rJ   expected_readonlyrepexexpected_lenr=   r   rm   r   resultrb  r   rd  r   rU  s      r@   check_memoryviewz3TestBufferProtocol.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+rb   )ru  )/r   rg   rU  assertGreaterrl   r`  r   rq  r_   rr  r-  r   r  rs  r   r   rh   r   r   r   r   rQ  r/  r%  r   get_pointerr   r:   r;   extendBufferErrorrS   joinhexr   is_contiguousr   
ND_FORTRANget_contiguous
PyBUF_READ
assertTrue
cmp_contigr   py_buffer_to_contiguousPyBUF_FULL_ROunpack_from
toreadonly)*rb  ry  r_   r   r=   rs  r   r   r   rm   rd  re  
suboffset0r   r   stride0rv  r   buf_errr   item1item2r`   rJ   r   ff	flattenedro  expectedtranscontigrx   roinitlstycontig_bytesr   rz  mmrw  rx  rU  s*   `` `` `````                            @@@r@   verifyzTestBufferProtocol.verify  sr   
 ;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%(&--/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	
 - M;E%H|,VS9(5 %.i$?E'.uE"5?(AH  -VS9(5%3,'.yb'QH+FJFF$$V^^%5q9OOJvx$@Aqy 	NE&KB 5VS-PF$$S[%(2BC(-e6#$  &11#vqzJ 6G 671:!+18"9A1Q4"9"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#$  &11#vqzJ 6G 671:!+18"9A1Q4"9"9uBzM'*,A$$Z]Jv4FG#-f#5#=#=C#=#HL$$\6: 5VS-PF$$S[%(2BC(-e6#$  &11#vqzJ 6G 671:!+18"9A1Q4"9"9&3FC&@
aAuAbDMA$$Z]Jv4FG#-f#5#=#=C#=#HL$$\6:[M;^  $v&  *&*=6B6> , , ,* Q =2 t<=IIK? %c )DX # "Gl6 #:"6 #:6 #:  4= =s[   	_A&_
!__"!_'_,!_19_6_;  `

__;	``
`c                    d }|j                   r ||t              s ||t              r|j                  r~ ||t              r|j
                  re ||t              r|j                  rL ||t              s|j                  s3 ||t              s|j                  r ||t              s+ ||t              r| j                  t        t        ||       y t!        |t              st#        |j$                        r|j'                         }n!t        |t(              }|j'                         } ||t              rdn|j                   }|j$                  }	|j*                  }
|j,                  } ||t              sd}	|j/                         } ||t              sd} ||t              r|j0                  nd} ||t              r|j2                  nd}t        ||      }| j5                  |||
|	||||||
       y )Nc                     | |z  |k(  S r   r   )reqflags     r@   matchz/TestBufferProtocol.verify_getbuf.<locals>.match  s    X$&'rb   getbufFrB   r.   r   )	r_   r   r=   rs  r   r   r   rm   rd  )rs  PyBUF_WRITABLEPyBUF_C_CONTIGUOUSc_contiguousPyBUF_F_CONTIGUOUSf_contiguousPyBUF_ANY_CONTIGUOUS
contiguousPyBUF_INDIRECTrU  PyBUF_STRIDESPyBUF_NDPyBUF_FORMATrt  r~  r   r   r   r  rQ  r  r   r   r/  r   r   r  )rb  orig_exrw  r  rd  r  rm   rY  r  r=   r   r   r   r   s                 r@   verify_getbufz TestBufferProtocol.verify_getbuf  s   	( [[U373*+BOO3*+BOO3,-bmmsN+sM*2??sH%%\*Bk7BsCb'"&:299&E))+CM2B))+C C0Ubkkii;;wwS,' C//#CS(#D!&sH!52%*3%>'//BR$BB%3UGF 	 	,rb   cpuc                    t         t        t        t        t        t
        t        t        t        t        t        t        t        t        t        f}t        d      D cg c]  }|dz  rdnd c}dfg ddfg ddft        d      D cg c]  }|dz  rd	|z
  nd
|z    c}dff}g g dfg dg dfdgg dfdgdgdfdgdgdfdgdgdfddgg dfddgddgdfddgddgdfddgddgdff
}dt         t"        t"        t         z  t$        t$        t         z  f}dt&        t(        t&        t(        z  f}|D ]f  \  }}t+        j,                  |      }	|D ]E  \  }
}}|D cg c]  }||	z  	 }}||	z  }|D ]!  }|r
|t"        z  r|
s
|t$        z  r|
r|n|d   }t/        ||||
||      }|
r|d d d   nd }t1        |      }|rt1        |      }|j2                  dk(  s|j2                  dk(  r|
r|r| j5                  ||       |r%|j2                  dk(  r|
r|r| j5                  |       |D ]h  }|D ]a  }| j7                  ||||z         | j7                  ||||z         |s2| j7                  ||||z  d       | j7                  |||z  d       c j $ H i g d}t/        |dgt8              }| j;                  t<        t.        |       t/        dgdg      }t/        |t              }| j;                  t<        t.        |t&               | j;                  t<        t.        |t               | j;                  t<        t.        |t               | j;                  t<        t.        |t               | j;                  t<        t.        |t
               | j;                  t<        t.        |t               t/        |t              }g dg dfD ]  }
dt"        fD ]  }t/        ||
|t         z        }| j?                  tA        |d             | j?                  tA        |d             |D ]E  }t/        ||      }| j?                  tA        |d             | j?                  tA        |d             G   y c c}w c c}w c c}w ) N   r"   TFr   r.   r"   r[  r6  r   r7  r9   r8   	   rq      r  r   r   r(   r'   r   r   )r.   r[  r.   r   r  r7  r[  r6  r.   r8   )r  r  r   r   r   )rd  r   r  r  r  )r.   r  r.   )r9   r   r9   ri  r   )!r  r  r  PyBUF_SIMPLEr  r  r  
PyBUF_FULLr  PyBUF_RECORDSPyBUF_RECORDS_ROPyBUF_STRIDEDPyBUF_STRIDED_ROPyBUF_CONTIGPyBUF_CONTIG_ROrl   r   r  ND_PILr  r  r:   calcsizer   rS   r   rr  r  ND_GETBUF_FAILrt  r~  r  r  )rb  requestsr`   	items_fmt	structurendflags
real_flagsr{   r=   r   r   r   r   r   r  _itemsex1ex2m1m2r  bitsrw  baserY  ro  s                             r@   test_ndarray_getbufz&TestBufferProtocol.test_ndarray_getbuf  s    M8\ 24H++/	
 16b	:1a!ed&:C@)3/)3/:?)DQ1q5uQwvax0DcJ	
	 QKb!T2qMTB4S1#qMS2$OVROVb"Xr"VaVQVb"Xq!
	 {J
;(>F;&

 $\13
 $ !	@JE3s+H*3 @&w189A1x<99("$ @EE*$4  eFl &+UqF!&E(-wvOC',#dd)$C#CB'_xx1}Q5W((S1sxx1}7((S1' @$. @D ..sCTB ..sBDA" $ 2 23SX:> !3 !@ $ 2 23CH:> !3 !@@@)@@!	@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 <U%u[7HIb# 67b# 67% <E E2BOOM"c$:;OOM"c$:;<<		<c ; E6 :s   Q*Q/
Q4c           	         t        dgdg      }t        dgdgt              }t         |j                  |j                  fD ]  }| j                  t        |h d       | j                  t        |g d       | j                  t        |g d       | j                  t        |g ddh	       | j                  t        |g ddgdh
       | j                  t        |g ddgg        | j                  t        |dgdgi        | j                  t        |dgdgi        | j                  t        |dgdgi        | j                  t        |dgdgdgt
               | j                  t        |dgg t               | j                  t        |g dg	       | j                  t        |dgdgd       | j                  t        j                  |dgdgd       | j                  t        |ddgdgd       | j                  t        |g ddgd       t        dz   }| j                  t        |dg|z  dg|z  	       | j                  t        |dgdg	       | j                  t        |g ddg	       | j                  t        |dgddz  g	       | j                  t        |g dddgd       | j                  t        |g ddgdg
       | j                  t        |dgdgddz  g
       | j                  t        |ddgddgdg
       | j                  t        |g ddgdgd       | j                  t        |g ddgd       | j                  t        |g ddgdd       | j                  t        |g ddgd        | j                  t        j                  |dgdgd!       g d"}| j                  t        ||ddgd#d$gd%&       | j                  t        |t               d'(       | j                  t        |dgdgt               | j                  t        |dg        | j                  t        t         d)t        *       t        dgdgt              }| j                  t        |j                  dgdgt               t        d)      }| j                  t        |j                  dgdg       | j                  t        |j                          t        dgdg      }|j                  dgdg       t#        |      }| j                  t        |j                  dgdg       | j                  t        |j                          |j%                          |j!                          | j                  t        |j                          ~| j                  t        t&        i g d       | j                  t        t&        d)i        t        t)        t+        d+            dgd+z  	      }| j                  t        t&        |d%g       t        t)        t+        d,            ddg	      }| j                  t        t&        |g d-       | j                  t        t&        |ddg       | j                  t        t&        |d#dg       | j                  t        t&        |d.dg       t        g ddgd      }t        |t,        *      }| j                  t        |j.                         t        g ddgd      }t        |      }	t        |	      }| j                  t        |j0                         t        d/gdgd0      }| j                  t        |j0                         t        }t        t)        t+        |            dg|z  	      }| j                  t        |j0                         t        dgdg	      }| j                  t        t2        ddddd%       | j                  t        t2        |d1d2       | j                  t        t2        |d.d2       | j                  t        t2        |t4        d3       | j                  t6        t2        |t4        d4       | j                  t        t2        |t4        d5       | j                  t        t2        |d6d7       t        dgdg	      }| j                  t        t8        ddddd%       | j                  t        t8        i |       | j                  t        t8        |i        t        dgdg	      }| j                  t        t:        ddddd%       | j                  t        t:        i d7       | j                  t        t:        |d8       y )9Nr  r.   r  >   r.   r"   r[  )r.   r"   rP   )r.   r"   r[  r6  r.   r"   r[  r[  r   r   r   r   r   rl  r  )r   r  r   r   r  XXXr   i  r   r"   r[  r"   QLr   rP   r%   r.   r"   r[  r6  r   rN   r.   r"   r[  r6  r   r   r  r6  )r   r   r  rB   z@#$)
r.   r"   r[  r6  r   r7  r9   r8   r  rq   r  r   )r   r   r   r   r     123r  r   r  )r"   r[  r6  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   rj     )r   ND_VAREXPORTpushrt  rR  r  r  r   r:   r<   ND_MAX_NDIMOverflowErrorr%  r  r~  r  poprS   releaser|  r   rl   r  rQ  memoryview_from_bufferr  r  UnicodeEncodeErrorr  r  )
rb  rY  ndmr   r   r{   rJ   rw  r  r  s
             r@   test_ndarray_exceptionsz*TestBufferProtocol.test_ndarray_exceptionsq  s4   aS1#qcA3l3 277CHH- G	1A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!U1Q%')2hq  : iIKD iQCs:N iQC0OG	1V 	+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<rb   c                    t        t        d            D ]  }dgdz  }t        g ddgt              }t	        |      |d<   t        dd      D ]&  }|j                  g ddg       t	        |      ||<   ( t        d      D ]  }|||      j                           | j                  t        |j                         ~ y )Nr   r   r  r[  r  r.   r  )
r   rl   r   r  rS   r  r  rt  r~  r  )rb  permrJ   rY  r   s        r@   test_ndarray_linked_listz+TestBufferProtocol.test_ndarray_linked_list  s     q* 	DAA<@Bb>AaD1a[ &s+!"~!& 1X %$q'
""$% k2662	rb   c                     t        d      D ]C  \  }}}t        j                  |      }t        |d|      }| j	                  |d ||dddd|	       E y )Nr   r   rl  Tr_   r   r=   rs  r   r   r   rm   )r   r:   r  r   r  )rb  r=   scalarry   r   rY  s         r@   test_ndarray_format_scalarz-TestBufferProtocol.test_ndarray_format_scalar  s]    )!n 	$NCs+Hr#6BKK!)sTb""  $	$rb   c                     t        dd      }t        |      D ]T  \  }}}t        j                  |      }dt        fD ].  }t        ||g||      }| j                  |d ||dd|f|f|	       0 V y )Nr.   rq   r   rk  Tr  )r   r   r:   r  r  r   r  )rb  r   r=   r{   ry   r   r  rY  s           r@   test_ndarray_format_shapez,TestBufferProtocol.test_ndarray_format_shape)  s    Ar"(0 	'MCs+HV 'U6(3eLBD%-3!"6)h[ %  ''	'rb   c                 f   t        dd      }t        |      D ]  \  }}}t        j                  |      }t	        dd      D ]m  }|dk(  r	t        |d d |         g}||z  g}|dk  r||dz
  z  nd}	dt        fD ]3  }
t        |||||	|
      }| j                  |d ||dd|||d d |   	       5 o  y )	Nr.      r   r   r  Tr  )	r   r   r:   r  rl   rg   r  r   r  )rb  r   r=   r{   ry   r   r  r   r   r   r  rY  s               r@   test_ndarray_format_stridesz.TestBufferProtocol.test_ndarray_format_strides5  s    1b!(0 	3MCs+Hb! 319U6T6]+,=/04q6!8,a[ 3E eW(+F%IBKK)1sT%&eW$)&D&M   333	3rb   c                     g d}t        |dd      }t        |t        t        z        }| j                  |j	                         t        |d             y )Nr  r  )r.   r[  r  r  )r   r  r  rr  rQ  r   )rb  r{   rw  rY  s       r@   test_ndarray_fortranz'TestBufferProtocol.test_ndarray_fortranJ  sD    ,U&&9R 2< ?@fUF&;<rb   c                 @   t        d      D ]  }t        |      D cg c]  }t        dd       }}t        |      }t        |      D ]K  }t	        |      \  }}}t        j                  |      }dt        fD ]  }	|dk(  r
|	t        k(  rt        ||||	      }
t        |||d      }t        ||      }| j                  |
d ||d||||	       t        |      rnt        |||	      }t        |t        t        z  
      }
| j                  |
j                   dk(         |
j#                         }| j                  |d ||d||||	       t        ||||	t$        z        }
t        |||d      }t'        ||      }| j                  |
d ||d||||	        N  y c c}w )Nr   r"   rq   r   rk  r   Tr  rl  r  r   ri  )rl   r   r   r   r   r:   r  r  r   r   r   r  r   r  r  r  r   r  r  r   )rb  r   ry   shape_tr   r   r=   r{   r   r  rY  r   rm   rw  mvs                  r@   test_ndarray_multidimz(TestBufferProtocol.test_ndarray_multidimP  s   !H *	)D16t=AyB'=G=']F%g. ') )& 1UA!??3/[ ")EqyUf_  !eCuMB0uhLG .CKK)1sT%)$'   )
 ,C0$U%D$R0LM

b(89668BD-53)-UG(+ $ - !eC',Z'79B 1uhLG .CKK)1sT%)$'   )?")')*	)=s   Fc                    t        dgdg      }| j                  t        |j                  dd       t	        |      }| j                  ||       | j                  t        |j                  dd       t        dgdgt              }| j                  t        |j                  d       t	        |      }| j                  ||       | j                  t        |j                  d       t        dgdgt              }| j                  t        |j                  d       | j                  t        |j                  dd       t	        |      }| j                  ||       | j                  t        |j                  d       | j                  t        |j                  dd       g d}t        |t        |      gdt              }| j                  t        j                  |j                  d	d
       | j                  t        |j                  dd       t	        |      }| j                  ||       | j                  t        |j                  d	d
       | j                  t        |j                  dd       g d}t        |t        |      gdt              }| j                  t        |j                  d	d
       | j                  t        j                  |j                  dd       y )Nr.   r  r8   r  r,   r.   r"   r[  r6  r   r7  r9   r8   r   rk  r"   i,  )r      )r.   r"   r  )r   r7  LQ)s    1r  )r   rt  rR  __setitem__rS   rr  r   __delitem__r  __getitem__
IndexErrorrg   r:   r<   r   )rb  rY  r  r{   s       r@   test_ndarray_index_invalidz-TestBufferProtocol.test_ndarray_index_invalid}  s&   aS$)R^^Q:^R )R^^Q: aS;7)R^^Q7^R )R^^Q7 aS;7-?-B^R *bnne<*bnneQ? "U3u:,s+N&,,3?*bnnaD^R *bnna=)R^^Q
C%U3u:,t;O*bnna=&,,?Krb   c                 >   t        ddt              }t        |      }| j                  ||       |d   }| j                  |d       |d   }| j                  |j	                         |j	                                |d   }| j                  |d       |d   }| j                  |j	                         |j	                                | j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  dd       | j                  t        |j                  dd       | j                  |j	                         d       | j                  |j	                         d       d|d<   | j                  |j	                         d       d|d<   | j                  |j	                         d       d|d<   | j                  |j	                         d       d|d<   | j                  |j	                         d       y )	Nr.   r   r  .r   r8   r  r   )	r   r   rS   rr  rQ  rt  rR  r  r	  )rb  rY  r  r`   s       r@   test_ndarray_index_scalarz,TestBufferProtocol.test_ndarray_index_scalar  s   Qb4^R rFT%%a+sGT%%ahhj"))+>rFT%%a+sGT%%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5rb   c           	         t        t        t        d            ddgt              }t        |t              }| j                  t        |j                  d       | j                  t        |j                  t        ddd             y )	Nr8   r"   r6  r  r  r.   r[  r   )	r   r   rl   r   r  rt  r~  r  r  )rb  rw  rY  s      r@   test_ndarray_index_null_stridesz2TestBufferProtocol.test_ndarray_index_null_strides  s_    T%*%aV;GR- 	+r~~q9+r~~uQq|Drb   c                 "   t        d      D ]  \  }}}t        |dg|      }t        dd      D ]  }| j                  ||   ||           | j	                  t
        |j                  d       | j	                  t
        |j                  d       t        |      st        |      }| j                  ||       t        dd      D ]  }| j                  ||   ||           | j	                  t
        |j                  d       | j	                  t
        |j                  d        t        d      D ]  \  }}}t        |dgt        |      }t        |t        t        z        }t        dd      D ]  }| j                  ||   ||           t        |      sh|j                         }| j                  |j                  |      t               t        dd      D ]  }| j                  ||   ||            g d}t        |dg      }t        |t               }t        dd      D ]  }| j                  ||   ||           g d}t        |dg      }t        |t"              }t        dd      D ]  }| j                  ||   ||           y )	Nr   rl  r  rm  r  r  r  )r   r   rl   rr  rt  r  r  r   rS   r   r  r  r  rq  __eq__NotImplementedr  r  )rb  r=   r{   ry   rY  r   r  rw  s           r@   !test_ndarray_index_getitem_singlez4TestBufferProtocol.test_ndarray_index_getitem_single  sf   (^ 	AMCqc#6B2q\ 2  Aa12 j".."=j"..!<#C(^  R(r1 6A$$RUE!H56 !!*bnnbA!!*bnna@	A$ )^ 	6MCqcSIBL$=>B2q\ 2  Aa12 $C(..0biim^<r1 6A$$RUE!H56	6 U1#&R0r1 	.ARUE!H-	. U1#&R-r1 	.ARUE!H-	.rb   c                    t        d      D ]T  \  }}}t        |dg|t              }t        d      D ]  }|||<   |||<    | j	                  |j                         |       | j                  t        |j                  d|       | j                  t        |j                  d|       t        |      st        |dg|t              }t        |      }| j	                  ||       t        d      D ]  }|||<   |||<    | j	                  |j                         |       | j                  t        |j                  d|       | j                  t        |j                  d|       W t        d      D ]  \  }}}t        |dg|t              }t        dd      D ]  }||dz      ||<   ||dz      ||<    | j	                  |j                         |       t        |      snt        |dg|t              }t        |      }| j	                  ||       t        dd      D ]  }||dz      ||<   ||dz      ||<    | j	                  |j                         |        y )Nr   rk  r  r  r6  r.   )r   r   r   rl   rr  rQ  rt  r  r	  r   rS   )rb  r=   r{   single_itemrY  r   r  s          r@   !test_ndarray_index_setitem_singlez4TestBufferProtocol.test_ndarray_index_setitem_single  sB   '21~ 	J#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-	J4 (31~ 	1#Cqc#[IB2q\   1:a1Q31  RYY[%0',qc#[IBBBR$2q\   1:a1Q31  RYY[%0!	1rb   c           
         d}t        |      }t        |      D ]  }t        |      \  }}}dt        fD ]  }t	        ||||      }t        ||      }	t        |d    |d         D ]  }
| j                  |	|
   ||
   j                                t        |d    |d         D ]j  }| j                  |	|
   |   ||
   |   j                                t        |d    |d         D ]&  }| j                  |	|
   |   |   ||
   |   |          ( l  t	        ||||t        z        }t        ||      }	t        |d    |d         D ]  }
| j                  |	|
   ||
   j                                t        |d    |d         D ]i  }| j                  |	|
   |   ||
   |   j                                t        |d   |d         D ]&  }| j                  |	|
   |   |   ||
   |   |          ( k    y )Nr"   r[  r   r   rk  r.   r"   )r   r   r   r  r   r   rl   rr  rQ  r  r   )rb  r  r   r   r=   r{   ry   r  rY  rm   r   r   ks                r@   #test_ndarray_index_getitem_multidimz6TestBufferProtocol.test_ndarray_index_getitem_multidim%  s1   g!'* 	HE%f-MCV HU%5IUE*ay%(3 HA$$SVRU\\^<"E!H9eAh7 H((QBqE!HOO4EF!&ay%(!; HA ,,SVAYq\2a58A;GHHH U%#(#35UE*ay%(3 HA$$SVRU\\^<"E!H9eAh7 H((QBqE!HOO4EF!&uQxq!: HA ,,SVAYq\2a58A;GHHH#H		Hrb   c                 H   t        dd      }| j                  t        t        dt	                      t        |      }| j                  ||       | j                  t        t        dt	                      t        d      D ]  \  }}}t        |dg|      }t        |      D ]-  \  }}| j                  |||          | j                  ||v        / t        |      s]t        |      }t        |      D ]-  \  }}| j                  |||          | j                  ||v        /  y )Nr.   r   r  z1 in ndz1 in mvr   rl  )r   rt  rR  evallocalsrS   rr  r   r&  r  r   )rb  rY  r  r=   r{   ry   r   r   s           r@   test_ndarray_sequencez(TestBufferProtocol.test_ndarray_sequenceD  s   Qb!)T9fh?^R )T9fh?(^ 
	-MCqc#6B!" )1  E!H-R() $C(^%bM -DAq$$Qa1OOAG,-
	-rb   c           
         g d}t        |dgt              }t        |      }| j                  t        |j
                  t        ddd      |       | j                  t        |j
                  t        ddd      |       t        |dgt              }t        |dgt              }t        |t              }| j                  t        |j
                  t        ddd      |       t        |dgdt              }t        |      }| j                  t        |j                  t        ddd             | j                  t        |j                  t        ddd             t        |d	d
gdt              }t        |      }| j                  t        |j                  t        ddd      t        ddd      f       | j                  t        |j                  t        ddd      t        ddd      f       | j                  t        |j                  d       | j                  t        |j                  dt        ddd      f       | j                  t        |j                  t        ddd      i f       | j                  t        |j                  t        ddd      t        ddd      f       | j                  t        |j                  d       t        |dgdt              }t        |dgd      }t        |      }t        |      }| j                  t        |j
                  t        ddd      |dd        | j                  |j                         |       | j                  t        |j
                  t        ddd      |dd        | j                  |j                         |       t        |dgdt              }t        |dgd      }	t        |      }t        |      }| j                  t        |j
                  t        ddd      |dd        | j                  |j                         |       | j                  t        |j
                  t        ddd      |dd        | j                  |j                         |       t        |d	d
gdt              }t        |dgd      }t        |      }t        |      }| j                  t        |j
                  t        ddd      |dd        | j                  |j                         g dg dg       | j                  t        |j
                  t        ddd      |dd        t        |dgdt              }t        |dgd      }t        |      }t        |      }| j                  t        |j
                  t        dd	d      |dd        | j                  |j                         |       | j                  t        |j
                  t        dd	d      |dd        | j                  |j                         |       | j                  t        t        t        ddd	      i        | j                  t        t        dd       | j                  t        t        t        ddd      d
       t        |dgdt              }
| j                  t        |
j                          t        |dgd      }t        |t"              }
| j                  t        |
j                          y )Nr  r8   r  r   r.   r  r   rk  r"   r6  z@%$r   r   rl  r9   r  )r   r7  r9   r8   z###########)r   r   rS   rt  rR  r	  r  r  r~  r   r  rS  rr  rQ  r  r  add_suboffsetsr  )rb  r{   xlmlrw  xrrY  r  mryrr`   s              r@   test_ndarray_slice_invalidz-TestBufferProtocol.test_ndarray_slice_invalidW  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6rb   c                 0   g d}t        |dgdt              }t        |dgd      }|dd |dd | j                  |j                         |       t	        |      }t	        |      }| j                  ||       | j                  ||       |dd |dd | j                  |j                         |       t        |ddgdt              }t        |ddgd      }|d	d
ddf   |d	d
d
d
f<   | j                  |j                         t        |ddg             y )Nr  r  r   rk  rl  r  r6  r[  r.   r"   )r   r   rr  rQ  rS   r   )rb  r{   r`   r  r%  r'  s         r@   test_ndarray_slice_zero_shapez0TestBufferProtocol.test_ndarray_slice_zero_shape  s   ,E"cEE"c21Q!AU+]]QQQq'1Qe,E!Q;GE!Q4!QqSk!A#qs(VEAq6%:;rb   c                 2   d}t        |      }t        |      }t        |      D ]  }t        |      \  }}}t	        j
                  |      }dt        fD ]|  }	t        ||||	      }
t        ||      }t        ||      D ]P  }d }	 t        ||      }d }	 |
|   }|s|r| j                  ||       1| j                  j                                R ~  y # t        $ r}|j                  }Y d }~`d }~ww xY w# t        $ r}|j                  }Y d }~zd }~ww xY wNr  r   rk  )rg   r   r   r   r:   r  r  r   r   rI  r   	Exception	__class__rq  rr  rQ  )rb  r  r   r   r   r=   r{   ry   r   r  rY  rm   r   listerrrd  r   nderrndsliceds                     r@   test_ndarray_slice_multidimz.TestBufferProtocol.test_ndarray_slice_multidim  s"   7|g!'* 	DE%f-MCs+HV DU%5IUE**47 DF"G.!+C!8 !E,#%f: eW5(():FC#D	D	D % ."#++. % , !,s0   CC7	C4	C/	/C4	7	D	 D	D	c                    d}t        |      }t        |      }t        |      D ]  }t        |      \  }}}t	        j
                  |      }t        |||      }	|	j                          t        |||      }
|
j                          t        |
      }t        ||      }t        ||      D ]P  }d }	 t        ||      }d }	 |	|   }|s|r| j                  ||       1| j                  j!                                R  y # t        $ r}|j                  }Y d }~^d }~ww xY w# t        $ r}|j                  }Y d }~xd }~ww xY w)N)r"   r[  r   r"   rl  )rg   r   r   r   r:   r  r   r#  rS   r   rI  r   r.  r/  rq  rr  rQ  )rb  r  r   r   r   r=   r{   ry   r   rY  rw  r  rm   r   r0  rd  r   r1  r2  s                      r@   'test_ndarray_slice_redundant_suboffsetsz:TestBufferProtocol.test_ndarray_slice_redundant_suboffsets  s:   7|g!'* 	@E%f-MCs+HeC8BeC8BBB&C&tU3 @*'V4F (!&zH GMM%1$$X__%6?#@	@" ! *kkG* ! (KKE(s0   0D ?D" 	D	DD"	E+D<<Ec                 j   t        d      D ]  \  }}}t        d      D ]  }t        d      D ]  }dt        fD ]  }|t        z  }t	        |dg||      }t	        |dg||      }	t        |	      }
d }d }|d d  }	 ||   }||   }||   ||<   t        |      t        |      k7  }d }	 ||   ||<   |r| j                  |t               n2| j                  |j                         |       | j                  ||       t        |      sd }	 |
|   |
|<   |r| j                  |t               | j                  |
j                         |       | j                  |
|       | j                  ||       | j                  |
|	|j                  |d|j                   |j"                  |j$                  |j                         	           y # t        $ r}|j                  }Y d }~Bd }~ww xY w# t        $ r}|j                  }Y d }~Zd }~ww xY w# t        $ r}|j                  }Y d }~d }~ww xY w)Nr   r   rk  Fr  )r   r:  r  r   r   rS   rg   r.  r/  rq  r   rr  rQ  r   r  r   r   r   r   )rb  r=   r{   ry   lslicer@  r  r   rY  rw  r  lsterrdiff_structurerm   lvalrvalr   r1  mverrs                      r@    test_ndarray_slice_assign_singlez3TestBufferProtocol.test_ndarray_slice_assign_single  s   (^ 3	/MC#A, 2/'l 1/F"#V 0/!+-$U1#cK$U1#cK'^!%)-#Ah1#&v;D#&v;D*-f+CK-0Y#d)-CN !%0)+FBvJ * MM%< ,,RYY[#> MM%83C8$ $0)+FBvJ * MM%< ,,RYY[#> ,,R4 MM%8 KK'){{e#%77"((BJJ"$))+ ( /[0/1/2/3	/$  ) 1%&[[F1  ) 0$%KKE0  ) 0$%KKE0sH   <)G(G/
H	G,G''G,/	H8H

H	H2H--H2c           
      D   d}t        |      }t        |      }t        |      D ]  }t        |      \  }}}dt        fD ]  }t        t              D ]  }t        ||      \  }	}
t        ||||t        z        }t        ||      }d }	 t        |||	|
      }d }	 ||
   ||	<   |s|r| j                  ||       g| j                  |j!                                   y # t        $ r}|j                  }Y d }~cd }~ww xY w# t        $ r}|j                  }Y d }~zd }~ww xY wr-  )rg   r   r   r   r  rl   
ITERATIONSr  r   r   r   r   r.  r/  rq  rr  rQ  )rb  r  r   r   r   r=   r{   ry   r  r   r   rY  rm   r0  ry  r   r1  s                    r@   "test_ndarray_slice_assign_multidimz5TestBufferProtocol.test_ndarray_slice_assign_multidim=  s,   7|g!'* 	>E%f-MCV >z* >A';D%'H$GW eC',['8:B .C"G.!23Wg!N !E,&(k7 eW5((f=->>		> % ."#++. % , !,s0   CD 	C=	'C8	8C=	 	D		D	D	c                    t        t              D ]  }t        d   D ]  }t        j                  |      }t        |dt        t              }| j                  t        |        t        ||      }t        |||      }|j                         }t        |      }t        |      r"|j                         }	| j                  |	|       |d   dkD  rt        |||t               }
|
j                         }| j                  ||       t        |
      }t        |      r4| j                  ||
       |j                         }	| j                  |	|       t"        s7|d   }d|v rBt%        |||      }| j'                  |d |j(                  |d|j*                  |j,                  |j.                  |j                         		         y )
NrC   Tr   r   r"   r   r  r[  Fr  )rl   r?  rY   r:   r  r  MAXDIMMAXSHAPEr  r   r  r!  rQ  rS   r   rr  r  r(  r*  r  r   r   r   r   )rb  ry   r=   r   r   r{   r`   xlistr  mvlistr  ylistr   zs                 r@   test_ndarray_randomz&TestBufferProtocol.test_ndarray_random^  s   z" %	0As| $0!??3/"8T&,46 0! 450a8*5#q9
]',YY[F$$VU3Q4!8.uc1FKAHHJE$$UE2#AB+C0((Q/!#((7aDEEz 25#qAAKKt)*u%&VV177AII$%HHJ   0C$0%	0rb   c                    t        t              D ]  }t        d   D ]  }t        j                  |      }t        |dt        t              }| j                  t        |        t        ||      }d}	 t        |||      }| j                  |       t        szd}		 t!        |||      }
  y # t        $ r}|j                  }Y d }~Gd }~ww xY w# t        $ r}|j                  }	Y d }~Ad }~ww xY w)NrC   FrB  )rl   r?  rY   r:   r  r  rC  rD  assertFalser   r  r!  r.  r/  r  r(  r*  )rb  ry   r=   r   r   r{   r1  r`   r   	numpy_errr  s              r@   test_ndarray_random_invalidz.TestBufferProtocol.test_ndarray_random_invalid  s    z" 	3As| 3!??3/"8U6,46  !11!560a8(.uc1=A & %I06uc1E -3	3 ! (KKE( % 0$%KK	0s0   1B+C+	C
4CC
	C,C''C,c                 &   t        t              D ]  }t        d   D ]  }t        j                  |      }t        t        t              \  }}}}t        |d|      }t        |d|      }	| j                  t        |        | j                  t        |	        t        ||      }
t        ||	      }t        |
||      }t        |||	      }||   ||<   |j                         }|j                         }t        |      }t        |      }| j                  |j                         |       | j                  |j                         |       |d   dkD  r|	d   dkD  rt        |
||t               }t        |||	t               }||   ||<   |j                         }|j                         }| j                  ||       | j                  ||       t        |      }t        |      }| j                  |j                         |       | j                  |j                         |       t"        sd|v sd|v rt%        |
||      }t%        |||	      }||   ||<   t'        |      s[t'        |	      sP| j)                  |d |j*                  |d|j,                  |j.                  |j0                  |j                         		       | j)                  |d |j*                  |d|j,                  |j.                  |j0                  |j                         		         y )
NrC   rB  Tr  r"   r   r  Fr  )rl   r?  rY   r:   r  r  rC  rD  r  r  r   r  r!  rQ  rS   rr  r  r(  r*  r   r  r   r   r   r   )rb  ry   r=   r   r   r   r   r   tltrlitemsritemsr$  r&  xllistxrlistr%  r'  ylr(  yllistyrlistzlzrs                           r@    test_ndarray_random_slice_assignz3TestBufferProtocol.test_ndarray_random_slice_assign  s   z" :	EAs| 9E!??3/ (vI 1#Hd&A#Hd&A 0" 56 0" 561#r:1#r:+FC<+FC< k7^^  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 3FCDB3FCDB"$W+BwK)"-nR6H BD-/[[cE)+,.JJBIIK $ I
 KK)+#%'WWBHH(*

		   Em9E:	Erb   c                    g d}t        |ddgt              }t        |      }| j                  |j                  t        z         | j	                  |j
                  |       | j                  |j                  d       | j                  |j                         | j                  |j                         | j                  |j                         y )Nr  r[  r6  r  )r   r   )r   r  r  r  rq  r_   rr  rU  rK  r  r  r  )rb  r{   rY  rw  s       r@   test_ndarray_re_exportz)TestBufferProtocol.test_ndarray_re_export  s    ,U1Q%v6R[6)*bffb!0))'rb   c           	      H   dt         fD ]  }t        g ddg|      }t        |      }| j                  ||       | j                  |j	                         g        | j                  |j	                         g        t        g dg d|      }| j                  |j	                         g        t        g dg d|      }| j                  |j	                         g g g g       t        g dg d|      }| j                  |j	                         g g g gg g g gg g g gg        y )Nr   r  r  r   r[  r[  r[  r   r[  )r[  r[  r   r  r   rS   rr  rQ  rb  r  rY  r  s       r@   test_ndarray_zero_shapez*TestBufferProtocol.test_ndarray_zero_shape  s    [ 	IE59BBBR$RYY["-RYY["-u=BRYY["-u=BRYY[2r2,7u=BRYY[!2rlRRL2r2,GI	Irb   c                    dt         fD ]u  }t        dgdgdg|      }t        |      }| j                  ||       | j                  |j	                         g d       | j                  |j	                         g d       w y )Nr   r.   r   r  )r.   r.   r.   r.   r.   r`  ra  s       r@   test_ndarray_zero_stridesz,TestBufferProtocol.test_ndarray_zero_strides  sp    [ 	;E!QC!EBBBBR$RYY[/:RYY[/:	;rb   c                     t        t        t        d            dgd      }| j                  |j                  d       | j                  |j                         g d       y )N   r[  r9   r  )r9   r8   r  )r   r   rl   rr  r   rQ  rb  rY  s     r@   test_ndarray_offsetz&TestBufferProtocol.test_ndarray_offset
  sD    T%)_QC:A&g.rb   c                     dt         fD ]E  }t        t        t        d            dg|      }|j	                         }| j                  ||       G y Nr   r[  r  )r  r   r   rl   r  rr  )rb  r  rY  rJ   s       r@   #test_ndarray_memoryview_from_bufferz6TestBufferProtocol.test_ndarray_memoryview_from_buffer  sK    [ 	$EeAhs%@B))+AQ#	$rb   c           	          dt         fD ]S  }t        t        t        d            dg|      }t        d      D ]"  }| j	                  ||   t        ||g             $ U y rj  )r  r   r   rl   rr  r|  )rb  r  rY  r   s       r@   test_ndarray_get_pointerz+TestBufferProtocol.test_ndarray_get_pointer  s]    [ 	>EeAhs%@B1X >  AB(<=>	>rb   c                 D   t        t        t        d            g d      }t        |t        t        z        }| j                  |j                         |j                                t        |      }| j                  |j                         |j                                y )Nrf  )r"   r"   r   r  r  )r   r   rl   r  r  rr  rQ  rS   )rb  rw  rY  rJ   s       r@    test_ndarray_tolist_null_stridesz3TestBufferProtocol.test_ndarray_tolist_null_strides  sh    T%)_G4R 56biik2rNRYY[1rb   c                    | j                  t        dd             t        t        t	        d            ddg      }t        t        t	        d            ddg      }| j                  t        ||             t        dgdgd	      }| j                  t        |d
             | j                  t        d
|             y )Nr  s   456r  r[  r6  r  r.   r   rl  rW   )rK  r  r   r   rl   r  )rb  r`   r  s      r@   test_ndarray_cmp_contigz*TestBufferProtocol.test_ndarray_cmp_contig$  s    FF34DrOAa51DrOAa51Aq)*QCs3/
1g./
7A./rb   c           	         t        j                   dg d      }t        |      }| j                  t        t        |       t        t        t        d                  }t        t        t        d            dg      }| j                  t	        |      t	        |             t        t        t        d            ddg      }| j                  t	        |      t	        |             t        t        t        d            g d      }| j                  t	        |      t	        |             t        t        t        t        d            ddg            }t        t        t        d            ddgt              }| j                  t	        |      t	        |             t        t        t        t        d            g d	            }t        t        t        d            g d	t              }| j                  t	        |      t	        |             t        t        t        d                  }t        t        t        d            g d
t              }| j                  t	        |      t	        |             t        t        t        d            g d
d      }| j                  t	        |      t	        |j                                      y )Nr   r  r  r  r[  r6  )r[  r"   r"   r  r"   r[  r"   r"   r"   r[  rl  )rQ   r   rt  r   hashrZ   r   rl   rr  r   r  r  r/  )rb  rL   rY  r   s       r@   test_ndarray_hashz$TestBufferProtocol.test_ndarray_hash0  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6rb   c                    t         t        t        t        t        t
        t        t        t        t        t        t        f}| j                  t        t        i dt
               t        dddt               }dD ]6  }|D ]/  }t        |||      }| j#                  ||j%                                1 8 t        dgdgdt               }dD ](  }|D ]!  }t        |||      }| j#                  |d	       # * t        t'        t)        d
            g ddt               }dD ](  }|D ]!  }t        |||      }| j#                  |d	       # * dt*        fD ]  }t        dgdgd|t         z        }|j%                         }dD ](  }|D ]!  }t        |||      }| j#                  ||       # * t        g ddgd|t         z        }|j%                         }dD ](  }|D ]!  }t        |||      }| j#                  ||       # *  t        g ddgdgt               }|j%                         }dD ]2  }t        t        fD ]!  }t        |||      }| j#                  ||       # 4 |d d d   }|j%                         }dD ])  }|D ]"  }	 t        |||      }| j#                  ||       $ + t'        t)        d            }dt*        fD ]  }t        |ddg|t         z        }t.        r!t/        t1        |      ddgd|dk(  rdnd      }	|t*        k(  r1t        t3        |ddg      ddgt               }
|
j%                         }n|j%                         }|D ]  }	 t        |d|      }| j#                  ||       t        |D cg c]  }| c}ddgt               }| j#                  t5        |      t5        |             t.        sp| j#                  |	j%                  d              |dk(  r!t        t3        |ddg      ddgt               }
nt        |ddgt               }
|
j%                         }t        t
        t         t        t        fD ]  }	 t        |d|      }| j#                  ||       t        |D cg c]  }| c}ddgt*        t         z        }| j#                  t5        |      t5        |             t.        sw| j#                  |	j%                  d              |t*        k(  r%t        |ddgt               }
|
j%                         }n|j%                         }t        t
        t         t        t        fD ]  }	 t        |d|      }| j#                  ||       t        |D cg c]  }| c}ddg|t         z        }| j#                  t5        |      t5        |             t.        ss| j#                  |	j%                  d               t        t'        t)        d            ddgt         t6        z        }t        |dt
              }| j#                  ||j%                                t        |D cg c]  }| c}ddgt               }| j#                  t5        |      t5        |             t        |dt
              }t        t3        |ddg      ddgt               }
| j#                  ||
j%                                t        |D cg c]  }| c}ddgt*        t         z        }| j#                  t5        |      t5        |             t        |dt
              }| j#                  ||j%                                t        |D cg c]  }| c}ddgt               }| j#                  t5        |      t5        |             y # t,        $ r Y w xY w# t,        $ r Y ]w xY wc c}w # t,        $ r Y yw xY wc c}w # t,        $ r Y w xY wc c}w c c}w c c}w c c}w )Nri  r  r   r   rk  rh  r.   r   rb   r8   r"   r   r9   r   r  r[  r   r"   r  r   r  r6  r  r   r   )r#  r   r$  ro  rn  rj  )r  r  r  r  r  r  r  r  r  r  r  r  rt  rR  r  r   r   rr  r/  r   rl   r  r~  r(  r%  r   rS   r  )rb  r  rY  ro  requestr   r   ndbytesrm   nar`   r  r   r  s                 r@   test_py_buffer_to_contiguousz/TestBufferProtocol.test_py_buffer_to_contiguousU  sg    M8\++/
 	)%<b#'	) QbK@$ 	2E# 2+Bw?  BJJL12	2 aSC{C$ 	)E# )+Bw?  C()	)
 T%(^9S&($ 	)E# )+Bw?  C()	) Z 	1A!QC1[=IBjjlG( 1' 1G/E7CA$$Q011
 1#c;OBjjlG( 1' 1G/E7CA$$Q011	1  YqcA3kJ**,$ 	-E):6 -+Bw?  G,-	-
 "X**,$ 	-E# -/E7CA   G,-	-P 59oZ K	?AQF!K-@B 	#()1vS./1fs#?
 JIcAq621a&"-/99;::<# ?/CAA   H- N1QN1a&L  A
2?$$Q

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

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


(=>!?wK	?\ T%)_QF+f:LM $B];BJJL)N1QN1a&DA
27 $B];IcAq6*1a&LAIIK(N1QN1a&
;8NOA
27 $B];BJJL)N1QN1a&DA
27M # l #  +" #  +  #  + # # #sl   =^^6	^+^0/	_ ;_#	_8	_	_	_$	^^	^('^(0	^=<^=	__c                 2	   dg fg ddgft        t        d            g dfg}|D ]  \  }}t        ||      }t        |      }| j	                  |j
                         | j	                  |j                         t        |      }t        ||dd      }t        ||      }| j                  ||dd	d
||||	       t        |      }	| j                  |	|dd	d
||||	       t        |t        t        z        }
| j                  |
j                  d       |
j                         }| j                  |d dd	d
||||	       t        |t               }
| j                  |
j"                  d       | j                  |
j$                  d       | j                  |
j                  d       |
j                         }|dk(  r|gn|}| j                  |d dd	d
d|j&                  gd|	        |D ]  \  }}t        ||t(              }t        |      }| j	                  |j*                         | j	                  |j                         t        |      }t        ||dd      }t-        ||      }| j                  ||dd	d
||||	       t        |      }	| j                  |	|dd	d
||||	        |dd  D ]  \  }}t        ||t.              }t        |      }t        |      }t        ||      }| j                  ||dd	d
|||j                  |	       t        |      }	| j                  |	|dd	d
|||j                  |	        | j1                  t2        t        dd       | j1                  t2        t        i        t        g ddg      }t        |t               }
| j1                  t4        t        |
       t        |t        t        z        }
| j1                  t4        t        |
       t        dgdz  dgdz  d      }
| j1                  t6        t        |
       | j1                  t6        |
j                         | j1                  t6        t8        |
t:        d       | j1                  t6        t8        |
t:        d       | j1                  t6        t8        |
d d d   t:        d       y )Nr  r  r[  r  r  r  r.   r   r   Tr  r  r   rB   r   r.   r  ri     9r`   r%   r   rl  r   )r   rl   r   rS   r  r  r  rg   r   r   r  r  r  rr  r   r  r  r  r   r-  r  r  r   r  rt  rR  r~  r   r  r  )rb  items_shaper{   r   rw  rJ   r   r   rm   r  rY  s              r@   test_memoryview_constructionz/TestBufferProtocol.test_memoryview_constructionE	  sU   2w1#eEl1CW0MN ( ,	!LE5 e,B2AOOANN+OOALL)u:D(ua=G&CKKr!"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,	!^ ( 	!LE5 e:>B2AOOANN+OOALL)u:D(ua=G&CKKr!"d!  ! ABKK!"d!  !'	!2 (O 	!LE5 e6:B2Au:D&CKKr!"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Prb   c                    g d}g dg dg dfD ]V  }t        ||      }| j                  |j                         t        |      }| j	                  t
        |j                  d       X t        dd      D ]b  \  }}}t        d      }|j                  |      }| j                  |j                         d       | j                  |j                         g        d y )	Nr  r^  r_  r  r   r.   rS   rb   )r   r  r  rS   rt  rR  re  r   rr  r/  rQ  )rb  r{   r   rw  msrcr=   ry   rJ   s           r@   test_memoryview_cast_zero_shapez2TestBufferProtocol.test_memoryview_cast_zero_shape	  s    
 w0 	9Ee,BOOBOO,b>DiC8		9 %Q5 	-ICAc?D		#AQYY[#.QXXZ,		-rb   c                 `   | j                   }t        j                  }d}d}t        t	        d            } |t        d       ||d|z  z                t        |ddgd	      } |t        |       ||d|z  z                t        |g d
d	      } |t        |       ||d|z  z                y )NzPnin 2P2n2i5P P3nr8   rb   r.   r"   r6  r   rl  )r"   r"   r"   r[  )check_sizeofr   calcvobjsizer   rl   rS   r   )rb  checkvsizebase_structper_dimr{   rL   s          r@   test_memoryview_sizeofz)TestBufferProtocol.test_memoryview_sizeof	  s    !!$$'U1Xjou[1w;%>?@E!Q4jmU;W#<=>E37jmU;W#<=>rb   c                     G d dt               } G d dt               }d } |d       |d      dt        d      d	t        d
d      g dh dddiddddd t        ddt	        d      t	        d      dddd|d g}t        dd      D ]  \  }}}t        |dg|t              }t        |dg|t              }	t        |      }
t        j                  ||	d|       ||
d<   | j                  |
d   |	d          t        j                  |      }d|v r|D ]f  }d }	 t        j                  ||	||       d }	 ||
d<   |s|r%| j#                  |d        | j#                  |d        O| j                  |
d   |	d          h  y # t        j                  $ r t        j                  }Y sw xY w# t        t        f$ r}|j                   }Y d }~d }~ww xY w)Nc                       e Zd Zd Zd Zy)=TestBufferProtocol.test_memoryview_struct_module.<locals>.INTc                     || _         y r   valrb  r  s     r@   __init__zFTestBufferProtocol.test_memoryview_struct_module.<locals>.INT.__init__	  	    rb   c                     | j                   S r   r  ra  s    r@   __int__zETestBufferProtocol.test_memoryview_struct_module.<locals>.INT.__int__	      xxrb   N)__name__
__module____qualname__r  r  r   rb   r@   INTr  	       rb   r  c                       e Zd Zd Zd Zy)=TestBufferProtocol.test_memoryview_struct_module.<locals>.IDXc                     || _         y r   r  r  s     r@   r  zFTestBufferProtocol.test_memoryview_struct_module.<locals>.IDX.__init__	  r  rb   c                     | j                   S r   r  ra  s    r@   	__index__zGTestBufferProtocol.test_memoryview_struct_module.<locals>.IDX.__index__	  r  rb   N)r  r  r  r  r  r   rb   r@   IDXr  	  r  rb   r  c                       y)Nr9   r   r   rb   r@   r   z;TestBufferProtocol.test_memoryview_struct_module.<locals>.f	  s    rb   r  y@      @z-21.1gffffff(@r   r"   r  >   r6  r   r7  r9   r8   r   )r  TF   as   abcrL   abcc                     | S r   r   )r`   s    r@   <lambda>zBTestBufferProtocol.test_memoryview_struct_module.<locals>.<lambda>	  s    q rb   rq   rS   rk  r   r   r.   )objectr
   r   Ellipsisr%  r   r   r   rS   r:   r'  rr  r  r<   rR  r   r/  assertIsNot)rb  r  r  r   valuesr=   r{   r|   rw  rY  rJ   r   r   
struct_errmv_errr   s                   r@   test_memoryview_struct_modulez0TestBufferProtocol.test_memoryview_struct_module	  s   	 & 	 	 & 	  	a&#a&''*D(1a.7QqE2ttX	$61BudF[" !,B = 	2Crd3kJBrd3kJB2AS"a.AaDQqT2a5)s+Hcz 2!
.$$S"h: )AaD $$Z6$$VT2$$QqT2a51#2	2" || .!'J. ":. )[[F)s*   E<1F%<#F"!F"%G
4GG
c                     t        g ddgdg      }| j                  |j                         t        |      }| j	                  t
        |j                  d       y )Nr  r[  r   r  r   )r   rK  r  rS   rt  rR  re  )rb  rw  r  s      r@   !test_memoryview_cast_zero_stridesz4TestBufferProtocol.test_memoryview_cast_zero_strides
  sG     WQC!5)"~)TYY4rb   c           	      .   t         D ]  }t        d      rd|z   n|}t        j                  |      }t         D ]~  }t        d      rd|z   n|}t        j                  |      }t	        t        t        d            d|z  g|      }t        |      }| j                  t        |j                  |d|z  g         t        d      D ]  \  }}	}
t	        |	dg|      }t        |      }t        d      D ]v  \  }}
}
t        |      s'| j                  t        |j                  |dz  g       9t        |      rEt        |      rQ| j                  t        |j                  |dz  g       x  t        j                  d      }t        j                  d      }t	        t        t        d|z              dd|gd      }t        |      }| j                  t        |j                  dd|gd       t	        t        t        d	            g d
      }t        |      }| j                  t        |j                         | j                  t        |j                  ddd       | j                  t        |j                  i        | j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  d       t	        ddgdgd      }t        |      }| j                  t        |j                   d       | j                  t        |j"                  dd       | j                  t        |j$                         t	        t        t        d	            g d
      }t        |      }| j                  t        |j                  di        t	        t        t        d	            d	g      }t        |      }| j                  t&        |j                  ddg       | j                  t        |j                  ddg       | j                  t        |j                  dg d       | j                  t        |j                  dg d       | j                  t        |j                  dg d        t	        t        t        d!      D 
cg c]  }
d" c}
      g d#      }t        |      }| j                  t        |j                  d$g d%       t	        t        t        d&            d&gd$      }t        |      }| j                  t        |j                  d$dgd&z         t	        t        t        d!      D 
cg c]  }
d" c}
      d!g      }t        |      }| j                  t        |j                  d$g d%       t	        t        t        d!      D 
cg c]  }
d" c}
      d!g      }t        |      }| j                  t        |j                  dg d%       t	        t        t        d&            d&gd$      }t        |      }t	        t        t        d&            d&gd      }t        |      }t(        j*                  d'k(  rm| j                  t        |j                  dg d(       | j                  t        |j                  dg d)       | j                  t        |j                  d$g d*       y | j                  t        |j                  ddd+g       | j                  t        |j                  dg d,       | j                  t        |j                  d$g d-       y c c}
w c c}
w c c}
w ).Nr"   rC   r4   rl  r.   r   r   r6  x   r  r  r[  Xz@Xz@XYz=Bz!Lz<Pz>lBIxBIr  r  IIr   r8   r   r,   r   )r"   r[  r6  r   r7  r9   r   )r"   r[  r6  r   r7  r9   r   )r"   r[  r6  r   r7  r9   r`   i  r  )r[  r   r9   r  r   )r"   r[  r6  r   r%   l    )r9   r9   I   r1   iQ  iAj i	 )   r     r  r8   )r  r  r  r  r"   )r  r  r4   r4   r"   )r  r  r4   r8   r"   )NON_BYTE_FORMATr   r:   r  r   r   rl   rS   rt  rR  re  r   r   r   r   rS  r  r	  rQ  r  rV  maxsize)rb  sfmtsformatssizedfmtdformatdsizerw  r  sitemsry   size_hsize_drJ   rY  r  r  s                    r@   test_memoryview_cast_invalidz/TestBufferProtocol.test_memoryview_cast_invalid
  s\   # 	KD$-aLcDjdGOOG,E' K(1!#*$0T%)_RYKP!"~!!)TYYr5ykJK	K  +1~ 
	7OD&!s48Bb>D)!n 7
a+D1%%j$))T')5yk3 *$/t8L)))TYY+-u9+77
	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6167zJrN)QVVS	B T%*%cU3?rN*affcA3s7; TeHo6167zJrN)QVVS	B TeHo61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   -	`	`<	`c                     dd fdd fdd ff fd}t        j                  d      }t        d	g d
      }t        |dd      \  }}t	        |      }|j                  d      } j                  ||dddd|d|d
       t        j                  d      }t        d	g|z  |gd
      }t        |d|g       \  }}t	        |      }|j                  dg       } j                  |||ddddd|d
       t        dd      D ]2  \  }	}
}t        j                  |	|
      }t	        |      } ||||
|	       4 t        dd      D ]0  \  }	}
}t        |
dg|	t              }t	        |      } ||||
|	       2 y )Nr   c                 4    t        | j                               S r   r   r/  )rw  s    r@   r  z9TestBufferProtocol.test_memoryview_cast.<locals>.<lambda>
  s    4

- rb   r   c                 n    t        | j                               D cg c]  }|dkD  r|dz
  n| c}S c c}w )Nr1   r$   r  rw  r`   s     r@   r  z9TestBufferProtocol.test_memoryview_cast.<locals>.<lambda>
  s.    T"**,=OPQWAcE!3P Ps   2r   c                     t        | j                               D cg c]  }t        t        |      d       c}S c c}w )Nzlatin-1)r   r/  rZ   chrr  s     r@   r  z9TestBufferProtocol.test_memoryview_cast.<locals>.<lambda>
  s*    d2::<>PQE#a&)4Q Qs   ;c                 T   t        j                  |      }
D ]  \  }}|j                  |      } ||       }j                  || d|ddd|z  gd|d
       |j                  |      }	j	                  |	|        | j                         }j                  |	| ||dddg|f|d
        y )Nr.   Fr5   r~  T	r_   r   r=   rs  r   r   r   rm   re  )r:   r  re  r  rr  rQ  )rw  rJ   r{   r=   srcsizerT   to_bytelistr  rm   m3bytespecrb  s             r@   iter_roundtripz?TestBufferProtocol.test_memoryview_cast.<locals>.iter_roundtrip
  s    ooc*G(0 0$VVG_!"oBB%&Ge!"2g:, #$  0
 WWS\  R(iikBB%,#!"2$
 #$  00rb   r   r  rl  r.   Tr~  r  r  r   r   r5   rQ   rS   rk  )
r:   r  r   r4  rS   re  r  r   rQ   r   )rb  r  r  rw  	destitems	destshaperJ   r  destsizer=   r{   ry   r  s   `           @r@   test_memoryview_castz'TestBufferProtocol.test_memoryview_cast
  s   -
.P
QQ
R
	0( //#&Qb-)"c15	9rNVVC[BBC$)T! 	 	. ??3'aS\(C@)"c82F	9rNVVCrV"BB%3"b! 	 	. )W5 	.MCS%(B2A2q%-	. )\: 	.MCrd3kJB2A2q%-	.rb   c                    t               D ]  }t        d   D ]  }|dk(  r
dt        d         |z   }t        j                  |      }t        |      |z  }t        |      rdnd}t        ||      D ]f  \  }}}	t        j                  |      }
|dkD  r|gng }||
gz   }t        |||      }t        |      }t        ||||	      \  }}|#| j                  t        |j                  ||       }|d
k(  rt        |||      }|j                  ||	      }t        |      }|j                  }|j!                         }| j#                  ||||d||||d
       |j                  |      }|j                  ||	      }t        |      }|j                  }|j!                         }| j#                  |||
|d||||d
       | j#                  |||
|d||||d
       i   t$        r G d dt$        j&                        } |dd      }t        |      }|j                  d      }| j)                  |j*                  |       | j)                  |j,                  d       | j/                  |j0                  d       | j)                  |j2                  d       | j)                  |j4                  |j6                  f       | j)                  |j                  d       | j)                  |j8                  d       t%        j:                  d      }t        |      }|j                  d      }| j)                  |j*                  |       | j)                  |j,                  d       | j/                  |j0                  d       | j)                  |j2                  d       | j)                  |j4                  |j6                  f       | j)                  |j                  d       | j)                  |j8                  d       y y )NrC   r   )rB   rC   r"   rS   rT   r   rl  r  r,  Tr  c                   D    e Zd Zdej                  fdej
                  fgZy)>TestBufferProtocol.test_memoryview_cast_1D_ND.<locals>.BEPointr`   r  N)r  r  r  ctypesc_longc_double_fields_r   rb   r@   BEPointr    s     &--032HIrb   r  r   g33333i@r   r.   Fr~  r   333333?r   )r8  rY   r   r:   r  r   r   r   r   rS   r4  rt  rR  re  rg   r   rQ  r  r  BigEndianStructurerr  r_   r   rq  rs  r   r   r-  rU  r  )rb  _tshaper^   tfmttsizer   r_   r=   r{   ry   sizer   tshaperw  rJ   titemsrY  r  r   r   rm   r  m4r  pointr  r`   s                              r@   test_memoryview_cast_1D_NDz-TestBufferProtocol.test_memoryview_cast_1D_ND
  s    % 5	4G 44 3; 1.5-ME)&4T&:l	%0C%8 +4MC!??3/D#$q5QCbE$v-F eC@B"2A%/D%v%NNFF~)))QVVT6J   !vdCBF3Bv;D jjG))+CKK).D4%)$'d   4 BE2Bu:D jjG))+CKK)-3%)$'d   4
 KK)-3%)$'d   4Q+4445	4n 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 rb   c           	         t        j                   dt        t        dd                  }t        |      }| j	                  ||       | j	                  |j                         |j                                |dd d   }|dd d   }| j	                  ||       | j	                  |j                         |j                                t        t        t        d            g dd	      }t        |      }| j	                  |j                         |j                                t        d
dgdgd	      }t        |      }| j                  t        |j
                         t        dgdgd	      }t        |      }| j                  t        |j
                         t        g dddgd	      }t        |      }| j                  t        |j
                         y )Nr   r  r7  r"   r[  i	  )r  r"   r9   r[  r   r   rl  )r"   r   )r9   r  r>      12345r.   r   )r     b   c   d   e   f)	rQ   r   rl   rS   rr  rQ  r   rt  rS  )rb  rL   rJ   rw  s       r@   test_memoryview_tolistz)TestBufferProtocol.test_memoryview_tolist   so    KKT%A,/0qMAQXXZ0addGaddGAQXXZ0T%
+,LMrNRYY[1fg&qc$?rN-qxx8hZs37rN-qxx84QqE#NrN-qxx8rb   c                    t        t        d            }|j                         }| j                  |j	                  d             |j                          |j                         }| j                  |j	                  d             y )Nr  z<memoryz	<released)rS   r%  __repr__r  
startswithr  )rb  rJ   r   s      r@   test_memoryview_reprz'TestBufferProtocol.test_memoryview_repr>  sY    y|$JJLY/0			JJL[12rb   c                 V   dD ]g  }t        d      }t        j                  |d|dg      }t        |      }| j                  d|       | j                  d|       | j                  d|       i t	        dg d      }t        |      }| j                  t        t        dt                      y )	N)r   r   g            ?g      @g      "@r   r  z9.0 in m)	floatrQ   rS   assertInr   rt  rR  r  r   )rb  r=   infrw  rJ   s        r@   test_memoryview_sequencez+TestBufferProtocol.test_memoryview_sequenceG  s     	"C,CS3S/2B2AMM#q!MM%#MM#q!	" S"S)rN)T:vx@rb   c              #      K   | j                  t              5 }d  d d d        | j                  t        j                        d|fz         y # 1 sw Y   3xY ww)Nz#index out of bounds on dimension %d)rt  r  rr  str	exception)rb  dimcms      r@   assert_out_of_bounds_errorz-TestBufferProtocol.assert_out_of_bounds_errorU  sQ     z* 	b	R\\*>#G	I	 	s   AA2AAAc                    t        dg d      }t        |      }| j                  |d   d       | j                  |d   |       | j                  |d   |       | j                  t        |j
                  d       t        dg d      }t        |      }| j                  t        |j
                  d       t        t        t        d	            d	gt        
      }t        |      }| j                  t        |j
                  d       | j                  t        |j
                  d       | j                  t        |j
                  d       | j                  t        |j
                  d       | j                  t        |j
                  d       t        t        t        d            ddgt        
      }t        |      }| j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d       dD ]$  }| j                  d      5  ||df    d d d        & dD ]$  }| j                  d      5  |d|f    d d d        & | j                  t        |j
                  d       | j                  t        |j
                  d       | j                  t        |j
                  d        | j                  t        |j
                  d!       | j                  t        |j
                  d       | j                  t        |j
                  d       y # 1 sw Y   !xY w# 1 sw Y   xY w)"N      )@r   rl  r   .r   r  iiir9   r  r,          @        r8   r  r[  r6  r   r   )r"   r   r  r  r   r   )r  r  r[  r  r.   r  r6  r  r"   r,   r   r+   r   r   r   r
  r
  )r   rS   rr  rt  rR  r  rS  r   rl   r   r  r  )rb  rw  rJ   indexs       r@   test_memoryview_indexz(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 %( 	  	E00Q07 !U( 	 	*ammZ@*ammZ@)Q]]I>)Q]]J? 	-q}}bA-q}}a@  s   :L<#M	<M		M	c                    t        dg dt              }t        |      }d|d<   | j                  |d   d       d|d<   | j                  |d   d       | j	                  t
        |j                  dd	       t        t        t        d
            d
g      }t        |      }| j	                  t
        |j                  dd       t        t        t        d
            d
gt              }t        |      }| j	                  t        |j                  dd       | j	                  t
        |j                  dd       | j	                  t
        |j                  dd       | j	                  t        |j                  dd       | j	                  t        |j                  dd       t        d   D ]l  }|dk(  s|dk(  rt        g ddg|t              }t        |      }t        dd      }d||<   | j                  ||   d       | j                  ||   ||          n t        g ddgdt              }t        |      }d|d<   | j                  |d   d       t        g d dgdt              }t        |      }d!|d"<   | j                  |d"   d!       t        d#gd"gdt              }t        |      }| j	                  t
        |j                  dd$       t        t        t        d%            g d&t              }t        |      }t        d   j                         D ]  \  }}|dk(  r|dk(  r|j                  |      }|\  }	}
|d'k(  s|dk(  rdd(z   dd(z  }
}	|d)k7  rG| j	                  t        |j                  d|	d"z
         | j	                  t
        |j                  dd*       | j	                  t        |j                  d|
        |j                  d      }| j	                  t        |j                  dd+       t        t        t        d"            d"gd,t              }t        |      }| j	                  t         |j                  dd"       t        d-gd"gd.t              }t        |      }| j	                  t         |j                  dd"       t        t        t        d/            dd0gt              }t        |      }d1|d2<   | j                  |d   d"   d1       d3|d4<   | j                  |d   d   d3       d5D ]$  }| j#                  d"6      5  d||df<   d d d        & d7D ]$  }| j#                  d6      5  d|d|f<   d d d        & | j	                  t        |j                  d8d       | j	                  t        |j                  d9d       | j	                  t
        |j                  d:d       | j	                  t
        |j                  d;d       | j	                  t         |j                  dddg       y # 1 sw Y   xY w# 1 sw Y   xY w)<Nr  r   rk  g     6@r   g     7@.r   g333338@r9   r  r"   rq   r  r,   r  r	  r
  r  r  rf  r8      rC   r   r   r  r[  r  )   1   2   3r  )TFTTr.      xr   r  r  r   r  r   r  s   xLr  r   r  r6  *   )r   r.   +   r  r  r  r  r  r+   r  r  )r   r   rS   rr  rt  rR  r	  r   rl   r  rY   r   rq  r{   re  r   rS  r  )rb  rw  rJ   r=   r   rY  r  _ranger  lohir  s               r@   test_memoryview_assignz)TestBufferProtocol.test_memoryview_assign  sg    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AaDQqT1%QqT2a5)	* 's3&(rN!1t$(C&(rN!adD! dVA3s+FrN)Q]]As;T%*%[L^"3<--/ 	AKCs
czBFBczSCZT'1d7Bcz!!*bnnaAF!!)R^^QFj"..!R@	A 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  %(   	   	 E00Q07  !U(   	  	*ammZC*ammZC)Q]]IqA)Q]]JB 	-q}}a!QH      s   W34X 3W=	 X		c           
         t        t        t        d            dgt              }t	        |      }| j                  t        |j                  t        ddd             | j                  t        |j                  t        ddd      t        ddg             | j                  t        |j                  d       t        t        t        d            dgt              }t	        |      }| j                  t        |j                  t        ddd      t        ddd      f       | j                  t        |j                  t        ddd      t        ddd      ft        ddg             | j                  t        |j                  t        ddd      i f       | j                  t        |j                  t        ddd      i ft        ddg             | j                  t        |j                  t        ddd      dg       dt        fD ]?  }t        t        t        d            dgdgdt        |z  	      }t        t        t        d
            dgdg|      }t	        |      }t	        |      }|dd |dd |dd |dd | j                  ||       | j                  ||       |dd d d d   |dd d d d<   |dd d d d   |dd d d d<   | j                  ||       | j                  ||       |ddd   d d d   |ddd   d d d<   |ddd   d d d   |ddd   d d d<   | j                  ||       | j                  ||       B y )Nr  r  r   r"   r.   r   r   r  )r   r   r   r     r  r   r[  r6  r  )r   r   rl   r   rS   rt  r   r  r  r	  r%  rS  rR  r  rr  )rb  rw  rJ   r  r  r  r  r  s           r@   test_memoryview_slicez(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%/	&rb   c                    d }t        dd      D ]  }t        |d      D ]  \  }}}t        |      D ]  }t        |      D ]  }t        j                  ||      }t        j                  ||      }	t	        |	      }
| j                  |
|       | j                  |
j                         |j                                | j                  |
j                         |j                                | j                  t        |
      t        |              || ||	|
|       d }d }	 ||   }||   }||   ||<   t        |      t        |      k7  }d }	 |
|   |
|<   |r| j                  |t               ,|s|r| j                  ||       D| j                  |
|       | j                  |
j                         |j                                | j                  |
j                         |j                                 || ||	|
|           y # t        $ r}|j                  }Y d }~d }~ww xY w# t        $ r}|j                  }Y d }~d }~ww xY w)Nc                 n   t        |      D ]  \  }}||   }||   }| j                  ||       |||<   ||k7  r%| j                  ||       | j                  ||       n$| j                  ||       | j                  ||       |||<   | j                  ||       | j                  ||       |||<   |||<    y r   )r&  rr  assertNotEqual)	testcaserL   r   rJ   
singleitemr   ry   aimis	            r@   cmptestz9TestBufferProtocol.test_memoryview_array.<locals>.cmptest8  s    !! 1qTqT$$R,!!#++Aq1++Aq1((A.((A.!!$$Q*$$Q*!!rb   r.   r   rQ   )rl   r   r:  rQ   rS   rr  rQ  r/  rg   r.  r/  rq  r   )rb  r-  r   r=   r{   r*  r7  r@  rL   r   rJ   	array_errhave_resizealarr   m_errs                    r@   test_memoryview_arrayz(TestBufferProtocol.test_memoryview_array6  s   	$ q! (	?A*5a*A '?&UJ'l &?F"+A, %?!KKU3!KKU3&qM((A.((QXXZ@((aiikB((QQ8aAz:$(	&*4!"6B!"6B()&	AfI*-b'SW*<K !%0()&	AfI ' MM%<"i MM%; ,,Q2 ,,QXXZD ,,QYY[!))+F#D!Q:>K%?&?'?(	?.  ) 4()I4  ) 0$%KKE0s0    )HH/	H,H''H,/	I8I		Ic                    t        j                   dg d      }t        j                   dg d      }t        |      }t        |      }dD ]N  }| j                   t        ||      |      t               | j                   t        ||      |      t               P t        |      }|j                          | j                  ||       | j                  ||       | j                  ||       t        |      }t        |      }|j                          | j                  ||       | j                  ||       t        |      }| j                  |g d       t        dgdgdt              }d	t        d
      f|d<   | j                  t        |      |       t        j                   dd      }t        |      }| j                  ||       | j                  ||       t        r G d dt        j                        } |dd      }t        |      }t        |      }| j                  ||       | j                  ||       | j                  ||       | j                  t        |j                         y y )Nr   r  )r.   r"   r9   )__lt____le____gt____ge__r  r.   zl x d xrk  r   r,  r   ur  c                   D    e Zd Zdej                  fdej                  fgZy)ITestBufferProtocol.test_memoryview_compare_special_cases.<locals>.BEPointr`   r  Nr  r  r  r  r  r  r   rb   r@   r  r;         &--032FGrb   r  r   r  )rQ   rS   rq  getattrr  r  rr  r(  r   r   r  r  r  rt  rS  rQ  )	rb  rL   r   r   wattrrY  r  r  s	            r@   %test_memoryview_compare_special_casesz8TestBufferProtocol.test_memoryview_compare_special_casest  s   KKY'KKY' qMqM< 	?DMM*'!T*1-~>MM*'!T*1-~>	?
 qM			AAq!Aq!qMqM			Aq!Aq! qMAy) fXaS+NU5\"1JrNB/ KKU#qMAq!Aq! H&33 HC%E5!A5!A1%5)q)1188< rb   c                    t        dg d      }t        dg dt              }t        |      }t        |      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       | j	                  |j                  |             | j	                  |j                  |             d|d<   | j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       | j	                  |j                  |             | j	                  |j                  |             t        t        t        d            dgt        t        z  	      }t        t        t        d            dgt        t        z  	      }t        |      }| j                  ||       d
|d<   | j                  ||       t        dg d      }t        dg dt              }t        |      }t        |      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       t        dg d      }t        dg dt              }t        |      }t        |      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       y )N  @Lrl  r   rk  i  r   r  r  r   r  )rC  r  r  Lf5shf5s)i?r  r  )r   r   rS   rr  rK  __ne__r(  r  r   rl   r  )rb  nd1nd2r   r?  rY  rw  rJ   s           r@   !test_memoryview_compare_ndim_zeroz4TestBufferProtocol.test_memoryview_compare_ndim_zero  s   d"T2d"SDsOsOAAC a C a !%!%"Aq!Aq!As#C#As#C#!%!%T%)_RDF8JKT%)_RDF8JKrNB!Ar" +2fE+2f')sOsOAAC a C a  +2fE,Bv')sOsOAq!Aq!As#C#As#C#C C rb   c                 P   t        g ddgd      }t        g ddgd      }t        |      }t        |      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       t        g ddgd      }t        g ddgd      }t        |      }t        |      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       t        g dd	gd      }t        g ddgd      }t        |      }t        |      }| j                  ||d d d
          | j                  |d d d
   |       | j                  ||d d d
          | j                  |d d d   |d d d          t        g dd	gd      }t        g ddgd      }t        |      }t        |      }| j                  ||d d d
          | j                  |d d d
   |       | j                  ||d d d
          | j                  |d d d   |d d d          t        g dd	gd      }t        g ddgdt              }t        |      }t        |      }| j                  ||d d d
          | j                  |d d d
   |       | j                  ||d d d
          | j                  |d d d   |d d d          t        g dd	gd      }t        g ddgdt              }t        |      }t        |      }| j                  ||d d d
          | j                  |d d d
   |       | j                  ||d d d
          | j                  |d d d   |d d d          y )N@    'r   @hrl  )rM  rN  rO  rP  i  z<iz>h)rM  rO  rQ  r[  r"   r   r  z!hz<lrk  zh  0cz>  h)r   rS   rr  r(  r  rb  rH  rI  r   r?  s        r@    test_memoryview_compare_ndim_onez3TestBufferProtocol.test_memoryview_compare_ndim_one  s    21#dK1!TJsOsOC C As#As#Aq! 21#dK1!TJsOsOC C As#As#Aq! (DA21#dKsOsOC!H%3Q3%AccF#4R4!DbD'* (DA21#dKsOsOC!H%3Q3%AccF#4R4!DbD'* (DA21#d"$sOsOC!H%3Q3%AccF#4R4!DbD'* (GD21#f"$sOsOC!H%3Q3%AccF#4R4!DbD'*rb   c                 L   t        ddgdgd      }t        ddgdgd      }t        |      }t        |      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       t        ddgdgd      }t        ddgdgd	      }t        |      }t        |      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       y )
N  r  r   rR  rl  i|i?z= h0cz@   ir   rS   rr  rS  s        r@   "test_memoryview_compare_zero_shapez5TestBufferProtocol.test_memoryview_compare_zero_shape0  s    sCjD9tTl1#d;sOsOC C C C A sCjG<tTl1#g>sOsOC C C C Arb   c                 T   t        g ddgd      }t        dgdgdgd      }t        |      }t        |      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       t        d	gdz  dgd
      }t        d	gdgdgd      }t        |      }t        |      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       y )N)rV  rV  rV  rV  r6  rD  rl  rV  r   r   r  )rV  rV  z@ Liz!L  hrW  rS  s        r@   $test_memoryview_compare_zero_stridesz7TestBufferProtocol.test_memoryview_compare_zero_stridesJ  s    *1#dCseA3C@sOsOC C C C A zl1nQC?zl1#s7KsOsOC C C C Arb   c                    d}t         d   D ]s  }t        |dd|      \  }}}dt        fD ]T  }t        ||g||      }t	        |      }| j                  ||       |d d d   }t	        |      }| j                  ||       V u d}t        d      D ]p  }	t        |      \  }}}dt        fD ]T  }t        ||g||      }t	        |      }| j                  ||       |d d d   }t	        |      }| j                  ||       V r y )	Nrq   rK   rS   rC   r   rk  r  r   )rY   r   r  r   rS   rr  rl   )
rb  r   r^   r=   r{   r*  r  rY  rJ   ry   s
             r@   &test_memoryview_compare_random_formatsz9TestBufferProtocol.test_memoryview_compare_random_formatsd  s%    DM 		(D%.q,T%J"C
V (U1#cGrN  B'"XrN  B'(		( s 		(A%.q\"C
V (U1#cGrN  B'"XrN  B'(		(rb   c                    t        t        t        dd            g dd      }t        t        t        dd            g dd      }t        |      }t        |      }| j	                  ||       | j	                  ||       | j                  ||       | j                  ||       | j                  ||       t        dgdz  g dd	      }t        d
gdz  g dd      }t        |      }t        |      }| j	                  ||       | j	                  ||       | j                  ||       | j                  ||       | j                  ||       t        t        t        d            g dd      }t        t        t        d            g dd      }t        |      }t        |      }| j	                  ||       | j	                  ||       | j                  ||       | j                  ||       | j                  ||       t        dgdz  ddgd      }t        dgdz  ddgd      }t        |      }t        |      }| j	                  ||       | j	                  ||       | j                  ||       | j                  ||       | j                  ||       t        t        t        d            g dd      }t        t        t        d            g dd      }t        |      }t        |      }| j	                  ||       | j	                  ||       | j	                  ||       | j	                  ||       | j	                  ||       y )Nr7   r[  r"   r   rR  rl  r   r  r   r.   r"   z=f q xxL)g333333r.   r"   z< f 2Qr  r      r[  r9   z! b B xLz
= Qx l xxLr   r   r   rl   rS   rr  r(  rS  s        r@   "test_memoryview_compare_multidim_cz5TestBufferProtocol.test_memoryview_compare_multidim_c  s    d5b>*)DId5B<(	$GsOsOC C As#As#Aq! yk"nIjI|nR'yJsOsOC C As#As#Aq! d59oYsCd59oYsCsOsOC C As#As#Aq! yk"nQF:Fyk"nQF<HsOsOC C As#As#Aq! d59oYsCd59oYsCsOsOC C C C Arb   c                 D   t        t        t        dd            g ddt              }t        t        t        dd            g ddt              }t	        |      }t	        |      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       t        dgd	z  d
dgdt              }t        dgd	z  d
dgdt              }t	        |      }t	        |      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       t        t        t        dd            g ddt              }t        t        t        dd            g ddt              }t	        |      }t	        |      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       t        t        t        dd            g ddt              }t        t        t        dd            g ddt              }t	        |      }t	        |      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       t        t        t        d            g ddt              }t        t        t        d            g ddt              }t	        |      }t	        |      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       y )Nr^  r7   )r   r"   r[  rR  rk  r   r  r   r   r7  r"   r[  =Qq)r   r   z=qQr  r   r_  0llrM   )r   r   rl   r  rS   rr  r(  rS  s        r@   (test_memoryview_compare_multidim_fortranz;TestBufferProtocol.test_memoryview_compare_multidim_fortran  s    d5b>*)D&(d5B<(	$&(sOsOC C As#As#Aq! }oa'1ve&(}oa'1ve&(sOsOC C As#As#Aq! d5b>*)C&(d5b>*)C&(sOsOC C As#As#Aq! d5b>*)E&(d5b>*)C&(sOsOC C As#As#Aq! d59oYt&(d59oYt&(sOsOC C C C Arb   c                 	   t        t        dd            }t        |g d      }t        |g dd      }t        |g ddt              }t        |      }t        |      }| j                  ||       | j                  ||       | j                  ||       dgd	z  }d
|d<   t        |g d      }t        |g dd      }t        |g ddt              }t        |      }t        |      }| j                  ||       | j                  ||       | j                  ||       t        t        t        d            ddgd      }|dddd d df   }t        t        t        d            ddgd      }|dddd d df   }t        |      }t        |      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       t        dgdz  ddgd      }|dddd d df   }t        dgdz  ddgd      }|dddd d df   }t        |      }t        |      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       t        t        t        d	            g dd      }|ddd d df   }t        t        t        d	            g dd      }|ddd d df   }t        |      }t        |      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       t        t        t        d	            g dd      }|ddd d df   }t        t        t        d	            g dd      }|ddd d df   }t        |      }t        |      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       t        dgd	z  g d d!      }|ddd d df   }t        dgd	z  g d d"      }|ddd d df   }t        |      }t        |      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       y )#Nr^  r7   r_  @lrl  r   rk  )gffffff
r  r  )grk  r  r   zd b czd h c(   r8   @Ir[  r.   r   r  r   )r  r'      r  r"   z=iiz>iir  r   r   )r"   r  r   r[  r"   b3si3s)r   rl   r   r   r  rS   rr  r(  )	rb  lst1lst2rH  rI  r   r?  r  r  s	            r@   &test_memoryview_compare_multidim_mixedz9TestBufferProtocol.test_memoryview_compare_multidim_mixed  s    E#rN#y)d)D9d)CzJsOsOC C A ""2%#Qy)d)G<d)G:NsOsOC C A d59oaVDA!Ab&$B$,d59oaVC@!Aa%2+sOsOC C As#As#Aq! ()",RGEJ!Ab&$B$,()",RGEJ!Aa%2+sOsOC C C C A d59oYsC!A$"*od59oYsC!A$"*osOsOC C As#As#Aq! d59oYsC!A$"*od59oYsC!A$"*osOsOC C As#As#Aq! {mB&iF!A$"*o{mB&iF!A$"*osOsOC C As#As#Aq!rb   c                    t        t        t        d            g dd      }t        t        t        d            g dd      }t        |      }t        |      }| j	                  ||       | j	                  ||       | j                  ||       | j                  ||       | j                  ||       t        t        t        d            g dd      }t        t        t        d            g dd      }t        |      }t        |      }| j	                  ||       | j	                  ||       | j                  ||       | j                  ||       | j                  ||       y )Nr  )r   r[  r"   r   rl  )r   r   r"   z@irb  rS  s        r@   +test_memoryview_compare_multidim_zero_shapez>TestBufferProtocol.test_memoryview_compare_multidim_zero_shapeg  s"    d59oYsCd59oYtDsOsOC C As#As#Aq! d59oYsCd59oYtDsOsOC C As#As#Aq!rb   c                    t        dgdz  g dd      }t        dgg dg dd      }t        |      }t        |      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  |j                         |j                                t        d	gd
z  ddgd      }t        d	gddgddgd      }t        |      }t        |      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       y )NrV  r  )r6  r   r6  rD  rl  r  r   r  r  rq   r"   r   z=lQr   z<lQ)r   rS   rr  rQ  rS  s        r@   -test_memoryview_compare_multidim_zero_stridesz@TestBufferProtocol.test_memoryview_compare_multidim_zero_strides  s>    seBhi=se9iLsOsOC C C C AQXXZ0 vhrk!Q>vhq!fq!fUKsOsOC C C C Arb   c                 >   t        t        t        d            ddgd      }|dddd d d	f   }t        t        t        d            ddgd
t              }|dddd d d	f   }t	        |      }t	        |      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       t        dgdz  ddgdt              }d|d   d<   |dddd d d	f   }t        dgdz  ddgdt        t        z        }d|d   d<   |dddd d d	f   }t	        |      }t	        |      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       t        t        t        d            g ddt              }|ddd d d	f   }t        t        t        d            g dd      }|ddd d d	f   }t	        |      }t	        |      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       t        dgdz  g ddt        t        z        }|ddd d d	f   }t        dgdz  g dd      }|ddd d d	f   }t	        |      }t	        |      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       t        t        t        d            g ddt              }|ddd d d	f   }t        t        t        d            g ddt              }|ddd d d	f   }t	        |      }t	        |      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       t        dgdz  g ddt        t        z        }d|d   d   d<   |ddd d d	f   }t        dgdz  g ddt        t        z        }d|d   d   d<   |ddd d d	f   }t	        |      }t	        |      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       t        t        dd             }t        |g d      }t        |g dd!t              }t        |g dd"t        t        z        }t	        |      }t	        |      }| j                  ||       | j                  ||       | j                  ||       d#gdz  }d$|d%<   t        |g d      }t        |g dd&t              }t        |g dd't        t        z        }t	        |      }t	        |      }| j                  ||       | j                  ||       | j                  ||       y )(Nrl  r   r8   rm  rl  r[  r.   r   r  r   rk  re  rf  )r.   r  r"   r9   z>Qqr  r  r   r_  )r  r   Bbro  r   )   hellorb   r.      )r[  r[  r[  5s0sP)s   sushirb   r.   r^  r7   rj  r   )s   sashimis   slicedg4@)s   ramens   spicygfffff"@r  z
< 10p 9p dz
> 10p 9p d)
r   r   rl   r  rS   rr  r(  r   r   r  )	rb  r  rH  r  rI  r   r?  rr  rs  s	            r@   +test_memoryview_compare_multidim_suboffsetsz>TestBufferProtocol.test_memoryview_compare_multidim_suboffsets  s    d59oaVDA!Ab&$B$,d59oaVCvN!Aa%2+sOsOC C As#As#Aq! }ob(Au')Aq	!Ab&$B$,}ob(Au";.0Aq	!Aa%2+sOsOC C C C A d59oYs"$!A$"*od59oYsC!A$"*osOsOC C As#As#Aq! |nR'y";.0!A$"*o|nR'yF!A$"*osOsOC C As#As#Aq! d59oYs&Q!A$"*od59oYt6R!A$"*osOsOC C C C A )*2-Yw";.0)Aq	!!A$"*o)*2-Yw";.0)Aq	!!A$"*osOsOC C As#As#Aq! E#rN#y)d)DGd)Cz&?PQsOsOC C A //2-Ry)d)LOd)L&v-/sOsOC C Arb   c                    dD ]y  }t        dgdz  g d|dz         }t        dgdz  g d|dz   t        t        z        }d|d	   d
   d   d   d<   t        |      }t        |      }| j	                  ||       | j	                  ||       | j                  ||       | j                  ||       | j                  ||       t        dgdz  g d|dz         }t        dgdz  g d|dz   t        t        z        }d|d	   d
   d   d   d<   t        |      }t        |      }| j	                  ||       | j	                  ||       | j                  ||       | j                  ||       | j                  ||       | y )N)rF   rD   rE   rG   r*   r  )r[  r   r"   r"   r"   r   rl  rk  r.   r"   r[  )r*   r(   r&   QLH)r.   r.   r.   )r   r   r  rS   rr  r(  )rb  	byteorderr`   r  rL   r   s         r@   !test_memoryview_compare_not_equalz4TestBufferProtocol.test_memoryview_compare_not_equal  s    . 	&I;y}MA;y})*46A AaDGAJqM!1A1AQ"Q"1%1%1%./3;(0A./3;(k*6LNA(AaDGAJqM!1A1AQ"Q"1%1%1%1	&rb   c                    t        j                   dg d      }t        |      }|j                          | j                  t        t        |       | j                  t        |j
                  d       | j                  t        t        |       | j                  t        |j                         | j                  t        |j                         | j                  t        t        dt                      | j                  t        |j                  d       | j                  t        |j                  dd       dD ]#  }| j                  t        |j                  |       % t        j                   dg d      }t        |      }t        |      }| j                  ||       |j                          | j                  ||       | j                  ||       | j                  ||       y )Nr   )g?g@gffffff
@r   z1.0 in mr   r.   )r_   r-  rs  r   r  r   r   r   rU  r  r  r  )rQ   rS   r  rt  r   re  r   rQ  r/  r  r   r  r	  __getattribute__rr  r(  )rb  rL   rJ   r@  r   r  r  s          r@   test_memoryview_check_releasedz1TestBufferProtocol.test_memoryview_check_released:  sf   KK_-qM			 	*j!4*affc2*gq1*ahh/*aii0*dJA*ammQ7*ammQ:3 	DD j!*<*<dC	D KK_-]]R 


B#B"R rb   c                    d}t        |dgd      }t        |      }| j                  ||       | j                  |j                         |j                                t        |gdgd      }t        |      }| j                  ||       | j                  |j                         |j                                t        t	        d      D cg c]  }| c}g dd	      }t        |      }| j                  ||       | j                  |j                         |j                                t        t	        d
      D cg c]  }| c}g dd      }t        |      }| j                  ||       | j                  |j                         |j                                t
        rW G d dt
        j                        } |dd      }t        |      }| j                  |j                         t        |             y y c c}w c c}w )NrL  r   rR  rl  r.   z>hQiLlr  rt  z=hQiLlr  )r   r"   r"   r[  r"   z<hQiLlc                   D    e Zd Zdej                  fdej                  fgZy);TestBufferProtocol.test_memoryview_tobytes.<locals>.BEPointr`   r  Nr<  r   rb   r@   r  r    r=  rb   r  r   r  )r   rS   rr  r/  rl   r  r  rZ   )rb  r   rY  rJ   ry   r  r  rL   s           r@   test_memoryview_tobytesz*TestBufferProtocol.test_memoryview_tobytesb  s    )Qqc$/rNBbjjl3aSH5rNBbjjl3r+Aa+78LrNBbjjl3s,Aa,K$&rNBbjjl3 H&33 HC%E5!AQYY[%,7  ,
 -s   
	G:<	G?c                    | j                  t        t        i t        d       | j                  t        t        dt
        d       t        g ddgdg      }| j                  t        t        |t
        d       t        dd	d
      }dD ]:  }t        |t        |      }| j                  ||       | j                  |d	   d       < t        dd	d
t              }dD ]:  }t        |t        |      }| j                  ||       | j                  |d	   d       < dD ]n  }d|d	<   t        |t
        |      }| j                  ||       | j                  |d	   d       d|d	<   | j                  |d	   d       | j                  |d	   d       p t        dgdgd
t              }dD ]f  }t        |t        |      }| j                  t        |j                  d       | j                  ||       | j                  |j                         g        h t        t        t        d            g dd
t              }dD ]>  }t        |t        |      }| j                  t        |      j                         g g g       @ t        dgdgdt              }dD ]S  }t        |t
        |      }| j                  ||       | j                  |j                         |j                                U t        g ddgdt              }dD ]S  }t        |t
        |      }| j                  ||       | j                  |j                         |j                                U t        g ddgdgt              }dD ]  }t        |t        |      }| j                  ||       | j                  |j                         |j                                | j                  t        |j                  dd       | j                  |d   d       | j                  |d   d        |d d d   }dD ]  }t        |t        |      }| j                  ||       | j                  |j                         |j                                | j                  t        |j                  dd       | j                  |d   d       | j                  |d   d        t        t        t        d            ddgt              }dD ]J  }t        |t
        |      }| j                  t        |      j                         |j                                L | j                  t        t        |t
        d       t        |t              }| j                  t        |      j                         |j                                t        t        t        d            ddgt        t        z        }dD ]J  }t        |t
        |      }| j                  t        |      j                         |j                                L | j                  t        t        |t
        d       t        |t        |      }| j                  t        |      j                         |j                                t        t        t        d            ddgt        t         z        }dD ]k  }| j                  t        t        |t
        |       t        |t        |      }| j                  t        |      j                         |j                                m t        g ddgdg      }t        |t        d      }| j#                  |j$                         y )Nri  r  r   r  r"   r  rj  r  r   r   rl  rh  rk  rq   r.   r   r8   rx  r   r[  r   r  rf  r   r  r6  r  )r   rj  )ri  rj  r  )rt  rR  r  r  r~  PyBUF_WRITEr   rr  r   r  r  rQ  r   rl   r	  r  r  r  r  )rb  rY  ro  rJ   s       r@   test_memoryview_get_contiguousz1TestBufferProtocol.test_memoryview_get_contiguous  s6    	)^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$ 	6Er;6AQ#QXXZ5	6
 Yqc#[I$ 	6Er;6AQ#QXXZ5	6 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/'rb   c                 H   t        j                  d      }t        j                  dg d      }t        |      }t	        j
                  |      }t        d|z        }|j                  |       | j                  |j                         |       t        j                  d      }t        t        t        d            g dd      }t        |      }t	        j
                  |      }t        d|z        }|j                  |       | j                  |j                         |       y )Nr   r  r   r   r  rs  rl  )r:   r  rQ   rS   ioBytesIOr%  readintorr  r/  r   r   rl   )rb  r  rL   rJ   r)  r   rY  s          r@   test_memoryview_serializingz.TestBufferProtocol.test_memoryview_serializing  s     s#KK[)qMjjmafQa( s#T%)_GC@rNjjmeDj!Qa(rb   c                 h   t        t        t        d                  }t        |      }| j	                  t        |      t        |             |j                  dddg      }| j	                  t        |      t        |             |d d d   }t        t        t        d            d d d         }| j	                  t        |      t        |             t        t        t        d            g dt        	      }t        |      }| j	                  t        |      t        |             t        t        t        d            g d      }|d d d
d d d d df   }t        |      }| j	                  t        |      t        |             t        t        t        d            g dt        	      }|d d d
d d d d df   }t        |      }| j	                  t        |      t        |             t        t        t        d            dgd      }t        |      }t        t        t        d            dgd      }t        |      }| j	                  ||       | j	                  t        |      t        |             t        t        t        d            g dd      }t        |      }| j                  t        |j                         t        t        t        dd            g dd      }t        |      }| j                  t        |j                         t        t        t        d            g dd      }t        |      }| j                  t        |j                         t        t        t        dd            g dd      }t        |      }| j                  t        |j                         y )Nr  r   r[  r6  r  r  r  r_  r  r"   r   )r"   r   r[  r   rl  r   rt  r   r  r7  r   z= Lz< h)rZ   r   rl   rS   rr  ru  re  r   r  r  rt  r   __hash__)	rb  r   rJ   mcmxrY  r`   rL   r  s	            r@   test_memoryview_hashz'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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1rb   c           
         t        g d      }t        |      }t        |      }| j                  t        |j
                         ~|j                          t        g d      }t        |      }t        |t        t              }t        |t        t              }| j                  |j                  |       | j                  t        |j
                         ~~|j                          t        g d      }t        |      }t        |      }t        |      }|j                          | j                  t        |j
                         ~|j                          t        g d      }t        |      }t        |      }t        |t        t              }t        |t        t              }| j                  |j                  |       |j                          | j                  t        |j
                         ~~|j                          t        g ddgt              }t        |      }|j                  g ddg       t        |      }t        |      }| j                  |j                         |j                                t        |      }	| j                  |	j                         |j                                | j                  |	j                         |j                                |j                          |	j                          |j                          | j                  |j                         |j                                ~|j                          |j                          d }
t        d	      }t        |      5 } |
|       | j                  |d
   t        d             d d d        t        t!        t#        d            g dd      }t        |t        t              }	t        |	t        t              }| j                  |j                  |       t        |      5 } |
|       | j                  |d
d j                         g dg dgg       d d d        d
t        fD ]  }t        d	      }t        |      5 }~t        |t        |      }	t        |	      5 }~	t        |t        |      }t        |      5 }~ |
|        |
|        |
|       | j                  |d
   t        d             | j                  |d   t        d             | j                  |d   t        d             ~d d d        ~d d d        ~d d d        t        d	      }t        |      5 }~t        |t        |      }	t        |	      5 }~	t        |t        |      }t        |      5 }~ |
|        |
|        |
|       | j                  |d
   t        d             | j                  |d   t        d             | j                  |d   t        d             ~~~d d d        d d d        d d d         t        d	      }| j                  t              5  t        |      5 }t        |      }|d
   t        d      k(   d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   FxY w# 1 sw Y   vxY w# 1 sw Y   zxY w# 1 sw Y   ~xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xxY w# 1 sw Y   y xY w)Nr  r  r  r[  r  )r6  r   r7  r9   r8   r   r  c                 F    t        |       5 }	 d d d        y # 1 sw Y   y xY wr   rS   )r   r  s     r@   catch22z;TestBufferProtocol.test_memoryview_release.<locals>.catch22  s#    A "  s    r  r   r  r  rt  r   rl  r.   r`  )r[  r6  r   r  r"   r  )r%  rS   r   rt  r~  r  r  ND_REDIRECTrq  r_   r  r  rr  rQ  r  ordr   rl   )rb  rL   rJ   rY  rH  rI  r  r  r`   r  r  rH  r  r  rw  s                  r@   test_memoryview_releasez*TestBufferProtocol.test_memoryview_releaseT  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] 	HaAJQqV]]_	9/E.FG	H
 % #	'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	/ 	/	H 	H   2' '' '' '&" "	" 	"s   <'Z
 3Z=Z>Z1;A5Z$	0	Z19	Z> [#?[A7[	[[#[<[09[<
ZZ!$Z.)Z11Z;6Z>>[	[[[ [##[-	0[9	5[<<\c                 &   t        t        d      D cg c]  }d|z  	 c}dgd      }t        j                  dt        d      D cg c]  }d|z  	 c}      }||fD ]&  }t        |t        t              }t        |t        t              }t        |      }| j                  |j                  |       | j                  |j                  |       | j                  |j                  |       | j                  ||       | j                  ||       | j                  ||       | j                  |dd |dd        | j                  |dd |dd        | j                  |dd |dd        ~~| j                  |dd |dd        ) y c c}w c c}w )Nr  r  r   rl  r  r.   r[  )	r   rl   rQ   r  r  rS   rq  r_   rr  )rb  r`   rY  rL   r  rH  rJ   s          r@   test_memoryview_redirectz+TestBufferProtocol.test_memoryview_redirect  sc   uRy1!cAg1"cJKKuRy9!cAg9:a 	-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                 &   d}g d}| j                  t        t        ddd       t               }t        |      }| j	                  ||d|dddgdg|	       t        d      D ]  }| j                  ||   |        ~~t               }t        |      }~~t               }t        |t        	      }t        |t        	      }t        |      }| j                  |j                  |       | j                  |j                  |       | j	                  ||d|dddgdg|	       ~~~~t               }t        |t        t        
      }t        |t        t        
      }t        |      }| j                  |j                  |       | j                  |j                  |       | j                  |j                  |       | j	                  ||d|dddgdg|	       ~~~~t        d      }t        |      }| j	                  |d d|dddgdg|	       t        d      D ]  }| j                  ||   |        ~~t        d      }t        |      }~~t        d      }t        |t        	      }t        |t        	      }t        |      }| j                  |j                  d        | j                  |j                  |       | j	                  ||d|dddgdg|	       ~~~~t        d      }t        |t        t        
      }t        |t        t        
      }t        |      }| j                  |j                  d        | j                  |j                  |       | j                  |j                  |       | j	                  ||d|dddgdg|	       ~~~~y )Nr   )r   r.   r"   r[  r6  r   r7  r9   r8   r  rq   r  r.   r"   r[  Tr  r  r  r  )legacy_mode)rt  rR  staticarrayrS   r  rl   rr  r   r  rq  r_   r  )rb  r=   rm   r`   r  r   rH  rJ   s           r@   $test_memoryview_from_static_exporterz7TestBufferProtocol.test_memoryview_from_static_exporter  sd   ) 	)[!Q: MqMA1C$2$ 	 	 r 	&AQqT1%	&MqMMAm,Am,qMaeeQaeeQA1C$2$ 	 	 q!QMAm;?Am;?qMaeeQaeeQaeeQA1C$2$ 	 	 q!Q D)qMA4C$2$ 	 	 r 	&AQqT1%	&D)qMD)Am,Am,qMaeeT"aeeQA1C$2$ 	 	 q!QD)Am;?Am;?qM 	aeeT"aeeQaeeQA1C$2$ 	 	 q!Qrb   c                 r    t        g ddgt        t        z        }| j                  t        t
        |       y )Nr  r[  r  )r   r  ND_GETBUF_UNDEFINEDrt  r~  rS   rg  s     r@   #test_memoryview_getbuffer_undefinedz6TestBufferProtocol.test_memoryview_getbuffer_undefinedJ  s,     Wqc8K)KL+z26rb   c                 d    t        g ddgt              }| j                  t        t        |       y )Nr  r[  r  )r   r  rt  r~  rS   )rb  r`   s     r@   test_issue_7385z"TestBufferProtocol.test_issue_7385P  s$    GA3n=+z15rb   c                     dD ]:  }| j                  t        j                  |      t        j                  |             < y )N)rB   ii3s)rr  	_testcapiPyBuffer_SizeFromFormatr:   r  )rb  r  s     r@   test_pybuffer_size_from_formatz1TestBufferProtocol.test_pybuffer_size_from_formatT  s:     ' 	6FY>>vF#__V46	6rb   NF)Vr  r  r  rc  r  r  r   requires_resourcer  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r)  r+  r3  r5  r=  r@  rI  rM  rZ  r\  rb  rd  rh  rk  rm  ro  rq  rv  r|  r  r  r  r  r  r  r  r  r  r  r  r  
contextlibcontextmanagerr  r  r"  r%  r3  rA  rJ  rT  rX  rZ  r\  rc  rh  rt  rv  rx  r~  r  r  r  r  r  r  r  r  r  r  r  cpython_onlyr  r   rb   r@   r]  r]    s@   1 "'UJX.,` W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 Wu%R0 &R0h9<3A I I3AjkIZ6&p<?|3=j=!~F+P44(8<|FP_"B"46B&:&!P!8Fs(j)<:2x~"@-0\|76 6 6rb   r]  c                       e Zd Zd Zd Zd Zd Zd Zd Z e	j                  edu d      d	        Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestPythonBufferProtocolc                      G d d      }t         |             }| j                  |j                         d       | j                  t         |             d       y )Nc                       e Zd Zd Zy)5TestPythonBufferProtocol.test_basic.<locals>.MyBufferc                     t        d      S Nr{  r  rb  r  s     r@   
__buffer__z@TestPythonBufferProtocol.test_basic.<locals>.MyBuffer.__buffer___      !(++rb   Nr  r  r  r  r   rb   r@   MyBufferr  ^      ,rb   r  r{  )rS   rr  r/  rZ   )rb  r  r  s      r@   
test_basicz#TestPythonBufferProtocol.test_basic]  sG    	, 	, 
#x0xz*H5rb   c                      G d d      }| j                  t        t         |               G d d      }| j                  t        t         |               G d d      }| j                  t        t         |              y )Nc                       e Zd Zd Zy)ETestPythonBufferProtocol.test_bad_buffer_method.<locals>.MustReturnMVc                      y)Nr  r   r  s     r@   r  zPTestPythonBufferProtocol.test_bad_buffer_method.<locals>.MustReturnMV.__buffer__h  s    rb   Nr  r   rb   r@   MustReturnMVr  g  s    rb   r  c                       e Zd Zd Zy)FTestPythonBufferProtocol.test_bad_buffer_method.<locals>.NoBytesEitherc                      yr  r   r  s     r@   r  zQTestPythonBufferProtocol.test_bad_buffer_method.<locals>.NoBytesEither.__buffer__n  s    rb   Nr  r   rb   r@   NoBytesEitherr  m  s     rb   r  c                       e Zd Zd Zy)CTestPythonBufferProtocol.test_bad_buffer_method.<locals>.WrongArityc                     t        d      S r  r  ra  s    r@   r  zNTestPythonBufferProtocol.test_bad_buffer_method.<locals>.WrongArity.__buffer__t  r  rb   Nr  r   rb   r@   
WrongArityr  s  r  rb   r  )rt  rR  rS   )rb  r  r  r  s       r@   test_bad_buffer_methodz/TestPythonBufferProtocol.test_bad_buffer_methodf  sb    	 	 	)Z@	  	  	)ZA	, 	, 	)Z>rb   c                 H    G d d      } |       }| j                  |j                         t        |      5 }| j                  |j                         | j	                  |j                         d       d d d        | j                  |j                         y # 1 sw Y   %xY w)Nc                       e Zd Zd Zd Zd Zy)CTestPythonBufferProtocol.test_release_buffer.<locals>.WhatToReleasec                 2    d| _         t        d      | _        y NFr{  )heldr%  bara  s    r@   r  zLTestPythonBufferProtocol.test_release_buffer.<locals>.WhatToRelease.__init__{  s    !	#H-rb   c                 h    | j                   rt        d      d| _         t        | j                        S Nzalready heldT)r  rR  rS   r  r  s     r@   r  zNTestPythonBufferProtocol.test_release_buffer.<locals>.WhatToRelease.__buffer__  s*    99#N33 	!$''**rb   c                     d| _         y NF)r  rb  r#  s     r@   __release_buffer__zVTestPythonBufferProtocol.test_release_buffer.<locals>.WhatToRelease.__release_buffer__  s	    !	rb   Nr  r  r  r  r  r  r   rb   r@   WhatToReleaser  z  s    .+"rb   r  r{  rK  r  rS   r  rr  r/  rb  r  wrr  s       r@   test_release_bufferz,TestPythonBufferProtocol.test_release_buffery  s    	" 	" _!^ 	5rOOBGG$RZZ\84	5 	!	5 	5   <BB!c                 H    G d d      } |       }| j                  |j                         t        |      5 }| j                  |j                         | j	                  |j                         d       d d d        | j                  |j                         y # 1 sw Y   %xY w)Nc                       e Zd Zd Zd Zd Zy)ITestPythonBufferProtocol.test_same_buffer_returned.<locals>.WhatToReleasec                 @    d| _         t        d      | _        d | _        y r  )r  r%  r  
created_mvra  s    r@   r  zRTestPythonBufferProtocol.test_same_buffer_returned.<locals>.WhatToRelease.__init__  s    !	#H-"&rb   c                     | j                   rt        d      d| _         t        | j                        | _        | j                  S r  )r  rR  rS   r  r  r  s     r@   r  zTTestPythonBufferProtocol.test_same_buffer_returned.<locals>.WhatToRelease.__buffer__  s5    99#N33 	",TWW"5&rb   c                 2    || j                   u sJ d| _        y r  )r  r  r  s     r@   r  z\TestPythonBufferProtocol.test_same_buffer_returned.<locals>.WhatToRelease.__release_buffer__  s    000!	rb   Nr  r   rb   r@   r  r    s    '
'"rb   r  r{  r  r  s       r@   test_same_buffer_returnedz2TestPythonBufferProtocol.test_same_buffer_returned  s    	" 	"" _!^ 	5rOOBGG$RZZ\84	5 	!	5 	5r  c                 4    G d d      } |dd      } |dd      }t         j                  |t        j                  j                        5 }| j                  |j                         d       t        d      |d<   | j                  |j                         d       d d d        t         j                  |t        j                  j                        5 }| j                  |j                         d       | j                  t              5  t        d	      |d<   d d d        | j                  |j                         d       d d d        t         j                  |t        j                  j                        5 }| j                  |j                         d       | j                  t              5  t        d      |d<   d d d        | j                  |j                         d       d d d        | j                  t              5  t         j                  |t        j                  j                         d d d        t        |      5 }| j                  |j                         d       | j                  t              5  t        d      |d<   d d d        | j                  |j                         d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   &xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)
Nc                       e Zd ZddZd Zy)CTestPythonBufferProtocol.test_buffer_flags.<locals>.PossiblyMutableNc                 2    t        |      | _        || _        y r   )r%  _data_mutable)rb  datamutables      r@   r  zLTestPythonBufferProtocol.test_buffer_flags.<locals>.PossiblyMutable.__init__  s    &t_
 'rb   c                     |t         j                  j                  z  r,| j                  st	        d      t        | j                        S t        t        | j                              S )Nznot mutable)inspectBufferFlagsWRITABLEr  r  rS   r  rZ   r  s     r@   r  zNTestPythonBufferProtocol.test_buffer_flags.<locals>.PossiblyMutable.__buffer__  sK    7..777==*=99%djj11%eDJJ&788rb   )returnN)r  r  r  r  r  r   rb   r@   PossiblyMutabler    s    (9rb   r  r{  TFr  r   s   xello   h)rS   _from_flagsr  r  r  rr  r/  r  SIMPLErt  rR  r  )rb  r  r  	immutabler  s        r@   test_buffer_flagsz*TestPythonBufferProtocol.test_buffer_flags  sy   	9 	9 "(D1#He4	##GW-@-@-I-IJ 	5bRZZ\84IBqERZZ\84	5 ##GW-@-@-G-GH 	5BRZZ\84""9- "D	1"RZZ\84		5
 ##Iw/B/B/I/IJ 	5bRZZ\84""9- "D	1"RZZ\84		5 |, 	L""9g.A.A.J.JK	L	" 	5bRZZ\84""9- "D	1"RZZ\84		5 	5#	5 	5" "	5 	5" "	5 	5	L 	L" "	5 	5s   AJ56KK(K36K))K8(K)=/K6?6L5L(L5J?K	KKK&	!K))K36K?L	LLc                 6   t        d      }|j                  d      }| j                  |j                         d       |j	                  |       | j                  t              5  |j                  t        j                  dz          d d d        y # 1 sw Y   y xY w)Nr{  r   r.   )	r%  r  rr  r/  r  rt  r  rV  r  )rb  r  r  s      r@   test_call_builtinsz+TestPythonBufferProtocol.test_call_builtins  su    x ]]1x0
b!}- 	+MM#++/*	+ 	+ 	+s   ##BBNzrequires _testcapic                    t        j                         }| j                  |j                  d       |j	                  d      }| j                  |t               | j                  |j                         d       | j                  |j                  d       |j                  |       | j                  |j                  d       | j                  t              5  |j                          d d d        | j                  t              5  |j                  |       d d d        | j                  |j                  d       y # 1 sw Y   UxY w# 1 sw Y   2xY w)Nr   s   testr.   )r  testBufrr  
referencesr  assertIsInstancerS   r/  r  rt  r   )rb  r)  r  s      r@   test_c_bufferz&TestPythonBufferProtocol.test_c_buffer  s   !+^^Ab*-w/+r"+z* 	JJL	 z* 	'""2&	'+	 		' 	's   D;E;EEc                      G d dt               } |d      }t        |      }| j                  |j                         d       y )Nc                        e Zd Z fdZ xZS )4TestPythonBufferProtocol.test_inheritance.<locals>.Ac                 "    t         |   |      S r   superr  rb  r  r/  s     r@   r  z?TestPythonBufferProtocol.test_inheritance.<locals>.A.__buffer__      w)%00rb   r  r  r  r  __classcell__r/  s   @r@   rj  r	        1 1rb   rj  r{  r%  rS   rr  r/  )rb  rj  rL   r  s       r@   test_inheritancez)TestPythonBufferProtocol.test_inheritance  s8    	1	 	1 hK]x0rb   c                    d G fddt               } |d      }t        |      5 }| j                  |j                         d       | j                  d       d d d        | j                  d       y # 1 sw Y   xY w)Nr   c                   ,     e Zd Z fdZ fdZ xZS )BTestPythonBufferProtocol.test_inheritance_releasebuffer.<locals>.Bc                 "    t         |   |      S r   r  r  s     r@   r  zMTestPythonBufferProtocol.test_inheritance_releasebuffer.<locals>.B.__buffer__  r  rb   c                 .    dz  t         |   |       y )Nr.   r  r  )rb  viewr/  rb_call_counts     r@   r  zUTestPythonBufferProtocol.test_inheritance_releasebuffer.<locals>.B.__release_buffer__  s    "*40rb   r  r  r  r  r  r  )r/  r  s   @r@   r   r    s    11 1rb   r   r{  r.   r  )rb  r   r   r  r  s       @r@   test_inheritance_releasebufferz7TestPythonBufferProtocol.test_inheritance_releasebuffer  su    	1	 	1 hK] 	/bRZZ\84]A.	/ 	*	/ 	/s   3A66A?c                     G d dt               } |d      }t        |      5 }| j                  |j                         d       d d d        dd G fddt               } |d      }t        |      5 }| j                  |j                         d       | j                  d       d d d        | j                  d       | j	                  d	       y # 1 sw Y   xY w# 1 sw Y   :xY w)
Nc                       e Zd Zd Zy)JTestPythonBufferProtocol.test_inherit_but_return_something_else.<locals>.Ac                     t        d      S r  r  r  s     r@   r  zUTestPythonBufferProtocol.test_inherit_but_return_something_else.<locals>.A.__buffer__  r  rb   Nr  r   rb   r@   rj  r!    r  rb   rj  r{  r   Fc                   *     e Zd Zd Z fdZ xZS )JTestPythonBufferProtocol.test_inherit_but_return_something_else.<locals>.Bc                     t        d      S r  r  r  s     r@   r  zUTestPythonBufferProtocol.test_inherit_but_return_something_else.<locals>.B.__buffer__  r  rb   c                 R    dz  	 t         |   |       y # t        $ r dY y w xY w)Nr.   T)r  r  r   )rb  r  r/  r  	rb_raiseds     r@   r  z]TestPythonBufferProtocol.test_inherit_but_return_something_else.<locals>.B.__release_buffer__  s3    "%G.t4! % $I%s    &&r  )r/  r  r'  s   @r@   r   r$    s    ,% %rb   r   r.   T)r%  rS   rr  r/  rq  )rb  rj  rL   r  r   r   r  r'  s         @@r@   &test_inherit_but_return_something_elsez?TestPythonBufferProtocol.test_inherit_but_return_something_else  s    	,	 	, hK] 	5bRZZ\84	5 	
	%	 
	% hK] 	/bRZZ\84]A.	/ 	*i&-	5 	5$	/ 	/s   !C73C#C #C,c                      G d dt               } |d      }t        |      5 }| j                  |j                         d       d d d        y # 1 sw Y   y xY w)Nc                        e Zd Z fdZ xZS )>TestPythonBufferProtocol.test_override_only_release.<locals>.Cc                 $    t         |   |       y r   r  )rb  r#  r/  s     r@   r  zQTestPythonBufferProtocol.test_override_only_release.<locals>.C.__release_buffer__!  s    *62rb   )r  r  r  r  r  r  s   @r@   r   r+     s    3 3rb   r   r{  r  )rb  r   r   r  s       r@   test_override_only_releasez3TestPythonBufferProtocol.test_override_only_release  sM    	3	 	3 hK] 	5bRZZ\84	5 	5 	5s   !AAc                 T    d  G  fddt               } |d      }t        |      5 } j                  |j                         d       d d d        |j	                           j                  t              5  j                          d d d        y # 1 sw Y   HxY w# 1 sw Y   y xY w)Nc                   *     e Zd Zdef fdZ xZS )@TestPythonBufferProtocol.test_release_saves_reference.<locals>.Cr#  c                    j                  t              5  t        |       d d d        j                  t              5  |j                  d       d d d        j                  t              5  |j	                          d d d        j                  t              5  |d d  d d d        j                  t              5  |j                  d       d d d        |j                  |j                         d       t        | %  |       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   kxY w)Nr   r.   r   r{  )
rt  r   rS   re  r  r  rr  r/  r  r  )r   r#  r/  rb  smuggled_buffers     r@   r  zSTestPythonBufferProtocol.test_release_saves_reference.<locals>.C.__release_buffer__,  s   &&z2 'v&'&&z2 %KK$%&&z2 (%%'(&&z2 2AJ&&z2 )%%a() #)  !18<*62' '% %( ( ) )s;   D D/D$D0 D<DD!$D-0D9<E)r  r  r  rS   r  r  )r/  rb  r2  s   @r@   r   r0  +  s    3j 3 3rb   r   r{  )r%  rS   rr  r/  clearrt  r   )rb  r   r   r  r2  s   `   @r@   test_release_saves_referencez5TestPythonBufferProtocol.test_release_saves_reference(  s    	3	 	3" hK] 	5bRZZ\84	5		z* 	&##%	& 	&	5 	5	& 	&s   !B8BBB'c                    t        d       G fdd      } |       }t        |      5 }| j                  |j                         d       d d d        | j                  |j                  j                         d       | j                  t              5  j                          d d d        |j                  j                          j                          y # 1 sw Y   xY w# 1 sw Y   @xY w)Nr{  c                       e Zd Z fdZd Zy)OTestPythonBufferProtocol.test_release_saves_reference_no_subclassing.<locals>.Cc                     t              S r   r  )rb  r  r  s     r@   r  zZTestPythonBufferProtocol.test_release_saves_reference_no_subclassing.<locals>.C.__buffer__G  s    !"~%rb   c                     || _         y r   r#  r  s     r@   r  zbTestPythonBufferProtocol.test_release_saves_reference_no_subclassing.<locals>.C.__release_buffer__J  	    $rb   Nr  r  r  r  r  )r  s   r@   r   r7  F  s    &%rb   r   )	r%  rS   rr  r/  r#  rt  r~  r3  r  )rb  r   r   r  r  s       @r@   +test_release_saves_reference_no_subclassingzDTestPythonBufferProtocol.test_release_saves_reference_no_subclassingC  s    x 	% 	% C] 	5bRZZ\84	5))+X6{+ 	HHJ		

	5 	5	 	s   !CC#C #C,c                 4    G d d      } G d d|t               } |d      }t        |      5 }| j                  |j                         d       d d d         G d d      } G d	 d
|t               } |d      }t        |      5 }| j                  |j                         d       d d d        |j	                          | j                  t              5  |j                  j                          d d d        y # 1 sw Y   xY w# 1 sw Y   ^xY w# 1 sw Y   y xY w)Nc                       e Zd Zd Zy)ITestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.Ac                     t        d      S )N   hello Ar  r  s     r@   r  zTTestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.A.__buffer__Y  s    !*--rb   Nr  r   rb   r@   rj  r@  X  s    .rb   rj  c                        e Zd Z fdZ xZS )ITestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.Bc                 "    t         |   |      S r   r  r  s     r@   r  zTTestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.B.__buffer__]  r  rb   r  r  s   @r@   r   rD  \  r  rb   r   r{  rB  c                       e Zd Zd Zy)PTestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.Releaserc                     || _         y r   r:  r  s     r@   r  zcTestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.Releaser.__release_buffer__e  r;  rb   N)r  r  r  r  r   rb   r@   ReleaserrG  d  s    %rb   rI  c                        e Zd Z fdZ xZS )ITestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.Cc                 "    t         |   |      S r   r  r  s     r@   r  zTTestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.C.__buffer__i  r  rb   r  r  s   @r@   r   rK  h  r  rb   r   s   hello C)r%  rS   rr  r/  r3  rt  r   r#  rb  rj  r   r   r  rI  r   r   s           r@   %test_multiple_inheritance_buffer_lastz>TestPythonBufferProtocol.test_multiple_inheritance_buffer_lastW  s    	. 	.	19 	1 hK] 	7bRZZ\:6	7	% 	%	1) 	1 jM] 	7bRZZ\:6	7		z* 	HH	 		7 	7	7 	7	 	s#   !C6!DD6C?DDc                     G d d      } G d dt         |      } |d      }t        |      5 }| j                  |j                         d       d d d         G d d      } G d d	t         |      } |d      }t        |      5 }| j                  |j                         d       d d d        |j	                          | j                  |j                  d        y # 1 sw Y   xY w# 1 sw Y   BxY w)
Nc                       e Zd Zd Zd Zy)QTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.Ac                     t        d      Nzshould not be calledr  r  s     r@   r  z\TestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.A.__buffer__u      "#9::rb   c                     t        d      rS  rT  r  s     r@   r  zdTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.A.__release_buffer__x  rU  rb   Nr<  r   rb   r@   rj  rQ  t  s    ;;rb   rj  c                        e Zd Z fdZ xZS )QTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.Bc                 "    t         |   |      S r   r  r  s     r@   r  z\TestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.B.__buffer__|  r  rb   r  r  s   @r@   r   rX  {  r  rb   r   r{  c                       e Zd ZdZd Zy)XTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.ReleaserNc                     || _         y r   r:  r  s     r@   r  zkTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.Releaser.__release_buffer__  r;  rb   )r  r  r  r#  r  r   rb   r@   rI  r[    s    F%rb   rI  c                        e Zd Z fdZ xZS )QTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.Cc                 "    t         |   |      S r   r  r  s     r@   r  z\TestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.C.__buffer__  r  rb   r  r  s   @r@   r   r^    r  rb   r   )r%  rS   rr  r/  r3  rq  r#  rM  s           r@   -test_multiple_inheritance_buffer_last_raisingzFTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raisings  s    	; 	;	1	1 	1 hK] 	5bRZZ\84	5	% 	%
	1	8 	1 hK] 	5bRZZ\84	5		ahh%!	5 	5	5 	5s   !C!C&C#&C/c                      G d d      }t        d      }t        |      5  | j                  t              5  |j	                   |              d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nc                       e Zd Zd Zd Zy)JTestPythonBufferProtocol.test_release_buffer_with_exception_set.<locals>.Ac                 *    t        t        d            S )Nr8   )rS   rZ   r  s     r@   r  zUTestPythonBufferProtocol.test_release_buffer_with_exception_set.<locals>.A.__buffer__  s    !%(++rb   c                      y r   r   )rb  r  s     r@   r  z]TestPythonBufferProtocol.test_release_buffer_with_exception_set.<locals>.A.__release_buffer__  s    rb   Nr<  r   rb   r@   rj  rc    s    ,rb   rj  r8   )r%  rS   rt  r~  r}  )rb  rj  r   s      r@   &test_release_buffer_with_exception_setz?TestPythonBufferProtocol.test_release_buffer_with_exception_set  sh    	 	 aL] 	"";/ 	 	 	 	s"   A+AA+A(	$A++A4)r  r  r  r  r  r  r  r  r  unittestskipIfr  r  r  r  r(  r-  r4  r=  rN  r`  rf  r   rb   r@   r  r  \  su    6?&","2%5N+ X__Y$&(<=, >, 1+ '<5&6(8&>rb   r  __main__)r   NN)r   r6   r   )r   r6   )r   r   r  )r   )kr  rg  testr   test.supportr   r  	itertoolsr   r   randomr   r   r	   warningsrV  rQ   r  osdecimalr
   	fractionsr   _testbufferImportErrorr   r:   r  EnvironmentVarGuardenvironcatch_warningsrR   r(  r  
SHORT_TESTNATIVEr;   r<   STANDARDrA   rY   r=   copyr   ARRAYr  BYTEFMTrs   ru   rr   ra   rj   rn   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*  r4  r8  r:  r<  r@  r   rI  rM  rZ  r?  rC  rD  
skipUnlessTestCaser]  r  r  main)r   s   0r@   <module>r     sO       "  + , ,     	&	&	&	( 1BJ	 	 	 	"101 1
 


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| 3-c2S3 [[]
 		 A!H ++-	 A:AJ  	.0CD5555 -0(2$ &clD.2C1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T96** T96 G FT96nrAx00 AH
 zHMMO ET  G
  F
  F1 1 1 1  K
  I< << L Es   K> L L M -L5L(L5M M M -M4;M4>L	L	LLL%$L%(L2	-L55L?:M MMMMM10M1