403Webshell
Server IP : 118.27.122.248  /  Your IP : 216.73.217.130
Web Server : Apache
System : Linux web0264.sh.tyo1 4.18.0-553.79.1.lve.el7h.x86_64 #1 SMP Wed Oct 15 16:34:46 UTC 2025 x86_64
User : c9415830 ( 11735)
PHP Version : 8.4.17
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/alt/python36/lib64/python3.6/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/alt/python36/lib64/python3.6/test/__pycache__/test_buffer.cpython-36.opt-2.pyc
3

�
�^g{�D@sddlZddlZddlmZddlmZmZddlmZm	Z	m
Z
ddlZddlZddl
Z
ddlZddlZddlmZddlmZyddlTWnek
r�dZYnXyddlZWnek
r�dZYnXyddlZWnek
r�dZYnXy:ej��(e_ej��ddlmZWdQRXWdQRXWnek
�rFdZYnXd	Zdddddddddddddddd
�Ze�r�ed=ed=e�r�y ej d
d��ded<ded
<Wnej!k
�r�YnXd�d�d�d�d�d�d�d�d�d�d�d�d�dd>dd>fd�Z"dd�Z#eee"e"e"e"d�Z$e�r6x"e$dD]Z%e#e%�e$de%<�qWej&�Z'ej&�Z(xeD]Z)e)dk�rLe(e)=�qLWej&�Z*xeD]Z)e)d k�rte*e)=�qtWe'e$d!<e'e$d"<e(e$d#<e*e$d$<e*e$d%<dZ+dZ,d&dd'd(d)d*gd&d+d,d-gfd#gd&gfd&gd&gfd"d!gd&gfd%d$gd&gfd.�Z-d/d0�Z.d1d2�Z/d3d4�Z0d5d6�Z1d�d8d9�Z2d�d:d;�Z3d�d<d=�Z4d>d?�Z5d@dA�Z6dBdC�e$dD�Z7dDdE�Z8dFdG�Z9dHdI�Z:dJdK�Z;dLdM�Z<dNdO�Z=dPdQ�Z>dRdS�Z?dTdU�Z@dVdW�ZAdXdY�ZBdZd[�ZCd\d]�ZDd^d_�ZEd`da�ZFdbdc�ZGddde�ZHdfdg�ZIdhdi�ZJdjdk�ZKdldm�ZLdndo�ZMdpdffdqdr�ZNdsdt�ZOdudv�ZPd�dwdx�ZQdydz�ZRd�d{d|�ZSd}d~�ZTd�dd��ZUd�d��ZVd�d��ZWd�d��ZXd�d�d��ZYd�d�d��ZZd�d�d��Z[d�d�d��Z\d�d��Z]d�Z^dpZ_d�Z`e�r�d�Z^d�Z_d�Z`eZZWe[ZXe\Zejaed��ejaed��Gd�d��d�ejb���Zcedd�k�reje�dS)��N)�support)�permutations�product)�	randrange�sample�choice)�Decimal)�Fraction)�*)�ndarrayT)�?�c�b�B�h�H�i�I�l�L�n�N�f�d�Prr�Q��@��q������ �?i�)rr
rrrrrrrrrrrrcCs�|dkrd}n�|dkrd}n�|dkr*d}n�|d	krFdd
>dd
>f}nfx>dD]6}ytj|d|>d�PWqLtjk
r�YqLXqLW|d@r�d|>d|>fn
dd|>f}|S)Nr
r�rrrrr&ri���rr%r$r#r"r r!)rr')rrl����)r*r+)
r(r)rr&r%r$r#r"r r!)�struct�pack�error)�fmt�lhZexp�r1�0/opt/alt/python36/lib64/python3.6/test_buffer.py�native_type_rangeWs 

&r3)��@�<�>�=�!r5Z
bBhHiIlLfdZBbc�mz@m�arz@br4r6r7r8r9�1�2�3)r�array�numpy�
memoryview�bytefmtcCsvtt||�}|dkr6t|g�}|dkr6|dkr6d}|dkrFt|�}|dksV|dkrrtj||�}tj||�d}|S)	Nr
r@��rrrr)r�fmtdict�bytes�boolr,r-�unpack)�mode�char�obj�xr1r1r2�
randrange_fmt�s
rMcCsN|jd�\}}g}x|D]}|jt|||��qWt|�dkrF|dSt|�S)N�#rr)�split�appendrM�len�tuple)r/rKrI�charsrLr
r1r1r2�gen_item�s

rTcCs@|dkrt||�Sdg|}xt|�D]}t||�||<q&W|S)Nr)rT�range)rr/rK�lstrr1r1r2�	gen_items�s

rWcCs�tt|t�}|d}|jd�}tdd�}xTt|�D]H}ttt|��}tt|t�}||t	|rh|nd�7}|||7}q6Wt
|||�}	t||�}
||	|
fS)NrN�ambr�
r)r�cap�MODE�striprrUrRrE�MULT�intrWrT)rrKrIZxfmtr/�nmemb�_rJ�
multiplier�items�itemr1r1r2�struct_items�s


rdrcCs�|dkrtt|t�}|dkr0ttt|��}tt|t�}|d|t|rR|nd�}t|||�}t||�}|j	d�||}|||fS)NrNrrX)
rrZr[rRrEr]r^rWrTr\)rrKrIrJrar/rbrcr1r1r2�	randitems�s
reccs<x6t|tD]&}x t|D]}t||||�VqWqWdS)N)rZr[rEre)rrKrIrJr1r1r2�	iter_mode�srfccs6xt||�D]
}|VqW|dkr&dSt||�VdS)Nr)rfrd)�nitemsZtestobj�tr1r1r2�iter_format�s

ricCsd|kpd|kpd|kS)Nr
rrr1)r/r1r1r2�is_byte_format�srjcCs4t|�}|dks$|dko2|ddko2||dtkS)Nrrrr5)rQ�
MEMORYVIEW)r/rLr1r1r2�is_memoryview_format�srlcCsg|]}t|�s|�qSr1)rj)�.0r
r1r1r2�
<listcomp>�srncCst|t�S)N)�
isinstance�list)rVr1r1r2�atomp�srqcCs
t|t�S)N)rorp)rVr1r1r2�listp�srrcCs:t|�dkrdS|d}x|dd�D]}||9}q&W|S)Nrr)rQ)rVrL�vr1r1r2�prod�srtcCs�|dkrfS|dkr^t|dd��|g}xtt|ddd�D]}||||d9<q<WnB|gt|dd��}x*td|�D]}||||d9<q�W|S)Nr�Crr���rvrv)rprU)�ndim�shape�itemsizeZlayout�stridesrr1r1r2�strides_from_shapesr{cCs�t|�r|St|�dkr |dSdg|d}|drFt|�|dnd}x>t|d�D].}||}t||||�|dd��||<qXW|S)Nrr)rqrQrU�_ca)rb�srV�strider�startr1r1r2r|s&r|cCspt|�r|St|�dkr |dSdg|d}|d}x4t|d�D]$}t||d|�|dd��||<qDW|S)Nrr)rqrQrU�_fa)rbr}rVr~rr1r1r2r�s$r�cCs2t|�r(d|kr(t|�t|�kr(td��t||�S)Nrzprod(shape) != len(items))rrrtrQ�
ValueErrorr|)rbrxr1r1r2�carray*s r�cCs2t|�r(d|kr(t|�t|�kr(td��t||�S)Nrzprod(shape) != len(items))rrrtrQr�r�)rbrxr1r1r2�farray/s r�cCsdd�|D�}t|�S)NcSsg|]}t|��qSr1)rU)rmrsr1r1r2rn6szindices.<locals>.<listcomp>)r)rx�	iterablesr1r1r2�indices4sr�cCs.d}x$t|�D]}|||||7}qW|S)Nr)rU)rw�indrz�retrr1r1r2�getindex9sr�c	Cs�|s|St|�}t||dd�}t||ddd�dd�}dgt|�}x>t|�D]2}t|||�}t||ddd�|�}||||<qNW|S)Nrrurrvrv)rQr{r�r�)	�srcrxrwZsstridesZdstrides�destr��frZtor1r1r2�	transpose@sr�cCs6|gkr|St|�r|gSt|d�t|dd��S)Nrr)rq�_flatten)rVr1r1r2r�Os
r�cCst|�r|St|�S)N)rqr�)rVr1r1r2�flattenWsr�cCs4t|�rgSt||d�gt|d|dd��S)Nrr)rqrQ�slice_shape)rV�slicesr1r1r2r�]sr�cs&t|�r|S�fdd�|�dD�S)Ncsg|]}t|�dd���qS)rN)�
multislice)rmZsublst)r�r1r2rnhszmultislice.<locals>.<listcomp>r)rq)rVr�r1)r�r2r�dsr�csFt|�r|S��fdd�t|�d|�d�D�}||�d<|S)Nc	s.g|]&\}}t||�dd��dd���qS)rN)�m_assign)rmr�r)�lslices�rslicesr1r2rn{szm_assign.<locals>.<listcomp>r)rq�zip)�llst�rlstr�r�r1)r�r�r2r�jsr�cCsft||�}t||�}t|�t|�kr(dSx8tt|��D](}||||krNdS||dkr6dSq6WdS)Nrrrvrv)r�rQrU)r�r�r�r��lshape�rshaperr1r1r2�
cmp_structure�s

r�cCs(t||||�dkrtd��t||||�S)Nrz+lvalue and rvalue have different structures)r�r�r�)r�r�r�r�r1r1r2�multislice_assign�sr�cs�|�rdS|dks |�|kr$dSt�fdd��D��r>dS|dkrZ|dkoX�oX�Sd�krfdSt��fdd�t|�D��}t��fdd�t|�D��}d||ko�||�|kS)NFrc3s|]}|�VqdS)Nr1)rmrs)ryr1r2�	<genexpr>�sz#verify_structure.<locals>.<genexpr>Tc3s.|]&}�|dkr�|�|dVqdS)rrNr1)rm�j)rxrzr1r2r��sc3s.|]&}�|dkr�|�|dVqdS)rrNr1)rmr�)rxrzr1r2r��s)�any�sumrU)�memlenryrwrxrz�offset�imin�imaxr1)ryrxrzr2�verify_structure�sr�cCsx|D]}||}qW|S)Nr1)rVr�rr1r1r2�get_item�s
r�c
Cs>|\}}}}}}|}x$t|�D]}	|||	||	7}qW|S)N)rU)
r�rhr�ryrwrxrzr��prr1r1r2�memory_index�s
r�cCsT|\}}}}}}d|>}x6t|�D]*}t||�}	d|	>}
||
@rDdS||
O}q"WdS)NrTF)r�r�)rhr�ryrwrxrzr�Zvisitedr�r�bitr1r1r2�is_overlapping�s
r��csd�s�t|d�}|dkrd|r,|||ffdfStdd�}||}td�dkrP|n|}|||ff|fSd}	td�}
|
dkr�|r�d}	n|
dkr�d}	dg|�x,t|�D]}t|	|d��|<q�Wnt��}d}td�}
|
dkr�|
d@r�d	nd
}
dg|�|t||d��|d<|
�r6�|ddk�r6|�|d<x~t|ddd�D]j}|�|d�rh�|dnd9}|
�r�|t||d��|<n"dtd�|td|d��|<�qHWd}}d�k�rt��fdd�t|�D��}t��fd
d�t|�D��}||}|�r*||}||d|}n*|||}td�dk�rP||n|}|||��|fS)Nrrr#r�d�_�Zr�TFc3s.|]&}�|dkr�|�|dVqdS)rrNr1)rmr�)rxrzr1r2r�sz!rand_structure.<locals>.<genexpr>c3s.|]&}�|dkr�|�|dVqdS)rrNr1)rmr�)rxrzr1r2r�s�rvrvrv)rrv)rrUrQr�)ryZvalid�maxdim�maxshaperxrwrgr�r��minshaperrZ	maxstrideZzero_strider�r�r1)rxrzr2�rand_structure�sT


"(

r�c
Csp||}t|d�}|r$|||nd}td|d�}|||}t|||�}t||�\}}}}	|	|krlt�|S)Nr)r�slice�
slice_indices�RuntimeError)
�slicelenZlistlenZmaxstartrZmaxstep�step�stopr}r`Zcontrolr1r1r2�randslice_from_slicelensr�cCstdg|}dg|}xNt|�D]B}||}|dkr@td|d�nd}t||�||<t||�||<qWt|�t|�fS)Nrr)rUrr�rR)rwrxr�r�rrr�r1r1r2�randslice_from_shape,s

r�cCs�td|d�}d}td�}|dkr(d}n|dkr4d}td�dkrDdnd	}dg|}dg|}dg|}dg|}	�x(t|�D�]}t||d�}
t||d�}||
kr�|
|}}
|�rt|
|
d�}t|
|
d�}
dtd�td|
d�}t||
|�}t||
�\}}}}n&|
dk�r(td|
d�nd}t||
�}t||�}td�dk�rt||
||<||<|||	|<||<q||
|||<||<|||	|<||<q|W||t|�t|	�fS)Nrrr�r�rr��PTFrv)rrv)rrUr�r�r�rR)r�r�rwr�rZ
all_randomr�r�r�r�ZsmallZbigrr�r�Zs_smallr`r�Zs_bigr1r1r2�rand_aligned_slices8s@






r�cCs$|\}}}}}}t||d|d�S)NrNr@)rW)r/rhr�ryr`r1r1r2�randitems_from_structurecsr�c
Cs(|\}}}}}}	t|||||	t|Bd�S)N)rxrz�formatr��flags)r�ND_WRITABLE)
rbr/rhr�r�ryrwrxrzr�r1r1r2�ndarray_from_structureis
r�cCsT|\}}}}}}t|�}	x(t|�D]\}
}tj||	|
||�q"Wt|	||||d�S)N)�bufferrxrz�dtyper�)�	bytearray�	enumerater,�	pack_into�numpy_array)rbr/rhr�ryrwrxrzr��bufr�rsr1r1r2�numpy_array_from_structureosr�cs�|j}|r$t|��|krld|fSnH|gkrH|jdks>�|krld|fSn$t|��\}}|g}|dkrld|fS|j����fdd�tdt����D�}g}x6|D].}	tj||	�d}
|
|
kr�d|fS|j	|
�q�W|gkr�||fS|d|fS)Nrcsg|]}�||���qSr1r1)rmr)ry�memr1r2rn�szcast_items.<locals>.<listcomp>�nan)
�nbytesrtrw�divmod�tobytesrUrQr,rHrP)Zexporterr/ryrxZbytelenrr�Z	byteitemsrbrsrcr1)ryr�r2�
cast_items}s(

 
r�c#s�xtd�D]}|gVq
Wtdd�}td�dkr4dnd��fdd	�t|�D�Vtdd�}td�dkrjdnd��fd
d	�t|�D�VdS)Nr%��r�r�rrcsg|]}t�d��qS)r�)r)rmr`)r�r1r2rn�sz!gencastshapes.<locals>.<listcomp>csg|]}t�d��qS)r�)r)rmr`)r�r1r2rn�s)rUr)rrwr1)r�r2�
gencastshapes�s

r�cCs0tt||d�t||d�t||d��S)Nr)rrU)rr1r1r2�	genslices�sr�cs�fdd�t|�D�}t|�S)Ncsg|]}t�|��qSr1)r�)rmr)rxr1r2rn�sz"genslices_ndim.<locals>.<listcomp>)rUr)rwrxr�r1)rxr2�genslices_ndim�sr�FcCs,|s|dkrdnd}t||d�}t||�S)Nrr)rr�)r�allow_emptyZminlenr�r1r1r2�rslice�sr�ccs"xtd�D]}t||�Vq
WdS)Nr�)rUr�)rr�r`r1r1r2r��sr�c#sxx,t|�D] }t�fdd�t|�D��Vq
Wx,t|�D] }t�fdd�t|�D��Vq8Wtdd�t|�D��VdS)Nc3s|]}t�|�VqdS)N)r�)rmr)rxr1r2r��szrslices_ndim.<locals>.<genexpr>c3s|]}t�|dd�VqdS)T)r�N)r�)rmr)rxr1r2r��scss|]}tddd�VqdS)rrN)r�)rmr`r1r1r2r��s)rUrR)rwrxZ
iterationsr`r1)rxr2�rslices_ndim�s
  r�ccs0t|�}|dkrt|�n|}tt||��VdS)N)rRrQr)�iterabler�Zpoolr1r1r2�rpermutation�sr�cCs�y|j�}Wn ttfk
r,|j�}YnXt|t�rF|j}|j}nd}d}td||j	|j
|j||j|j
|f�tjj�dS)N�unknownz_ndarray(%s, shape=%s, strides=%s, suboffsets=%s, offset=%s, format='%s', itemsize=%s, flags=%s))�tolist�	TypeError�NotImplementedErrorr�rorr�r��printrxrz�
suboffsetsr�ry�sys�stdout�flush)�ndrLr�r�r1r1r2�
ndarray_print�s
r�r�rY�r�z%struct module required for this test.z%ndarray object required for this testc
@s�eZdZdd�Zd�dhd�dhdhd�d�d�ddf
dd�Zd�dd�Zd	d
�Zdd�Zd
d�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Zd=d>�Z d?d@�Z!dAdB�Z"dCdD�Z#dEdF�Z$dGdH�Z%dIdJ�Z&dKdL�Z'dMdN�Z(dOdP�Z)e*j+Z+dQdR�Z,dSdT�Z-dUdV�Z.dWdX�Z/dYdZ�Z0d[d\�Z1d]d^�Z2d_d`�Z3dadb�Z4e5j6dcdd��Z7dedf�Z8dgdh�Z9didj�Z:dkdl�Z;dmdn�Z<dodp�Z=dqdr�Z>dsdt�Z?dudv�Z@dwdx�ZAdydz�ZBd{d|�ZCd}d~�ZDdd��ZEd�d��ZFd�d��ZGd�d��ZHd�d��ZId�d��ZJd�d��ZKd�d��ZLd�d��ZMd�d��ZNd�d��ZOd�d��ZPd�d��ZQd�d��ZRd�S)��TestBufferProtocolcCst�|_dS)N)Zget_sizeof_void_p�
sizeof_void_p)�selfr1r1r2�setUp�szTestBufferProtocol.setUprFc%s<|rt|��}n�s t|	�}n�}f}
|jr�|j|d�d}xFtd|�D]8}||dkr\P||dkrJ|||||d7}qJW|gdd�t|d�D�}
|j}|ddkr�|}|gt|dd��}|j|j|�|j	|j
|�|j	|j��|j	|j��|j	|j
|�|j	|j|�|j	|jt|��|
�o>|
�sT|j	|jt|��|j	|jt|
��t|t��s|t���r���r�|j�n|j�}|j	||	���s�dS|�s
t�}d}x�t|�D]|}yLt||�}t|	|�}t|t��r�tj�f|��}ntj�|�}|j|�Wntk
�r.d}PYnX|j	||��q�W|�s
|j	|j�|�t|�}dj dd�|D��}|j	|j!�|���r��nd	}t"|	�}�xldD�]b}|}|dk�r�t#|d��s�t#|d
��rt$||�}t|||t%d
�}n2t#|d��st#|d��r|d
k�rt|||d�}t&|t'|��|j	�j�|�|j(t)�|��|dk�rX�q�t|�}|�rjdnt*} t+|d
t,��|j	t��|�����fdd�t|�D�}!t|!d�dk�r�dd�|!D�}!t|!|| �d�}"|j	t|"�t|��t+|dt,��|j	t��|�����fdd�t|�D�}!t|!d�dk�rFdd�|!D�}!t|!|| t%B�d�}"|j	t|"�t|��t+|dt,��|j	t��|�����fdd�t|�D�}!t|!d�dk�r�dd�|!D�}!t#|d��r�t%nd}#t|!||#| B�d�}"|j	t|"�t|���q�Wt���r8yt|�}Wntk
�r6dSXt|t��rJ|jn|}$|j|j|$�|j	|j
|�|j	|j��|j	|j��|j	|j
|�|j	|j|�|j	|jt|��|
�o�|
�s�|j	|jt|��|j	|jt|
��|dk�r�dnt|	�}|j	t|�|���r|j�n|j�}|j	||	�|j	||�dS)NrrcSsg|]}d�qS)rrvr1)rmrsr1r1r2rnsz-TestBufferProtocol.verify.<locals>.<listcomp>Tr4css|]}d|VqdS)z%02xNr1)rmr
r1r1r2r�Nsz,TestBufferProtocol.verify.<locals>.<genexpr>rru�F�A)rxr�r�)rxr�csg|]}tj��|���qSr1)r,�unpack_from)rmr)�contigr/ryr1r2rnyscSsg|]}|d�qS)rr1)rmrsr1r1r2rn|s)rxr�r�csg|]}tj��|���qSr1)r,r�)rmr)r�r/ryr1r2rn�scSsg|]}|d�qS)rr1)rmrsr1r1r2rn�scsg|]}tj��|���qSr1)r,r�)rmr)r�r/ryr1r2rn�scSsg|]}|d�qS)rr1)rmrsr1r1r2rn�s)rur�r�)-rtrQr�Z
assertGreaterrUr�rp�assertIsrK�assertEqualr�ryr��readonlyrwrxrRrzrorrlr�r�r�r��get_pointerr�r,r-�extend�BufferErrorrA�join�hexr��
is_contiguousr��
ND_FORTRAN�get_contiguous�
PyBUF_READ�
assertTrue�
cmp_contigr��py_buffer_to_contiguous�
PyBUF_FULL_RO)%r��resultrKryr/r�rwrxrzrV�sliced�castZexpected_lenr�Z
suboffset0rZstride0ZreprZbuf_errr�Zitem1Zitem2rLr:rZffZ	flattened�order�expectedZtransr_�roZinitlst�yr�exr1)r�r/ryr2�verify�s�







zTestBufferProtocol.verifycCs�dd�}dd�}|jr ||t�s�||t�r2|js�||t�rD|js�||t�rV|js�||t�rh|j	s�||t
�r||js�||t�r�||t�r�|j
tt||d�dSt|t�s�t|j�r�|j�}nt|td�}|j�}||t�r�dn|j}	|j}
|j}|j}||t��sd}
|j�}||t��s(d}||t��r:|jnf}
||t
��rP|jnf}t||d�}|j||||
|	||
|||d	�
dS)
NcSs|jdkp|jdkS)Nr4r)r�)rr1r1r2�
simple_fmt�sz4TestBufferProtocol.verify_getbuf.<locals>.simple_fmtcSs||@|kS)Nr1)�req�flagr1r1r2�match�sz/TestBufferProtocol.verify_getbuf.<locals>.match)�getbufrr4r)	rKryr/r�rwrxrzrVr)r��PyBUF_WRITABLE�PyBUF_C_CONTIGUOUS�c_contiguous�PyBUF_F_CONTIGUOUS�f_contiguous�PyBUF_ANY_CONTIGUOUS�
contiguous�PyBUF_INDIRECTr��
PyBUF_STRIDES�PyBUF_ND�PyBUF_FORMAT�assertRaisesr�rrorlr�r�r�ryrwr�rxrzr)r�Zorig_exrr	rrrrVr�rr/ryrwrxrzr1r1r2�
verify_getbuf�s>
z TestBufferProtocol.verify_getbufcs`tttttttttt	t
ttt
tf}dd�td�D�dfddddd	d
ddd
dddgdfddddd	d
ddd
dddgdfdd�td�D�dff}ggdfdddggdfdggdfdgdgdfd
gdgdfd
gdgdfddggdfddgdd gdfddgddgdfddgd!d"gdff
}dttttBtttBf}dttttBf}�x�|D�]�\}}tj|���x�|D�]�\}}	}
�fdd�|	D�}	|
�9}
�x^|D�]T}|	�r�|t@�r��q�|�r�|t@�r��q�|�r�|n|d}t|||||	|
d�}
|�r�|
ddd#�nd}t|
�}|�rt|�}|
jdk�s0|
jdk�r<|�r<|	�r<|j||
�|�rf|jdk�rf|�rf|	�rf|j||�xt|D]l}xd|D]\}|j|
|
||B�|j|
|||B�|�rv|j||||Bdd�|j||||Bdd��qvW�qlW�q�W�qZW�q>Wddddd	d
ddd
dddg}t|dgtd�}|jtt|�td
gdg�}t|td�}|jtt|td�|jtt|td�|jtt|td�|jtt|td�|jtt|td�|jtt|td�t|td�}x�dddgdddgfD]�}x�dtfD]t}t|||tBd�}|jt |d��|jt |d��x:|D]2}t||d�}|jt |d��|jt |d���qW�q�W�q�WdS)$NcSsg|]}|drdnd�qS)rTFr1)rmrLr1r1r2rn�sz:TestBufferProtocol.test_ndarray_getbuf.<locals>.<listcomp>�rrrr�r�r�r�r!r �	rY�rrcSs$g|]}|drd|nd|�qS)rr$lli�r1)rmrLr1r1r2rn�srrcsg|]}|��qSr1r1)rmrs)ryr1r2rns)r�r�rxrzr�T)r)rxr�)rr�rurv������rvrrvr)!rrr�PyBUF_SIMPLErrr�
PyBUF_FULLr��
PyBUF_RECORDS�PyBUF_RECORDS_RO�
PyBUF_STRIDED�PyBUF_STRIDED_RO�PyBUF_CONTIG�PyBUF_CONTIG_ROrUr�r��ND_PILr
rr,�calcsizerrArwr�r�ND_GETBUF_FAILrr�r�r�)r��requestsZ	items_fmtZ	structureZndflagsZ
real_flagsrbr/rxrzr�r�Z_items�ex1�ex2�m1�m2r	�bitsr�baser�rr1)ryr2�test_ndarray_getbuf�s�


$

&
z&TestBufferProtocol.test_ndarray_getbufc
Cstdgdg�}tdgdgtd�}�x�t|j|jfD�]z}|jt|dddh�|jt|dddg�|jt|ddd0g�|jt|dddgdhd�|jt|dddgdgdhd	�|jt|dddgdggd
�|jt|dgdgid�|jt|dgdgid�|jt|dgdgid
�|jt|dgdgdgtd�|jt|dggtd�|jt|gdgd�|jt|dgdgdd�|jtj	|dgdgdd�|jt|dd1gdgdd�|jt|dddgdgdd�t
d}|jt|dg|dg|d�|jt|dgd2gd�|jt|dddgdgd�|jt|dgddgd�|jt|dddddgddgdd
�|jt|dddgdgdgd	�|jt|dgdgddgd	�|jt|ddgddgdgd	�|jt|ddddgdgdgdd�|jt|dddgdgdd
�|jt|dddgdgddd�|jt|dddgdgdd�|jtj	|d3gdgdd�ddddddddddg
}|jt||ddgd4d5gdd�|jt|t�d d!�|jt|dgdgt
d
�|jt|dg�q2W|jttd"td#�tdgdgtd�}|jt|jdgdgtd�td"�}|jt|jdgdg�|jt|j�tdgdg�}|jdgdg�t|�}|jt|jdgdg�|jt|j�|j�|j�|jt|j�~|jttidddg�|jttd"i�tttd$��dgd$d�}|jtt|dg�tttd%��ddgd�}|jtt|dddg�|jtt|ddg�|jtt|d6dg�|jtt|d7dg�tdddgdgdd�}t|td#�}|jt|j�tdddgdgdd�}t|�}	t|	�}|jt|j�td8d'gdgdd'd�}|jt|j�t
}ttt|��dg|d�}|jt|j�tdgdgd�}|jttddddd�|jtt|d(d)�|jtt|d9d)�|jtt|td*�|jtt|td+�|jtt|td,�|jtt|d-d.�tdgdgd�}|jttddddd�|jtti|�|jtt|i�tdgdgd�}|jttddddd�|jttid.�|jtt|d/�dS):Nrr)r�rr�r>r�)rx)rxrz)rxr�)rxr�)rxr�)rxr)rxrzr�ZXXXri�rZQLr(r�r<)rxrzr�)rxr�r�r4z@#$r�r!r rY)rxrzr�r)r�s123)rr�rr���xyzrui�u �Z�r���)r�r�)rr�rv)rrr����rr7l)rl)r�ND_VAREXPORT�pushrr�r�r'r�r,r.ZND_MAX_NDIM�
OverflowErrorr�r r�r
�poprA�releaser�rprUrr��memoryview_from_bufferr�r��UnicodeEncodeErrorr�r�)
r�r�Zndmr
rrbr:rr+r,r1r1r2�test_ndarray_exceptionsLs�"z*TestBufferProtocol.test_ndarray_exceptionscCs�x�ttd��D]�}dgd}tdddgdgtd�}t|�|d<x4tdd�D]&}|jdddgdgd�t|�||<qJWx td�D]}|||j�q~W|jt|j	�~qWdS)Nr�rrrr�)rxr�)rx)
rrUrr8rAr9r<rr�r;)r�Zpermr:r�rr1r1r2�test_ndarray_linked_list�s
z+TestBufferProtocol.test_ndarray_linked_listcCsPxJtd�D]>\}}}tj|�}t|f|d�}|j|d||ddff|d�	q
WdS)Nr)rxr�r)rKryr/r�rwrxrzrV)rir,r(rr)r�r/Zscalarr`ryr�r1r1r2�test_ndarray_format_scalar�s
z-TestBufferProtocol.test_ndarray_format_scalarc
Csttdd�}xdt|�D]X\}}}tj|�}xBdtfD]6}t||g||d�}|j|d||dd|f|f|d�	q2WqWdS)NrrYr)rxr�r�)rKryr/r�rwrxrzrV)rrir,r(r'rr)r�rgr/rbr`ryr�r�r1r1r2�test_ndarray_format_shapes


z,TestBufferProtocol.test_ndarray_format_shapecCs�tdd�}x�t|�D]�\}}}tj|�}x�tdd�D]�}|dkrBq4t|dd|��g}||g}|dkrt||dnd}	xJdtfD]>}
t|||||	|
d�}|j|d||dd|||dd|�d�	q�Wq4WqWdS)Nr�r�r)rxrzr�r�r�)rKryr/r�rwrxrzrV���)	rrir,r(rUrQr'rr)r�rgr/rbr`ryr�rxrzr�r�r�r1r1r2�test_ndarray_format_stridess 


z.TestBufferProtocol.test_ndarray_format_stridescCsTddddddddd	d
ddg}t|ddd
�}t|ttBd�}|j|j�t|d��dS)Nrrr�r�r�r�r!r rrYrr)rxrz)r)r�r�)rr�)r�r�)rrrr�r�r�)r�rbrr�r1r1r2�test_ndarray_fortran%sz'TestBufferProtocol.test_ndarray_fortrancCsp�xhtd�D�]Z}dd�t|�D�}t|�}�x8t|�D�]*}t|�\}}}tj|�}�x
dtfD]�}	|dkrx|	tkrxqbt||||	d�}
t|||d�}t	||�}|j
|
d||d||||d�	t|��rt|||d	�}
t|
tt
Bd
�}
|j|
jfk�|
j�}|j
|d||d||||d�	t||||	tBd�}
t|||d�}t||�}|j
|
d||d||||d�	qbWq8WqWdS)Nr�cSsg|]}tdd��qS)rrY)r)rmr`r1r1r2rn-sz<TestBufferProtocol.test_ndarray_multidim.<locals>.<listcomp>r)rxr�r�rur)rKryr/r�rwrxrzrV)rxr�)rr�)rUrtrrer,r(r'rr{r�rrlr&rr�rzr=r�r�)r�rw�shape_trgrxr/rbr`ryr�r�rzrVr�mvr1r1r2�test_ndarray_multidim+sB



z(TestBufferProtocol.test_ndarray_multidimcCs�tdgdgd�}|jt|jdd�t|�}|j||�|jt|jdd�tdgdgtd�}|jt|jd�t|�}|j||�|jt|jd�tdgdgtd�}|jt|j	d�|jt|jdd�t|�}|j||�|jt
|j	d�|jt
|jdd�ddddd	d
ddg}t|t|�gdtd
�}|jtj
|jdd�|jt|jdd�t|�}|j||�|jt|jdd�|jt|jdd�dddg}t|t|�gdtd
�}|jt|jdd�|jtj
|jdd�dS)Nr)rxr )rxr�rrr�r�r�r�r!r)rxr�r�i,r�r2ZLQ�1llll)r�r2)r�r2)rr)r�r�)r�r�)rJr2)rrr��__setitem__rAr�r��__delitem__r:�__getitem__�
IndexErrorrQr,r.r�)r�r�rHrbr1r1r2�test_ndarray_index_invalidXs:
z-TestBufferProtocol.test_ndarray_index_invalidcCsJtdftd�}t|�}|j||�|f}|j|d�|d}|j|j�|j��|f}|j|d�|d}|j|j�|j��|jt|jd�|jt|jd�|jt|jdd�|jt|jdd�|j|j�d�|j|j�d�d|f<|j|j�d�d|f<|j|j�d�d|d<|j|j�d�d|d<|j|j�d�dS)Nr)rxr�.rr rr�)	rr�rAr�r�rr�rMrK)r�r�rHrLr1r1r2�test_ndarray_index_scalars2z,TestBufferProtocol.test_ndarray_index_scalarcCsRtttd��ddgtd�}t|td�}|jt|jd�|jt|jtddd��dS)	Nrr�)rxr�)rrr�r�r )	rrprUr�r%rr�rMr�)r�rr�r1r1r2�test_ndarray_index_null_strides�sz2TestBufferProtocol.test_ndarray_index_null_stridescCs,x�td�D]�\}}}t|dg|d�}x&tdd�D]}|j||||�q0W|jt|jd�|jt|jd�t|�r
t|�}|j||�x&td
d�D]}|j||||�q�W|jt|jd�|jt|jd�q
Wx�td�D]�\}}}t|dgt	|d�}t|t
tBd�}x(tdd�D]}|j||||��qWt|�r�|j�}|j
|j|�t�x(tdd�D]}|j||||��qbWq�Wdddd	dg}t|dgd
�}t|td�}x(tdd�D]}|j||||��q�Wdddd	dg}t|dgd
�}t|td�}x(tdd�D]}|j||||��q
WdS)Nr�)rxr�r�)rxr�r�)rrrr�r�)rxrDi����rDi����rDrDrDrD)rirrUr�rrNrMrlrAr�r%rr=r��__eq__�NotImplementedr&r)r�r/rbr`r�rrHrr1r1r2�!test_ndarray_index_getitem_single�sBz4TestBufferProtocol.test_ndarray_index_getitem_singlecCs��xtd�D]�\}}}t|dg|td�}x td�D]}|||<|||<q2W|j|j�|�|jt|jd|�|jt|jd|�t	|�s�qt|dg|td�}t
|�}|j||�x td�D]}|||<|||<q�W|j|j�|�|jt|jd|�|jt|jd|�qWx�td�D]�\}}}t|dg|td�}x4tdd�D]&}||d||<||d||<�q:W|j|j�|�t	|��s��qt|dg|td�}t
|�}|j||�x4td	d�D]&}||d||<||d||<�q�W|j|j�|��qWdS)
Nr�)rxr�r�r�r�ri����i����rDrD)rirr�rUr�r�rrNrKrlrA)r�r/rbZsingle_itemr�rrHr1r1r2�!test_ndarray_index_setitem_single�sD
z4TestBufferProtocol.test_ndarray_index_setitem_singlec
	Cs�d}t|�}�x�t|�D�]�}t|�\}}}�x�dtfD�]�}t||||d�}t||�}	x�t|d|d�D]�}
|j|	|
||
j��x~t|d|d�D]f}|j|	|
|||
|j��x@t|d|d�D](}|j|	|
||||
||�q�Wq�WqnWt||||t	Bd�}t
||�}	x�t|d|d�D]�}
|j|	|
||
j��x�t|d|d�D]h}|j|	|
|||
|j��x@t|d|d�D]*}|j|	|
||||
||��q�W�qtW�qBWq8WqWdS)Nrr�r�r)rxr�r�r)rr�r�)rtrrer'rr�rUr�r�r�r�)
r�rGrgrxr/rbr`r�r�rVrr��kr1r1r2�#test_ndarray_index_getitem_multidims,
 0
 z6TestBufferProtocol.test_ndarray_index_getitem_multidimcCs�tdfd�}|jttdt��t|�}|j||�|jttdt��x�td�D]�\}}}t|dg|d�}x2t|�D]&\}}|j|||�|j	||k�qrWt
|�rNt|�}x2t|�D]&\}}|j|||�|j	||k�q�WqNWdS)Nr)rxz1 in ndz1 in mvr�)rxr�)rrr��eval�localsrAr�rir�r�rl)r�r�rHr/rbr`rrsr1r1r2�test_ndarray_sequencesz(TestBufferProtocol.test_ndarray_sequencecCs�ddddddddg}t|dgtd	�}t|�}|jt|jtd
dd�|�|jt|jtd
dd�|�t|dgtd	�}t|dgtd	�}t|td�}|jt|jtd
dd�|�t|dgdtd
�}t|�}|jt	|j
td
dd
��|jt	|j
td
dd
��t|ddgdtd
�}t|�}|jt	|j
td
dd�td
dd
�f�|jt	|j
td
dd
�td
dd�f�|jt|j
d�|jt|j
dtd
dd�f�|jt|j
td
dd�if�|jt|j
td
dd�td
dd
�f�|jt|j
d�t|dgdtd
�}t|dgdd�}t|�}t|�}|jt	|jtd
dd�|dd��|j|j
�|�|jt	|jtd
dd�|dd��|j|j
�|�t|dgdtd
�}t|dgdd�}	t|�}t|�}|jt	|jtd
dd�|dd��|j|j
�|�|jt	|jtd
dd�|dd��|j|j
�|�t|ddgdtd
�}t|dgdd�}t|�}t|�}|jt	|jtd
dd�|dd��|j|j
�ddddgddddgg�|jt|jtd
dd�|dd��t|dgdtd
�}t|dgdd�}t|�}t|�}|jt	|jtd
dd�|dd��|j|j
�|�|jt	|jtd
dd�|dd��|j|j
�|�|jtttd
dd�i�|jttdd�|jt	ttd
dd
�d�t|dgdtd
�}
|jt|
j�t|dgdd�}t|td�}
|jt|
j�dS)Nrrr�r�r�r�r!r )rxr�r)rr)rxr�r�z@%$rr)rxr�z###########)rr�rArr�rKr�rr�r�rMr�r�r�r�r'�add_suboffsetsr)r�rb�xl�mlr�xrr�rH�mr�yrrLr1r1r2�test_ndarray_slice_invalid2s�


"""""$""z-TestBufferProtocol.test_ndarray_slice_invalidcCsddddddddd	d
ddg}t|dgd
td�}t|dgd
d�}|d	d	�|dd�<|j|j�|�t|�}t|�}|j||�|j||�|d	d	�|dd�<|j|j�|�t|ddgd
td�}t|ddgd
d�}|dd�dd�f|dd�dd�f<|j|j�t|ddg��dS)Nrrr�r�r�r�r!r rrYrrr)rxr�r�)rxr�)rr�r�r�rAr�)r�rbrLrr]r_r1r1r2�test_ndarray_slice_zero_shape�s$z0TestBufferProtocol.test_ndarray_slice_zero_shapec"Cs"d}t|�}t|�}�xt|�D]�}t|�\}}}tj|�}x�dtfD]�}	t||||	d�}
t||�}x�t	||�D]�}d}
yt
||�}Wn(tk
r�}z|j}
WYdd}~XnXd}y|
|}Wn(tk
r�}z|j}WYdd}~XnX|s�|
�r|j
||
�qp|j|j�|�qpWqFWq WdS)Nrr�r�r)rxr�r�)rr�r�)rQrtrrer,r(r'rr�r�r��	Exception�	__class__r�r�r�)r�rGrwrgrxr/rbr`ryr�r�rVr��listerrr�e�nderr�ndslicedr1r1r2�test_ndarray_slice_multidim�s.


z.TestBufferProtocol.test_ndarray_slice_multidimc!Cs:d}t|�}t|�}�xt|�D�]}t|�\}}}tj|�}t|||d�}	|	j�t|||d�}
|
j�t|
�}t	||�}x�t
||�D]�}
d}yt||
�}Wn(tk
r�}z|j
}WYdd}~XnXd}y|	|
}Wn*tk
�r}z|j
}WYdd}~XnX|�s|�r|j||�q�|j|j�|�q�Wq WdS)Nrr�r�)rxr�)rr�r�r)rQrtrrer,r(rr[rAr�r�r�rcrdr�r�r�)r�rGrwrgrxr/rbr`ryr�rrHrVr�rerrfrgrhr1r1r2�'test_ndarray_slice_redundant_suboffsets�s4

z:TestBufferProtocol.test_ndarray_slice_redundant_suboffsetsc9Cs$�xtd�D�]\}}}�xtd�D�]�}�x�td�D�]�}�x�dtfD�]�}|tB}t|dg||d�}t|dg||d�}	t|	�}
d}d}|dd�}
y0|
|}|
|}|
||
|<t|�t|�k}Wn(tk
r�}z|j}WYdd}~XnXd}y||||<Wn*tk
�r.}z|j}WYdd}~XnX|�rD|j	|t
�n|j|j�|
�|j	||�t
|��slqHd}y|
||
|<Wn*tk
�r�}z|j}WYdd}~XnX|�r�|j	|t
�qH|j|
j�|
�|j|
|�|j	||�|j|
|	|j|d|j|j|j|j�d�	qHWq6Wq$WqWdS)Nr�r)rxr�r�)rKryr/r�rwrxrzrV)rir�r'r�rrArQrcrdr�r�r�r�rlrryrwrxrz)r�r/rbr`�lslicer�r�rr�rrHZlsterrZdiff_structurerVZlvalZrvalrfrgZmverrr1r1r2� test_ndarray_slice_assign_single�sV
z3TestBufferProtocol.test_ndarray_slice_assign_singlec"Cs4d}t|�}t|�}�xt|�D�]
}t|�\}}}x�dtfD]�}x�tt�D]�}t||�\}	}
t||||t	Bd�}t
||�}d}
yt|||	|
�}Wn(tk
r�}z|j
}
WYdd}~XnXd}y||
||	<Wn(tk
r�}z|j
}WYdd}~XnX|�s|
�r|j||
�qL|j|j�|�qLWq>Wq WdS)Nrr�r�r)rxr�r�)rr�r�)rQrtrrer'rU�
ITERATIONSr�rr�r�r�rcrdr�r�r�)r�rGrwrgrxr/rbr`r�r�r�r�rVrer�rfrgr1r1r2�"test_ndarray_slice_assign_multidims0
z5TestBufferProtocol.test_ndarray_slice_assign_multidimc
CsF�x>tt�D�]0}�x(tdD�]}tj|�}t|dttd�}|jt	|��t
||�}t|||�}|j�}t
|�}t|�r�|j�}	|j|	|�|ddkr�t|||td�}
|
j�}|j||�t
|
�}t|�r�|j||
�|j�}	|j|	|�tr|d}d|k�rqt|||�}
|j|d|
j|d|
j|
j|
j|
j�d�	qWqWdS)	Nr5T)r�r�rr)r�r�)rKryr/r�rwrxrzrV)rUrmrEr,r(r��MAXDIM�MAXSHAPEr�r�r�r�r�rArlr�r'r�r�rryrwrxrz)r�r`r/ryrhrbrLZxlistrHZmvlistrZylistrx�zr1r1r2�test_ndarray_random9s>


z&TestBufferProtocol.test_ndarray_randomc Cs�x�tt�D]�}x�tdD]�}tj|�}t|dttd�}|jt	|��t
||�}d}yt|||�}Wn(tk
r�}z|j
}WYdd}~XnX|j|�trd}	yt|||�}
Wqtk
r�}z|j
}	WYdd}~XqXqWq
WdS)Nr5F)r�r�)rUrmrEr,r(r�rorp�assertFalser�r�r�rcrdr�r�r�)r�r`r/ryrhrbrgrLrfZ	numpy_errrr1r1r2�test_ndarray_random_invalidbs(


z.TestBufferProtocol.test_ndarray_random_invalidc
CsB�x:tt�D�],}�x$tdD�]}tj|�}tttd�\}}}}t|d|d�}t|d|d�}	|j	t
|��|j	t
|	��t||�}
t||	�}t|
||�}t|||	�}
|
|||<|j
�}|
j
�}t|�}t|
�}|j|j
�|�|j|j
�|�|ddk�r�|	ddk�r�t|
||td�}t|||	td�}||||<|j
�}|j
�}|j||�|j||�t|�}t|�}|j|j
�|�|j|j
�|�trd|ksd|k�r�qt|
||�}t|||	�}||||<t|��rt|	��r|j|d|j|d|j|j|j|j
�d�	|j|
d|j|d|j|j|j|j
�d�	qWqWdS)	Nr5)r�r�T)rxrr)r�)rKryr/r�rwrxrzrV)rUrmrEr,r(r�rorpr�r�r�r�r�r�rAr�r'r�r�r�rryrwrxrz)r�r`r/ryr�r�r�r��tl�trZlitemsZritemsr\r^ZxllistZxrlistr]r_Zylr`ZyllistZyrlistZzlZzrr1r1r2� test_ndarray_random_slice_assign~s\


z3TestBufferProtocol.test_ndarray_random_slice_assigncCs�ddddddddd	d
ddg}t|ddgtd
�}t|�}|j|jt@�|j|j|�|j|jd�|j|j	�|j|j
�|j|j�dS)Nrrr�r�r�r�r!r rrYrr)rxr�rrv)rrv)rr'r�r�r�rKr�r�rsrrr)r�rbr�rr1r1r2�test_ndarray_re_export�sz)TestBufferProtocol.test_ndarray_re_exportcCs�x�dtfD]�}tdddgdg|d�}t|�}|j||�|j|j�g�|j|j�g�tdddgdddg|d�}|j|j�g�tdddgdddg|d�}|j|j�gggg�tdddgdddg|d�}|j|j�ggggggggggggg�q
WdS)Nrrrr�)rxr�)r'rrAr�r�)r�r�r�rHr1r1r2�test_ndarray_zero_shape�s
z*TestBufferProtocol.test_ndarray_zero_shapecCstxndtfD]b}tdgdgdg|d�}t|�}|j||�|j|j�dddddg�|j|j�dddddg�q
WdS)Nrrr�)rxrzr�)r'rrAr�r�)r�r�r�rHr1r1r2�test_ndarray_zero_strides�sz,TestBufferProtocol.test_ndarray_zero_stridescCs@tttd��dgdd�}|j|jd�|j|j�dddg�dS)N�r�r!)rxr�r r)rrprUr�r�r�)r�r�r1r1r2�test_ndarray_offset�sz&TestBufferProtocol.test_ndarray_offsetcCsBx<dtfD]0}tttd��dg|d�}|j�}|j||�q
WdS)Nrr�)rxr�)r'rrprUr=r�)r�r�r�r:r1r1r2�#test_ndarray_memoryview_from_buffer�sz6TestBufferProtocol.test_ndarray_memoryview_from_buffercCsXxRdtfD]F}tttd��dg|d�}x(td�D]}|j||t||g��q0Wq
WdS)Nrr�)rxr�)r'rrprUr�r�)r�r�r�rr1r1r2�test_ndarray_get_pointer�sz+TestBufferProtocol.test_ndarray_get_pointercCs^tttd��dddgd�}t|ttBd�}|j|j�|j��t|�}|j|j�|j��dS)Nr{rr�)rx)r)rrprUrrr�r�rA)r�rr�r:r1r1r2� test_ndarray_tolist_null_strides�s
z3TestBufferProtocol.test_ndarray_tolist_null_stridescCs�|jtdd��tttd��ddgd�}tttd��ddgd�}|jt||��tdgdgdd	�}|jt|d
��|jtd
|��dS)Ns123s456rr�r�)rxrr)rxr�rD)rsr�rrprUr�)r�rLrr1r1r2�test_ndarray_cmp_contig�sz*TestBufferProtocol.test_ndarray_cmp_contigcCs�tjddddg�}t|�}|jtt|�tttd���}tttd��dgd�}|jt|�t|��tttd��ddgd�}|jt|�t|��tttd��dddgd�}|jt|�t|��tt	ttd��ddgd��}tttd��ddgt
d�}|jt|�t|��tt	ttd��dddgd��}tttd��dddgt
d�}|jt|�t|��tttd���}tttd��dddgtd�}|jt|�t|��tttd��dddgdd	�}|jt|�t|j���dS)
Nrrrr�r)rxr�)rxr�)rxr�)
r?rrr��hashrFrprUr�r�r�r'r�)r�r;r�rr1r1r2�test_ndarray_hashs*z$TestBufferProtocol.test_ndarray_hashc
Cs�tttttttttt	t
tf}|jt
tidt�tdfdtd�}x6dD].}x(|D] }t|||�}|j||j��qNWqDWtdgdgdtd�}x2dD]*}x$|D]}t|||�}|j|d	�q�Wq�Wtttd
��dddgdtd�}x2d D]*}x$|D]}t|||�}|j|d	�q�Wq�Wx�dtgD]�}tdgdgd
|tBd�}|j�}x6d!D].}x&|D]}t|||�}|j||��qNW�qDWtdddgdgd|tBd�}|j�}x6d"D].}x&|D]}t|||�}|j||��q�W�q�W�qWtdddgdgdgtd�}|j�}x:d#D]2}x*ttgD]}t|||�}|j||��qW�qW|ddd$�}|j�}xVd%D]N}xF|D]>}yt|||�}Wntk
�r��w\YnX|j||��q\W�qRWttd��}�x�dtgD�]�}t|ddg|tBd�}t�rtt|�ddgd|dk�r�dndd�}	|tk�r4tt|ddg�ddgtd�}
|
j�}n|j�}x�|D]�}yt|d|�}Wntk
�rp�wBYnX|j||�tdd�|D�ddgtd�}|jt|�t|��t�rB|j||	jdd���qBW|dk�r�tt|ddg�ddgtd�}
nt|ddgtd�}
|
j�}x�tttttgD]�}yt|d|�}Wntk
�rN�w YnX|j||�tdd�|D�ddgttBd�}|jt|�t|��t�r |j||	jdd���q W|tk�r�t|ddgtd�}
|
j�}n|j�}x�tttttgD]�}yt|d|�}Wntk
�r�w�YnX|j||�tdd�|D�ddg|tBd�}|jt|�t|��t�r�|j||	jdd���q�W�q�Wtttd��ddgttBd�}t|dt�}|j||j��tdd�|D�ddgtd�}|jt|�t|��t|dt�}tt|ddg�ddgtd�}
|j||
j��tdd�|D�ddgttBd�}|jt|�t|��t|dt�}|j||j��tdd�|D�ddgtd�}|jt|�t|��dS)&Nr�rr)rxr�r�rur�rr�r rr!rr�r)rxrzr�rr�)rxr�r)r�rxr�rcSsg|]}|�qSr1r1)rmrsr1r1r2rn�szCTestBufferProtocol.test_py_buffer_to_contiguous.<locals>.<listcomp>)rcSsg|]}|�qSr1r1)rmrsr1r1r2rn�scSsg|]}|�qSr1r1)rmrsr1r1r2rn	scSsg|]}|�qSr1r1)rmrsr1r1r2rn	scSsg|]}|�qSr1r1)rmrsr1r1r2rn	scSsg|]}|�qSr1r1)rmrsr1r1r2rn	s)rur�r�)rur�r�)rur�r�)rur�r�)rur�r�)rur�r�rv)rur�r�)rrrrr r�r!r"r#r$r%r&rr�r�rr�r�r�rprUr�r�r�r�r�rAZtostringr')
r�r*r�rZrequestrrZndbytesrVZnarLrrr1r1r2�test_py_buffer_to_contiguous0s�













B






 


   z/TestBufferProtocol.test_py_buffer_to_contiguouscCs�dgfdddgdgfttd��dddgfg}�xR|D�]H\}}t||d�}t|�}|j|j�|j|j�t|�}t||dd�}t	||�}|j
||ddd||||d	�	t|�}	|j
|	|ddd||||d	�	t|ttBd
�}
|j
|
jf�|
j�}|j
|dddd||||d	�	t|td
�}
|j
|
jd�|j
|
jf�|j
|
jf�|
j�}|dk�rZ|gn|}|j
|ddddd|jgd|d	�	q4Wx�|D]�\}}t||td
�}t|�}|j|j�|j|j�t|�}t||dd�}t||�}|j
||ddd||||d	�	t|�}	|j
|	|ddd||||d	�	�q�Wx�|dd�D]v\}}t||td
�}t|�}t|�}t	||�}|j
||ddd|||j|d	�	t|�}	|j
|	|ddd|||j|d	�	�q2W|jttdd�|jtti�tdddgdgd�}t|td
�}
|jtt|
�t|ttBd
�}
|jtt|
�tdgddgddd�}
|jtt|
�|jt|
j�|jtt|
td�|jtt|
td�|jtt|
ddd�td�dS)Nrrrr�r�)rxrur)rKryr/r�rwrxrzrV)rr4r)rxr�r��9rLr(r)rxr�r�rC)rrv)rprUrrAr�rrrQr{r�rr&rr�rzr=rr�rxr�r�rr�r'rr�r�r�r�r�)r�Zitems_shaperbrxrr:rwrzrVr.r�r1r1r2�test_memoryview_construction 	s�,



z/TestBufferProtocol.test_memoryview_constructioncCs�dddg}xTdddgdddgdddgfD]4}t||d�}|j|j�t|�}|jt|jd�q(WxJtdd�D]<\}}}td�}|j|�}|j|j	�d�|j|j
�g�qlWdS)	Nrrr�r)rxr
rAr�)rr�rrArr�rrir�r�r�)r�rbrxr�msrcr/r`r:r1r1r2�test_memoryview_cast_zero_shape�	s
"
z2TestBufferProtocol.test_memoryview_cast_zero_shapecCs�|j}tj}d}d}ttd��}|td�||d|��t|ddgdd	�}|t|�||d|��t|dddgdd	�}|t|�||d
|��dS)NzPnin 2P2n2i5P PZ3nr r�rrr�r)rxr�r�)�check_sizeofrZcalcvobjsizerprUrAr)r�ZcheckZvsizeZbase_structZper_dimrbr;r1r1r2�test_memoryview_sizeof�	sz)TestBufferProtocol.test_memoryview_sizeofcCs�Gdd�dt�}Gdd�dt�}dd�}|d�|d�d!td
�dtdd
�dd
dgdddhddifd"dddtddtd�td�dddd|dd�g}�xJtdd�D�]:\}}}t|dg|td�}t|dg|td�}	t|�}
t	j
||	d|�||
d<|j|
d|	d�t	j|�}d |k�rq�x�|D]�}d}
yt	j
||	||�Wnt	j
k
�rTt	j
}
YnXd}y||
d<Wn.ttfk
�r�}z|j}WYdd}~XnX|
�s�|�r�|j|
d�|j|d�n|j|
d|	d��qWq�WdS)#Nc@seZdZdd�Zdd�ZdS)z=TestBufferProtocol.test_memoryview_struct_module.<locals>.INTcSs
||_dS)N)�val)r�r�r1r1r2�__init__�	szFTestBufferProtocol.test_memoryview_struct_module.<locals>.INT.__init__cSs|jS)N)r�)r�r1r1r2�__int__�	szETestBufferProtocol.test_memoryview_struct_module.<locals>.INT.__int__N)�__name__�
__module__�__qualname__r�r�r1r1r1r2�INT�	sr�c@seZdZdd�Zdd�ZdS)z=TestBufferProtocol.test_memoryview_struct_module.<locals>.IDXcSs
||_dS)N)r�)r�r�r1r1r2r��	szFTestBufferProtocol.test_memoryview_struct_module.<locals>.IDX.__init__cSs|jS)N)r�)r�r1r1r2�	__index__�	szGTestBufferProtocol.test_memoryview_struct_module.<locals>.IDX.__index__N)r�r�r�r�r�r1r1r1r2�IDX�	sr�cSsdS)Nr!r1r1r1r1r2r�	sz;TestBufferProtocol.test_memoryview_struct_module.<locals>.frg������@y@z-21.1gffffff(@r�rrr�r�r�r!r TF�asabcr;�abccSs|S)Nr1)rLr1r1r2�<lambda>�	szBTestBufferProtocol.test_memoryview_struct_module.<locals>.<lambda>rYrA)rxr�r�rry������@@)r)�objectrr	rSr�rirr�rAr,r�r�r(r.r�r�rdZassertIsNot)r�r�r�r�valuesr/rbrcrr�r:ryrsZ
struct_errZmv_errrfr1r1r2�test_memoryview_struct_module�	sF


z0TestBufferProtocol.test_memoryview_struct_modulecCs@tdddgdgdgd�}|j|j�t|�}|jt|jd�dS)Nrrr�r)rxrzr
)rrsrrArr�r)r�rr�r1r1r2�!test_memoryview_cast_zero_strides�	sz4TestBufferProtocol.test_memoryview_cast_zero_stridescCs�x�tD]�}td�rd|n|}tj|�}xftD]^}td�rBd|n|}tj|�}tttd��d|g|d�}t|�}|jt	|j
|d|g�q.WqWx�td�D]�\}}	}
t|	dg|d�}t|�}xdtd�D]X\}}
}
t|�s�|jt
|j
|d|g�q�t|�r�t|�r�|jt	|j
|d|g�q�Wq�Wtjd�}tjd�}tttd.|��dd|gdd�}t|�}|jt	|j
dd|gdd�tttd��ddd	d
dgd�}t|�}
|jt	|
j
�|jt	|
j
ddd	�|jt	|
j
i�|jt
|
j
d
�|jt
|
j
d�|jt
|
j
d�|jt
|
j
d�|jt
|
j
d�|jt
|
j
d�|jt
|
j
d�|jt
|
j
d�|jt
|
j
d�td/d0gdgdd�}t|�}
|jt|
jd�|jt|
jdd�|jt|
j�tttd��ddd	d
dgd�}t|�}
|jt	|
j
did�tttd��d3gd�}t|�}
|jt|
j
dd4gd�|jt
|
j
dd5gd�|jt
|
j
ddd	d
dddd6gd�|jt
|
j
ddd	d
ddddgd�|jt	|
j
ddd	d
ddddgd�ttdd�td9�D��d	ddd gd�}t|�}
|jt	|
j
d!dd	d
dgd�tttd"��d"gd!d�}t|�}
|jt
|
j
d!dgd"�ttd#d�td<�D��d?gd�}t|�}
|jt	|
j
d!dd	d
dgd�ttd$d�tdB�D��dEgd�}t|�}
|jt	|
j
ddd	d
dgd�tttd"��d"gd!d�}t|�}tttd"��d"gdd�}t|�}tjdGk�rN|jt	|j
dddd&d'd(d)d*g�|jt
|j
ddHdIdJdKdLg�|jt
|j
d!dMdNdOdPdQg�nN|jt	|j
ddd-g�|jt
|j
ddRdSdTdUdVg�|jt
|j
d!dWdXdYdZd[g�dS)\Nrr5r%)rxr�rrr�xr�r�r�)rx�Xz@Xz@XYz=Bz!Lz<Pz>lZBIZxBIZIIrr rrr�r!rLcSsg|]}d�qS)rr1)rmr`r1r1r2rnC
szCTestBufferProtocol.test_memoryview_cast_invalid.<locals>.<listcomp>rrr(cSsg|]}d�qS)rr1)rmr`r1r1r2rnM
scSsg|]}d�qS)rr1)rmr`r1r1r2rnR
sr&�Ir)iQiAji��	r{rYi���r�)rr)r�r�r��r�lrvrvr"�ii�r"r�i�r"r�i�r"r�i�r"r�i�ll����iiiir iiiiriir%r%riir%r r)�NON_BYTE_FORMATrr,r(rrprUrArr�rrirlr�rjr�rMrKr�r:r��maxsize)r�ZsfmtZsformatZssizeZdfmtZdformatZdsizerr�Zsitemsr`Zsize_hZsize_dr:r�r-r.r1r1r2�test_memoryview_cast_invalid�	s�



 

 """&  
z/TestBufferProtocol.test_memoryview_cast_invalidcstddd�fddd�fddd�ff���fdd	�}tjd
�}tdgd
d�}t|dd
�\}}t|�}|jd�}�j||d
dd
d
|d|dd�
tjd
�}tdg||gdd�}t|d
|gd�\}}t|�}|jd
gd�}�j|||d
d
dff|dd�
x:tdd�D],\}	}
}tj|	|
�}t|�}||||
|	�q�WxBtdd�D]4\}	}
}t|
dg|	t	d�}t|�}||||
|	��q8WdS)NrcSst|j��S)N)rpr�)rr1r1r2r�l
sz9TestBufferProtocol.test_memoryview_cast.<locals>.<lambda>rcSsdd�t|j��D�S)NcSs g|]}|dkr|dn|�qS)r)r'r1)rmrLr1r1r2rnm
szMTestBufferProtocol.test_memoryview_cast.<locals>.<lambda>.<locals>.<listcomp>)rpr�)rr1r1r2r�m
sr
cSsdd�t|j��D�S)NcSsg|]}tt|�d��qS)zlatin-1)rF�chr)rmrLr1r1r2rnn
szMTestBufferProtocol.test_memoryview_cast.<locals>.<lambda>.<locals>.<listcomp>)rpr�)rr1r1r2r�n
sc

s�tj|�}x��D]~\}}|j|�}||�}�j||d|ddd|gd|dd�
|j|�}	�j|	|�|j�}�j|	|||dddg|f|dd�
qWdS)Nrrr$T)	rKryr/r�rwrxrzrVr)r)r,r(rrr�r�)
rr:rbr/�srcsizerBZto_bytelistr.rV�m3)�bytespecr�r1r2�iter_roundtripq
s




z?TestBufferProtocol.test_memoryview_cast.<locals>.iter_roundtriprr)rxr�rT)	rKryr/r�rwrxrzrVr)rxrr$r?rA)rxr�r�)r)
r,r(rr�rArrrir?r�)r�r�r�rZ	destitemsZ	destshaper:r.Zdestsizer/rbr`r1)r�r�r2�test_memoryview_castj
s<






z'TestBufferProtocol.test_memoryview_castcCs��x�t�D�]�}�x�tdD�]�}dtd�|}tj|�}t|�|}t|�rTdnd}�xJt||�D�]:\}}}	tj|�}
|dkr�|gng}||
g}t|||d�}
t	|
�}t
|
|||d�\}}|dkr�|jt|j
||�qf|d	kr�qft|||d�}|j
||d�}t|�}|j}|j�}|j||
||d
||||dd�
|j
|�}|j
||d�}t|�}|
j}|
j�}|j||
|
|d
||||dd�
|j||
|
|d
||||dd�
qfWqWq
Wt�r�Gd
d�dtj�}|dd�}t	|�}|j
d�}|j|j|�|j|jd
�|j|jd�|j|jd
�|j|j|jf�|j|jd�|j|jf�tjd�}t	|�}|j
d�}|j|j|�|j|jd
�|j|jd�|j|jd
�|j|j|jf�|j|jd�|j|jf�dS)Nr5r4rrArBr)rxr�)rxr�rT)	rKryr/r�rwrxrzrVrc@s eZdZdejfdejfgZdS)z>TestBufferProtocol.test_memoryview_cast_1D_ND.<locals>.BEPointrLrN)r�r�r��ctypes�c_long�c_double�_fields_r1r1r1r2�BEPoint�
sr�r�g33333i@rg333333�?r
)r4r5)r)r)r�rErr,r(rtrjrirrAr�rr�rrQrzr�rr��BigEndianStructurer�rKryr�rwrxr�r�r�)r�Z_tshaperJZtfmtZtsizerrKr/rbr`�sizerxZtshaperr:Ztitemsr�r.rwrzrVr�Zm4r��pointr-rLr1r1r2�test_memoryview_cast_1D_ND�
s|









z-TestBufferProtocol.test_memoryview_cast_1D_NDcCs@tjdttdd���}t|�}|j||�|j|j�|j��|ddd�}|ddd�}|j||�|j|j�|j��tttd��dddddgdd	�}t|�}|j|j�|j��tddgdgd
d	�}t|�}|jt|j�tdgdgd
d	�}t|�}|jt|j�tddddddgddgd
d	�}t|�}|jt|j�dS)Nrr�rr�r�r!rr)rxr�r0s12345rr}r��b�c�d�e�fi����r�rC��i	)rr�)r!r)	r?rprUrAr�r�rrr�)r�r;r:rr1r1r2�test_memoryview_tolist�
s( z)TestBufferProtocol.test_memoryview_tolistcCsHttd��}|j�}|j|jd��|j�|j�}|j|jd��dS)Nrz<memoryz	<released)rAr��__repr__r��
startswithr<)r�r:r�r1r1r2�test_memoryview_reprsz'TestBufferProtocol.test_memoryview_reprcCs�xRd	D]J}td�}tj|d|dg�}t|�}|jd|�|jd|�|jd|�qWtdgdd�}t|�}|jttdt��dS)
Nrrg�g�?g@g"@)r�z9.0 in m)rr)	�floatr?rAZassertInrrr�rXrY)r�r/�infrr:r1r1r2�test_memoryview_sequences
z+TestBufferProtocol.test_memoryview_sequenceccs8|jt��}dVWdQRX|jt|j�d|f�dS)Nz#index out of bounds on dimension %d)rrNr��strZ	exception)r��dim�cmr1r1r2�assert_out_of_bounds_error+sz-TestBufferProtocol.assert_out_of_bounds_errorcCs*tdgdd�}t|�}|j|fd�|j|d|�|j|d|�|jt|jd�tdgd	d�}t|�}|jt|jf�tttd
��d
gt	d�}t|�}|jt
|jd�|jt|jd
�|jt|jd�|jt
|jd�|jt
|jd�tttd��ddgt	d�}t|�}|j|dd�|j|dd�|j|dd�|j|dd�|j|d d�x2d"D]*}|jdd��||dfWdQRX�qdWx2d$D]*}|jdd��|d|fWdQRX�q�W|jt
|jd&�|jt
|jd(�|jt|jd)�|jt|jd*�|jt|jf�|jt|jd�dS)+Ng)@r)rxr�.rrrr�Ziiir!)rxr�rg@�r rr�r)r�r�)rrr�li����)rr)rr)rr�rvrv)rvrvr7r)r7rr)r�rrD)r�rD�)r�r�)rr�)rrr)r�r�)rrAr�rr�rMr�rprUr�rNr�)r�rr:�indexr1r1r2�test_memoryview_index2sF

z(TestBufferProtocol.test_memoryview_indexcCs�tdgdtd�}t|�}d|f<|j|fd�d|d<|j|fd�|jt|jdd�tttd	��d	gd
�}t|�}|jt|jdd�tttd	��d	gtd
�}t|�}|jt	|jd2d�|jt|jdd�|jt|jdd�|jt	|jd3d�|jt	|jdd�x�t
dD]t}|dk�s|dk�r*�qtdddgdg|td�}t|�}td4d�}d||<|j||d�|j||||��qWtdddgdgdtd�}t|�}d|d<|j|dd�tdd dgdgdtd�}t|�}d|d<|j|dd�td!gdgdtd�}t|�}|jt|jdd"�tttd#��dddd$d%gtd
�}t|�}x�t
dj�D]�\}}|dk�rp�qZ|dk�r~�qZ|j
|�}|\}	}
|d&k�s�|dk�r�dd'dd'}	}
|d(k�r�|jt|jd|	d�|jt|jdd)�|jt|jd|
��qZW|j
d�}|jt|jdd*�tttd��dgd+td�}t|�}|jt|jdd�td,gdgd-td�}t|�}|jt|jdd�tttd.��dd$gtd
�}t|�}d/|d5<|j|ddd/�d0|d8<|j|ddd0�x2d:D]*}|jdd1��d||df<WdQRX�q�Wx2d<D]*}|jdd1��d|d|f<WdQRX�qW|jt	|jd>d�|jt	|jd@d�|jt|jdAd�|jt|jdBd�|jt|jdddg�dS)CNg)@r)rxr�r�g�6@g�7@.rg33333�8@r!)rxrrY)rxr�rrg@�rr r{�r5r
rrr��1�2�3r�TF�xr�r�r�r�rirr3s��ZxLs12345r}r�*�+)r�li����r7)rrrvrv)rvrvr)r�rrD)r�rD�)r�r�)rr�)rrr)r�r�)rr�rAr�rr�rKrprUrNrErrbrr�r�r�)r�rr:r/rr�r-Z_ranger.�lo�hir�r1r1r2�test_memoryview_assigngs�
 






z)TestBufferProtocol.test_memoryview_assigncCs�tttd��dgtd�}t|�}|jt|jtddd��|jt|j	tddd�t
ddg��|jt|jf�tttd��dgtd�}t|�}|jt|jtddd�tddd�f�|jt|j	tddd�tddd�ft
ddg��|jt|jtddd�if�|jt|j	tddd�ift
ddg��|jt|j	tddd�dg��xzdt
fD�]l}tttd��dgd
gdt|Bd�}tttd��dgdg|d	�}t|�}t|�}|dd
�|dd
�<|dd
�|dd
�<|j||�|j||�|dd�ddd�|dd�ddd�<|dd�ddd�|dd�ddd�<|j||�|j||�|ddd�ddd�|ddd�ddd�<|ddd�ddd�|ddd�ddd�<|j||�|j||��qFWdS)Nr)rxr�rrrr)rxrzr�r�r�)rxrzr�r�r�r�rvrvrvrrvrrv)rrprUr�rArr�rMr�rKr�r�r�r'r�)r�rr:r�r+r,r-r.r1r1r2�test_memoryview_slice�sD

$((,,z(TestBufferProtocol.test_memoryview_slicec&Cs�dd�}�x�tdd�D�]�}�x�t|d�D�]�\}}}�x�t|�D�]�}�x�t|�D�]�}tj||�}tj||�}	t|	�}
|j|
|�|j|
j�|j��|j|
j�|j��|jt|
�t|��||||	|
|�d}d}y0||}
||}||||<t|
�t|�k}Wn*t	k
�r4}z|j
}WYdd}~XnXd}y|
||
|<Wn*t	k
�rt}z|j
}WYdd}~XnX|�r�|j|t�qT|�s�|�r�|j||�qT|j|
|�|j|
j�|j��|j|
j�|j��||||	|
|�qTWqBWq*WqWdS)Nc	Ss�x�t|�D]�\}}||}||}|j||�|||<||krX|j||�|j||�n|j||�|j||�|||<|j||�|j||�|||<|||<q
WdS)N)r�r��assertNotEqual)	Ztestcaser;rr:�
singleitemrr`Zai�mir1r1r2�cmptestsz9TestBufferProtocol.test_memoryview_array.<locals>.cmptestrr�r?)
rUrir�r?rAr�r�r�rQrcrdr�r�)r�r�rr/rbr�rkr�r;rr:Z	array_errZhave_resizeZal�arrfZm_errr1r1r2�test_memoryview_arraysFz(TestBufferProtocol.test_memoryview_arrayc	Cs�tjddddg�}tjddddg�}t|�}t|�}x8dD]0}|jt||�|�t�|jt||�|�t�q:Wt|�}|j�|j||�|j||�|j||�t|�}t|�}|j�|j||�|j||�t|�}|j|dddg�tdgdgdt	d�}dt
d
�f|d
<|jt|�|�tjdd�}t|�}|j||�|j||�t�r�Gdd�dtj�}|dd�}t|�}t|�}|j||�|j||�|j||�|j
t|j�dS)Nrrrr�r!�__lt__�__le__�__gt__�__ge__rzl x d x)rxr�r�r��ur3c@s eZdZdejfdejfgZdS)zITestBufferProtocol.test_memoryview_compare_special_cases.<locals>.BEPointrLrN)r�r�r�r�r�r�r1r1r1r2r�usr�r�r2)r�r�r�r�)rrrv)r?rAr��getattrrSr<r�r�rr�r�r�r�rr�r�)	r�r;rrs�w�attrr�r�r�r1r1r2�%test_memoryview_compare_special_casesJsF

z8TestBufferProtocol.test_memoryview_compare_special_casescCsntdgdd�}tdgdtd�}t|�}t|�}|j||�|j||�|j||�|j||�|j||�|j||�|j|j|��|j|j|��d|f<|j||�|j||�|j||�|j||�|j||�|j||�|j|j|��|j|j|��ttt	d��dgtt
Bd�}ttt	d��dgtt
Bd�}t|�}|j||�d	|d
<|j||�tdgd
d�}tdgdtd�}t|�}t|�}|j||�|j||�|j||�|j||�|j||�|j||�tdgd
d�}tdgdtd�}t|�}t|�}|j||�|j||�|j||�|j||�|j||�|j||�|j||�|j||�dS)N�z@L)rxr�r)rxr�r�i�r)rxr�r�r�333333�?�12345ZLf5sZhf5s)r�r�r�)r�r�r�)r�r�r��?���)r�r�r�)rr�rAr�rs�__ne__r�rRrprUr')r��nd1�nd2rsr�r�rr:r1r1r2�!test_memoryview_compare_ndim_zerosfz4TestBufferProtocol.test_memoryview_compare_ndim_zerocCs�tdddddgdgdd�}tdddddgdgdd�}t|�}t|�}|j||�|j||�|j||�|j||�|j||�tdddddgdgd	d�}tdddddgdgd
d�}t|�}t|�}|j||�|j||�|j||�|j||�|j||�tdddgdgdd�}td dd!dd"gdgdd�}t|�}t|�}|j||ddd��|j|ddd�|�|j||ddd��|j|ddd#�|ddd$��td%d&d'gdgdd�}td(dd)dd*gdgdd�}t|�}t|�}|j||ddd��|j|ddd�|�|j||ddd��|j|ddd+�|ddd,��td-d.d/gdgdd�}td0dd1dd2gdgdtd�}t|�}t|�}|j||ddd��|j|ddd�|�|j||ddd��|j|ddd3�|ddd4��td5d6d7gdgdd�}td8dd9dd:gdgdtd�}t|�}t|�}|j||ddd��|j|ddd�|�|j||ddd��|j|ddd;�|ddd<��dS)=Nii@iqi�i�r�z@h)rxr�z<iz>hr�rrz!hz<l)rxr�r�zh  0cz>  hi��i����i'���i��i����i��i����i'���i��i����i��i����i'���i��i����i'���rvri��i����i'���i��i����i'���rvri��i����i'���i��i����i'���rvri��i����i'���i��i����i'���rvr)rrAr�r�r')r�r�r�rsr�r1r1r2� test_memoryview_compare_ndim_one�sh   z3TestBufferProtocol.test_memoryview_compare_ndim_onecCs�tddgdgdd�}tdd	gdgdd�}t|�}t|�}|j||�|j||�|j||�|j||�|j||�tddgdgdd�}td
dgdgdd�}t|�}t|�}|j||�|j||�|j||�|j||�|j||�dS)Ni�i�rz@h)rxr�z= h0cz@   ii|���i?���i|���i?���)rrAr�)r�r�r�rsr�r1r1r2�"test_memoryview_compare_zero_shape
s$z5TestBufferProtocol.test_memoryview_compare_zero_shapecCs�tddddgdgdd�}tdgdgdgdd�}t|�}t|�}|j||�|j||�|j||�|j||�|j||�td
gddgdd�}tdgdgdgd	d�}t|�}t|�}|j||�|j||�|j||�|j||�|j||�dS)N�r�z@L)rxr�rr)rxrzr�z@ Liz!L  h)r�r�)r�r�)rrAr�)r�r�r�rsr�r1r1r2�$test_memoryview_compare_zero_strides 
s$z7TestBufferProtocol.test_memoryview_compare_zero_stridesc
Csd}x~tdD]r}t|dd|�\}}}xXdtfD]L}t||g||d�}t|�}|j||�|ddd	�}t|�}|j||�q0WqWd}xxtd�D]l}	t|�\}}}xXdtfD]L}t||g||d�}t|�}|j||�|ddd
�}t|�}|j||�q�Wq�WdS)NrYz@mrAr5r)rxr�r�r�r�r7r7)rErer'rrAr�rU)
r�rrJr/rbr�r�r�r:r`r1r1r2�&test_memoryview_compare_random_formats:
s(z9TestBufferProtocol.test_memoryview_compare_random_formatscCs�tttdd��dddgdd�}tttdd��dddgdd�}t|�}t|�}|j||�|j||�|j||�|j||�|j||�tdgddddgd
d�}tdgddddgdd�}t|�}t|�}|j||�|j||�|j||�|j||�|j||�tttd��dddgd
d�}tttd��dddgd
d�}t|�}t|�}|j||�|j||�|j||�|j||�|j||�tdgdddgdd�}tdgdddgdd�}t|�}t|�}|j||�|j||�|j||�|j||�|j||�tttd��dddgd
d�}tttd��dddgdd�}t|�}t|�}|j||�|j||�|j||�|j||�|j||�dS)Nr"r�rr�z@h)rxr�rrCrz=f q xxLg333333�?z< f 2Qr�r!z! b B xLz
= Qx l xxLri�)rrr�333333�)r�rr)rrr)rrr)rrprUrAr�r�)r�r�r�rsr�r1r1r2�"test_memoryview_compare_multidim_cV
sZz5TestBufferProtocol.test_memoryview_compare_multidim_ccCs�tttdd��dddgdtd�}tttdd��dddgdtd�}t|�}t|�}|j||�|j||�|j||�|j||�|j||�tdgdddgdtd�}tdgdddgd
td�}t|�}t|�}|j||�|j||�|j||�|j||�|j||�tttdd��dddgdtd�}tttdd��dddgdtd�}t|�}t|�}|j||�|j||�|j||�|j||�|j||�tttdd��dddgdtd�}tttdd��dddgdtd�}t|�}t|�}|j||�|j||�|j||�|j||�|j||�tttd��dddgdtd�}tttd��dddgdtd�}t|�}t|�}|j||�|j||�|j||�|j||�|j||�dS)Nr"r�rr�z@h)rxr�r�rrCrrr�z=Qqz=qQrZ0llz@bi�l�����rv)r�rvrvl�����)rvr�i�i�i�i�)rrprUr�rAr�r�)r�r�r�rsr�r1r1r2�(test_memoryview_compare_multidim_fortran�
snz;TestBufferProtocol.test_memoryview_compare_multidim_fortranc	Cshttdd��}t|dddg�}t|dddgdd�}t|dddgdtd�}t|�}t|�}|j||�|j||�|j||�d!gd}d$|d<t|dddg�}t|dddgdd�}t|dddgdtd�}t|�}t|�}|j||�|j||�|j||�tttd��ddgdd�}|ddd%�ddd&�f}tttd��ddgdd�}|ddd�ddd'�f}t|�}t|�}|j||�|j||�|j||�|j||�|j||�td,gd
ddgdd�}|ddd-�ddd.�f}td3gd
ddgdd�}|ddd�ddd4�f}t|�}t|�}|j||�|j||�|j||�|j||�|j||�tttd��dddgdd�}|dd�ddd5�f}tttd��dddgdd�}|dd�ddd6�f}t|�}t|�}|j||�|j||�|j||�|j||�|j||�tttd��dddgdd�}|dd�ddd7�f}tttd��dddgdd�}|dd�ddd8�f}t|�}t|�}|j||�|j||�|j||�|j||�|j||�td9gddddgdd�}|dd�ddd:�f}td;gddddgdd�}|dd�ddd<�f}t|�}t|�}|j||�|j||�|j||�|j||�|j||�dS)=Nr"r�rr�z@l)rxr�r)rxr�r�gffffff
@�r�rCg������@zd b czd h c�(r z@Irrr$rz=iiz>iirr�123Zb3sZi3si��ffffff
����)r�r�r�皙��������)r�r�r�rvrrl��l��)r�rrvrl��l��)rrrrrrr)rr�r)rr�r)rprUr�rr�rAr�r�)	r��lst1�lst2r�r�rsr�r+r,r1r1r2�&test_memoryview_compare_multidim_mixed�
s�
z9TestBufferProtocol.test_memoryview_compare_multidim_mixedcCstttd��dddgdd�}tttd��dddgdd�}t|�}t|�}|j||�|j||�|j||�|j||�|j||�tttd��dddgdd�}tttd��dddgdd�}t|�}t|�}|j||�|j||�|j||�|j||�|j||�dS)	NrCrr�rr)rxr�r�z@i)rrprUrAr�r�)r�r�r�rsr�r1r1r2�+test_memoryview_compare_multidim_zero_shape=s$z>TestBufferProtocol.test_memoryview_compare_multidim_zero_shapecCstdgddddgdd�}tdgdddgdddgdd	�}t|�}t|�}|j||�|j||�|j||�|j||�|j||�|j|j�|j��tdgdddgd
d�}tdgddgddgdd	�}t|�}t|�}|j||�|j||�|j||�|j||�|j||�dS)Ni�r�r�r�z@L)rxr�rr)rxrzr�rrrYz=lQz<lQ)rr)rr)rrAr�r�)r�r�r�rsr�r1r1r2�-test_memoryview_compare_multidim_zero_stridesWs&z@TestBufferProtocol.test_memoryview_compare_multidim_zero_stridesc	Csztttd��ddgdd�}|ddd$�ddd%�f}tttd��ddgd	td
�}|ddd�ddd&�f}t|�}t|�}|j||�|j||�|j||�|j||�|j||�td*gdddgdtd
�}d,|dd
<|ddd-�ddd.�f}td2gdddgdttBd
�}d4|dd
<|ddd�ddd5�f}t|�}t|�}|j||�|j||�|j||�|j||�|j||�tttd��dddgdtd
�}|dd�ddd6�f}tttd��dddgdd�}|dd�ddd7�f}t|�}t|�}|j||�|j||�|j||�|j||�|j||�td;gddddgdttBd
�}|dd�ddd<�f}td@gddddgdd�}|dd�dddA�f}t|�}t|�}|j||�|j||�|j||�|j||�|j||�tttd��dddgdtd
�}|dd�dddB�f}tttd��dddgdtd
�}|dd�dddC�f}t|�}t|�}|j||�|j||�|j||�|j||�|j||�tdDgddddgdttBd
�}dE|ddd<|dd�dddF�f}tdGgddddgdttBd
�}dH|ddd<|dd�dddI�f}t|�}t|�}|j||�|j||�|j||�|j||�|j||�ttdJd��}t|dddg�}t|dddgdtd
�}t|dddgdt	tBd
�}t|�}t|�}|j||�|j||�|j||�dKgd}dL|d!<t|dddg�}t|dddgd"td
�}t|dddgd#t	tBd
�}t|�}t|�}|j||�|j||�|j||�dS)MNr�r�r z@I)rxr�r�rrr)rxr�r�rz=Qqr!z>QqrCrZBbr�hellor��Z5s0sP�sushir"z@lr�sashimi�sliced������4@�ramen�spicy�fffff�"@rz
< 10p 9p dz
> 10p 9p drvrrl�����rv)rrvr)rrrvrl�����rv)rrvr)rrrrrr'r5rv)r5rvrr'r5rv)r5rvrrr)rr�r)r
r�rr)rr�r)r
r�rri�)rrr
)rrr)
rrprUr'rAr�r�r�r�r�)	r�r+r�r,r�rsr�rrr1r1r2�+test_memoryview_compare_multidim_suboffsetsrs�
z>TestBufferProtocol.test_memoryview_compare_multidim_suboffsetscCsr�xjdD�]`}tdgddd	dddg|d
d�}tdgddd	dddg|d
ttBd�}d
|ddd
d
d
<t|�}t|�}|j||�|j||�|j||�|j||�|j||�tdgddd	dddg|dd�}tdgddd	dddg|dttBd�}d|ddd
d
d
<t|�}t|�}|j||�|j||�|j||�|j||�|j||�qWdS)Nr8r6r7r9rr&r�r�r�r)rxr�)rxr�r�rr$r"ZQLH)r8r6r7r9ll����)rrr����)rrr)rrr)rr�r�rAr�r�)r��	byteorderrLrr;rr1r1r2�!test_memoryview_compare_not_equal�s0"z4TestBufferProtocol.test_memoryview_compare_not_equalcCstjddddg�}t|�}|j�|jtt|�|jt|jd�|jtt|�|jt|j�|jt|j�|jtt	dt
��|jt|jd�|jt|jdd�xdD]}|jt|j
|�q�Wtjddddg�}t|�}t|�}|j||�|j�|j||�|j||�|j||�dS)Nrg�������?g������@gffffff
@r
z1.0 in mrrrKr�r�ryr�rwrxrzr�rrr)rKr�r�ryr�rwrxrzr�rrr)r?rAr<rr�rrr�r�rXrYrMrK�__getattribute__r�r�)r�r;r:r�rr-r.r1r1r2�test_memoryview_check_releaseds.z1TestBufferProtocol.test_memoryview_check_releasedcsXd�t�dgdd�}t|�}|j||�|j|j�|j��t�gd	gd
d�}t|�}|j||�|j|j�|j��t�fdd�td
�D�dddgdd�}t|�}|j||�|j|j�|j��t�fdd�td�D�dddddgdd�}t|�}|j||�|j|j�|j��t�rTGdd�dtj�}|dd�}t|�}|j|j�t|��dS)Ni�@iq�i�r�z@h)rxr�rz>hQiLlcsg|]}��qSr1r1)rmr`)rhr1r2rnGsz>TestBufferProtocol.test_memoryview_tobytes.<locals>.<listcomp>rrr�z=hQiLlcsg|]}��qSr1r1)rmr`)rhr1r2rnLsr�z<hQiLlc@s eZdZdejfdejfgZdS)z;TestBufferProtocol.test_memoryview_tobytes.<locals>.BEPointrLrN)r�r�r�r�r�r�r1r1r1r2r�Usr�r�r2�������'���)r rr!rr")rrAr�r�rUr�r�rF)r�r�r:r�r�r;r1)rhr2�test_memoryview_tobytes8s.&"
z*TestBufferProtocol.test_memoryview_tobytescCs<|jttitd�|jttdtd�tdddgdgdgd�}|jtt|td�td	fd
d�}x4dD],}t|t|�}|j||�|j|fd	�qbWtd	fd
td�}x4dD],}t|t|�}|j||�|j|fd	�q�WxddD]\}d	|f<t|t|�}|j||�|j|fd	�d
|f<|j|fd
�|j|fd
�q�Wtdgdgd
td�}xFdD]>}t|t|�}|jt	|j
d�|j||�|j|j�g��qXWttt
d��dddgd
td�}x2dD]*}t|t|�}|jt|�j�ggg��q�Wtdgdgdtd�}x:dD]2}t|t|�}|j||�|j|j�|j���qWtdddgdgdtd�}x:dD]2}t|t|�}|j||�|j|j�|j���qZWtdddgdgdgtd�}xld D]d}t|t|�}|j||�|j|j�|j��|jt|jdd�|j|dd�|j|dd��q�W|ddd!�}xld"D]d}t|t|�}|j||�|j|j�|j��|jt|jdd�|j|dd�|j|dd��q,Wttt
d��ddgtd�}x2d#D]*}t|t|�}|jt|�j�|j���q�W|jtt|td�t|t|�}|jt|�j�|j��ttt
d��ddgttBd�}x2d$D]*}t|t|�}|jt|�j�|j���q<W|jtt|td�t|t|�}|jt|�j�|j��ttt
d��ddgttBd�}xDd%D]<}|jtt|t|�t|t|�}|jt|�j�|j���q�Wtdddddgdgdgd�}t|td�}|j|j�dS)&Nr�r�rurrr�)rxrzr�rr)rxr�)rxr�r�rYrr r!rr)rxrzr�r{rr�)rxr�r�)rur�r�)rur�r�)rur�r�)rur�r�)rur�r�)rur�r�)rur�r�)rur�r�rv)rur�r�)rur�)r�r�)rur�r�)rr�r�r�r�ZPyBUF_WRITErr�r�rNrMr�rprUrKr�r'r�r)r�r�rr:r1r1r2�test_memoryview_get_contiguous[s�











z1TestBufferProtocol.test_memoryview_get_contiguouscCs�tjd�}tjddddddg�}t|�}tj|�}td|�}|j|�|j|j	�|�tjd�}t
ttd��dddgdd	�}t|�}tj|�}td|�}|j|�|j|j	�|�dS)Nrrrr�r�r�rr)rxr�r�r)
r,r(r?rA�io�BytesIOr��readintor�r�rrprU)r�r�r;r:r�rr�r1r1r2�test_memoryview_serializing�s





z.TestBufferProtocol.test_memoryview_serializingc	Cs�tttd���}t|�}|jt|�t|��|jdddgd�}|jt|�t|��|ddd�}tttd��ddd��}|jt|�t|��tttd��dddgtd	�}t|�}|jt|�t|��tttd��dddgd�}|ddd�dd�ddd�f}t|�}|jt|�t|��tttd��dddgt	d	�}|ddd�dd�ddd�f}t|�}|jt|�t|��tttd��dgdd�}t|�}tttd��dgd
d�}t|�}|j||�|jt|�t|��tttd��dddgdd�}t|�}|j
t|j�tttdd��dddgdd�}t|�}|j
t|j�tttd��dddgdd�}t|�}|j
t|j�tttdd��dddgdd�}t|�}|j
t|j�dS)Nrr
r�r�)rxrrCr�)rxr�rr)rxr�rrr�rz= Lz< hrrrvrvi����i����)
rFrprUrAr�r�rrr�r'rr��__hash__)	r�rr:ZmcZmxr�rLr;rr1r1r2�test_memoryview_hash�sJz'TestBufferProtocol.test_memoryview_hashc=Cs�tdddg�}t|�}t|�}|jt|j�~|j�tdddg�}t|�}t|ttd�}t|ttd�}|j|j	|�|jt|j�~~|j�tdddg�}t|�}t|�}t|�}|j�|jt|j�~|j�tdddg�}t|�}t|�}t|ttd�}t|ttd�}|j|j	|�|j�|jt|j�~~|j�tdddgdgt
d�}t|�}|jdddd	d
gdgd�t|�}t|�}|j|j
�|j
��t|�}	|j|	j
�|j
��|j|	j
�|j
��|j�|	j�|j�|j|j
�|j
��~|j�|j�dd
�}
td�}t|��"}|
|�|j|dtd��WdQRXtttd��dddgdd�}t|ttd�}	t|	ttd�}|j|j	|�t|��8}|
|�|j|dd�j
�dddgdddggg�WdQRX�x�dtfD�]�}td�}t|���}~t|t|d�}	t|	���}~	t|t|d�}t|��^}
~|
|
�|
|�|
|�|j|dtd��|j|dtd��|j|
dtd��~
WdQRX~WdQRX~WdQRXtd�}t|���}~t|t|d�}	t|	���}~	t|t|d�}t|��b}
~|
|�|
|�|
|
�|j|dtd��|j|dtd��|j|
dtd��~~~
WdQRXWdQRXWdQRX�q�Wtd�}|jt��2t|��}t|�}|dtd�kWdQRXWdQRXdS)Nrrr�)rr�)rxr�r�r�r�r!r )rxc	Sst|��}WdQRXdS)N)rA)rr.r1r1r2�catch22ls
z;TestBufferProtocol.test_memoryview_release.<locals>.catch22s123rr�rr)rxr�r�r�)r�rArrr�r<r��ND_REDIRECTr�rKr8r9r�r�r;�ordrprU)r�r;r:r�r�r�r-r.rLrr+rqr�r�rr1r1r2�test_memoryview_release*s�

4





*
z*TestBufferProtocol.test_memoryview_releasecCs4tdd�td�D�dgdd�}tjddd�td�D��}x�||fD]�}t|ttd�}t|ttd�}t|�}|j|j|�|j|j|�|j|j|�|j||�|j||�|j||�|j|dd	�|dd	��|j|dd	�|dd	��|j|dd	�|dd	��~~|j|dd	�|dd	��qBWdS)
NcSsg|]}d|�qS)g�?r1)rmrLr1r1r2rn�sz?TestBufferProtocol.test_memoryview_redirect.<locals>.<listcomp>rr)rxr�cSsg|]}d|�qS)g�?r1)rmrLr1r1r2rn�s)rr�rr�)	rrUr?r�r,rAr�rKr�)r�r�r;rLrrqr:r1r1r2�test_memoryview_redirect�s"z+TestBufferProtocol.test_memoryview_redirectcCs�d}dddddddd	d
ddd
g}|jttddd�t�}t|�}|j||d|dddgdg|d�	x td�D]}|j|||�qjW~~t�}t|�}~~t�}t|td�}t|td�}t|�}|j	|j
|�|j	|j
|�|j||d|dddgdg|d�	~~~~t�}t|ttd�}t|ttd�}t|�}|j	|j
|�|j	|j
|�|j	|j
|�|j||d|dddgdg|d�	~~~~tdd�}t|�}|j|dd|dddgdg|d�	x"td�D]}|j|||��q�W~~tdd�}t|�}~~tdd�}t|td�}t|td�}t|�}|j	|j
d�|j	|j
|�|j||d|dddgdg|d�	~~~~tdd�}t|ttd�}t|ttd�}t|�}|j	|j
d�|j	|j
|�|j	|j
|�|j||d|dddgdg|d�	~~~~dS)Nrrrrr�r�r�r�r!r rrYrr)rKryr/r�rwrxrzrV)r)rr�T)Zlegacy_mode)rr�ZstaticarrayrArrUr�rr�r�rKr,)r�r/rVrLrrrqr:r1r1r2�$test_memoryview_from_static_exporter�s�









z7TestBufferProtocol.test_memoryview_from_static_exportercCs,tdddgdgttBd�}|jtt|�dS)Nrrr�)r�)rr)ZND_GETBUF_UNDEFINEDrr�rA)r�r�r1r1r2�#test_memoryview_getbuffer_undefined sz6TestBufferProtocol.test_memoryview_getbuffer_undefinedcCs(tdddgdgtd�}|jtt|�dS)Nrrr�)rxr�)rr)rr�rA)r�rLr1r1r2�test_issue_7385&sz"TestBufferProtocol.test_issue_7385Nrvrvrvrvrv)F)Sr�r�r�r�rrr1r?r@rArBrErFrIrOrPrQrTrUrWrZrarbrirjrlrnrrrtrwrxryrzr|r}r~rr�r�r�r�r�rr�r�r�r�r�r�r�r�r�r��
contextlib�contextmanagerr�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrr#r$r(r*r.r/r0r1r2r1r1r1r2r��s�
3
2i
-'	0.Y #6!)>
		%qu
8	s<P	5m8>5?H>Ha(#u<^r��__main__ll����)rrr')rr'r(���r()r6r(r')rr'i�������)r7r8�)rr9l���)r:r;�)rr<l���)r=r>�)rr?l����)r@rA�)rrBl����)rCrD)rNN)r)r)r�r#)r)N)F)F)r�)N)fr3ZunittestZtestr�	itertoolsrrZrandomrrr�warningsr�r?r%�os�decimalrZ	fractionsr	Z_testbuffer�ImportErrorrr,r�ZEnvironmentVarGuard�environ�catch_warningsr@r�Z
SHORT_TESTZNATIVEr-r.ZSTANDARDr3rEr/�copyrkZARRAYrVZBYTEFMTr[r]rZrMrTrWrdrerfrirjrlr�rqrrrtr{r|r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rmrorpZ
skipUnlessZTestCaser�r��mainr1r1r1r2�<module>sT 



$
	





	



	

?

+

!




Q


Youez - 2016 - github.com/yon3zu
LinuXploit