python (3.12.0)

(root)/
lib/
python3.12/
test/
__pycache__/
test_buffer.cpython-312.pyc

͑eBddlZddlZddlmZddlmZddlZddlmZm	Z	ddl
mZmZm
Z
ddlZddlZddlZddlZddlZddlmZddlmZ	ddl	ddlZ	ddlZ	ej85e_ej<5dd	lmZ dddddd	ddl!Z!d
Z"iddddd
dddddddddddddddddddddddddddZ#e re#d=e#d=er	ejHddde#d<de#d<ddd dd!d"d#d$d#d$d%d&d'd%d(d)zd(d)zfd*Z&d+Z'e#e#e&e&e&e&d,Z(ere(d-D]Z)e'e)e(d-e)<e#jUZ+e#jUZ,e#D]
Z-e-d.vse,e-=e#jUZ.e#D]
Z-e-d/vse.e-=e+e(d0<e+e(d1<e,e(d2<e.e(d
<e.e(d3<dZ/d(Z0gd,gd4fd2gd5gfd5gd5gfd1d0gd5gfd3d
gd5gfd6Z1d7Z2d8Z3d9Z4d:Z5drd;Z6d	d<Z7d	d=Z8d>Z9d?Z:e(d-Dcgc]
}e9|r|c}Z;d@Z<dAZ=dBZ>dCZ?dDZ@dEZAdFZBdGZCdHZDdIZEdJZFdKZGdLZHdMZIdNZJdOZKdPZLdQZMdRZNdSZOdTZPdUZQdsdWZRdXZSdYZTdtdZZUd[ZVdud\ZWd]ZXdvd^ZYd_ZZd`Z[daZ\dwdbZ]dwdcZ^dxddZ_dvdeZ`dfZadgZbdVZcdhZde"rdhZbdiZcdjZde^Z[e_Z\e`ZejedkejedlGdmdnejZgGdodpejZheidqk(rejyy#e$rdZYwxYw#e$rdZYwxYw#e$rdZYwxYw#1swYxYw#1swYxYw#e$rdZ YwxYw#e$rdZ!YwxYw#ejJ$rYtwxYwcc}w)yN)support)	os_helper)permutationsproduct)	randrangesamplechoice)Decimal)Fraction)*)ndarrayT?cbBhHiIlLnNefdPQqrr)i)i)ri))rllrii)rrrrrrrrrrr rrrrc|dk(rd}|S|dk(rd}|S|dk(rd}|S|dk(rd}|S|d	k(r
d
dzd
dzf}|SdD] }	tj|d
|zd
z
nd
zrd
|zd
|zfnd
d
|zf}|S#tj$rYQwxYw)zReturn range of a native type.rr#rr!rr-rr)rr.r/)
r%@? r)structpackerror)fmtlhexps   D/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/test/test_buffer.pynative_type_rangerAas
cz
"I!


I


I


I

4j!T'
"I<	C
C!S&!,	%(!G3iC
 !QV
I<<

sA55B
B)@<>=!rC
bBhHiIlLfdBbcm@ma@b)rB123rB)r
arraynumpy
memoryviewbytefmtctt||}|dk(rt|g}|dk(r|dk(rd}|dk(rt|}|dvr/t	j
||}t	j||d}|S)zWReturn random item for a type specified by a mode and a single
       format character.rrRrefdr)rfmtdictbytesboolr:r;unpack)modecharobjxs    r@
randrange_fmtras|	74=&'As{1#J'>a7lAs{Gu}KKa MM$"1%Hc|jd\}}g}|D]}|jt||| t|dk(r|dSt	|S)zReturn single random item.#r.r)splitappendralentuple)r=r_r]charsr`rs      r@gen_itemrjsY))C.KD%
A
.	tQ,-.q6Q;1Q4,E!H,rbcr|dk(rt||Sdg|z}t|D]}t||||<|S)z,Return a list of random items (or a scalar).r)rjrange)rr=r_lstrs     r@	gen_itemsrnsIAvS!!#'C
1X$#s#A$Jrbcvtt|t}|dz}|jd}t	dd}t|D]S}tt
t|}tt|t}||t|r|ndzz
}|||zz
}Ut|||}	t||}
||	|
fS)Nrdambr"
r.)r	capMODEstriprrlrhrYMULTintrnrj)rr_r]xfmtr=nmemb_r^
multiplieritemsitems           r@struct_itemsr}s#c(4.!D#:D
**U
CaE
5\#eGDM*+CHTN+
*J!<<=
T!"	#

as#ED#Dtrbc>|tt|t}|ttt|}tt|t
}|dz|t
|r|ndzz}t|||}t||}|jd|z|z}|||fS)z"Return random format, items, item.rdr.rp)
r	rrrsrhrYrurvrnrjrt)rr_r]r^rzr=r{r|s        r@	randitemsrs|c#htn%|eGDM*+C'J
*tc
*BB
BCac"ECD
**U
j
(4
/Ctrbc#rKt|tD] }t|D]}t||||"yw)z1Iterate through supported mode/char combinations.N)rrrsrYr)rr_r]r^s    r@	iter_modersAC0DM	0DAsD$//	00s57c#^Kt||D]}||dk7ryt||yw)zwYield (format, items, item) for all possible modes and format
       characters plus one random compound format string.r
N)rr})nitemstestobjts   r@iter_formatrs;vw
')
vw
''s+-c"d|vxs
d|vxsd|vS)Nrrr)r=s r@is_byte_formatrs#:11scz1rbcdt|}|dk(xs|dk(xr|ddk(xr||dz
tvS)zformat suitable for memoryviewr.r"rrC)rg
MEMORYVIEW)r=r`s  r@is_memoryview_formatrsBCA
!V
1Q03q6S=
#!H
"$rbc$t|tS)z9Tuple items (representing structs) are regarded as atoms.
isinstancelistrms r@atomprs#t$$$rbc"t|tSNrrs r@listprsc4  rbcLt|dk(ry|d}|ddD]}||z}	|S)zProduct of list elements.rr.N)rg)rmr`vs   r@prodrs<
3x1}AA
W	QHrbc|dk(ry|dk(r<t|dd|gz}t|dz
ddD]}||xx||dzzcc<|S|gt|ddz}td|D]}||xx||dz
zcc<|S)zOCalculate strides of a contiguous array. Layout is 'C' or
       'F' (Fortran).rrCr.Nr")rrl)ndimshapeitemsizelayoutstridesrs      r@strides_from_shapersqy
}uQRy/XJ.tAvr2&	'AAJ'!A#,&J	'N*tE#2J//q$	'AAJ'!A#,&J	'Nrbct|r|St|dk(r|dSdg|dz}|drt||dznd}t|dD]}||z}t||||z|dd||<!|S)zmConvert flat item list to the nested list representation of a
       multidimensional C array with shape 's'.rr.N)rrgrl_ca)r{srmstriderstarts      r@rrs
U|
1v{Qx#!*C#$Q4SZ1Q4
QF
1Q4[7&U5v.!"6A7Jrbct|r|St|dk(r|dSdg|dz}|d}t|dD]}t||d||dd||<|S)zsConvert flat item list to the nested list representation of a
       multidimensional Fortran array with shape 's'.rNr.)rrgrl_fa)r{rrmrrs     r@rr,sy
U|
1v{Qx#!*C
qTF
1Q4[.U19f9%qu-A.Jrbc|t|r&d|vr"t|t|k7rtdt	||SNrzprod(shape) != len(items))rrrg
ValueErrorrr{rs  r@carrayr97U|AJ4;#e*+D455uerbc|t|r&d|vr"t|t|k7rtdt	||Sr)rrrgrrrs  r@farrayr>rrbcL|Dcgc]
}t|}}t|Scc}w)z(Generate all possible tuples of indices.)rlr)rr	iterabless   r@indicesrCs)#()aq)I)I*s!cFd}t|D]}|||||zz
}|S)zAConvert multi-dimensional index to the position in the flat list.rrl)rindrretrs     r@getindexrHs6
C
4[#wqzCF""#Jrbc|s|St|}t||dd}t||ddddd}dgt|z}t|D]*}t|||}t||ddd|}||||<,|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.rNrr)rgrrr)	srcrrsstridesdstridesdestrfrtos	         r@	transposerOs
u:D!$q#6H!$ddQ<H
3S>Du~
dC
*
dC"Ix
0r7RKrbcf|gk(r|St|r|gSt|dt|ddzS)zflatten listrr.Nr_flattenrs r@rr^s;
by
SzuCFhs12w///rbc2t|r|St|S)zflatten list or return scalarrrs r@flattenrfsSz
C=rbcft|rgSt||dgt|d|ddzS)zMGet the shape of lst after slicing: slices is a list of slice
       objects.rr.N)rrgslice_shape)rmslicess  r@rrls<
Sz	F1I ;s1vvabz#BBBrbc	lt|r|S||dDcgc]}t||ddc}Scc}w)z=Multi-dimensional slicing: slices is a list of slice objects.rr.N)r
multislice)rmrsublsts   r@rrss7Sz
9<VAYHvJvvabz*HHHs1ct|r|St||d||dDcgc]\}}t|||dd|dd}}}|||d<|Scc}}w)aMulti-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)
    rr.N)rzipm_assign)llstrlstlslicesrslicesrrs      r@rrys}
T{D,d71:.>?A1
Q712;4ADADKAsAct||}t||}t|t|k7rytt|D]}||||k7ry||dk(syy)z9Compare the structure of llst[lslices] and rlst[rslices].rr)rrgrl)rrrrlshapershapers       r@
cmp_structurersk
w
'F
w
'FFs6{"
3v;
!9q	!!9>	

rbcVt||||dkrtdt||||S)z:Return llst after assigning: llst[lslices] = rlst[rslices]rz+lvalue and rvalue have different structures)rrr)rrrrs    r@multislice_assignrs2T4'2Q6FGGD$11rbc.|zry|dks|z|kDrytfdDry|dkr|dk(xrxrSdvrytfdt|D}tfdt|D}d||zkxr||zz|kS)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
    Frc3(K|]	}|zywrr).0rrs  r@	<genexpr>z#verify_structure.<locals>.<genexpr>s
)A1x<
)sTc3JK|]}|dkr||dz
zywrr.Nrrjrrs  r@rz#verify_structure.<locals>.<genexpr>s4#1!*/qz58A:&# #c3JK|]}|dkDr||dz
zywrrrs  r@rz#verify_structure.<locals>.<genexpr>s4"1!*q.qz58A:&"r)anysumrl)memlenrrrroffsetiminimaxs ` ``   r@verify_structurers
zVH_v-

)
))qyqy6Y6w;6Ez#d##D"d""D
t>tH 4 >>rbc|D]}||}	|Srr)rmrrs   r@get_itemrs
!fJrbcX|\}}}}}}|}t|D]}	|||	||	zz
}|S)z-Location of an item in the underlying memory.r)
rrrrrrrrprs
          r@memory_indexrsH562FHdE7FA
4[#	WQZ

""#Hrbcz|\}}}}}}d|z}t|D]}t||}	d|	z}
||
zry||
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)rr)rrrrrrrvisitedrrbits           r@is_overlappingrs_672FHdE7FiGu~a dS=3rbcst|dz}|dk(r6|r|||dddfStdd}||z}tddk(r|n|}|||dd|fSd}	td}
|
dk\r|rd}	n|
dk\rd}	dg|zt|D]}t|	|dz|<nt}d	}td}
|
dk\r|
dzrd
nd}
dg|z|t||dzz|dz
<|
s|dz
dk(r||dz
<t|dz
ddD]T}||dzr|dzndz}|
r|t||dzz|<1d
td|ztd|dzz|<Vdx}}dvr<tfdt|D}tfdt|D}||z
}|r||z}||dz|zz}n||z|z}tddk(r||z
n|}||||fS)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.rrr"d_ZrTFrr.rc3JK|]}|dkr||dz
zywrrrs  r@rz!rand_structure.<locals>.<genexpr> s4'qajAo1:uQxz*'rc3JK|]}|dkDr||dz
zywrrrs  r@rz!rand_structure.<locals>.<genexpr>"s4&qaj1n1:uQxz*&r)rrlrgr)rvalidmaxdimmaxshaperrrrrminshaperr	maxstridezero_striderrrs    `           @r@rand_structurerst"AI4R::"1d+(*&/la&7(Vxr2v==cN7uH
"WHd
t	7A 8A:6E!H	75zI#Ar'a!e$KcDjGI:y{!CCGDFO746?a/"Q
462r
"@51:U1Q3Z14	!Iyj)A+$FFGAJ 1."#%.q)A+%>?GAJ@OD4:'E$K''&E$K&&D[F!46X--%$,(*#,Q<1#4$x&8T5'699rbc||z
}t|dz}|r||z
|znd}td|dz}|||zz}t|||}t||\}}}}	|	|k7rt|S)z=Create a random slice of len slicelen that fits into listlen.r.)rslice
slice_indicesRuntimeError)
slicelenlistlenmaxstartrmaxstepstepstoprrycontrols
          r@randslice_from_slicelenr.s!Hhqj!E/7w8+QGQ	"D8d?"D
eT4 A$Q0Aq!W(Hrbcdg|z}dg|z}t|D];}||}|dkDrtd|dznd}t||||<t||||<=t|t|fS)zxCreate two sets of slices for an array x with shape 'shape'
       such that shapeof(x[lslices]) == shapeof(x[rslices]).rr.)rlrrrh)rrrrrrrs       r@randslice_from_shaper;scDjGcDjG
4[:!H()A9Q!$1,Xq9
,Xq9
	:
>5>))rbctd|dz}d}td}|dk\rd}n|dk\rd}tddk\rdnd	}dg|z}dg|z}dg|z}dg|z}	t|D]}t||dz}
t||dz}||
kr|
|}
}|r]t|
|
dz}t|
|
dz}
d
tdtd|
dzz}t||
|}t||
\}}}}n"|
dkDrtd|
dznd}t	||
}t	||}tddk(r||
c||<||<||c|	|<||<|
|c||<||<||c|	|<||<||t|t|	fS)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"rrrrPTFr)rrlrrrrh)rrrrr
all_randomrrrrsmallbigrr
rs_smallryrs_bigs                   r@rand_aligned_slicesrGsQq!DH#ABw	
b"32-5JSXFDvc$hG1#d(
4[4(HQJ/(1*-;CufeAg.EeVU1W-D)A,')AuQw*??DE4.G -gu =Aq!X05	yE!G,qH-h>G(#6Q<1#& F1Ivay%*G"GAJ
#(# F1Ivay%,e"GAJ
14465>5>99rbc:|\}}}}}}t||zd|zdS)zMReturn a list of random items for structure 't' with format
       'fmtchar'.rdrR)rn)r=rrrrys     r@randitems_from_structurerrs.$% FHaAqVX%s3w88rbc	D|\}}}}}}	t|||||	t|zS)z:Return ndarray from the tuple returned by rand_structure()rrformatrflags)r
ND_WRITABLE)
r{r=rrrrrrrrs
          r@ndarray_from_structurer!xs3562FHdE7F5ws E(9;;rbc|\}}}}}}t|}	t|D] \}
}tj||	|
|z|"t	|	||||S)z>Return numpy_array from the tuple returned by rand_structure())bufferrrdtyper)	bytearray	enumerater:	pack_intonumpy_array)r{r=rrrrrrrbufrrs            r@numpy_array_from_structurer*~sf562FHdE7F
F
C% 21c1X:q12c 11rbc|j}|rt||z|k7r<d|fS|gk(r|jdk(s||k7rd|fSt||\}}|g}|dk7rd|fS|j	}tdt
||Dcgc]
}||||z}	}g}
|	D]7}tj||d}||k7rd|fcS|
j|9|gk7r|
|fS|
d|fScc}w)aInterpret 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).Nrnan)
nbytesrrdivmodtobytesrlrgr:r\rf)
exporterr=rrbytelenrrmemr	byteitemsr{rr|s
             r@
cast_itemsr4sooG;!W,;	"==AW!4;gx(16;



C,1!SXx,HIqQqz"IIIE
}}S!$Q'4<%<
T	#b[E5>?uQx.??JsC#c#VKtdD]}|g	tdd}tddkDrdnd}t|Dcgc]}t|dc}tdd}tddkDrdnd}t|Dcgc]}t|dc}y	cc}wcc}ww)
z Generate shapes to test casting.r4rrr.r"rN)rlr)rrrrys    r@
gencastshapesr8s
2Yc	Q?DcNR'qQH+0;
7a9Xq!
77Q?DcNR'qQH+0;
7a9Xq!
7788sAB)B0B)B$B)c	ptt||dzt||dzt||dzS)z4Generate all possible slices for a single dimension.r.)rrl)rs r@	genslicesr:s55!QqS>5!QqS>5!QqS>BBrbcdt|Dcgc]}t||}}t|Scc}w)z/Generate all possible slice tuples for 'shape'.)rlr:r)rrrrs    r@genslices_ndimr<s2.3Dk:58$:I:I;s-cN|s|dk(rdnd}t||dz}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.rr.)rr)rallow_emptyminlenrs    r@rslicer@s0aQQF1%H"8Q//rbc#HKtdD]}t||yw)z.Generate random slices for a single dimension.rN)rlr@)rr>rys   r@rrs&
1X%Q$$%s "c#Kt|D]!}tfdt|D#t|D]!}tfdt|D#tdt|Dyw)z)Generate random slice tuples for 'shape'.c3:K|]}t|ywrr@rrrs  r@rzrslices_ndim.<locals>.<genexpr>s:F58$:sc3>K|]}t|dyw)T)r>NrDrEs  r@rzrslices_ndim.<locals>.<genexpr>sL1F5866Lsc36K|]}tdddywr)r)rrys  r@rzrslices_ndim.<locals>.<genexpr>s2a!2sN)rlrh)rr
iterationsrys `  r@rslices_ndimrIsv:
;:eDk:::;:
MLdLLLM2eDk2
22sA=Bc#nKt|}|t|n|}tt||ywr)rhrgr)iterablerpools   r@rpermutationrMs/?DYD	AA
tQ
  s35c	|j}t	|t
r|j}|j}nd}d}td|d|jd|jd|jd|d|jd|jd	|d
tjj!y#ttf$r|j}YwxYw)zPrint ndarray for debugging.unknownzndarray(z, shape=z
, strides=z
, suboffsets=z	, offset=z
, format='z', itemsize=z, flags=)N)tolist	TypeErrorNotImplementedErrorr/rr
rrprintrr
suboffsetsrrsysstdoutflush)ndr`rrs    r@
ndarray_printrZsIIK"g	bhh

BMM6
99bkk5*+JJ
*+JJLsB44CCrrqr6z%struct module required for this test.z%ndarray object required for this testceZdZdZddddZdRdZejddZdZ	d	Z
d
ZdZdZ
d
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ d Z!d!Z"d"Z#d#Z$d$Z%d%Z&d&Z'd'Z(d(Z)d)Z*d*Z+ejXZ,d+Z-d,Z.d-Z/d.Z0d/Z1ejdd0Z2d1Z3d2Z4d3Z5e6jnd4Z8d5Z9d6Z:d7Z;d8Z<d9Z=d:Z>d;Z?d<Z@d=ZAd>ZBd?ZCd@ZDdAZEdBZFdCZGdDZHdEZIdFZJdGZKdHZLdIZMdJZNdKZOdLZPdMZQdNZRdOZSejdPZUyQ)STestBufferProtocolc"t|_yr)get_sizeof_void_p
sizeof_void_pselfs r@setUpzTestBufferProtocol.setUps
.0rbF)slicedcastc

,	
'()rtz(nst	(n(d)jrjdd}t	dD]'}
|
dk(rn|
dks||
|
dz
zz
})|gt	dz
Dcgc]}dc}z)j
}ddkr|}|gt
ddzjj|jj(jjjjjj|jjjjt!
r)s%jj"t!jjt!)t%t&st)r4rj+nj-}j|	sy|st/}d}t1D]{}	t3|}t5	|}t%|t rt7j8g|}nt7j8|}|j;|j||}|sjjj-|t?}djAd|D}j|jC|rnd}tE	}d	D]}}|d
k(r8tGdrtGdrKtI|}t'||tJ
}n+tGdrtGd
r|dk(rt'||}tMtN|}j|j-|jQtS||dk(rt|}|rdntT} tWdtX}jt||zt	|D
cgc]}
t7jZ||
z}!}
t|!ddk(r|!Dcgc]}|d	}!}t'|!| }"jt?|"t?t?j-}#j|#|t?j-d}#j|#|t?j-d}#j|#|tWd
tX}jt||zt	|D
cgc]}
t7jZ||
z}!}
t|!ddk(r|!Dcgc]}|d	}!}t'|!| tJz}"jt?|"t?t?j-d
}#j|#|tWdtX}jt||zt	|D
cgc]}
t7jZ||
z}!}
t|!ddk(r|!Dcgc]}|d	}!}tGd
rtJnd}$t'|!|$| z}"jt?|"t?t?j-d}#j|#|t)rx	t?}t%t>rjn'|f'(	
)fd	}%|%||j]5}&|%|&dddd|j-yycc}w#t<$rd}YwxYwcc}
wcc}wcc}
wcc}wcc}
wcc}w#t<$rYywxYw#1swY`xYw)Nrrr.rTrBc3&K|]	}d|zyw)z%02xNr)rrs  r@rz,TestBufferProtocol.verify.<locals>.<genexpr>\s21FQJ2srrFArirjrrrrrrrrrordercR
j|j
j|j
j|j
j|j

j|j|
j|j
j|jtrs%
j|jt

j|jtdk(r
jtt|n$
jt|tr	jn	j!}
j|
j|	y)Nr)assertIsr_assertEqualr-rrreadonlyrrrhrrUassertRaisesrRrgrQr/)rJexpected_readonlyrepexexpected_lenr=rrmrresultrbrrdrrUs   r@check_memoryviewz3TestBufferProtocol.verify.<locals>.check_memoryviews/

aeeR(  <8  X6  3/  ->?  .  %,7:$$QYYg?  uZ/@A19%%ia8$$SVSX6),fmmo&..2B  c*  F+rb)ru)/rrgrU
assertGreaterrlr`rrqr_rrr-rrrsrrrhrrr
rrQr/r%rget_pointerrr:r;extendBufferErrorrSjoinhexr
is_contiguousr
ND_FORTRANget_contiguous
PyBUF_READ
assertTrue
cmp_contigr py_buffer_to_contiguous
PyBUF_FULL_ROunpack_from
toreadonly)*rbryr_rr=rsrrrrmrdre
suboffset0rrstride0rvrbuf_errritem1item2r`rJrff	flattenedroexpectedtranscontigrxroinitlstycontig_bytesrrzmmrwrxrUs*`` `` `````                            @@@r@verifyzTestBufferProtocol.verifysr
;x/L"3x'
tQ'J1d^
=8q=1:?71:+q!"<<J	
=%U46](C(CCJ((GqzA~"(i$wqr{"33G

fjj#&5(3,

foox0d+uU|4:V^^U7^<**E*,=>fg&*>s*C%(&--/fnn.>CS#&AGu~
/
'4E$S#.E!%/"KK4e4"KKU3HHQK  .
/  !115v&GG222  !, SS#CL	
-M;E%H|,VS9(5%.i$?E'.uE"5?(AH -VS9(5%3,'.yb'QH+FJFF$$V^^%5q9OOJvx$@Aqy 	NE&KB5VS-PF$$S[%(2BC(-e6#$ &11#vqzJ6G671:!+18"9A1Q4"9"9uBsKA$$Z]Jv4FG#-f#5#=#=#?L$$\6:#-f#5#=#=D#=#IL$$\6:#-f#5#=#=C#=#HL$$\6:5VS-PF$$S[%(2BC(-e6#$ &11#vqzJ6G671:!+18"9A1Q4"9"9uBzM'*,A$$Z]Jv4FG#-f#5#=#=C#=#HL$$\6:5VS-PF$$S[%(2BC(-e6#$ &11#vqzJ6G671:!+18"9A1Q4"9"9&3FC&@
aAuAbDMA$$Z]Jv4FG#-f#5#=#=C#=#HL$$\6:[M;^ $
v& *&*=6B6>
,
,
,*
Q
=2 t<
=
IIK?%c)DX#"Gl6#:"6#:6#:

4
=
=s[	_A&_
!__"!_'_,!_19_6
_; `

__;	``
`cd}|jr
||ts||tr|jr~||tr|j
re||tr|jrL||ts|js3||ts|jr||ts+||tr|jtt||yt!|tst#|j$r|j'}n!t|t(}|j'}||trdn|j}|j$}	|j*}
|j,}||tsd}	|j/}||tsd}||tr|j0nd}||tr|j2nd}
t||}|j5|||
|	||||
||
y)Nc||z|k(Srr)reqflags  r@matchz/TestBufferProtocol.verify_getbuf.<locals>.matchsX$&'rbgetbufFrBr.r)	r_rr=rsrrrrmrd)rsPyBUF_WRITABLEPyBUF_C_CONTIGUOUSc_contiguousPyBUF_F_CONTIGUOUSf_contiguousPyBUF_ANY_CONTIGUOUS
contiguousPyBUF_INDIRECTrU
PyBUF_STRIDESPyBUF_NDPyBUF_FORMATrtr~r
rrrrQrrrr/rrr)rborig_exrwrrdrrmrYrr=rrrrs              r@
verify_getbufz TestBufferProtocol.verify_getbufs	([[U37
3*
+BOO
3*
+BOO
3,
-bmmsN+

sM*2??sH%%\*Bk7BsCb'"&:299&E))+CM2B))+CC0Ubkkii;;wwS,'C//#CS(#D!&sH!5

2%*3
%>'//B
R
$BB%3UGF		,rbcpuctttttt
tttttttttf}tdDcgc]}|dzrdnd
c}dfgddfgddftdDcgc]}|dzrd	|z
nd
|zc}dff}ggdfgd
gdfdggdfdgdgdfdgdgdfdgdgdfddggdfddgddgdfddgddgdfddgddgdff
}dt t"t"t zt$t$t zf}dt&t(t&t(zf}|D]f\}}t+j,|}	|D]E\}
}}|D
cgc]}
|
|	z	}}
||	z}|D]!}|r
|t"zr|
s
|t$zr|
r|n|d}t/||||
||}|
r|dddnd}t1|}|rt1|}|j2dk(s|j2dk(r|
r|r|j5|||r%|j2dk(r|
r|r|j5||D]h}|D]a}|j7||||z|j7||||z|s2|j7||||zd|j7|||zdcj$Higd}t/|dgt8}|j;t<t.|t/dgdg}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}gdgdfD]}
dt"fD]}t/||
|t z}|j?tA|d|j?tA|d|D]E}t/||}|j?tA|d|j?tA|dGycc}wcc}wcc}
w) Nr"TFrr.r"r[r6rr7r9r8	rqrrrr(r'rr)r.r[r.rrr7r[r6r.r8)rrrrr)rdrrrr)r.rr.)r9rr9rir)!rrrPyBUF_SIMPLErrr
PyBUF_FULLr
PyBUF_RECORDSPyBUF_RECORDS_RO
PyBUF_STRIDEDPyBUF_STRIDED_ROPyBUF_CONTIGPyBUF_CONTIG_ROrlr rND_PILrrr:calcsizer
rSrrrrND_GETBUF_FAILrtr~rr)rbrequestsr`	items_fmt	structurendflags
real_flagsr{r=rrrrrr_itemsex1ex2m1m2rbitsrwbaserYros                          r@test_ndarray_getbufz&TestBufferProtocol.test_ndarray_getbufs
M8\ 24H
++/	
16b	
:1a!ed&
:C@
)3/
)3/:?)
DQ1q5uQwvax0
DcJ	
	QK
b!T2qMTB4S1#qMS2$OVROVb"Xr"VaVQVb"Xq!
	
{J
;(>F;&

$\13
$!	@JE3s+H*3
@&w189A1x<99("$@EE*$4  eFl &+UqF!&E(-wvOC',#dd)$C#CB'_xx1}Q5W((S1sxx1}7((S1'@$.@D ..sCTB ..sBDA" $ 2 23SX:>!3!@ $ 2 23CH:>!3!@
@@)@
@!	@F-U2$n
=+w3sQC 
T,
/+w>J+w8D+w=I+w;MN+w;MN+w;OP
R
-w&		<EJ
<U%u[7HI
b# 67
b# 67%<E E2BOOM"c$:;OOM"c$:;<
<		<c;E6:sQ*Q/
Q4c	tdgdg}tdgdgt}t|j|jfD]}|jt|hd|jt|gd|jt|gd|jt|gddh	|jt|gddgdh
|jt|gddgg|jt|dgdgi|jt|dgdgi
|jt|dgdgi|jt|dgdgdgt
|jt|dggt
|jt|gdg	|jt|dgdgd|jtj|dgdgd|jt|ddgdgd|jt|gddgdtdz}|jt|dg|zdg|z	|jt|dgdg	|jt|gddg	|jt|dgddzg	|jt|gdddgd|jt|gddgdg
|jt|dgdgddzg
|jt|ddgddgdg
|jt|gddgdgd|jt|gddgd|jt|gddgdd|jt|gddgd |jtj|dgdgd!gd"}|jt||ddgd#d$gd%&|jt|td'(|jt|dgdgt|jt|dg|jttd)t*tdgdgt}|jt|jdgdgttd)}|jt|jdgdg|jt|j tdgdg}|jdgdgt#|}|jt|jdgdg|jt|j |j%|j!|jt|j ~|jtt&igd|jtt&d)itt)t+d+dgd+z	}|jtt&|d%gtt)t+d,ddg	}|jtt&|gd-|jtt&|ddg|jtt&|d#dg|jtt&|d.dgtgddgd}t|t,*}|jt|j.tgddgd}t|}	t|	}|jt|j0td/gdgd0}|jt|j0t}tt)t+|dg|z	}|jt|j0tdgdg	}|jtt2ddddd%|jtt2|d1d2|jtt2|d.d2|jtt2|t4d3|jt6t2|t4d4|jtt2|t4d5|jtt2|d6d7tdgdg	}|jtt8ddddd%|jtt8i||jtt8|itdgdg	}|jtt:ddddd%|jtt:id7|jtt:|d8y)9Nrr.r>r.r"r[)r.r"rP)r.r"r[r6r.r"r[r[rrrrrrlr)rrrrrXXXrirr"r[r"QLrrPr%r.r"r[r6rrNr.r"r[r6rrrr6)rrrrBz@#$)
r.r"r[r6rr7r9r8rrqrr)rrrrr123rrr)r"r[r6r,)r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLxyzru Zrj)r
ND_VAREXPORTpushrtrRrrrr:r<ND_MAX_NDIM
OverflowErrorr%rr~rpoprSreleaser|rrlrrQmemoryview_from_bufferrrUnicodeEncodeErrorrr)
rbrYndmrrr{rJrwrrs
          r@test_ndarray_exceptionsz*TestBufferProtocol.test_ndarray_exceptionsqs4
aS1#
qcA3l3277CHH-G	1AiG4iI6iK8iGA3?iGA3LiGA3rJiQCs2FiQCs"EiQCs2F
iQCsQC$.

0
iQCrH
j!Rs;j!eWQCLfllAvaSMj!aYqc#Nj!WQCMA
Aj!aSU1#a%@
j!aS=j!WSEBmQAsF8Dj![1aP
j!WQC#OmQA3'(#vh

0
j!aU1Q%!Mj!YqcA3%(

*
j!WQCJj!WQC%(

*
j!WQCKfllAy%*

,+Ej!U1Q%')2hq

:
iIKD
iQCs:N
iQC0OG	1V	
+w~NaS1#\
2*bggsQC|LV_+rwwaS9+rvv.aS1#

aSrN+rwwaS9+rvv.			
	
+rvv.	
)["g>)[&"=
T%*%aSW
5*k2s;
T%)_QqE
2*k2w?*k2!u=*k21v>-b5)DWQC
4
R
-*bii0gaS5cl
S\)R%>%>?
hZs7
;)R%>%>?
T%(^A3q5
1*b&?&?@aS
$)^Q1aC)^RD-UCH)^RSI,nb*"	$*nb*cJ*nb#sCaS
$)ZAq!Q?)ZR8)ZR8aS
$)]Aq!QB)]B<)]B<rbcttdD]}dgdz}tgddgt}t	||d<tddD]&}|jgddgt	|||<(tdD]}|||j
|jt|j~y)Nrrrr[rr.r)
rrlr
rrSrrrtr~r)rbpermrJrYrs     r@test_ndarray_linked_listz+TestBufferProtocol.test_ndarray_linked_lists q*
	DAA<@Bb>AaD1a[
&s+!"~!
&1X
%$q'
""$
%
k2662
	rbctdD]C\}}}tj|}t|d|}|j	|d||dddd|	Ey)NrrrlTr_rr=rsrrrrm)rr:rr
r)rbr=scalarryrrYs      r@test_ndarray_format_scalarz-TestBufferProtocol.test_ndarray_format_scalars])!n	$NCs+Hr#6BKK!)sTb""

$	$rbc
tdd}t|D]T\}}}tj|}dtfD].}t||g||}|j
|d||dd|f|f|	0Vy)Nr.rqrrkTr)rrr:rrr
r)rbrr=r{ryrrrYs        r@test_ndarray_format_shapez,TestBufferProtocol.test_ndarray_format_shape)sAr"(0	'MCs+HV
'U6(3eLBD%-3!"6)h[ %'
'	'rbcftdd}t|D]\}}}tj|}t	ddD]m}|dk(r	t|dd|g}||zg}|dkr||dz
znd}	dtfD]3}
t|||||	|
}|j|d||dd|||dd|	5oy)	Nr.rrrTr)	rrr:rrlrgrr
r)rbrr=r{ryrrrrrrrYs            r@test_ndarray_format_stridesz.TestBufferProtocol.test_ndarray_format_strides5s1b!(0	3MCs+Hb!
319U6T6]+,=/04q6!8,a[3E eW(+F%IBKK)1sT%&eW$)&D&M 33
3	3rbcgd}t|dd}t|ttz}|j|j	t|dy)Nrr)r.r[rr)r
rrrrrQr)rbr{rwrYs    r@test_ndarray_fortranz'TestBufferProtocol.test_ndarray_fortranJsD,
U&&
9
R 2< ?
@fUF&;<rbc@tdD]}t|Dcgc]}tdd}}t|}t|D]K}t	|\}}}tj|}dtfD]}	|dk(r
|	tk(rt||||	}
t|||d}t||}|j|
d||d||||	t|rnt|||	}
t|
ttz
}
|j|
j dk(|
j#}|j|d||d||||	t||||	t$z}
t|||d}t'||}|j|
d||d||||	Nycc}w)
Nrr"rqrrkrTrrlrrri)rlrrrrr:rrr
rrrrrrrrrrr)rbrryshape_trrr=r{rrrYrrmrwmvs               r@test_ndarray_multidimz(TestBufferProtocol.test_ndarray_multidimPs!H*	)D16t=AyB'=G=']F%g.'
) )& 1
UA!??3/[")EqyUf_ !eCuMB0uhLG .CKK)1sT%)$' )
,C0$U%D$R0LM

b(89668BD-53)-UG(+$-!eC',Z'79B1uhLG .CKK)1sT%)$' )?")'
)*	)=sFctdgdg}|jt|jddt	|}|j|||jt|jddtdgdgt}|jt|jdt	|}|j|||jt|jdtdgdgt}|jt|jd|jt|jddt	|}|j|||jt|jd|jt|jddgd}t|t|gdt}|jtj|jd	d
|jt|jddt	|}|j|||jt|jd	d
|jt|jddgd}t|t|gd
t}|jt|jd	d
|jtj|jddy)Nr.rr8rr,r.r"r[r6rr7r9r8rrkr"i,)r)r.r"r)rr7LQ)s1r)r
rtrR__setitem__rSrrr __delitem__r__getitem__
IndexErrorrgr:r<r)rbrYrr{s    r@test_ndarray_index_invalidz-TestBufferProtocol.test_ndarray_index_invalid}s&
aS
$)R^^Q:
^R )R^^Q:aS;
7)R^^Q7
^R )R^^Q7aS;
7-?-B
^R *bnne<*bnneQ?"
U3u:,s+
N&,,3?*bnnaD
^R *bnna=)R^^Q
C%
U3u:,t;
O*bnna=&,,?Krbc>tddt}t|}|j|||d}|j|d|d}|j|j	|j	|d}|j|d|d}|j|j	|j	|jt|jd|jt|jd|jt|jdd|jt|jdd|j|j	d|j|j	dd|d<|j|j	dd|d<|j|j	dd|d<|j|j	dd|d<|j|j	dy)	Nr.rr.rr8rr)	r
r rSrrrQrtrRrr	)rbrYrr`s    r@test_ndarray_index_scalarz,TestBufferProtocol.test_ndarray_index_scalars
Qb
4
^R rFT%%a+sGT%%ahhj"))+>rFT%%a+sGT%%ahhj"))+>)R^^Q7)R^^Q7)R^^Q:)R^^Q:a(a(2D$$RYY[!42D$$RYY[!43T%%biik153T%%biik15rbc	tttdddgt}t|t}|jt|jd|jt|jtdddy)	Nr8r"r6rrr.r[r)	r
rrlr rrtr~rr)rbrwrYs   r@test_ndarray_index_null_stridesz2TestBufferProtocol.test_ndarray_index_null_stridess_
T%*%aV;
G
R
-	
+r~~q9+r~~uQq|Drbc"tdD]\}}}t|dg|}tddD]}|j|||||j	t
|jd|j	t
|jdt|st|}|j||tddD]}|j|||||j	t
|jd|j	t
|jdtdD]\}}}t|dgt|}t|ttz}tddD]}|j||||t|sh|j}|j|j|ttddD]}|j||||gd}t|dg}t|t }tddD]}|j||||gd}t|dg}t|t"}tddD]}|j||||y)	Nrrlrrmrrr)rr
rlrrrtrrrrSr rrrrq__eq__NotImplementedrr)rbr=r{ryrYrrrws        r@!test_ndarray_index_getitem_singlez4TestBufferProtocol.test_ndarray_index_getitem_singlesf(^	AMCqc#6B2q\
2  Aa1
2
j".."=j"..!<#C(^  R(r16A$$RUE!H56!!*bnnbA!!*bnna@	A$)^	6MCqcSIBL$=>B2q\
2  Aa1
2$C(..0

biim^<r16A$$RUE!H56	6
U1#
&
R
0r1	.ARUE!H-	.
U1#
&
R
-r1	.ARUE!H-	.rbctdD]T\}}}t|dg|t}tdD]}|||<|||<|j	|j||j
t|jd||j
t|jd|t|st|dg|t}t|}|j	||tdD]}|||<|||<|j	|j||j
t|jd||j
t|jd|WtdD]\}}}t|dg|t}tddD]}||dz||<||dz||<|j	|j|t|snt|dg|t}t|}|j	||tddD]}||dz||<||dz||<|j	|j|y)Nrrkrrr6r.)rr
r rlrrrQrtrr	rrS)rbr=r{single_itemrYrrs       r@!test_ndarray_index_setitem_singlez4TestBufferProtocol.test_ndarray_index_setitem_singlesB'21~	J#Cqc#[IB1X
$&a#1
$
RYY[%0j".."kJj"..![I',qc#[IBBBR$1X
$&a#1
$
RYY[%0j".."kJj"..![I-	J4(31~	1#Cqc#[IB2q\
  1:a1Q31
 
RYY[%0',qc#[IBBBR$2q\
  1:a1Q31
 
RYY[%0!	1rbc
d}t|}t|D]}t|\}}}dtfD]}t	||||}t||}	t
|d|dD]}
|j|	|
||
jt
|d|dD]j}|j|	|
|||
|jt
|d|dD]&}|j|	|
||||
||(lt	||||tz}t||}	t
|d|dD]}
|j|	|
||
jt
|d|dD]i}|j|	|
|||
|jt
|d|dD]&}|j|	|
||||
||(ky)Nr"r[rrrkr.r")rrrrr
rrlrrrQrr)
rbrrrr=r{ryrrYrmrrks
             r@#test_ndarray_index_getitem_multidimz6TestBufferProtocol.test_ndarray_index_getitem_multidim%s1g!'*	HE%f-MCV
HU%5IUE*ay%(3HA$$SVRU\\^<"E!H9eAh7H((QBqE!HOO4EF!&ay%(!;HA ,,SVAYq\2a58A;GHHHU%#(#35UE*ay%(3HA$$SVRU\\^<"E!H9eAh7H((QBqE!HOO4EF!&uQxq!:HA ,,SVAYq\2a58A;GHHH#
H		HrbcHtdd}|jttdt	t|}|j
|||jttdt	tdD]\}}}t|dg|}t|D]-\}}|j
||||j||v/t|s]t|}t|D]-\}}|j
||||j||v/y)Nr.rrz1 in ndz1 in mvrrl)r
rtrRevallocalsrSrrrr&rr)rbrYrr=r{ryrrs        r@test_ndarray_sequencez(TestBufferProtocol.test_ndarray_sequenceDs
Qb
!)T9fh?
^R )T9fh?(^
	-MCqc#6B!"

)1  E!H-R(
)$C(^%bM-DAq$$Qa1OOAG,-
	-rbc

gd}t|dgt}t|}|jt|j
t
ddd||jt|j
t
ddd|t|dgt}t|dgt}t|t}|jt|j
t
ddd|t|dgdt}t|}|jt|jt
ddd|jt|jt
dddt|d	d
gdt}t|}|jt|jt
dddt
dddf|jt|jt
dddt
dddf|jt|jd|jt|jdt
dddf|jt|jt
dddif|jt|jt
dddt
dddf|jt|jdt|dgdt}t|dgd
}t|}t|}|jt|j
t
ddd|dd|j|j||jt|j
t
ddd|dd|j|j|t|dgdt}t|dgd}	t|}t|}|jt|j
t
ddd|dd|j|j||jt|j
t
ddd|dd|j|j|t|d	d
gd
t}t|dgd
}t|}t|}|jt|j
t
ddd|dd|j|jgdgdg|jt|j
t
ddd|ddt|dgd
t}t|dgd
}t|}t|}|jt|j
t
dd	d|dd|j|j||jt|j
t
dd	d|dd|j|j||jttt
ddd	i|jttdd|jttt
dddd
t|dgd
t}
|jt|
j t|dgd}t|t"}
|jt|
j y)Nrr8rrr.rrrkr"r6z@%$rrrlr9r)rr7r9r8z###########)r
r rSrtrRr	rrr~rrrSrrrQrradd_suboffsetsr)rbr{xlmlrwxrrYrmryrr`s           r@test_ndarray_slice_invalidz-TestBufferProtocol.test_ndarray_slice_invalidWsz!U1#[
9
^)R^^U1Qq\5I)R^^U1Qq\5IU1#[
9
U1#[
9
R
)+r~~uQq|RHU1#c
E
^*bnneAalC*bnneAalC
U1Q%;
G
^*bnn 1Q<q16	8*bnn 1Q<q16	8)R^^U;)R^^eU1Qq\5JK)R^^eAalB5GH	
-r~~ 1Q<q16	8)R^^U;U1#c
E
U1#c
2
^
^*bnneAalBqGLe,*bnneAalBqGLe,U1#c
E
U1#c
2
^
^*bnneAalBqGLe,*bnneAalBqGLe,U1a&K
H
U1#c
2
^
^*bnneAalBqGLy)&<=-r~~uQq|Qq'	#U1#c
E
U1#c
2
^
^*bnneAalBqGLe,*bnneAalBqGLe,	
)]E!AaL"E)]M1E*mU1Qq\1EE!S?)Q%5%56
U1#c
2B|,)Q%5%56rbc0gd}t|dgdt}t|dgd}|dd|dd|j|j|t	|}t	|}|j|||j|||dd|dd|j|j|t|ddgdt}t|ddgd}|d	d
ddf|d	d
d
d
f<|j|jt|ddgy)Nrrrrkrlrr6r[r.r")r
r rrrQrSr)rbr{r`rr%r's      r@test_ndarray_slice_zero_shapez0TestBufferProtocol.test_ndarray_slice_zero_shapes,E"cEE"c21Q!AU+
]
]QQQq'1Qe,E!Q;GE!Q4!QqSk!A#qs(VEAq6%:;rbc2d}t|}t|}t|D]}t|\}}}t	j
|}dtfD]|}	t||||	}
t||}t||D]P}d}
	t||}d}	|
|}|s|
r|j||
1|jjR~y#t$r}|j}
Yd}~`d}~wwxYw#t$r}|j}Yd}~zd}~wwxYwNrrrk)rgrrrr:rrr
rrIr	Exception	__class__rqrrrQ)rbrrrrr=r{ryrrrYrmrlisterrrdrnderrndsliceds                  r@test_ndarray_slice_multidimz.TestBufferProtocol.test_ndarray_slice_multidims"7|g!'*	DE%f-MCs+HV
DU%5IUE**47DF"G.!+C!8!E,#%f:

eW5(():FC#D	
D	D%."#++.%, !,s0CC7	C4	C/	/C4	7	D	D	D	cd}t|}t|}t|D]}t|\}}}t	j
|}t
|||}	|	jt
|||}
|
jt|
}t||}t||D]P}
d}	t||
}d}	|	|
}|s|r|j||1|jj!Ry#t$r}|j}Yd}~^d}~wwxYw#t$r}|j}Yd}~xd}~wwxYw)N)r"r[rr"rl)rgrrrr:rr
r#rSrrIrr.r/rqrrrQ)rbrrrrr=r{ryrrYrwrrmrr0rdrr1r2s                   r@'test_ndarray_slice_redundant_suboffsetsz:TestBufferProtocol.test_ndarray_slice_redundant_suboffsetss:7|g!'*	@E%f-MCs+HeC8BeC8BBB&C&tU3
@*'V4F(!&zHGMM%1$$X__%6?#
@	@"!*kkG*!(KKE(s00D?D"	D	DD"	E+D<<EcjtdD]\}}}tdD]}tdD]}dtfD]}|tz}t	|dg||}t	|dg||}	t|	}
d}d}|dd}
	|
|}|
|}|
||
|<t
|t
|k7}d}	||||<|r|j|tn2|j|j|
|j||t|sd}	|
||
|<|r|j|t|j|
j|
|j|
||j|||j|
|	|j|d|j |j"|j$|j	y#t$r}|j}Yd}~Bd}~wwxYw#t$r}|j}Yd}~Zd}~wwxYw#t$r}|j}Yd}~d}~wwxYw)NrrrkFr)rr:rr r
rSrgr.r/rqrrrrQrrrrrr)rbr=r{rylslicer@rrrYrwrlsterrdiff_structurermlvalrvalrr1mverrs                   r@ test_ndarray_slice_assign_singlez3TestBufferProtocol.test_ndarray_slice_assign_singles(^3	/MC#A,2
/'l1/F"#V0/!+-$U1#cK$U1#cK'^!%)-#Ah1#&v;D#&v;D*-f+CK-0Y#d)-CN!%0)+FBvJ* MM%< ,,RYY[#> MM%83C8$ $0)+FBvJ* MM%< ,,RYY[#> ,,R4 MM%8 KK'){{e#%77"((BJJ"$))+(/[0/1/2
/3	/$ )1%&[[F1 )0$%KKE0 )0$%KKE0sH<)G(G/
H	G,G''G,/	H8H

H	H2H--H2c
Dd}t|}t|}t|D]}t|\}}}dtfD]}ttD]}t||\}	}
t||||tz}t||}d}
	t|||	|
}d}	||
||	<|s|
r|j||
g|j|j!y#t$r}|j}
Yd}~cd}~wwxYw#t$r}|j}Yd}~zd}~wwxYwr-)rgrrrrrl
ITERATIONSrr
r rrr.r/rqrrrQ)rbrrrrr=r{ryrrrrYrmr0ryrr1s                 r@"test_ndarray_slice_assign_multidimz5TestBufferProtocol.test_ndarray_slice_assign_multidim=s,7|g!'*	>E%f-MCV
>z*>A';D%'H$GW eC',['8:B .C"G.!23Wg!N!E,&(k7

eW5((f=->
>		>%."#++.%, !,s0CD	C=	'C8	8C=		D		D	D	cttD]}tdD]}tj|}t|dtt}|jt|t||}t|||}|j}t|}t|r"|j}	|j|	||ddkDrt|||t }
|
j}|j||t|
}t|r4|j||
|j}	|j|	|t"s7|d}d|vrBt%|||}
|j'|d|
j(|d|
j*|
j,|
j.|
j		y)
NrCTrrr"rrr[Fr)rlr?rYr:rrMAXDIMMAXSHAPErrrr!rQrSrrrrr(r*rrrrr)rbryr=rrr{r`xlistrmvlistrylistrzs              r@test_ndarray_randomz&TestBufferProtocol.test_ndarray_random^sz"%	0As|$
0!??3/"8T&,46 0! 450a8*5#q9
]',YY[F$$VU3Q4!8.uc1FKAHHJE$$UE2#AB+C0((Q/!#((7aDEEz 25#qAAKKt)*u%&VV177AII$%HHJ 0C$
0%	0rbcttD]}tdD]}tj|}t|dtt}|jt|t||}d}	t|||}|j|tszd}		t!|||}
y#t$r}|j}Yd}~Gd}~wwxYw#t$r}|j}	Yd}~Ad}~wwxYw)NrCFrB)rlr?rYr:rrrCrDassertFalserrr!r.r/rr(r*)rbryr=rrr{r1r`r	numpy_errrs           r@test_ndarray_random_invalidz.TestBufferProtocol.test_ndarray_random_invalidsz"	3As|
3!??3/"8U6,46  !11!560a8(.uc1=A& %I06uc1E-
3	3!(KKE(%0$%KK	0s01
B+
C
+	C
4CC

	C,C''C,c&ttD]}tdD]}tj|}ttt\}}}}t|d|}t|d|}	|jt||jt|	t||}
t||	}t|
||}t|||	}
|
|||<|j}|
j}t|}t|
}|j|j||j|j||ddkDr|	ddkDrt|
||t }t|||	t }||||<|j}|j}|j|||j||t|}t|}|j|j||j|j|t"s
d|vsd|vrt%|
||}t%|||	}||||<t'|s[t'|	sP|j)|d|j*|d|j,|j.|j0|j		|j)|
d|j*|d|j,|j.|j0|j		y)
NrCrBTrr"rrFr)rlr?rYr:rrrCrDrrrrr!rQrSrrrr(r*rrrrrr)rbryr=rrrrrtltrlitemsritemsr$r&xllistxrlistr%r'ylr(yllistyrlistzlzrs                        r@ test_ndarray_random_slice_assignz3TestBufferProtocol.test_ndarray_random_slice_assignsz":	EAs|9
E!??3/(vI1#Hd&A#Hd&A 0" 56 0" 561#r:1#r:+FC<+FC< k7^^  f5  f5a519A/RvNB/RvNB"$W+BwKYY[FYY[F$$VV4$$VV4#BB#BB$$RYY[&9$$RYY[&9F{a6k 3FCDB3FCDB"$W+BwK)"-nR6HBD-/[[cE)+,.JJBIIK$I
KK)+#%'WWBHH(*

		 Em9
E:	Erbcgd}t|ddgt}t|}|j|jtz|j	|j
||j
|jd|j|j|j|j|j|jy)Nrr[r6r)rr)r
rrrrqr_rrrUrKrrr)rbr{rYrws    r@test_ndarray_re_exportz)TestBufferProtocol.test_ndarray_re_exports,
U1Q%v
6
R[6)*

bffb!0))'rbc	HdtfD]}tgddg|}t|}|j|||j|j	g|j|j	gtgdgd|}|j|j	gtgdgd|}|j|j	ggggtgdgd|}|j|j	gggggggggggggy)Nrrrrr[r[r[rr[)r[r[rrr
rSrrrQrbrrYrs    r@test_ndarray_zero_shapez*TestBufferProtocol.test_ndarray_zero_shapes[	IE59BBBR$RYY["-RYY["-u=BRYY["-u=BRYY[2r2,7u=BRYY[!2rlRRL2r2,G
I	IrbcdtfD]u}tdgdgdg|}t|}|j|||j|j	gd|j|j	gdwy)Nrr.rr)r.r.r.r.r.r`ras    r@test_ndarray_zero_stridesz,TestBufferProtocol.test_ndarray_zero_stridessp[	;E!QC!EBBBBR$RYY[/:RYY[/:	;rbctttddgd}|j|jd|j|jgdy)Nr[r9r)r9r8r)r
rrlrrrrQrbrYs  r@test_ndarray_offsetz&TestBufferProtocol.test_ndarray_offset
sD
T%)_QC
:A&g.rbcdtfD]E}tttddg|}|j	}|j||GyNrr[r)rr
rrlrrr)rbrrYrJs    r@#test_ndarray_memoryview_from_bufferz6TestBufferProtocol.test_ndarray_memoryview_from_buffersK[	$EeAhs%@B))+AQ#	$rbc	dtfD]S}tttddg|}tdD]"}|j	||t||g$Uyrj)rr
rrlrrr|)rbrrYrs    r@test_ndarray_get_pointerz+TestBufferProtocol.test_ndarray_get_pointers][	>EeAhs%@B1X
>  AB(<=
>	>rbcDtttdgd}t|ttz}|j|j
|j
t|}|j|j
|j
y)Nrf)r"r"rrr)r
rrlrrrrrQrS)rbrwrYrJs    r@ test_ndarray_tolist_null_stridesz3TestBufferProtocol.test_ndarray_tolist_null_stridessh
T%)_G
4
R 5
6biik2rNRYY[1rbc|jtddttt	dddg}ttt	dddg}|jt||tdgdgd	}|jt|d
|jtd
|y)Nrs456rr[r6rr.rrlrW)rKrr
rrlr)rbr`rs   r@test_ndarray_cmp_contigz*TestBufferProtocol.test_ndarray_cmp_contig$sFF34DrOAa51DrOAa51Aq)*QCs3/
1g./
7A./rbc	tjdgd}t|}|jtt|tt
td}tt
tddg}|jt	|t	|tt
tdddg}|jt	|t	|tt
tdgd}|jt	|t	|ttt
tdddg}tt
tdddgt}|jt	|t	|ttt
tdgd	}tt
tdgd	t}|jt	|t	|tt
td}tt
tdgd
t}|jt	|t	|tt
tdgd
d}|jt	|t	|jy)Nrrrrr[r6)r[r"r"rr"r[r"r"r"r[rl)
rQr
rtrhashrZrrlrrrrrr/)rbrLrYrs    r@test_ndarray_hashz$TestBufferProtocol.test_ndarray_hash0sKKW%
QZ*dB/
$uRy/"
T%)_RD
1b47+T%)_QqE
2b47+
T%)_G
4b47+
)DrOAa59:
T%)_QqE
Db47+)DrO7;<
T%)_G:
Fb47+
$uRy/"
T%)_G6
Bb47+T%)_GC
@b4

#56rbctttttt
ttttttf}|jttidt
tdddt }dD]6}|D]/}t|||}|j#||j%18tdgdgdt }dD](}|D]!}t|||}|j#|d	#*tt't)d
gddt }dD](}|D]!}t|||}|j#|d	#*dt*fD]}tdgdgd|t z}|j%}dD](}|D]!}t|||}|j#||#*tgd
dgd|t z}|j%}dD](}|D]!}t|||}|j#||#*tgd
dgdgt }|j%}dD]2}ttfD]!}t|||}|j#||#4|ddd}|j%}dD])}|D]"}	t|||}|j#||$+t't)d}dt*fD]}t|ddg|t z}t.r!t/t1|ddgd|dk(rdnd}	|t*k(r1tt3|ddgddgt }
|
j%}n|j%}|D]}	t|d|}|j#||t|Dcgc]}|c}ddgt }
|j#t5|
t5|t.sp|j#|	j%d|dk(r!tt3|ddgddgt }
nt|ddgt }
|
j%}tt
tttfD]}	t|d|}|j#||t|Dcgc]}|c}ddgt*t z}
|j#t5|
t5|t.sw|j#|	j%d|t*k(r%t|ddgt }
|
j%}n|j%}tt
tttfD]}	t|d|}|j#||t|Dcgc]}|c}ddg|t z}
|j#t5|
t5|t.ss|j#|	j%dtt't)dddgt t6z}t|dt
}|j#||j%t|Dcgc]}|c}ddgt }
|j#t5|
t5|t|dt
}tt3|ddgddgt }
|j#||
j%t|Dcgc]}|c}ddgt*t z}
|j#t5|
t5|t|dt
}|j#||j%t|Dcgc]}|c}ddgt }
|j#t5|
t5|y#t,$rYwxYw#t,$rY]wxYwcc}w#t,$rYywxYwcc}w#t,$rYwxYwcc}wcc}wcc}wcc}w)Nrirrrrkrhr.rrbr8r"rr9rrr[rr"rrrr6rrr)r#rr$rornrj)rrrrrrrrrrrrrtrRrr
r rrr/rrlrr~r(r%rrSr)rbrrYrorequestrrndbytesrmnar`rrrs              r@test_py_buffer_to_contiguousz/TestBufferProtocol.test_py_buffer_to_contiguousUsg
M8\
++/
	
)%<b#'	)QbK
@$	2E#
2+Bw?  BJJL1
2	2aSC{
C$	)E#
)+Bw?  C(
)	)
T%(^9S&($	)E#
)+Bw?  C(
)	)Z
	1A!QC1[=IBjjlG(
1'1G/E7CA$$Q01
1
1#c;OBjjlG(
1'1G/E7CA$$Q01
1
	1 YqcA3k
J**,$	-E):6
-+Bw?  G,
-	-
"X**,$	-E#
-/E7CA  G,
-	-P59oZK	?AQF!K-@B 	#()1vS./1fs#?
JIcAq621a&"-/99;::<#
?/CAA  H-N1QN1a&L  A
2?$$Q


(=>
?"AvIcAq621a&"-/C1v[Ayy{H&
~)85
?/CAA  H-N1QN1a&
;@VW  A
2?$$Q


(=>
?"JC1v[A99;::<&
~)85
?/CAA  H-
N1QN1a&+
N  A
2?$$Q


(=>!
?wK	?\T%)_QF+f:L
M
$B];BJJL)N1QN1a&DA
27
$B];IcAq6*1a&LAIIK(N1QN1a&
;8NOA
27
$B];BJJL)N1QN1a&DA
27M#l#+"#+ #+###sl=
^
^6	^+
^0/	_;
_#	_8	_	_
	_$	^^	^('^(0	^=<^=	__c2	dgfgddgfttdgdfg}|D]\}}t||}t|}|j	|j
|j	|jt|}t||dd}t||}|j||dd	d
||||	t|}	|j|	|dd	d
||||	t|ttz}
|j|
jd
|
j}|j|ddd	d
||||	t|t }
|j|
j"d|j|
j$d
|j|
jd
|
j}|dk(r|gn|}|j|ddd	d
d|j&gd|	|D]\}}t||t(}t|}|j	|j*|j	|jt|}t||dd}t-||}|j||dd	d
||||	t|}	|j|	|dd	d
||||	|ddD]\}}t||t.}t|}t|}t||}|j||dd	d
|||j|	t|}	|j|	|dd	d
|||j|	|j1t2tdd|j1t2titgddg}t|t }
|j1t4t|
t|ttz}
|j1t4t|
tdgdzdgdzd}
|j1t6t|
|j1t6|
j|j1t6t8|
t:d|j1t6t8|
t:d|j1t6t8|
dddt:dy)Nrrr[rrrr.rrTrrrrBrr.rri9r`r%rrlr)rrlr
rSrrrrgrrrrrrrrrrrrr-rrrrrtrRr~rrr)rbitems_shaper{rrwrJrrrmrrYs           r@test_memoryview_constructionz/TestBufferProtocol.test_memoryview_constructionE	sU2w1#eEl1CW0MN(,	!LE5e,B2AOOANN+OOALL)u:D(ua=G&CKKr!"d!

!ABKK!"d!

!OL$@ABRZZ,))+AKKt!"d!

!L1BRYY+RXXr*RZZ,))+A!QY5'ECKKt!"dryyk4

!S,	!^(	!LE5e:>B2AOOANN+OOALL)u:D(ua=G&CKKr!"d!

!ABKK!"d!

!'	!2(O	!LE5e6:B2Au:D&CKKr!"d!



!ABKK!"d!



!!	!,	
)Zs;)Z4
WQC
(
R
-+z26
R <
=+z26aSWQCGC
8*j"5*b&?&?@*nb*cJ*nb*cJ*nb2h
CPrbcgd}gdgdgdfD]V}t||}|j|jt|}|j	t
|jdXtddD]b\}}}td}|j
|}|j|jd|j|jgdy)	Nrr^r_rrr.rSrb)r
rrrSrtrRrerrrr/rQ)rbr{rrwmsrcr=ryrJs        r@test_memoryview_cast_zero_shapez2TestBufferProtocol.test_memoryview_cast_zero_shape	s
w0	9Ee,BOOBOO,b>DiC8		9%Q5	-ICAc?D		#AQYY[#.QXXZ,		-rbc`|j}tj}d}d}tt	d}|td||d|zzt
|ddgd	}|t|||d|zzt
|gd
d	}|t|||d|zzy)NzPnin 2P2n2i5P P3nr8rbr.r"r6rrl)r"r"r"r[)check_sizeofrcalcvobjsizerrlrSr
)rbcheckvsizebase_structper_dimr{rLs       r@test_memoryview_sizeofz)TestBufferProtocol.test_memoryview_sizeof	s!!$$'U1X
jou[1w;%>?@E!Q4
jmU;W#<=>E37
jmU;W#<=>rbcGddt}Gddt}d}|d|ddtdd	td
dgdhd
ddidddddtddt	dt	ddddd|dg}tddD]\}}}t
|dg|t}t
|dg|t}	t|}
tj||	d|||
d<|j|
d|	dtj|}d|vr|D]f}d}
	tj||	||d}	||
d<|
s|r%|j#|
d|j#|dO|j|
d|	dhy#tj$rtj}
YswxYw#ttf$r}|j }Yd}~d}~wwxYw)NceZdZdZdZy)=TestBufferProtocol.test_memoryview_struct_module.<locals>.INTc||_yrvalrbrs  r@__init__zFTestBufferProtocol.test_memoryview_struct_module.<locals>.INT.__init__		rbc|jSrrras r@__int__zETestBufferProtocol.test_memoryview_struct_module.<locals>.INT.__int__	xxrbN)__name__
__module____qualname__rrrrbr@INTr	

 rbrceZdZdZdZy)=TestBufferProtocol.test_memoryview_struct_module.<locals>.IDXc||_yrrrs  r@rzFTestBufferProtocol.test_memoryview_struct_module.<locals>.IDX.__init__	rrbc|jSrrras r@	__index__zGTestBufferProtocol.test_memoryview_struct_module.<locals>.IDX.__index__	rrbN)rrrrrrrbr@IDXr	rrbrcy)Nr9rrrbr@rz;TestBufferProtocol.test_memoryview_struct_module.<locals>.f	srbry@@z-21.1gffffff(@rr"r>r6rr7r9r8r)rTFasabcrLabcc|Srr)r`s r@<lambda>zBTestBufferProtocol.test_memoryview_struct_module.<locals>.<lambda>	sqrbrqrSrkrrr.)objectr
rEllipsisr%rr
r rSr:r'rrrr<rRrr/assertIsNot)rbrrrvaluesr=r{r|rwrYrJrr
struct_errmv_errrs                r@test_memoryview_struct_modulez0TestBufferProtocol.test_memoryview_struct_module	s	 &	 	 &	 	a&#a&''*D(1a.7QqE2ttX	$61BudF[
"!,B =	2Crd3kJBrd3kJB2AS"a.AaDQqT2a5)s+Hcz
2!
.$$S"h:)AaD$$Z6$$VT2$$QqT2a51#
2	2"||.!'J.":.)[[F)s*E<1F%<#F"!F"%G
4GG
ctgddgdg}|j|jt|}|j	t
|jdy)Nrr[rrr)r
rKrrSrtrRre)rbrwrs   r@!test_memoryview_cast_zero_stridesz4TestBufferProtocol.test_memoryview_cast_zero_strides
sGWQC!
5)"~)TYY4rbc	.tD]}tdrd|zn|}tj|}tD]~}tdrd|zn|}tj|}t	tt
dd|zg|}t|}|jt|j|d|zgtdD]\}}	}
t	|	dg|}t|}tdD]v\}}
}
t|s'|jt|j|dzg9t|rEt|rQ|jt|j|dzgxtjd}tjd}t	tt
d|zdd|gd}t|}|jt|jdd|gdt	tt
d	gd
}t|}
|jt|
j|jt|
jddd|jt|
ji|jt|
jd
|jt|
jd|jt|
jd|jt|
jd|jt|
jd|jt|
jd|jt|
jd|jt|
jd|jt|
jdt	ddgdgd}t|}
|jt|
j d|jt|
j"dd|jt|
j$t	tt
d	gd
}t|}
|jt|
jdit	tt
d	d	g}t|}
|jt&|
jddg|jt|
jddg|jt|
jdgd|jt|
jdgd|jt|
jdgd t	tt
d!D
cgc]}
d"c}
gd#}t|}
|jt|
jd$gd%t	tt
d&d&gd$}t|}
|jt|
jd$dgd&zt	tt
d!D
cgc]}
d"c}
d!g}t|}
|jt|
jd$gd%t	tt
d!D
cgc]}
d"c}
d!g}t|}
|jt|
jdgd%t	tt
d&d&gd$}t|}t	tt
d&d&gd}t|}t(j*d'k(rm|jt|jdgd(|jt|jdgd)|jt|jd$gd*y|jt|jddd+g|jt|jdgd,|jt|jd$gd-ycc}
wcc}
wcc}
w).Nr"rCr4rlr.rrr6xrrr[Xz@Xz@XYz=Bz!Lz<Pz>lBIxBIrrIIrr8rr,r)r"r[r6rr7r9r)r"r[r6rr7r9r)r"r[r6rr7r9r`ir)r[rr9rr)r"r[r6rr%l)r9r9Ir1iQiAji	)rrr8)rrrrr")rrr4r4r")rrr4r8r")NON_BYTE_FORMATrr:rr
rrlrSrtrRrerrrrrSrr	rQrrVmaxsize)rbsfmtsformatssizedfmtdformatdsizerwrsitemsrysize_hsize_drJrYrrs                 r@test_memoryview_cast_invalidz/TestBufferProtocol.test_memoryview_cast_invalid
s\#	KD$-aLcDjdGOOG,E'
K(1!#*$0T%)_RYKP!"~!!)TYYr5ykJ
K	K +1~
	7OD&!s48Bb>D)!n
7
a+D1%%j$))T')5yk3*$/t8L)))TYY+-u9+7

7
	7%%
T%F
+,QqL
M"~)TYYq6l3O
T%*%[
9rN	
)QVV,)QVVQ15	
)QVVR0	
*affc2*affd3*affe4	
*affd3*affd3*affd3*affd3*affd3*affe4eU^A3t
<rN-q}}a@-q}}aC-qxx8T%*%[
9rN)QVVS;T%*%gY
7rN-UGD*affc">*affc9IJ*affcI)QVVS8IJTeHo6167z
JrN)QVVS	BT%*%cU3
?rN*affcA3s7;TeHo6167z
JrN)QVVS	BTeHo6167z
JrN)QVVS	BT%*%cU3
?
^
T%*%cU3
?
^;;'!i#A
Cj"''3@
Bj"''3@
B
i# *o
/j"''3>
@j"''3>
@I77
7s-	`	`
<	`cddfddfddfffd}tjd}td	gd
}t|dd\}}t	|}|jd}j
||dddd|d
|d
tjd}td	g|z|gd
}t|d|g\}}t	|}|jdg}j
|||ddddd|d
tddD]2\}	}
}tj|	|
}t	|}||||
|	4tddD]0\}	}
}t|
dg|	t}t	|}||||
|	2y)Nrc4t|jSrrr/)rws r@rz9TestBufferProtocol.test_memoryview_cast.<locals>.<lambda>
s4

-rbrcnt|jDcgc]}|dkDr|dz
n|c}Scc}w)Nr1r$rrwr`s  r@rz9TestBufferProtocol.test_memoryview_cast.<locals>.<lambda>
s.T"**,=OPQWAcE!3PPs2rct|jDcgc]}tt|dc}Scc}w)Nzlatin-1)rr/rZchrrs  r@rz9TestBufferProtocol.test_memoryview_cast.<locals>.<lambda>
s*d2::<>PQE#a&)4QQs;c
Ttj|}
D]\}}|j|}||}j||d|ddd|zgd|d
|j|}	j	|	||j}j|	|||dddg|f|d
y)Nr.Fr5r~T	r_rr=rsrrrrmre)r:rrerrrrQ)rwrJr{r=srcsizerTto_bytelistrrmm3bytespecrbs          r@iter_roundtripz?TestBufferProtocol.test_memoryview_cast.<locals>.iter_roundtrip
sooc*G(0
0$VVG_!"oBB%&Ge!"2g:, #$0
WWS\  R(iikBB%,#!"2$
 #$0
0rbrrrlr.Tr~rrrrr5rQrSrk)
r:rr
r4rSrerrrQr )
rbrrrw	destitems	destshaperJrdestsizer=r{ryrs
`           @r@test_memoryview_castz'TestBufferProtocol.test_memoryview_cast
s-
.P
QQ
R
	0(//#&
Qb
-)"c15	9rN
VVC[BBC$)T!		.??3'
aS\(C
@)"c82F	9rN
VVCrV
"BB%3"b!		.)W5	.MCS%(B2A2q%-	.)\:	.MCrd3kJB2A2q%-	.rbctD]}tdD]}|dk(r
dtd|z}tj|}t||z}t
|rdnd}t||D]f\}}}	tj|}
|dkDr|gng}||
gz}t|||}
t|
}t|
|||	\}}|#|jt|j||}|d
k(rt|||}|j||	}t|}|j}|j!}|j#||
||d||||d
|j|}|j||	}t|}|
j}|
j!}|j#||
|
|d||||d
|j#||
|
|d||||d
it$rGd
dt$j&}|dd}t|}|jd}|j)|j*||j)|j,d|j/|j0d|j)|j2d|j)|j4|j6f|j)|jd|j)|j8dt%j:d}t|}|jd}|j)|j*||j)|j,d|j/|j0d|j)|j2d|j)|j4|j6f|j)|jd|j)|j8dyy)NrCr)rBrCr"rSrTrrlrr,TrcDeZdZdejfdej
fgZy)>TestBufferProtocol.test_memoryview_cast_1D_ND.<locals>.BEPointr`rN)rrrctypesc_longc_double_fields_rrbr@BEPointrs &--032HIrbrrg33333i@rr.Fr~r333333?r)r8rYrr:rrrrr
rSr4rtrRrergrrQrrBigEndianStructurerrr_rrqrsrrr-rUr)rb_tshaper^tfmttsizerr_r=r{rysizertshaperwrJtitemsrYrrrrmrm4rpointrr`s                           r@test_memoryview_cast_1D_NDz-TestBufferProtocol.test_memoryview_cast_1D_ND
s%5	4G4
43; 1.5-ME)&4T&:l	%0C%8+4MC!??3/D#$q5QCbE$v-F eC@B"2A%/D%v%NNFF~)))QVVT6J  !vdCBF3Bv;D jjG))+CKK).D4%)$'d 4BE2Bu:D jjG))+CKK)-3%)$'d 4
KK)-3%)$'d 4Q+44
45	4n
J&33
JC'EE"BBRVVU+R[[!,MM"++u-RWWa(RXX		|4RZZ.R]]B/$AABBRVVQ'R[[!,MM"++u-RWWa(RXX		|4RZZ.R]]B/1rbc	tjdttdd}t|}|j	|||j	|j|j|ddd}|ddd}|j	|||j	|j|jt
ttdgdd	}t|}|j	|j|jt
d
dgdgd	}t|}|jt|j
t
d
gdgd	}t|}|jt|j
t
gdddgd	}t|}|jt|j
y)Nrrr7r"r[i	)rr"r9r[rrrl)r"r)r9rr>12345r.r)rbcdef)	rQrrlrSrrrQr
rtrS)rbrLrJrws    r@test_memoryview_tolistz)TestBufferProtocol.test_memoryview_tolist so
KKT%A,/0qMAQXXZ0
addG
addGAQXXZ0
T%
+,L
MrNRYY[1
fg&qc$
?rN-qxx8
hZs3
7rN-qxx8
4QqE#
NrN-qxx8rbcttd}|j}|j|j	d|j|j}|j|j	dy)Nrz<memoryz	<released)rSr%__repr__r
startswithr)rbrJrs   r@test_memoryview_reprz'TestBufferProtocol.test_memoryview_repr>sYy|$
JJLY/0			
JJL[12rbcVdD]g}td}tj|d|dg}t|}|jd||jd||jd|it	dgd}t|}|jttdty)	N)rrg?g@g"@rrz9.0 in m)	floatrQrSassertInr
rtrRrr )rbr=infrwrJs     r@test_memoryview_sequencez+TestBufferProtocol.test_memoryview_sequenceGs	"C,CS3S/2B2AMM#q!MM%#MM#q!
	"S"S
)rN)T:vx@rbc#K|jt5}dddd|jtjd|fzy#1swY3xYww)Nz#index out of bounds on dimension %d)rtrrrstr	exception)rbdimcms   r@assert_out_of_bounds_errorz-TestBufferProtocol.assert_out_of_bounds_errorUsQ


z
*	b	R\\*>#G	I		sAA2AAActdgd}t|}|j|dd|j|d||j|d||jt|j
dtdgd}t|}|jt|j
dtttd	d	gt
}t|}|jt|j
d|jt|j
d|jt|j
d
|jt|j
d|jt|j
dtttdddgt
}t|}|j|dd|j|dd|j|dd|j|dd|j|dddD]$}|jd5||dfddd&dD]$}|jd5|d|fddd&|jt|j
d|jt|j
d|jt|j
d |jt|j
d!|jt|j
d|jt|j
dy#1swY!xYw#1swYxYw)"N)@rrlr.rriiir9rr,@r8rr[r6rr)r"rrrrr)rrr[rr.rr6rr"r,rr+rrrr
r
)r
rSrrrtrRrrSrrlr rr)rbrwrJindexs    r@test_memoryview_indexz(TestBufferProtocol.test_memoryview_index\sTC
0rN2%3#3$)Q]]A6
WBu
5rN-q}}bAT%(^A3k
BrN*ammU;)Q]]C8)Q]]C8	
*ammR8*ammQ7T%)_QqE
ErN4!$4!$4"%6B'6A&	E00Q07
%(

		E00Q07
!U(

		
*ammZ@*ammZ@)Q]]I>)Q]]J?	
-q}}bA-q}}a@



s:L<#M	<M		M	ctdgdt}t|}d|d<|j|ddd|d<|j|dd|j	t
|jdd	tttd
d
g}t|}|j	t
|jdd
tttd
d
gt}t|}|j	t|jdd|j	t
|jdd
|j	t
|jdd|j	t|jdd|j	t|jddtdD]l}|dk(s|dk(rtgddg|t}t|}tdd}d||<|j||d|j||||ntgddgdt}t|}d|d<|j|ddtgd dgdt}t|}d!|d"<|j|d"d!td#gd"gdt}t|}|j	t
|jdd$tttd%gd&t}t|}tdjD]\}}|dk(r|dk(r|j|}|\}	}
|d'k(s|dk(rdd(zdd(z}
}	|d)k7rG|j	t|jd|	d"z
|j	t
|jdd*|j	t|jd|
|jd}|j	t|jdd+tttd"d"gd,t}t|}|j	t |jdd"td-gd"gd.t}t|}|j	t |jdd"tttd/dd0gt}t|}d1|d2<|j|dd"d1d3|d4<|j|ddd3d5D]$}|j#d"65d||df<ddd&d7D]$}|j#d65d|d|f<ddd&|j	t|jd8d|j	t|jd9d|j	t
|jd:d|j	t
|jd;d|j	t |jdddgy#1swYxYw#1swYxYw)<Nrrrkg6@rg7@.rg333338@r9rr"rqrr,rr	r
rrrfr8rCrrrr[r)123r)TFTTr.xrrrrrrrsxLrrrr6*)rr.+r
rrrrr+rr)r
r rSrrrtrRr	rrlrrYrrqr{rerrSr)rbrwrJr=rrYr_rangerlohirs            r@test_memoryview_assignz)TestBufferProtocol.test_memoryview_assignsgTC{
CrN"2%#2%)Q]]At<T%(^A3
/rN)Q]]Ar:T%(^A3k
BrN*ammUA>)Q]]C<)Q]]C<	
*ammR<*ammQ;3<	*CczSCZC{KB2A"a AAaDQqT1%QqT2a5)	*'s3&(rN!1t$
(C&(rN!

adD!dVA3s+
FrN)Q]]As;
T%*%[
L
^"3<--/	AKCs
czBFBczSCZT'1d7Bcz!!*bnnaAF!!)R^^QFj"..!R@	AWWS\*bnnaET%(^A3t;
OrN-q}}aC
hZs3k
JrN-q}}aCT%)_QqE
ErN#Aq2&%Aq2&	 E00Q07
 %(
 
 	 	 E00Q07
 !U(
 
 	 	
*ammZC*ammZC)Q]]IqA)Q]]JB	
-q}}a!QH
 
 
 
 sW34X3W=	X		c
tttddgt}t	|}|jt|jtddd|jt|jtdddtddg|jt|jdtttddgt}t	|}|jt|jtdddtdddf|jt|jtdddtdddftddg|jt|jtdddif|jt|jtdddiftddg|jt|jtddddgdtfD]?}tttddgdgdt|z	}tttd
dgdg|}t	|}t	|}|dd|dd|dd|dd|j|||j|||ddddd|dd
ddd<|ddddd|dd
ddd<|j|||j|||dddddd|dddddd<|dddddd|dddddd<|j|||j||By)Nrrrr"r.rrr)rrrrrrr[r6r)r
rrlr rSrtrrrr	r%rSrRrrr)rbrwrJrrrrrs        r@test_memoryview_slicez(TestBufferProtocol.test_memoryview_slices
T%)_RD
DrN	
*ammU1Qq\B*ammU1Qq\#QqE*	,	
-q}}bAT%)_RD
DrN-q}} 1Q<q16	8-q}} 1Q<q16	1Q%8H	J	
)Q]]U1Qq\24FG)Q]]U1Qq\24F#QqE*	,	
)Q]]E!AaL1#F[	&E$uRy/"tB +E 13C$uRy/"s%PCCBCB1QxC!H1gBqGR%R% 1Xcc]C!HTrTNqGCaCLBqGDbDMR%R% #AaE
3Q3C!BK"!!Aa%y1~Bq2vJttR%R%/	&rbcd}tddD]}t|dD]\}}}t|D]}t|D]}tj||}tj||}	t	|	}
|j|
||j|
j
|j
|j|
j|j|jt|
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}Yd}~d}~wwxYw#t$r}|j}Yd}~d}~wwxYw)Ncnt|D]\}}||}||}|j|||||<||k7r%|j|||j||n$|j|||j|||||<|j|||j|||||<|||<yr)r&rrassertNotEqual)	testcaserLrrJ
singleitemrryaimis	         r@cmptestz9TestBufferProtocol.test_memoryview_array.<locals>.cmptest8s!!
1qTqT$$R,!!#++Aq1++Aq1((A.((A.!!$$Q*$$Q*!!
rbr.rrQ)
rlrr:rQrSrrrQr/rgr.r/rqr)rbr-rr=r{r*r7r@rLrrJ	array_errhave_resizealarrm_errs                 r@test_memoryview_arrayz(TestBufferProtocol.test_memoryview_array6s	$q!(	?A*5a*A'
?&UJ'l&?F"+A,%?!KKU3!KKU3&qM((A.((QXXZ@((aiikB((QQ8aAz:$(	&*4!"6B!"6B()&	AfI*-b'SW*<K!%0()&	AfI' MM%<"i MM%; ,,Q2 ,,QXXZD ,,QYY[!))+F#D!Q:>K%?&?'
?(	?. )4()I4 )0$%KKE0s0 )H
H/
	H,H''H,/	I8I		Ictjdgd}tjdgd}t|}t|}dD]N}|jt|||t|jt|||tPt|}|j|j
|||j|||j||t|}t|}|j|j|||j||t|}|j|gdtdgdgdt}d	td
f|d<|jt||tjdd
}t|}|j|||j||trGddtj}|dd}t|}t|}|j|||j|||j|||jt|jyy)Nrr)r.r"r9)__lt____le____gt____ge__rr.zl x d xrkrr,rurcDeZdZdejfdejfgZy)ITestBufferProtocol.test_memoryview_compare_special_cases.<locals>.BEPointr`rNrrrrrrrrbr@rr; &--03

2FGrbrrr)rQrSrqgetattrrrrrr(r
r rrrrtrSrQ)	rbrLrrwattrrYrrs	         r@%test_memoryview_compare_special_casesz8TestBufferProtocol.test_memoryview_compare_special_casestsKKY'KKY'
qMqM<	?DMM*'!T*1-~>MM*'!T*1-~>	?

qM			AAq!Aq!qMqM			Aq!Aq!
qMAy)fXaS+
NU5\"1JrNB/
KKU#qMAq!Aq!
H&33
HC%E5!A5!A1%5)q)1188<rbctdgd}tdgdt}t|}t|}|j|||j|||j|||j|||j|||j|||j	|j||j	|j|d|d<|j
|||j
|||j
|||j
|||j
|||j
|||j	|j||j	|j|tttddgttz	}tttddgttz	}t|}|j||d
|d<|j
||tdgd
}tdgdt}t|}t|}|j|||j|||j|||j|||j|||j||tdgd
}tdgdt}t|}t|}|j
|||j
|||j
|||j
|||j
|||j
|||j|||j||y)N@Lrlrrkirrrrr)rCrrLf5shf5s)i?rr)r
r rSrrrK__ne__r(rrrlr)rbnd1nd2rr?rYrwrJs        r@!test_memoryview_compare_ndim_zeroz4TestBufferProtocol.test_memoryview_compare_ndim_zeros
d"T2d"SDsOsOAAC a C a !%!%"Aq!Aq!As#C#As#C#!%!%
T%)_RDF8J
K
T%)_RDF8J
KrNB!Ar"+2fE+2f')sOsOAAC a C a +2fE,Bv')sOsOAq!Aq!As#C#As#C#C C rbcPtgddgd}tgddgd}t|}t|}|j|||j|||j|||j|||j||tgddgd}tgddgd}t|}t|}|j|||j|||j|||j|||j||tgdd	gd}tgddgd}t|}t|}|j||ddd
|j|ddd
||j||ddd
|j|ddd|dddtgdd	gd
}tgddgd}t|}t|}|j||ddd
|j|ddd
||j||ddd
|j|ddd|dddtgdd	gd}tgddgdt}t|}t|}|j||ddd
|j|ddd
||j||ddd
|j|ddd|dddtgdd	gd}tgddgdt}t|}t|}|j||ddd
|j|ddd
||j||ddd
|j|ddd|dddy)N@'r@hrl)rMrNrOrPiz<iz>h)rMrOrQr[r"rrz!hz<lrkzh  0cz>  h)r
rSrrr(rrbrHrIrr?s     r@ test_memoryview_compare_ndim_onez3TestBufferProtocol.test_memoryview_compare_ndim_ones21#dK1!TJsOsOC C As#As#Aq!21#dK1!TJsOsOC C As#As#Aq!(DA21#dKsOsOC!H%3Q3%AccF#4R4!DbD'*(DA21#dKsOsOC!H%3Q3%AccF#4R4!DbD'*(DA21#d"$sOsOC!H%3Q3%AccF#4R4!DbD'*(GD21#f"$sOsOC!H%3Q3%AccF#4R4!DbD'*rbcLtddgdgd}tddgdgd}t|}t|}|j|||j|||j|||j|||j||tddgdgd}tddgdgd	}t|}t|}|j|||j|||j|||j|||j||y)
NrrrRrli|i?z= h0cz@   ir
rSrrrSs     r@"test_memoryview_compare_zero_shapez5TestBufferProtocol.test_memoryview_compare_zero_shape0
ssCjD9tTl1#d;sOsOC C C C AsCjG<tTl1#g>sOsOC C C C ArbcTtgddgd}tdgdgdgd}t|}t|}|j|||j|||j|||j|||j||td	gdzdgd
}td	gdgdgd}t|}t|}|j|||j|||j|||j|||j||y)N)rVrVrVrVr6rDrlrVrrr)rVrVz@ Liz!L  hrWrSs     r@$test_memoryview_compare_zero_stridesz7TestBufferProtocol.test_memoryview_compare_zero_stridesJ
s*1#dCseA3C@sOsOC C C C Azl1nQC?zl1#s7KsOsOC C C C Arbcd}tdD]s}t|dd|\}}}dtfD]T}t||g||}t	|}|j|||ddd}t	|}|j||Vud}t
dD]p}	t|\}}}dtfD]T}t||g||}t	|}|j|||ddd}t	|}|j||Vry)	NrqrKrSrCrrkrr)rYrrr
rSrrrl)
rbrr^r=r{r*rrYrJrys
          r@&test_memoryview_compare_random_formatsz9TestBufferProtocol.test_memoryview_compare_random_formatsd
s%
DM		(D%.q,T%J"C
V
(U1#cGrN  B'"XrN  B'
(		(
s		(A%.q\"C
V
(U1#cGrN  B'"XrN  B'
(		(rbctttddgdd}tttddgdd}t|}t|}|j	|||j	|||j|||j|||j||tdgdzgdd	}td
gdzgdd}t|}t|}|j	|||j	|||j|||j|||j||tttdgdd
}tttdgdd
}t|}t|}|j	|||j	|||j|||j|||j||tdgdzddgd}tdgdzddgd}t|}t|}|j	|||j	|||j|||j|||j||tttdgdd
}tttdgdd}t|}t|}|j	|||j	|||j	|||j	|||j	||y)Nr7r[r"rrRrlrrrr.r"z=f q xxL)g333333r.r"z< f 2Qrrr[r9z! b B xLz
= Qx l xxLrr
rrlrSrrr(rSs     r@"test_memoryview_compare_multidim_cz5TestBufferProtocol.test_memoryview_compare_multidim_c
sd5b>*)DId5B<(	$GsOsOC C As#As#Aq!yk"nIjI|nR'yJsOsOC C As#As#Aq!d59oYsCd59oYsCsOsOC C As#As#Aq!yk"nQF:Fyk"nQF<HsOsOC C As#As#Aq!d59oYsCd59oYsCsOsOC C C C ArbcDtttddgddt}tttddgddt}t	|}t	|}|j|||j|||j
|||j
|||j
||tdgd	zd
dgdt}td
gd	zd
dgdt}t	|}t	|}|j|||j|||j
|||j
|||j
||tttddgddt}tttddgddt}t	|}t	|}|j|||j|||j
|||j
|||j
||tttddgddt}tttddgddt}t	|}t	|}|j|||j|||j
|||j
|||j
||tttdgddt}tttdgddt}t	|}t	|}|j|||j|||j|||j|||j||y)Nr^r7)rr"r[rRrkrrrrr7r"r[=Qq)rrz=qQrrr_0llrM)r
rrlrrSrrr(rSs     r@(test_memoryview_compare_multidim_fortranz;TestBufferProtocol.test_memoryview_compare_multidim_fortran
sd5b>*)D&(d5B<(	$&(sOsOC C As#As#Aq!}oa'1ve&(}oa'1ve&(sOsOC C As#As#Aq!d5b>*)C&(d5b>*)C&(sOsOC C As#As#Aq!d5b>*)E&(d5b>*)C&(sOsOC C As#As#Aq!d59oYt&(d59oYt&(sOsOC C C C Arbc	ttdd}t|gd}t|gdd}t|gddt}t|}t|}|j
|||j
|||j
||dgd	z}d
|d<t|gd}t|gdd}t|gdd
t}t|}t|}|j
|||j
|||j
||tttdddgd}|ddddddf}tttdddgd}|ddddddf}t|}t|}|j
|||j
|||j|||j|||j||tdgdzddgd}|ddddddf}tdgdzddgd}|ddddddf}t|}t|}|j
|||j
|||j
|||j
|||j
||tttd	gdd}|dddddf}tttd	gdd}|dddddf}t|}t|}|j
|||j
|||j|||j|||j||tttd	gdd}|dddddf}tttd	gdd}|dddddf}t|}t|}|j
|||j
|||j|||j|||j||tdgd	zgd d!}|dddddf}tdgd	zgd d"}|dddddf}t|}t|}|j
|||j
|||j|||j|||j||y)#Nr^r7r_@lrlrrk)gffffff
rr)grkrrzd b czd h c(r8@Ir[r.rrr)rr'rr"z=iiz>iirrr)r"rrr[r"b3si3s)rrlrr
rrSrrr()	rblst1lst2rHrIrr?rrs	         r@&test_memoryview_compare_multidim_mixedz9TestBufferProtocol.test_memoryview_compare_multidim_mixedsE#rN#y)d)D9d)CzJsOsOC C A""2%#Qy)d)G<d)G:NsOsOC C Ad59oaVDA!Ab&$B$,d59oaVC@!Aa%2+sOsOC C As#As#Aq!()",RGEJ!Ab&$B$,()",RGEJ!Aa%2+sOsOC C C C Ad59oYsC!A$"*od59oYsC!A$"*osOsOC C As#As#Aq!d59oYsC!A$"*od59oYsC!A$"*osOsOC C As#As#Aq!{mB&iF!A$"*o{mB&iF!A$"*osOsOC C As#As#Aq!rbctttdgdd}tttdgdd}t|}t|}|j	|||j	|||j|||j|||j||tttdgdd}tttdgdd}t|}t|}|j	|||j	|||j|||j|||j||y)Nr)rr[r"rrl)rrr"z@irbrSs     r@+test_memoryview_compare_multidim_zero_shapez>TestBufferProtocol.test_memoryview_compare_multidim_zero_shapegs"d59oYsCd59oYtDsOsOC C As#As#Aq!d59oYsCd59oYtDsOsOC C As#As#Aq!rbctdgdzgdd}tdggdgdd}t|}t|}|j|||j|||j|||j|||j|||j|j|jtd	gd
zddgd
}td	gddgddgd}t|}t|}|j|||j|||j|||j|||j||y)NrVr)r6rr6rDrlrrrrrqr"rz=lQrz<lQ)r
rSrrrQrSs     r@-test_memoryview_compare_multidim_zero_stridesz@TestBufferProtocol.test_memoryview_compare_multidim_zero_stridess>seBhi=se9iLsOsOC C C C AQXXZ0vhrk!Q>vhq!fq!fUKsOsOC C C C Arbc>tttdddgd}|dddddd	f}tttdddgd
t}|dddddd	f}t	|}t	|}|j|||j|||j
|||j
|||j
||tdgdzddgd
t}d|dd<|dddddd	f}tdgdzddgdttz}d|dd<|dddddd	f}t	|}t	|}|j|||j|||j|||j|||j||tttdgddt}|ddddd	f}tttdgdd}|ddddd	f}t	|}t	|}|j|||j|||j
|||j
|||j
||tdgdzgddttz}|ddddd	f}tdgdzgdd}|ddddd	f}t	|}t	|}|j|||j|||j
|||j
|||j
||tttdgddt}|ddddd	f}tttdgddt}|ddddd	f}t	|}t	|}|j|||j|||j|||j|||j||tdgdzgddttz}d|ddd<|ddddd	f}tdgdzgddttz}d|ddd<|ddddd	f}t	|}t	|}|j|||j|||j
|||j
|||j
||ttdd }t|gd}t|gdd!t}t|gdd"ttz}t	|}t	|}|j|||j|||j||d#gdz}d$|d%<t|gd}t|gdd&t}t|gdd'ttz}t	|}t	|}|j|||j|||j||y)(Nrlrr8rmrlr[r.rrrrkrerf)r.rr"r9z>Qqrrrr_)rrBbror)hellorbr.)r[r[r[5s0sP)ssushirbr.r^r7rjr)ssashimisslicedg4@)sramensspicygfffff"@rz
< 10p 9p dz
> 10p 9p d)
r
rrlrrSrrr(r rr)	rbrrHrrIrr?rrrss	         r@+test_memoryview_compare_multidim_suboffsetsz>TestBufferProtocol.test_memoryview_compare_multidim_suboffsetssd59oaVDA!Ab&$B$,d59oaVCvN!Aa%2+sOsOC C As#As#Aq!}ob(Au')Aq	!Ab&$B$,}ob(Au";.0Aq	!Aa%2+sOsOC C C C Ad59oYs"$!A$"*od59oYsC!A$"*osOsOC C As#As#Aq!|nR'y";.0!A$"*o|nR'yF!A$"*osOsOC C As#As#Aq!d59oYs&Q!A$"*od59oYt6R!A$"*osOsOC C C C A)*2-Yw";.0)Aq	!!A$"*o)*2-Yw";.0)Aq	!!A$"*osOsOC C As#As#Aq!E#rN#y)d)DGd)Cz&?PQsOsOC C A//2-Ry)d)LOd)L&v-/sOsOC C ArbcdD]y}tdgdzgd|dz}tdgdzgd|dzttz}d|d	d
ddd<t|}t|}|j	|||j	|||j|||j|||j||tdgdzgd|dz}tdgdzgd|dzttz}d
|d	d
ddd<t|}t|}|j	|||j	|||j|||j|||j|||y)N)rFrDrErGr*r)r[rr"r"r"rrlrkr.r"r[)r*r(r&QLH)r.r.r.)r
r rrSrrr()rb	byteorderr`rrLrs      r@!test_memoryview_compare_not_equalz4TestBufferProtocol.test_memoryview_compare_not_equals.	&I;y}MA;y})*46A AaDGAJqM!1
A1
AQ"Q"1%1%1%./3;(0A./3;(k*6LNA(AaDGAJqM!1
A1
AQ"Q"1%1%1%1	&rbctjdgd}t|}|j|jtt||jt|j
d|jtt||jt|j|jt|j|jttdt|jt|jd|jt|jdddD]#}|jt|j|%tjdgd}t|}t|}|j|||j|j|||j|||j||y)Nr)g?g@gffffff
@rz1.0 in mrr.)r_r-rsrrrrrrUrrr)rQrSrrtrrer
rQr/rr rr	__getattribute__rrr()rbrLrJr@rrrs       r@test_memoryview_check_releasedz1TestBufferProtocol.test_memoryview_check_released:sfKK_-qM				
*j!4*affc2*gq1*ahh/*aii0*dJA*ammQ7*ammQ:3	DD
j!*<*<dC	D
KK_-
]
]R 


B#B"R rbcd}t|dgd}t|}|j|||j|j|jt|gdgd}t|}|j|||j|j|jtt	dDcgc]}|c}gdd	}t|}|j|||j|j|jtt	d
Dcgc]}|c}gdd}t|}|j|||j|j|jt
rWGd
dt
j}|dd}t|}|j|jt|yycc}wcc}w)NrLrrRrlr.z>hQiLlrrtz=hQiLlr)rr"r"r[r"z<hQiLlcDeZdZdejfdejfgZy);TestBufferProtocol.test_memoryview_tobytes.<locals>.BEPointr`rNr<rrbr@rrr=rbrrr)r
rSrrr/rlrrrZ)rbrrYrJryrrrLs        r@test_memoryview_tobytesz*TestBufferProtocol.test_memoryview_tobytesbs
)
Qqc$
/rNBbjjl3
aSH
5rNBbjjl3
r+Aa+78
LrNBbjjl3
s,Aa,K$&rNBbjjl3
H&33
HC%E5!AQYY[%,7
,
-s
	G:<	G?c|jttitd|jttdt
dt
gddgdg}|jtt|t
dt
dd	d
}dD]:}t|t|}|j|||j|d	d<t
dd	d
t
}dD]:}t|t|}|j|||j|d	d<dD]n}d|d	<t|t
|}|j|||j|d	dd|d	<|j|d	d|j|d	dpt
dgdgd
t
}dD]f}t|t|}|jt|jd|j|||j|jght
ttdgdd
t
}dD]>}t|t|}|jt
|jggg@t
dgdgdt
}dD]S}t|t
|}|j|||j|j|jUt
gddgdt
}dD]S}t|t
|}|j|||j|j|jUt
gddgdgt}dD]}t|t|}|j|||j|j|j|jt|jdd|j|dd|j|dd|ddd}dD]}t|t|}|j|||j|j|j|jt|jdd|j|dd|j|ddt
ttdddgt}dD]J}t|t
|}|jt
|j|jL|jtt|t
dt|t}|jt
|j|jt
ttdddgttz}dD]J}t|t
|}|jt
|j|jL|jtt|t
dt|t|}|jt
|j|jt
ttdddgtt z}dD]k}|jtt|t
|t|t|}|jt
|j|jmt
gddgdg}t|td}|j#|j$y)Nrirrrr"rrjrrrrlrhrkrqr.rr8rxrr[rrrfrrr6r)rrj)rirjr)rtrRrrr~PyBUF_WRITEr
rrr rrrQrrlr	rrrr)rbrYrorJs    r@test_memoryview_get_contiguousz1TestBufferProtocol.test_memoryview_get_contiguouss6	
)^RSI	
+~t[#NYqcA3
7+~r;LQb
-$	'Er:u5AQ#QrUA&	'QbK
@$	'Er:u5AQ#QrUA&	'%	)EBrFr;6AQ#QrUA&AbEQrUB'RVR(	)aSC{
C$	-Er:u5Aj!--;Q#QXXZ,		-T%(^9S&($	<Er:u5AWQZ..02r(;	<
aSC{
C$	6Er;6AQ#QXXZ5	6
Yqc#[
I$	6Er;6AQ#QXXZ5	6YqcA3k
J$	'Er:u5AQ#QXXZ5i2>QqT1%RUA&
	'"X$	'Er:u5AQ#QXXZ5i2>QqT1%RUA&
	'T%)_QF+
F	?Er;6AWQZ..0"))+>	?	
+~r;L2z51**,biik:
T%)_QF&z13	?Er;6AWQZ..0"))+>	?	
+~r;L2z51**,biik:T%)_QF+f:L
M$	?Ek>2{#
%r:u5AWQZ..0"))+>		?[aS
92z3/'rbcHtjd}tjdgd}t|}t	j
|}t
d|z}|j||j|j|tjd}tttdgdd}t|}t	j
|}t
d|z}|j||j|j|y)Nrrrrrrsrl)
r:rrQrSioBytesIOr%readintorrr/r
rrl)rbrrLrJr)rrYs       r@test_memoryview_serializingz.TestBufferProtocol.test_memoryview_serializingss#KK[)qMjjmafQa(s#
T%)_GC
@rNjjmeDj!Qa(rbchtttd}t|}|j	t|t||j
dddg}|j	t|t||ddd}tttdddd}|j	t|t|tttdgdt	}t|}|j	t|t|tttdgd}|ddd
dddddf}t|}|j	t|t|tttdgdt	}|ddd
dddddf}t|}|j	t|t|tttddgd
}t|}tttddgd}t|}|j	|||j	t|t|tttdgdd}t|}|jt|jtttddgdd}t|}|jt|jtttdgdd}t|}|jt|jtttddgdd}t|}|jt|jy)Nrrr[r6rrrr_rr"r)r"rr[rrlrrtrrr7rz= Lz< h)
rZrrlrSrrrurer
rrrtr__hash__)	rbrrJmcmxrYr`rLrs	         r@test_memoryview_hashz'TestBufferProtocol.test_memoryview_hashs
$uRy/"qMa$q'*VVC!uV
%b47+ttW$uRy/$B$'(b47+T%)_G:
FrNa$r(+T%)_G
4ssB"}qMa$q'*T%)_G6
BssB"}qMa$q'*
DrOB4<qMDrOB4<qMAa$q'*T%)_GC
@rN*ajj1
T%A,'ws
CrN*ajj1
T%)_GE
BrN*ajj1
T%A,'wu
ErN*ajj1rbc
tgd}t|}t|}|jt|j
~|jtgd}t|}t|tt}t|tt}|j|j||jt|j
~~|jtgd}t|}t|}t|}|j|jt|j
~|jtgd}t|}t|}t|tt}t|tt}|j|j||j|jt|j
~~|jtgddgt}t|}|jgddgt|}t|}|j|j|jt|}	|j|	j|j|j|	j|j|j|	j|j|j|j|j~|j|jd}
td	}t|5}|
||j|d
tddddtt!t#dgd
d}t|tt}	t|	tt}|j|j|t|5}|
||j|d
djgdgdggdddd
tfD]}td	}t|5}~t|t|}	t|	5}~	t|t|}t|5}
~|
|
|
||
||j|d
td|j|dtd|j|
dtd~
ddd~ddd~dddtd	}t|5}~t|t|}	t|	5}~	t|t|}t|5}
~|
||
||
|
|j|d
td|j|dtd|j|
dtd~~~
dddddddddtd	}|jt5t|5}t|}|d
tdk(ddddddy#1swYxYw#1swYFxYw#1swYvxYw#1swYzxYw#1swY~xYw#1swYxYw#1swYxYw#1swYxYw#1swYxxYw#1swYyxYw)Nrrrr[r)r6rr7r9r8rrcFt|5}	dddy#1swYyxYwrrS)rrs  r@catch22z;TestBufferProtocol.test_memoryview_release.<locals>.catch22s#A
"


s rrrrrtrrlr.r`)r[r6rrr"r)r%rSr
rtr~rrND_REDIRECTrqr_rrrrrQrordrrl)rbrLrJrYrHrIrrr`rrrHrrrws               r@test_memoryview_releasez*TestBufferProtocol.test_memoryview_releaseTs
gqM
QZ+qyy1			gqMa
[Ac-{C

cggq!+qyy1			
g
]
^
R[


+rzz2


g
]
^bkBc-{C

cggr"


+rzz2


WQC|
<
^
A3'
^rNRYY[1rNRYY[1RYY[1


			
RYY[1


			
	
f
]	/bBKRUCI.	/
DrO73?Am;?Am;?

aeeQ
]	HaAJQqV]]_	9/E.FG	H
%#	'E&!AA
"B}EB]b=FA#A"((AD	:((AD	:((AD	:!
$&!AA
'"B}EB]'b=FA#A'"((AD	:((AD	:((AD	:B''
'
'+#	'L
f


{
+	"A
"!QZ!D	!
"	"	"i	/	/	H	H

2''''
'
'&
"
"	"	"s<'Z
 3Z=Z>Z1;A5Z$	0	Z19	Z> [#?[A7[	[[#[<[09[<
ZZ!$Z.
)Z11Z;6Z>>[	[
[[ [##[-	0[9	5[<<\c&ttdDcgc]}d|z	c}dgd}tjdtdDcgc]}d|z	c}}||fD]&}t|tt}t|tt}t|}|j
|j||j
|j||j
|j||j|||j|||j|||j|dd|dd|j|dd|dd|j|dd|dd~~|j|dd|dd)ycc}wcc}w)Nrrrrlrr.r[)	r
rlrQrrrSrqr_rr)rbr`rYrLrrHrJs       r@test_memoryview_redirectz+TestBufferProtocol.test_memoryview_redirectsc
uRy1!cAg1"c
JKKuRy9!cAg9:a	-A-{CA-{CA1
AMM!%%#MM!%%#MM!%%#Q"Q"Q"QqVQqV,QqVQqV,QqVQqV,1QqVQqV,#	-29sF	F
c&d}gd}|jttdddt}t|}|j	||d|dddgdg|	tdD]}|j
|||~~t}t|}~~t}t|t	}t|t	}t|}|j|j||j|j||j	||d|dddgdg|	~~~~t}t|tt
}t|tt
}t|}|j|j||j|j||j|j||j	||d|dddgdg|	~~~~td}t|}|j	|dd|dddgdg|	tdD]}|j
|||~~td}t|}~~td}t|t	}t|t	}t|}|j|jd|j|j||j	||d|dddgdg|	~~~~td}t|tt
}t|tt
}t|}|j|jd|j|j||j|j||j	||d|dddgdg|	~~~~y)Nr)rr.r"r[r6rr7r9r8rrqrr.r"r[Trrrr)legacy_mode)rtrRstaticarrayrSrrlrrr
rrqr_r)rbr=rmr`rrrHrJs        r@$test_memoryview_from_static_exporterz7TestBufferProtocol.test_memoryview_from_static_exportersd)	
)[!Q:
MqMA1C$2$		r	&AQqT1%	&

MqM

MAm,Am,qM

aeeQ

aeeQA1C$2$		
q!QMAm;?Am;?qM

aeeQ

aeeQ

aeeQA1C$2$		
q!Q
D)qMA4C$2$		r	&AQqT1%	&

D)qM

D)Am,Am,qM

aeeT"

aeeQA1C$2$		
q!QD)Am;?Am;?qM	


aeeT"

aeeQ

aeeQA1C$2$		
q!Qrbcrtgddgttz}|jtt
|y)Nrr[r)r
rND_GETBUF_UNDEFINEDrtr~rSrgs  r@#test_memoryview_getbuffer_undefinedz6TestBufferProtocol.test_memoryview_getbuffer_undefinedJs,Wqc8K)K
L+z26rbcdtgddgt}|jtt|y)Nrr[r)r
rrtr~rS)rbr`s  r@test_issue_7385z"TestBufferProtocol.test_issue_7385Ps$GA3n=+z15rbcdD]:}|jtj|tj|<y)N)rBii3s)rr	_testcapiPyBuffer_SizeFromFormatr:r)rbrs  r@test_pybuffer_size_from_formatz1TestBufferProtocol.test_pybuffer_size_from_formatTs:'	6FY>>vF#__V4
6	6rbNF)Vrrrrcrrrrequires_resourcerrrrrrrrr
rrrrrr!r)r+r3r5r=r@rIrMrZr\rbrdrhrkrmrorqrvr|rrrrrrrrrrrr
contextlibcontextmanagerrrr"r%r3rArJrTrXrZr\rcrhrtrvrxr~rrrrrrrrrrrcpython_onlyrrrbr@r]r]s@1"'UJX.,`Wu%g<&g<R\=| $
'3*=+)Z%LN64E..`,1\H>-&W7r<(D@!@F4/l>B'0R38<E|(I&;/
$>2
0#7Jn8`sQj-$''L?62p5q@f:.xWu%R0&R0h9<3AII3AjkIZ6&p<?|3=j=!~F+P44(8<|FP_"B"46B&:&!P!8Fs(j)<:2x~"@-0\|76
66rbr]ceZdZdZdZdZdZdZdZe	jedudd	Zd
Z
dZdZd
ZdZdZdZdZdZy)TestPythonBufferProtocolcGdd}t|}|j|jd|jt|dy)NceZdZdZy)5TestPythonBufferProtocol.test_basic.<locals>.MyBufferctdSNr{rrbrs  r@
__buffer__z@TestPythonBufferProtocol.test_basic.<locals>.MyBuffer.__buffer___
!(++rbNrrrrrrbr@MyBufferr^
,rbrr{)rSrrr/rZ)rbrrs   r@
test_basicz#TestPythonBufferProtocol.test_basic]sG	,	,

#x0xz*H5rbcGdd}|jtt|Gdd}|jtt|Gdd}|jtt|y)NceZdZdZy)ETestPythonBufferProtocol.test_bad_buffer_method.<locals>.MustReturnMVcy)Nrrrs  r@rzPTestPythonBufferProtocol.test_bad_buffer_method.<locals>.MustReturnMV.__buffer__hsrbNrrrbr@MustReturnMVrgs
rbrceZdZdZy)FTestPythonBufferProtocol.test_bad_buffer_method.<locals>.NoBytesEithercyrrrs  r@rzQTestPythonBufferProtocol.test_bad_buffer_method.<locals>.NoBytesEither.__buffer__nsrbNrrrbr@
NoBytesEitherrms
 rbrceZdZdZy)CTestPythonBufferProtocol.test_bad_buffer_method.<locals>.WrongArityctdSrrras r@rzNTestPythonBufferProtocol.test_bad_buffer_method.<locals>.WrongArity.__buffer__trrbNrrrbr@
WrongArityrsrrbr)rtrRrS)rbrrrs    r@test_bad_buffer_methodz/TestPythonBufferProtocol.test_bad_buffer_methodfsb			
)Z@	 	 	
)ZA	,	,	
)Z>rbcHGdd}|}|j|jt|5}|j|j|j	|jdddd|j|jy#1swY%xYw)NceZdZdZdZdZy)CTestPythonBufferProtocol.test_release_buffer.<locals>.WhatToReleasec2d|_td|_yNFr{)heldr%baras r@rzLTestPythonBufferProtocol.test_release_buffer.<locals>.WhatToRelease.__init__{s!	#H-rbch|jrtdd|_t|jSNzalready heldT)rrRrSrrs  r@rzNTestPythonBufferProtocol.test_release_buffer.<locals>.WhatToRelease.__buffer__s*99#N33 	!$''**rbcd|_yNF)rrbr#s  r@__release_buffer__zVTestPythonBufferProtocol.test_release_buffer.<locals>.WhatToRelease.__release_buffer__s	!	rbNrrrrrrrrbr@
WhatToReleaserzs
.
+
"rbrr{rKrrSrrrr/rbrwrrs    r@test_release_bufferz,TestPythonBufferProtocol.test_release_bufferys	"	"_!
^	5rOOBGG$RZZ\84	5	
!	5	5<BB!cHGdd}|}|j|jt|5}|j|j|j	|jdddd|j|jy#1swY%xYw)NceZdZdZdZdZy)ITestPythonBufferProtocol.test_same_buffer_returned.<locals>.WhatToReleasec@d|_td|_d|_yr)rr%r
created_mvras r@rzRTestPythonBufferProtocol.test_same_buffer_returned.<locals>.WhatToRelease.__init__s!	#H-"&rbc|jrtdd|_t|j|_|jSr)rrRrSrrrs  r@rzTTestPythonBufferProtocol.test_same_buffer_returned.<locals>.WhatToRelease.__buffer__s599#N33 	",TWW"5&rbc2||jusJd|_yr)rrrs  r@rz\TestPythonBufferProtocol.test_same_buffer_returned.<locals>.WhatToRelease.__release_buffer__s00!	rbNrrrbr@rrs
'

'
"rbrr{rrs    r@test_same_buffer_returnedz2TestPythonBufferProtocol.test_same_buffer_returneds	"	""_!
^	5rOOBGG$RZZ\84	5	
!	5	5rc4Gdd}|dd}|dd}tj|tjj5}|j|j
dtd|d<|j|j
ddddtj|tjj5}|j|j
d|jt5td	|d<ddd|j|j
ddddtj|tjj5}|j|j
d|jt5td|d<ddd|j|j
dddd|jt5tj|tjjdddt|5}|j|j
d|jt5td|d<ddd|j|j
ddddy#1swYxYw#1swYxYw#1swYxYw#1swY&xYw#1swYxYw#1swYxYw#1swYxYw#1swYyxYw)
NceZdZddZdZy)CTestPythonBufferProtocol.test_buffer_flags.<locals>.PossiblyMutableNc2t||_||_yr)r%_data_mutable)rbdatamutables   r@rzLTestPythonBufferProtocol.test_buffer_flags.<locals>.PossiblyMutable.__init__s&t_
 '
rbc|tjjzr,|jst	dt|jStt|jS)Nznot mutable)inspectBufferFlagsWRITABLErrrSrrZrs  r@rzNTestPythonBufferProtocol.test_buffer_flags.<locals>.PossiblyMutable.__buffer__sK7..777==*=99%djj11%eDJJ&788rb)returnN)rrrrrrrbr@PossiblyMutablers
(
9rbrr{TFrrsxelloh)rS_from_flagsrrrrrr/rSIMPLErtrRr)rbrr	immutablers     r@test_buffer_flagsz*TestPythonBufferProtocol.test_buffer_flagssy	9	9"(D1#He4	

#
#GW-@-@-I-I
J	5bRZZ\84IBqE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	5sAJ56KK(K36K))K8(K)=/K6?6L5L(L5J?K	KKK&	!K))K36K?L	LLc6td}|jd}|j|jd|j	||jt5|jtjdzdddy#1swYyxYw)Nr{rr.)	r%rrrr/rrtrrVr)rbrrs   r@test_call_builtinsz+TestPythonBufferProtocol.test_call_builtinssu
x
 
]]1
x0
b!


}
-	+MM#++/*	+	+	+s##BBNzrequires _testcapictj}|j|jd|j	d}|j|t|j|jd|j|jd|j||j|jd|jt5|jddd|jt5|j|ddd|j|jdy#1swYUxYw#1swY2xYw)Nrstestr.)rtestBufrr
referencesrassertIsInstancerSr/rrtr)rbr)rs   r@
test_c_bufferz&TestPythonBufferProtocol.test_c_buffers!+
^^A
b*-w/+r"+


z
*	JJL	

z
*	'""2&	'+			'	'sD;E;EEcGddt}|d}t|}|j|jdy)NceZdZfdZxZS)4TestPythonBufferProtocol.test_inheritance.<locals>.Ac"t||Srsuperrrbrr/s  r@rz?TestPythonBufferProtocol.test_inheritance.<locals>.A.__buffer__w)%00rbrrrr
__classcell__r/s@r@rjr	

1
1rbrjr{r%rSrrr/)rbrjrLrs    r@test_inheritancez)TestPythonBufferProtocol.test_inheritances8	1		1
hK
]x0rbcdGfddt}|d}t|5}|j|jd|jdddd|jdy#1swYxYw)Nrc,eZdZfdZfdZxZS)BTestPythonBufferProtocol.test_inheritance_releasebuffer.<locals>.Bc"t||Srrr
s  r@rzMTestPythonBufferProtocol.test_inheritance_releasebuffer.<locals>.B.__buffer__rrbc.dz
t||y)Nr.rr)rbviewr/
rb_call_counts  r@rzUTestPythonBufferProtocol.test_inheritance_releasebuffer.<locals>.B.__release_buffer__s"
*40rbrrrrrr)r/rs@r@rrs
1
1
1rbrr{r.r)rbrrrrs    @r@test_inheritance_releasebufferz7TestPythonBufferProtocol.test_inheritance_releasebuffersu
	1		1
hK
]	/bRZZ\84]A.	/	
*	/	/s3A66A?cGddt}|d}t|5}|j|jddddddGfddt}|d}t|5}|j|jd|jdddd|jd|j	d	y#1swYxYw#1swY:xYw)
NceZdZdZy)JTestPythonBufferProtocol.test_inherit_but_return_something_else.<locals>.ActdSrrrs  r@rzUTestPythonBufferProtocol.test_inherit_but_return_something_else.<locals>.A.__buffer__rrbNrrrbr@rjr!rrbrjr{rFc*eZdZdZfdZxZS)JTestPythonBufferProtocol.test_inherit_but_return_something_else.<locals>.BctdSrrrs  r@rzUTestPythonBufferProtocol.test_inherit_but_return_something_else.<locals>.B.__buffer__
rrbcRdz
	t||y#t$rdYywxYw)Nr.T)rrr)rbrr/r	rb_raiseds  r@rz]TestPythonBufferProtocol.test_inherit_but_return_something_else.<locals>.B.__release_buffer__s3"
%G.t4!% $I%s&&r)r/rr's@r@rr$s
,
%
%rbrr.T)r%rSrrr/rq)rbrjrLrrrrr's      @@r@&test_inherit_but_return_something_elsez?TestPythonBufferProtocol.test_inherit_but_return_something_elses	,		,
hK
]	5bRZZ\84	5
	
	%	
	%
hK
]	/bRZZ\84]A.	/	
*

i&-	5	5$	/	/s!C73C#C #C,cGddt}|d}t|5}|j|jddddy#1swYyxYw)NceZdZfdZxZS)>TestPythonBufferProtocol.test_override_only_release.<locals>.Cc$t||yrr)rbr#r/s  r@rzQTestPythonBufferProtocol.test_override_only_release.<locals>.C.__release_buffer__!s*62rb)rrrrrrs@r@rr+ s

3
3rbrr{r)rbrrrs    r@test_override_only_releasez3TestPythonBufferProtocol.test_override_only_releasesM	3		3
hK
]	5bRZZ\84	5	5	5s!A

AcTdGfddt}|d}t|5}j|jdddd|j	jt5jdddy#1swYHxYw#1swYyxYw)Nc*eZdZdeffdZxZS)@TestPythonBufferProtocol.test_release_saves_reference.<locals>.Cr#cjt5t|dddjt5|jddddjt5|j	dddjt5|dddddjt5|jdddd|j
|jdt|%|y#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYkxYw)Nrr.rr{)
rtrrSrerrrrr/rr)rr#r/rbsmuggled_buffers  r@rzSTestPythonBufferProtocol.test_release_saves_reference.<locals>.C.__release_buffer__,s&&z2'v&'&&z2%KK$%&&z2(%%'(&&z22AJ&&z2)%%a()#)  !18<*62''%%(())s;DD/D$D0D<DD!$D-0D9<E)rrrrSrr)r/rbr2s@r@rr0+s
3j
3
3rbrr{)r%rSrrr/clearrtr)rbrrrr2s`   @r@test_release_saves_referencez5TestPythonBufferProtocol.test_release_saves_reference(s	3		3"
hK
]	5bRZZ\84	5		


z
*	&##%	&	&	5	5	&	&s!B8BBB'ctdGfdd}|}t|5}|j|jdddd|j|jjd|jt5jddd|jjjy#1swYxYw#1swY@xYw)Nr{ceZdZfdZdZy)OTestPythonBufferProtocol.test_release_saves_reference_no_subclassing.<locals>.CctSrr)rbrrs  r@rzZTestPythonBufferProtocol.test_release_saves_reference_no_subclassing.<locals>.C.__buffer__Gs
!"~%rbc||_yrr#rs  r@rzbTestPythonBufferProtocol.test_release_saves_reference_no_subclassing.<locals>.C.__release_buffer__J	$rbNrrrrr)rsr@rr7Fs

&
%rbr)	r%rSrrr/r#rtr~r3r)rbrrrrs    @r@+test_release_saves_reference_no_subclassingzDTestPythonBufferProtocol.test_release_saves_reference_no_subclassingCs
x
 	%	%
C
]	5bRZZ\84	5))+X6


{
+	HHJ		

	5	5		s!CC#C #C,c4Gdd}Gdd|t}|d}t|5}|j|jddddGdd}Gd	d
|t}|d}t|5}|j|jdddd|j	|jt5|jjdddy#1swYxYw#1swY^xYw#1swYyxYw)NceZdZdZy)ITestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.ActdS)Nhello Arrs  r@rzTTestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.A.__buffer__Ys
!*--rbNrrrbr@rjr@Xs
.rbrjceZdZfdZxZS)ITestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.Bc"t||Srrr
s  r@rzTTestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.B.__buffer__]rrbrrs@r@rrD\rrbrr{rBceZdZdZy)PTestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.Releaserc||_yrr:rs  r@rzcTestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.Releaser.__release_buffer__er;rbN)rrrrrrbr@ReleaserrGds
%rbrIceZdZfdZxZS)ITestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.Cc"t||Srrr
s  r@rzTTestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.C.__buffer__irrbrrs@r@rrKhrrbrshello C)r%rSrrr/r3rtrr#rbrjrrrrIrrs        r@%test_multiple_inheritance_buffer_lastz>TestPythonBufferProtocol.test_multiple_inheritance_buffer_lastWs	.	.	19	1
hK
]	7bRZZ\:6	7	%	%	1)	1
jM
]	7bRZZ\:6	7		


z
*	
HH			7	7	7	7		s#!C6!DD6C?DDcGdd}Gddt|}|d}t|5}|j|jddddGdd}Gdd	t|}|d}t|5}|j|jdddd|j	|j|jdy#1swYxYw#1swYBxYw)
NceZdZdZdZy)QTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.ActdNzshould not be calledrrs  r@rz\TestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.A.__buffer__u"#9::rbctdrSrTrs  r@rzdTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.A.__release_buffer__xrUrbNr<rrbr@rjrQts
;
;rbrjceZdZfdZxZS)QTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.Bc"t||Srrr
s  r@rz\TestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.B.__buffer__|rrbrrs@r@rrX{rrbrr{ceZdZdZdZy)XTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.ReleaserNc||_yrr:rs  r@rzkTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.Releaser.__release_buffer__r;rb)rrrr#rrrbr@rIr[sF
%rbrIceZdZfdZxZS)QTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.Cc"t||Srrr
s  r@rz\TestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.C.__buffer__rrbrrs@r@rr^rrbr)r%rSrrr/r3rqr#rMs        r@-test_multiple_inheritance_buffer_last_raisingzFTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raisingss	;	;	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/cGdd}td}t|5|jt5|j	|ddddddy#1swYxYw#1swYyxYw)NceZdZdZdZy)JTestPythonBufferProtocol.test_release_buffer_with_exception_set.<locals>.Ac*ttdS)Nr8)rSrZrs  r@rzUTestPythonBufferProtocol.test_release_buffer_with_exception_set.<locals>.A.__buffer__s!%(++rbcyrr)rbrs  r@rz]TestPythonBufferProtocol.test_release_buffer_with_exception_set.<locals>.A.__release_buffer__srbNr<rrbr@rjrcs
,
rbrjr8)r%rSrtr~r})rbrjrs   r@&test_release_buffer_with_exception_setz?TestPythonBufferProtocol.test_release_buffer_with_exception_setsh		
aL
]	"";/


		

		s"A+AA+A(	$A++A4)rrrrrrrrrunittestskipIfrrrrr(r-r4r=rNr`rfrrbr@rr\su6?&","2%5N+X__Y$&(<=,>, 1+ '<5&6(8&>rbr__main__)r
NN)rr6r)rr6)rrr)r)krrgtestrtest.supportrr	itertoolsrrrandomrrr	warningsrVrQrosdecimalr
	fractionsr_testbufferImportErrorr
r:rEnvironmentVarGuardenvironcatch_warningsrRr(r
SHORT_TESTNATIVEr;r<STANDARDrArYr=copyrARRAYrBYTEFMTrsrurrrarjrnr}rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr!r*r4r8r:r<r@rrIrMrZr?rCrD
skipUnlessTestCaser]rrmain)rs0r@<module>rsO "+,,	&	&	&	(1BJ	 	 	 	"1011



q
a
Q

q
a
Q

q
a
Q
	
q	
a	
Q	
ss	
C!ss	yyzzzz0d7QW	.

s|3-c2S3[[]
	
	A!H++-	A:AJ

	.0CD5555
 -0(2$&clD.2C1D%!





0CI,
2<?4

=:~

*):V9;1@B	8 C
0%
	3!
&
	


J
FHI!NLVDEWEFT96**T96GFT96nrAx00AH
zHMMOETG

F

F1111K
I<<<

LEsK>LLM-L5L(L5MMM-
M4;M4>L	L	LLL%$L%(L2	-L55L?:MM
M
MMM10M1