Sindbad~EG File Manager

Current Path : /proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/
Upload File :
Current File : //proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/test_buffer.cpython-312.opt-1.pyc

�

&ΜgB�����ddlZddlZddlmZddlmZddlZddlmZm	Z	ddl
mZmZm
Z
ddlZddlZddlZddlZddlZddlmZddlmZ	ddl�	ddlZ	ddlZ	ej8�5e_ej<�5dd	lmZ ddd�ddd�	ddl!Z!d
Z"idd�dd�d
d�dd�dd�dd�dd�dd�dd�dd�dd�dd�dd�dd�dd�dd�Z#e re#d=e#d=er	ejHdd�de#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#jU�Z+e#jU�Z,e#D]
Z-e-d.vs�e,e-=�e#jU�Z.e#D]
Z-e-d/vs�e.e-=�e+e(d0<e+e(d1<e,e(d2<e.e(d
<e.e(d3<dZ/d(Z0gd,�gd4�fd2gd5gfd5gd5gfd1d0gd5gfd3d
gd5gfd6�Z1d7�Z2d8�Z3d9�Z4d:�Z5drd;�Z6d	d<�Z7d	d=�Z8d>�Z9d?�Z:e(d-D�cgc]
}e9|�r�|��c}Z;d@�Z<dA�Z=dB�Z>dC�Z?dD�Z@dE�ZAdF�ZBdG�ZCdH�ZDdI�ZEdJ�ZFdK�ZGdL�ZHdM�ZIdN�ZJdO�ZKdP�ZLdQ�ZMdR�ZNdS�ZOdT�ZPdU�ZQdsdW�ZRdX�ZSdY�ZTdtdZ�ZUd[�ZVdud\�ZWd]�ZXdvd^�ZYd_�ZZd`�Z[da�Z\dwdb�Z]dwdc�Z^dxdd�Z_dvde�Z`df�ZadgZbdVZcdhZde"rdhZbdiZcdjZde^Z[e_Z\e`Zej�edk�ej�edl�Gdm�dnej����ZgGdo�dpej��Zheidqk(rej��yy#e$rdZY���wxYw#e$rdZY���wxYw#e$rdZY���wxYw#1swY���xYw#1swY���xYw#e$rdZ Y���wxYw#e$rdZ!Y���wxYw#ejJ$rY��twxYwcc}w)y�N)�support)�	os_helper)�permutations�product)�	randrange�sample�choice)�Decimal)�Fraction)�*)�ndarrayT�?�c�b�B�h�H�i�I�l�L�n�N�e�f�d�P�Q������q�r��r�)i�����)i�����)ri)���)rl�l������r��i��i���)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$rY�QwxYw)zReturn range of a native type.rr#rr!rr-rr)rr.r/)
r%��@�?� �����r)�struct�pack�error)�fmt�lh�exps   �-/usr/local/lib/python3.12/test/test_buffer.py�native_type_rangerAas���
�c�z�
��"�I�!

���
���I�

���
���I�

���
���I�

����4��j�!�T�'�
"���I�<�C�
����C�!�S�&�!��,��<�%(�!�G��3��i��C��
 �!�Q��V���
�I���<�<�
��
�s�A5�5B�
B)��@�<�>�=�!rC�
bBhHiIlLfd�Bbc�m�@m�a�@b)rB�1�2�3rB)r
�array�numpy�
memoryview�bytefmtc���tt||�}|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.rrR��r�efdr)r�fmtdict�bytes�boolr:r;�unpack)�mode�char�obj�xs    r@�
randrange_fmtra�s|��	�7�4�=��&�'�A��s�{��1�#�J���'�>�a�7�l��A��s�{���G���u�}��K�K��a� ���M�M�$��"�1�%���H�c��|jd�\}}g}|D]}|jt|||��� t|�dk(r|dSt	|�S)zReturn single random item.�#r.r)�split�appendra�len�tuple)r=r_r]�charsr`rs      r@�gen_itemrj�sT���)�)�C�.�K�D�%�
�A�
��	����t�Q��,�-���q�6�Q�;�1�Q�4�,�E�!�H�,rbc�r�|dk(rt||�Sdg|z}t|�D]}t||�||<�|S)z,Return a list of random items (or a scalar).r)rj�range)rr=r_�lstrs     r@�	gen_itemsrn�sD���A�v���S�!�!��#��'�C�
�1�X���#�s�#��A����Jrbc�v�tt|t�}|dz}|jd�}t	dd�}t|�D]S}tt
t|��}tt|t�}||t|r|nd�zz
}|||zz
}�Ut|||�}	t||�}
||	|
fS)Nrd�ambr"�
r.)r	�cap�MODE�striprrlrhrY�MULT�intrnrj)rr_r]�xfmtr=�nmemb�_r^�
multiplier�items�items           r@�struct_itemsr}�s����#�c�(�4�.�!�D��#�:�D�
�*�*�U�
�C��a���E�
�5�\���e�G�D�M�*�+���C��H�T�N�+�
����*�J�!�<�<�=���
�T�!�"��	�

�a��s�#�E��D�#��D���t��rbc�>�|�tt|t�}|�ttt|��}tt|t
�}|dz|t
|r|nd�zz}t|||�}t||�}|jd�|z|z}|||fS)z"Return random format, items, item.rdr.rp)
r	rrrsrhrYrurvrnrjrt)rr_r]r^rzr=r{r|s        r@�	randitemsr�s����|��c�#�h�t�n�%���|��e�G�D�M�*�+����C����'�J�
��*�t�c�
�*��B�B�
B�C��a��c�"�E��C���D�
�*�*�U�
�j�
(�4�
/�C���t��rbc#�rK�t|tD] }t|D]}t||||�����"y�w)z1Iterate through supported mode/char combinations.N)rrrsrYr)rr_r]r^s    r@�	iter_moder��s7�����C������D�M�D��A�s�D�$�/�/�"��s�57c#�^K�t||�D]}|���|dk7ryt||���y�w)zwYield (format, items, item) for all possible modes and format
       characters plus one random compound format string.r
N)r�r})�nitems�testobj�ts   r@�iter_formatr��s6�����v�w�
'����(��)���
�v�w�
'�'�s�+-c�"�d|vxs
d|vxsd|vS)Nrrr�)r=s r@�is_byte_formatr��s���#�:�1����1�s�c�z�1rbc�d�t|�}|dk(xs|dk(xr|ddk(xr||dz
tvS)zformat suitable for memoryviewr.r"rrC)rg�
MEMORYVIEW)r=r`s  r@�is_memoryview_formatr��sB���C��A�
�!�V�
1��Q��0�3�q�6�S�=�
#���!��H�
�"�$rbc�$�t|t�S)z9Tuple items (representing structs) are regarded as atoms.��
isinstance�list�rms r@�atompr��s���#�t�$�$�$rbc�"�t|t�S�Nr�r�s r@�listpr�s���c�4� � rbc�L�t|�dk(ry|d}|ddD]}||z}�	|S)zProduct of list elements.rr.N)rg)rmr`�vs   r@�prodr�s7��
�3�x�1�}���A��A�
���W��	�Q�����Hrbc��|dk(ry|dk(r<t|dd�|gz}t|dz
dd�D]}||xx||dzzcc<�|S|gt|dd�z}td|�D]}||xx||dz
zcc<�|S)zOCalculate strides of a contiguous array. Layout is 'C' or
       'F' (Fortran).rr��Cr.Nr"���)r�rl)�ndim�shape�itemsize�layout�stridesrs      r@�strides_from_shaper�s����q�y��
��}��u�Q�R�y�/�X�J�.���t�A�v�r�2�&�A��A�J�'�!�A�#�,�&�J�'��N��*�t�E�#�2�J�/�/���q�$��A��A�J�'�!�A�#�,�&�J� ��Nrbc���t|�r|St|�dk(r|dSdg|dz}|drt|�|dznd}t|d�D]}||z}t||||z|dd�||<�!|S)zmConvert flat item list to the nested list representation of a
       multidimensional C array with shape 's'.rr.N)r�rgrl�_ca)r{�srm�strider�starts      r@r�r�s���
�U�|���
�1�v��{��Q�x���#��!��*�C�#$�Q�4�S��Z�1�Q�4�
�Q�F�
�1�Q�4�[���&����U�5��v��.��!�"��6��A����Jrbc��t|�r|St|�dk(r|dSdg|dz}|d}t|d�D]}t||d|�|dd�||<�|S)zsConvert flat item list to the nested list representation of a
       multidimensional Fortran array with shape 's'.rNr.)r�rgrl�_fa)r{r�rmr�rs     r@r�r�,st��
�U�|���
�1�v��{��Q�x���#��!��*�C�
�q�T�F�
�1�Q�4�[���U�1�9�f�9�%�q���u�-��A����Jrbc�|�t|�r&d|vr"t|�t|�k7rtd��t	||�S�Nrzprod(shape) != len(items))r�r�rg�
ValueErrorr��r{r�s  r@�carrayr�9�7���U�|�A��J�4��;�#�e�*�+D��4�5�5��u�e��rbc�|�t|�r&d|vr"t|�t|�k7rtd��t	||�Sr�)r�r�rgr�r�r�s  r@�farrayr�>r�rbc�L�|D�cgc]
}t|���}}t|�Scc}w)z(Generate all possible tuples of indices.)rlr)r�r��	iterabless   r@�indicesr�Cs*��#(�)�5�a��q��5�I�)��I����*s�!c�F�d}t|�D]}|||||zz
}�|S)zAConvert multi-dimensional index to the position in the flat list.r�rl)r��indr��retrs     r@�getindexr�Hs1��
�C�
�4�[���w�q�z�C��F�"�"����Jrbc��|s|St|�}t||dd�}t||ddd�dd�}dgt|�z}t|�D]*}t|||�}t||ddd�|�}||||<�,|S)z�Transpose flat item list that is regarded as a multi-dimensional
       matrix defined by shape: dest...[k][j][i] = src[i][j][k]...  r.r�Nr�r)rgr�r�r�)	�srcr�r��sstrides�dstrides�destr��fr�tos	         r@�	transposer�Os�����
��u�:�D�!�$��q�#�6�H�!�$��d��d��Q��<�H�
�3��S��>�D��u�~��
�d�C��
*��
�d�C��"��I�x�
0���r�7��R����Krbc�f�|gk(r|St|�r|gSt|d�t|dd�zS)zflatten listrr.N�r��_flattenr�s r@r�r�^s;��
�b�y��
��S�z��u���C��F��h�s�1�2�w�/�/�/rbc�2�t|�r|St|�S)zflatten list or return scalarr�r�s r@�flattenr�fs���S�z��
��C�=�rbc�f�t|�rgSt||d�gt|d|dd�zS)zMGet the shape of lst after slicing: slices is a list of slice
       objects.rr.N)r�rg�slice_shape)rm�slicess  r@r�r�ls<��
�S�z��	���F�1�I��� �;�s�1�v�v�a�b�z�#B�B�Brbc	�l�t|�r|S||dD�cgc]}t||dd���c}Scc}w)z=Multi-dimensional slicing: slices is a list of slice objects.rr.N)r��
multislice)rmr��sublsts   r@r�r�ss;���S�z��
�9<�V�A�Y��H��v�J�v�v�a�b�z�*��H�H��Hs�1c��t|�r|St||d||d�D��cgc]\}}t|||dd|dd���}}}|||d<|Scc}}w)a�Multi-dimensional slice assignment: llst and rlst are the operands,
       lslices and rslices are lists of slice objects. llst and rlst must
       have the same structure.

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

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

       Instead we write:

         lslices = [slice(0,3,2), slice(0,3,2)]
         rslices = [slice(1,3,1), slice(1,3,1)]
         multislice_assign(llst, rlst, lslices, rslices)
    rr.N)r��zip�m_assign)�llst�rlst�lslices�rslicesr�rs      r@r�r�ys��
�T�{����D����,�d�7�1�:�.>�?�A�?���1�
�Q��7�1�2�;�����4�?�	�A��D������K��As�Ac���t||�}t||�}t|�t|�k7rytt|��D]}||||k7ry||dk(s�yy)z9Compare the structure of llst[lslices] and rlst[rslices].r�r)r�rgrl)r�r�r�r��lshape�rshapers       r@�
cmp_structurer��sf��
��w�
'�F�
��w�
'�F��F��s�6�{�"��
�3�v�;�
���!�9��q�	�!���!�9��>��	 �

rbc�V�t||||�dkrtd��t||||�S)z:Return llst after assigning: llst[lslices] = rlst[rslices]rz+lvalue and rvalue have different structures)r�r�r�)r�r�r�r�s    r@�multislice_assignr��s2���T�4��'�2�Q�6��F�G�G��D�$���1�1rbc�.����|�zry|dks|�z|kDryt�fd��D��ry|dkr|dk(xr�xr�Sd�vryt��fd�t|�D��}t��fd�t|�D��}d||zkxr||z�z|kS)z�Verify 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�|]	}|�z���y�wr�r�)�.0r�r�s  �r@�	<genexpr>z#verify_structure.<locals>.<genexpr>�s�����
)��A�1�x�<��s�Tc3�J�K�|]}�|dkr�|�|dz
z���y�w�rr.Nr��r��jr�r�s  ��r@r�z#verify_structure.<locals>.<genexpr>�s3�����#��1��!�*��/��q�z�5��8�A�:�&���� #c3�J�K�|]}�|dkDr�|�|dz
z���y�wr�r�r�s  ��r@r�z#verify_structure.<locals>.<genexpr>�s3�����"��1��!�*�q�.��q�z�5��8�A�:�&��r�)�any�sumrl)�memlenr�r�r�r��offset�imin�imaxs ` ``   r@�verify_structurer��s��������
��z�V�H�_�v�-��
�
)��
)�)���q�y��q�y�6��Y�6�w�;�6��E�z���#��d��#�#�D��"��d��"�"�D�
��t���>��t��H� 4�� >�>rbc��|D]}||}�	|Sr�r�)rmr�rs   r@�get_itemr��s��
���!�f����Jrbc�X�|\}}}}}}|}t|�D]}	|||	||	zz
}�|S)z-Location of an item in the underlying memory.r�)
r�r�r�r�r�r�r�r��prs
          r@�memory_indexr��sC��56�2�F�H�d�E�7�F��A�
�4�[��	�W�Q�Z���
�
"�"����Hrbc�z�|\}}}}}}d|z}t|�D]}t||�}	d|	z}
||
zry||
z}�!y)z�The structure 't' is overlapping if at least one memory location
       is visited twice while iterating through all possible tuples of
       indices.r.TF)r�r�)r�r�r�r�r�r�r��visitedr�r�bits           r@�is_overlappingr��sZ��67�2�F�H�d�E�7�F���i�G��u�~����a� ����d���S�=���3����rb�c�����s�t|dz�}|dk(r6|r|||dddfStdd�}||z}td�dk(r|n|}|||dd|fSd}	td�}
|
dk\r|rd}	n|
dk\rd}	dg|z�t|�D]}t|	|dz��|<�nt��}d	}td�}
|
dk\r|
dzrd
nd}
dg|z�|t||dz�z�|dz
<|
s�|dz
dk(r|�|dz
<t|dz
dd�D]T}|�|dzr�|dzndz}|
r|t||dz�z�|<�1d
td�|ztd|dz�z�|<�Vdx}}d�vr<t��fd�t|�D��}t��fd�t|�D��}||z
}|r||z}||dz|zz}n||z|z}td�dk(r||z
n|}|||��|fS)z�Return 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.rr��r"�d�_�Zr�TFr��r.r�c3�J�K�|]}�|dkr�|�|dz
z���y�wr�r�r�s  ��r@r�z!rand_structure.<locals>.<genexpr> s3�����'�K�q��a�j�A�o��1�:�u�Q�x��z�*�K�r�c3�J�K�|]}�|dkDr�|�|dz
z���y�wr�r�r�s  ��r@r�z!rand_structure.<locals>.<genexpr>"s3�����&�K�q��a�j�1�n��1�:�u�Q�x��z�*�K�r�)rrlrgr�)r��valid�maxdim�maxshaper�r�r�r�r��minshaperr�	maxstride�zero_strider�r�r�s    `           @r@�rand_structurer�sh��������"���A�I����4��R��:�:�"�1�d�+���(�*��&/��l�a�&7�(��V���x��r�2�v�=�=����c�N����7�u��H�
�"�W��H���d�
���t��A� ��8�A�:�6�E�!�H���5�z���I��#��A��r�'�a�!�e�$��K��c�D�j�G���I�:�y��{�!C�C�G�D��F�O��7�4��6�?�a�/�"���Q���
�4��6�2�r�
"���5��1��:�U�1�Q�3�Z�1�4�	��!�I�y�j�)�A�+�$F�F�G�A�J� ��1��.�"�#�%.�q�)�A�+�%>�?�G�A�J�#��O�D�4���:��'�E�$�K�'�'���&�E�$�K�&�&���D�[�F�����!���4��6�X�-�-���%�$�,�(�*��#,�Q�<�1�#4�$��x��&���8�T�5�'�6�9�9rbc���||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.)r�slice�
slice_indices�RuntimeError)
�slicelen�listlen�maxstartr��maxstep�step�stopr�ry�controls
          r@�randslice_from_slicelenr.s�����!�H��h�q�j�!�E�/7�w���8�+�Q�G��Q���	�"�D��8�d�?�"�D�
�e�T�4� �A�$�Q��0��A�q�!�W��(�����Hrbc���dg|z}dg|z}t|�D];}||}|dkDrtd|dz�nd}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)r�r�r�r�rrrs       r@�randslice_from_shaper;s~���c�D�j�G��c�D�j�G�
�4�[���!�H��()�A��9�Q��!��$�1��,�X�q�9���
�,�X�q�9���
�	�
��>�5��>�)�)rbc���td|dz�}d}td�}|dk\rd}n|dk\rd}td�dk\rdnd	}dg|z}dg|z}dg|z}dg|z}	t|�D]�}t||dz�}
t||dz�}||
kr|
|}
}|r]t|
|
dz�}t|
|
dz�}
d
td�td|
dz�z}t||
|�}t||
�\}}}}n"|
dkDrtd|
dz�nd}t	||
�}t	||�}td�dk(r||
c||<||<||c|	|<||<��|
|c||<||<||c|	|<||<��||t|�t|	�fS)z�Create (lshape, rshape, tuple(lslices), tuple(rslices)) such that
       shapeof(x[lslices]) == shapeof(y[rslices]), where x is an array
       with shape 'lshape' and y is an array with shape 'rshape'.r.r"r�r�rr��PTFr�)rrlrrrrh)r�r�r�rr�
all_randomr�r�r�r��small�bigr�r
r�s_smallryr�s_bigs                   r@�rand_aligned_slicesrGs����Q��q��!�D��H��#��A��B�w���	
�b����"�3��2�-��5�J��S��X�F���D��v��c�$�h�G�1�#�d�(��
�4�[���(�H�Q�J�/����(�1�*�-����;����C���u�f�e�A�g�.�E��e�V�U�1�W�-�D��)�A�,�'�)�A�u�Q�w�*?�?�D��E�4��.�G� -�g�u� =��A�q�!�X�05��	�y��E�!�G�,�q�H�-�h��>�G�(��#�6���Q�<�1��#&�� �F�1�I�v�a�y�%*�G�"�G�A�J���
�#(�#� �F�1�I�v�a�y�%,�e�"�G�A�J���
�1�4�6�5��>�5��>�9�9rbc�:�|\}}}}}}t||zd|zd�S)zMReturn a list of random items for structure 't' with format
       'fmtchar'.rdrR)rn)r=r�r�r�rys     r@�randitems_from_structurerrs.��$%� �F�H�a��A�q��V�X�%�s�3�w��8�8rbc	�D�|\}}}}}}	t|||||	t|z��S)z:Return ndarray from the tuple returned by rand_structure()�r�r��formatr��flags)r
�ND_WRITABLE)
r{r=r�rr�r�r�r�r�r�s
          r@�ndarray_from_structurer!xs3��56�2�F�H�d�E�7�F��5��w�s� ��E�(9�;�;rbc��|\}}}}}}t|�}	t|�D] \}
}tj||	|
|z|��"t	|	||||��S)z>Return numpy_array from the tuple returned by rand_structure())�bufferr�r��dtyper�)�	bytearray�	enumerater:�	pack_into�numpy_array)r{r=r�r�r�r�r�r�r��bufr�r�s            r@�numpy_array_from_structurer*~sa��56�2�F�H�d�E�7�F�
�F�
�C��%� ���1�����c�1�X�:�q�1�!��c��� ��1�1rbc���|j}|rt|�|z|k7r<d|fS|gk(r|jdk(s||k7rd|fSt||�\}}|g}|dk7rd|fS|j	�}tdt
|�|�D�cgc]
}||||z��}	}g}
|	D]7}tj||�d}||k7rd|fcS|
j|��9|gk7r|
|fS|
d|fScc}w)a�Interpret the raw memory of 'exporter' as a list of items with
       size 'itemsize'. If shape=None, the new structure is assumed to
       be 1-D with n * itemsize = bytelen. If shape is given, the usual
       constraint for contiguous arrays prod(shape) * itemsize = bytelen
       applies. On success, return (items, shape). If the constraints
       cannot be met, return (None, None). If a chunk of bytes is interpreted
       as NaN as a result of float conversion, return ('nan', None).Nr�nan)
�nbytesr�r��divmod�tobytesrlrgr:r\rf)
�exporterr=r�r��bytelenrr��memr�	byteitemsr{r�r|s
             r@�
cast_itemsr4�s���o�o�G����;��!�W�,���;��	�"���=�=�A���W�!4���;���g�x�(���1������6���;��
�
�
�
�C�,1�!�S��X�x�,H�I�,H�q��Q�q��z�"�,H�I�I��E�
���}�}�S�!�$�Q�'���4�<��%�<��
���T��	�#�b�[�E�5�>�?�u�Q�x��.?�?��Js�C#c#�VK�td�D]}|g���	tdd�}td�dkDrdnd}t|�D�cgc]}t|d���c}��tdd�}td�dkDrdnd}t|�D�cgc]}t|d���c}��y	cc}wcc}w�w)
z Generate shapes to test casting.r4��r�rr.r"r�N)rlr)rr�rrys    r@�
gencastshapesr8�s�����
�2�Y���c�	���Q��?�D��c�N�R�'�q�Q�H�+0��;�
7�;�a�9�X�q�!�;�
7�7��Q��?�D��c�N�R�'�q�Q�H�+0��;�
7�;�a�9�X�q�!�;�
7�7��8��8�s�AB)�B�0B)�B$�B)c	�p�tt||dz�t||dz�t||dz��S)z4Generate all possible slices for a single dimension.r.)rrl)rs r@�	genslicesr:�s5���5�!��Q�q�S�>�5�!��Q�q�S�>�5�!��Q�q�S�>�B�Brbc�d�t|�D�cgc]}t||���}}t|�Scc}w)z/Generate all possible slice tuples for 'shape'.)rlr:r)r�r�rr�s    r@�genslices_ndimr<�s3��.3�D�k�:�k���5��8�$�k�I�:��I����;s�-c�N�|s|dk(rdnd}t||dz�}t||�S)z�Generate 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)r�allow_empty�minlenrs    r@�rslicer@�s0����a��Q�Q�F����1��%�H�"�8�Q�/�/rbc#�HK�td�D]}t||����y�w)z.Generate random slices for a single dimension.r�N)rlr@)rr>rys   r@r�r��s!����
�1�X���Q��$�$��s� "c#��K�t|�D]!}t�fd�t|�D�����#t|�D]!}t�fd�t|�D�����#td�t|�D����y�w)z)Generate random slice tuples for 'shape'.c3�:�K�|]}t�|����y�wr��r@�r�rr�s  �r@r�zrslices_ndim.<locals>.<genexpr>�s�����:�k��F�5��8�$�k�s�c3�>�K�|]}t�|d�����y�w)T)r>NrDrEs  �r@r�zrslices_ndim.<locals>.<genexpr>�s �����L��1�F�5��8��6�6��s�c3�6K�|]}tddd����y�wr�)r)r�rys  r@r�zrslices_ndim.<locals>.<genexpr>�s����2�k���a��!��k�s�N)rlrh)r�r��
iterationsrys `  r@�rslices_ndimrI�sj������:�
���:�e�D�k�:�:�:���:�
���L��d��L�L�L���2�e�D�k�2�
2�2�s�A=Bc#�nK�t|�}|�t|�n|}tt||����y�wr�)rhrgr)�iterabler��pools   r@�rpermutationrM�s/������?�D��Y��D�	�A�A�
��t�Q��
 � �s�35c��	|j�}t	|t
�r|j}|j}nd}d}td|�d|j�d|j�d|j�d|�d|j�d|j�d	|�d
��tjj!�y#ttf$r|j�}Y��wxYw)zPrint ndarray for debugging.�unknownzndarray(z, shape=z
, strides=z
, suboffsets=z	, offset=z
, format='z', itemsize=z, flags=�)N)�tolist�	TypeError�NotImplementedErrorr/r�r
r�r�printr�r��
suboffsetsrr��sys�stdout�flush)�ndr`r�rs    r@�
ndarray_printrZ�s�����I�I�K���"�g��������������	��b�h�h��
�
�B�M�M�6�
�9�9�b�k�k�5�*�+��J�J�����
�*�+���J�J�L���s�B4�4C�Cr�rq�r6z%struct module required for this test.z%ndarray object required for this testc��eZdZd�Zddd�d�ZdRd�Zejd�d��Zd�Z	d	�Z
d
�Zd�Zd�Z
d
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z 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/�Z1ejd�d0��Z2d1�Z3d2�Z4d3�Z5e6jnd4��Z8d5�Z9d6�Z:d7�Z;d8�Z<d9�Z=d:�Z>d;�Z?d<�Z@d=�ZAd>�ZBd?�ZCd@�ZDdA�ZEdB�ZFdC�ZGdD�ZHdE�ZIdF�ZJdG�ZKdH�ZLdI�ZMdJ�ZNdK�ZOdL�ZPdM�ZQdN�ZRdO�ZSej�dP��ZUyQ)S�TestBufferProtocolc�"�t�|_yr�)�get_sizeof_void_p�
sizeof_void_p��selfs r@�setUpzTestBufferProtocol.setUps
��.�0��rbF)�sliced�castc

�,��������	�
�'�(�)��rt���z�(n�st�	��(n��(d�)�jr��j�d�d}t	d��D]'}
�|
dk(rn�|
dks�|�|
�|
dz
zz
}�)|gt	�dz
�D�cgc]}d��c}z�)�j
}�ddkr|}|gt
�dd�z��j�j|��j�j�(��j�j���j�j���j�j|��j�j���j�jt!����
r�)s%�j�j"t!����j�jt!�)��t%�t&�st)��r4�r�j+�n�j-�}�j|�	��sy|�st/�}d}t1��D]{}	t3�|�}t5�	|�}t%|t �rt7j8�g|���}nt7j8�|�}|j;|��j||��}|�sj�j�j-�|�t?��}djAd�|D��}�j|jC�|��r�nd}tE�	�}d	D�]�}�}|d
k(r8tG�d�rtG�d�rKtI|��}t'|�|tJ�
�}n+tG�d�rtG�d
�r|dk(rt'|�|��}tM�tN|�}�j|j-�|��jQtS||���dk(r��t|�}|rdntT} tW�dtX�}�jt|�|�z�t	|�D�
cgc]}
t7jZ�||
�z���}!}
t|!d�dk(r|!D�cgc]}|d��	}!}t'|!�| ���}"�jt?|"�t?���t?��j-�}#�j|#|�t?��j-d��}#�j|#|�t?��j-d��}#�j|#|�tW�d
tX�}�jt|�|�z�t	|�D�
cgc]}
t7jZ�||
�z���}!}
t|!d�dk(r|!D�cgc]}|d��	}!}t'|!�| tJz���}"�jt?|"�t?���t?��j-d
��}#�j|#|�tW�dtX�}�jt|�|�z�t	|�D�
cgc]}
t7jZ�||
�z���}!}
t|!d�dk(r|!D�cgc]}|d��	}!}tG�d
�rtJnd}$t'|!�|$| z���}"�jt?|"�t?���t?��j-d��}#�j|#|����t)��rx	t?��}t%�t>�r�jn��'|f�'�(���	�����
��)fd�	}%|%|�|j]�5}&|%|&d��ddd�|j-�yycc}w#t<$rd}Y��wxYwcc}
wcc}wcc}
wcc}wcc}
wcc}w#t<$rYywxYw#1swY�`xYw)Nr�rr.r�TrBc3�&K�|]	}d|z���y�w)z%02xNr�)r�rs  r@r�z,TestBufferProtocol.verify.<locals>.<genexpr>\s����2��1�F�Q�J��s�r�r��F�Arirjr��r�rr�r�r�r�rr��orderc�R���
j|j���
j|j���
j|j���
j|j
���
j|j|��
j|j���
j|jt����r�s%�
j|jt�
���
j|jt����dk(r�
jtt|�n$�
jt|�t����r�	j�n�	j!�}�
j|���
j|�	�y)Nr)�assertIsr_�assertEqualr-r�r�readonlyr�r�rhr�rU�assertRaisesrRrgrQr/)rJ�expected_readonly�rep�ex�expected_lenr=r�rmr��resultrbr�rdr�rUs   ������������r@�check_memoryviewz3TestBufferProtocol.verify.<locals>.check_memoryview�s/����
�
�a�e�e�R�(�� � ����<�8�� � ����X�6�� � ����3�/�� � ����->�?�� � �����.�� � ����%��,�7��:��$�$�Q�Y�Y��g��?�� � ����u�Z�/@�A��1�9��%�%�i��a�8��$�$�S��V�S��X�6�),�f�m�m�o�&�.�.�2B��� � ��c�*�� � ��F�+rb)ru)/r�rgrU�
assertGreaterrlr`r�rqr_rrr-r�rrsr�r�rhr�r�r
r�rQr/r%r��get_pointerr�r:r;�extend�BufferErrorrS�join�hexr��
is_contiguousr��
ND_FORTRAN�get_contiguous�
PyBUF_READ�
assertTrue�
cmp_contigr �py_buffer_to_contiguous�
PyBUF_FULL_RO�unpack_from�
toreadonly)*rbryr_r�r=rsr�r�r�rmrdre�
suboffset0rr��stride0rvr�buf_errr��item1�item2r`rJr�ff�	flattenedro�expected�trans�contigrx�ro�initlst�y�contig_bytesrrz�mmrwrxrUs*`` `` `````                            @@@r@�verifyzTestBufferProtocol.verifysi����
���;�x�/�L��"�3�x��'���
�������t�Q�'��J��1�d�^����8�q�=���1�:��?��7�1�:�+��q��!��"<�<�J�	$�%��U�4��6�]�(C�]���]�(C�C�J��(�(�G��q�z�A�~�"�(���i�$�w�q�r�{�"3�3�G��
�
�f�j�j�#�&��������5�������(�3��������,��
�
�f�o�o�x�0�������d�+�������u�U�|�4��:����V�^�^�U�7�^�<�����*�*�E�*�,=�>��f�g�&�*>�s�*C�%(�&�-�-�/�f�n�n�.>�C����S�#�&������A��G��u�~��
�'���4�E�$�S�#�.�E�!�%��/�"�K�K��4�e�4��"�K�K��U�3���H�H�Q�K�� � ���.�&��� � ����!1�1�5��v�&���G�G�2��2�2��� � �����!�,� �S�S��#�C�L�	�
-�E�%�H���|�,�V�S�9�(���5�%.�i��$?�E�'.�u�E�"�5?�(A�H� -�V�S�9�(���5�%�3�,�'.�y��b�'Q�H�+�F�J��F�F��$�$�V�^�^�%5�q�9��O�O�J�v�x�$@�A��q�y� ��	�N�E�&��K�B�5�V�S�-�P�F��$�$�S��[�%�(�2B�C�(-�e��6�(4�1� &�1�1�#�v�q��z�J�(4��6��7�1�:��!�+�18�"9��A�1�Q�4���"9���u�B�s�K�A��$�$�Z��]�J�v�4F�G�#-�f�#5�#=�#=�#?�L��$�$�\�6�:�#-�f�#5�#=�#=�D�#=�#I�L��$�$�\�6�:�#-�f�#5�#=�#=�C�#=�#H�L��$�$�\�6�:�5�V�S�-�P�F��$�$�S��[�%�(�2B�C�(-�e��6�(4�1� &�1�1�#�v�q��z�J�(4��6��7�1�:��!�+�18�"9��A�1�Q�4���"9���u�B�z�M�'*�,�A��$�$�Z��]�J�v�4F�G�#-�f�#5�#=�#=�C�#=�#H�L��$�$�\�6�:�5�V�S�-�P�F��$�$�S��[�%�(�2B�C�(-�e��6�(4�1� &�1�1�#�v�q��z�J�(4��6��7�1�:��!�+�18�"9��A�1�Q�4���"9�&3�F�C�&@�
�a�A���u�A�b�D��M�A��$�$�Z��]�J�v�4F�G�#-�f�#5�#=�#=�C�#=�#H�L��$�$�\�6�:�[-�^ ��$�
��v�&�� *�&�*�=����6�B�6>�
,�
,�
,�*
�Q������2� ��t�<� �
�I�I�K�?%��c)D��X#��"�G����l6��#:��"6��#:��6��#:���
��
��4 ��s[�	_�A&_
�!_�_"�!_'�_,�!_1�9_6�
_;� `
�
_�_�;	`�`�
`c���d�}|jr
||t�s�||t�r|jr~||t�r|j
re||t�r|jrL||t�s|js3||t�s|jr||t�s+||t�r|jtt||��yt!|t�st#|j$�r|j'�}n!t|t(��}|j'�}||t�rdn|j}|j$}	|j*}
|j,}||t�sd}	|j/�}||t�sd}||t�r|j0nd}||t�r|j2nd}
t||��}|j5|||
|	||||
||��
y)Nc��||z|k(Sr�r�)�req�flags  r@�matchz/TestBufferProtocol.verify_getbuf.<locals>.match�s����X�$�&�'rb��getbufFrBr.r�)	r_r�r=rsr�r�r�rmrd)rs�PyBUF_WRITABLE�PyBUF_C_CONTIGUOUS�c_contiguous�PyBUF_F_CONTIGUOUS�f_contiguous�PyBUF_ANY_CONTIGUOUS�
contiguous�PyBUF_INDIRECTrU�
PyBUF_STRIDES�PyBUF_ND�PyBUF_FORMATrtr~r
r�r�rrQr�r�r�r/r�r�r�)rb�orig_exrwr�rdr�rmrYr�r=r�r�r�r�s              r@�
verify_getbufz TestBufferProtocol.verify_getbuf�s���	(��[�[�U�3��7�
�3�*�
+�B�O�O�
�3�*�
+�B�O�O�
�3�,�
-�b�m�m��s�N�+��
�
��s�M�*�2�?�?��s�H�%�%��\�*B����k�7�B�s��C���b�'�"�&:�2�9�9�&E��)�)�+�C���M�2�B��)�)�+�C��C��0�U�b�k�k���i�i���;�;���w�w���S�,�'��C��/�/�#�C��S�(�#��D�!&�s�H�!5��
�
�2��%*�3�
�%>�'�/�/�B��
�R��
$�����B�B�%�3���U�G��F�	�	,rb�cpuc���tttttt
tttttttttf}td�D�cgc]}|dzrdnd��
c}dfgd�dfgd�dftd�D�cgc]}|dzrd	|z
nd
|z��c}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|ddd�nd}t1|�}|rt1|�}|j2dk(s|j2dk(r|
r|r|j5||�|r%|j2dk(r|
r|r|j5|�|D]h}|D]a}|j7||||z�|j7||||z�|s�2|j7||||zd��|j7|||zd���c�j��$��H��igd�}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��}gd�gd�fD]�}
dt"fD]�}t/||
|t z��}|j?tA|d��|j?tA|d��|D]E}t/||��}|j?tA|d��|j?tA|d���G����ycc}wcc}wcc}
w) N�r"TFr�r.r"r[r6r�r7r9r8�	rq�r�rrr(r'rr)r.r[r.r�r�r7���r[r6���r.r8)rrr�r�r�)rd�r�rr�r�)r.r�r.)r9rr9rir�)!r�r�r��PyBUF_SIMPLEr�r�r��
PyBUF_FULLr��
PyBUF_RECORDS�PyBUF_RECORDS_RO�
PyBUF_STRIDED�PyBUF_STRIDED_RO�PyBUF_CONTIG�PyBUF_CONTIG_ROrlr r��ND_PILr�r�r:�calcsizer
rSr�rrr��ND_GETBUF_FAILrtr~r�r�)rb�requestsr`�	items_fmt�	structure�ndflags�
real_flagsr{r=r�r�r�r�r�r�_items�ex1�ex2�m1�m2r��bitsrw�baserYros                          r@�test_ndarray_getbufz&TestBufferProtocol.test_ndarray_getbufs���
�M�8�\�� 2�4H��
��+��+��/�	
��16�b�	�
:�	�1�a�!�e�d��&�	�
:�C�@�
)�3�/�
)�3�/�:?��)�
D�)�Q�1�q�5�u�Q�w�v�a�x�0�)�
D�c�J�	
�	���Q�K�
�b�!���T�2�q�M��T�B�4����S�1�#�q�M��S�2�$��O���V�R��O���V�b�"�X�r�"���V�a��V�Q����V�b�"�X�q�!�
�	�
�{�J�
�;�(>��F�;�&�
��
���$�\�1�3�
�$�J�E�3����s�+�H�*3�&��w��18�9��A�1�x�<���9��(�"��$�E��E�*�$4� � �e�F�l� �&+�U��q��F�!�&��E�(-�w�v�O�C�',�#�d��d�)�$�C�#�C��B��'��_���x�x�1�}����Q��5�W��(�(��S�1��s�x�x�1�}��7��(�(��S�1�'��$.�D� �.�.�s�C��T��B� �.�.�s�B��D��A�"� $� 2� 2�3��S��X�:>�!3�!@� $� 2� 2�3��C��H�:>�!3�!@�
%/� (�)%�+4�$�F-���U�2�$�n�
=�����+�w��3���s�Q�C� ��
�T�,�
/�����+�w��>��J����+�w��8��D����+�w��=��I����+�w��;M��N����+�w��;M��N����+�w��;O��P�
�R��
-���w�&�E��J����U�%�u�[�7H�I�����
�b�#� 6�7����
�b�#� 6�7�%�E� ��E�2�B��O�O�M�"�c�$:�;��O�O�M�"�c�$:�;�&�'�'��c;��E��6:s�Q*�Q/
�Q4c	��tdgdg�}tdgdgt��}t|j|jfD�]�}|jt|hd��|jt|gd��|jt|gd��|jt|gd�dh�	�|jt|gd�dgdh�
�|jt|gd�dgg��|jt|dgdgi��|jt|dgdgi�
�|jt|dgdgi��|jt|dgdgdgt
��|jt|dggt�
�|jt|gdg�	�|jt|dgdgd��|jtj|dgdgd��|jt|ddgdgd��|jt|gd�dgd��tdz}|jt|dg|zdg|z�	�|jt|dgdg�	�|jt|gd�dg�	�|jt|dgddzg�	�|jt|gd�ddgd��|jt|gd�dgdg�
�|jt|dgdgddzg�
�|jt|ddgddgdg�
�|jt|gd�dgdgd��|jt|gd�dgd��|jt|gd�dgdd��|jt|gd�dgd ��|jtj|dgdgd!��gd"�}|jt||ddgd#d$gd%�&�|jt|t�d'�(�|jt|dgdgt��|jt|dg����|jttd)t�*�tdgdgt��}|jt|jdgdgt��td)�}|jt|jdgdg�|jt|j �tdgdg�}|jdgdg�t#|�}|jt|jdgdg�|jt|j �|j%�|j!�|jt|j �~|jtt&igd��|jtt&d)i�tt)t+d+��dgd+z�	�}|jtt&|d%g�tt)t+d,��ddg�	�}|jtt&|gd-��|jtt&|ddg�|jtt&|d#dg�|jtt&|d.dg�tgd�dgd��}t|t,�*�}|jt|j.�tgd�dgd��}t|�}	t|	�}|jt|j0�td/gdgd0��}|jt|j0�t}tt)t+|��dg|z�	�}|jt|j0�tdgdg�	�}|jtt2ddddd%�|jtt2|d1d2�|jtt2|d.d2�|jtt2|t4d3�|jt6t2|t4d4�|jtt2|t4d5�|jtt2|d6d7�tdgdg�	�}|jtt8ddddd%�|jtt8i|�|jtt8|i�tdgdg�	�}|jtt:ddddd%�|jtt:id7�|jtt:|d8�y)9Nr�r.�r>r.r"r[)r.r"rP)r.r"�r[r6�r.r"r[r[�r��r�r��r�r�rlr�)r�r��r�r�r�XXXri�r�r"r[r"�QLr�rPr%�r.r"r[r6r�rN�r.r"r[r6�r�r�rr6)r�r�rrBz@#$)
r.r"r[r6r�r7r9r8r�rq���r�r�)r�r�r�r�r�123r�r�r�)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.��LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL�xyzr��u �Z�rj��)r
�ND_VAREXPORT�pushrtrRr�r�r�r:r<�ND_MAX_NDIM�
OverflowErrorr%r�r~r��poprS�releaser|r�rlr�rQ�memoryview_from_bufferr�r��UnicodeEncodeErrorr�r�)
rbrY�ndmrrr{rJrwr�r�s
          r@�test_ndarray_exceptionsz*TestBufferProtocol.test_ndarray_exceptionsqs-��
�a�S�1�#�
���q�c�A�3�l�3���2�7�7�C�H�H�-�A����i��G�4����i��I�6����i��K�8����i��G�A�3��?����i��G�A�3����L����i��G�A�3�r��J����i��Q�C��s�2��F����i��Q�C��s�"��E����i��Q�C��s�2��F�
���i��Q�C��s�Q�C�$.�
�
0�
���i��Q�C�r���H�
���j�!�R��s��;����j�!�e�W�Q�C���L����f�l�l�A��v�a�S���M����j�!�a��Y�q�c�#��N����j�!�W�Q�C���M��A�
�A����j�!�a�S��U�1�#�a�%��@�
���j�!�a�S����=����j�!�W�S�E��B����m�Q���A�s�F�8��D����j�!�[��1��a��P�
���j�!�W�Q�C�#���O����m�Q���A�3�'(�#�v�h�
�
0�
���j�!�a��U�1�Q�%�!���M����j�!�Y�q�c�A�3�%(�
�
*�
���j�!�W�Q�C���J����j�!�W�Q�C��%(�
�
*�
���j�!�W�Q�C���K����f�l�l�A��y���%*�
�
,�+�E����j�!�U�1�Q�%�')�2�h�q�
�
:�
���i��I�K���D�
���i��Q�C��s�:��N�
���i��Q�C�0�O.�V	
���+�w��~��N��a�S�1�#�\�
2�����*�b�g�g��s�Q�C�|��L��V�_�����+�r�w�w���a�S�9����+�r�v�v�.��a�S�1�#�
��
�����a�S���r�N�����+�r�w�w���a�S�9����+�r�v�v�.�	�	�	��
����	
���+�r�v�v�.��	
���)�[�"�g�>����)�[�&�"�=�
�T�%��*�%�a�S��W�
5�����*�k�2��s�;�
�T�%��)�_�Q�q�E�
2�����*�k�2�w�?����*�k�2��!�u�=����*�k�2��1�v�>����-��b�5��)�D��W�Q�C��
4��
�R��
-�����*�b�i�i�0��g�a�S��5���c�l��
�S�\�����)�R�%>�%>�?�
�h�Z��s�7�
;�����)�R�%>�%>�?���
�T�%��(�^�A�3�q�5�
1�����*�b�&?�&?�@��a�S���
$�����)�^�Q��1�a��C����)�^�R���D����-���U�C�H����)�^�R��S�I����,�n�b�*�"�	$����*�n�b�*�c�J����*�n�b�#�s�C��a�S���
$�����)�Z��A�q�!�Q�?����)�Z��R�8����)�Z��R�8��a�S���
$�����)�]�A�q�!�Q��B����)�]�B��<����)�]�B��<rbc��ttd��D]�}dgdz}tgd�dgt��}t	|�|d<tdd�D]&}|jgd�dg��t	|�||<�(td�D]}|||j
��|jt|j�~��y)Nr�rr�r[r�r.r�)
rrlr
r�rSr�r�rtr~r�)rb�permrJrYrs     r@�test_ndarray_linked_listz+TestBufferProtocol.test_ndarray_linked_lists��� ��q��*�D���A��A�����<�@�B��b�>�A�a�D��1�a�[�������s��+�!�"�~��!��!��1�X���$�q�'�
�"�"�$��
���k�2�6�6�2��+rbc��td�D]C\}}}tj|�}t|d|��}|j	|d||dddd|��	�Ey)Nrr�rlT�r_r�r=rsr�r�r�rm)r�r:r�r
r�)rbr=�scalarryr�rYs      r@�test_ndarray_format_scalarz-TestBufferProtocol.test_ndarray_format_scalarsX��)�!�n�N�C������s�+�H���r�#�6�B��K�K���!)�s�T��b�"�"�
�
$�-rbc
���tdd�}t|�D]T\}}}tj|�}dtfD].}t||g||��}|j
|d||dd|f|f|��	�0�Vy)Nr.rqrrkTr�)rr�r:r�r�r
r�)rbr�r=r{ryr�rrYs        r@�test_ndarray_format_shapez,TestBufferProtocol.test_ndarray_format_shape)s{���A�r�"��(��0�M�C������s�+�H��V����U�6�(�3�e�L�����B�D�%-�3��!"�6�)�h�[� %��'�%�1rbc�f�tdd�}t|�D]�\}}}tj|�}t	dd�D]m}|dk(r�	t|dd|��g}||zg}|dkr||dz
znd}	dtfD]3}
t|||||	|
��}|j|d||dd|||dd|���	�5�o��y)	Nr.����r�rrTr�)	rr�r:r�rlrgr�r
r�)rbr�r=r{ryr�rr�r�r�rrYs            r@�test_ndarray_format_stridesz.TestBufferProtocol.test_ndarray_format_strides5s����1�b�!��(��0�M�C������s�+�H��b�!����1�9���U�6�T�6�]�+�,����=�/��04�q���6�!�8�,�a����[�E� ��e�W�(+�F�%�I�B��K�K���)1�s�T�%&�e�W�$)�&�D�&�M� �3�)�%�1rbc��gd�}t|dd��}t|ttz��}|j|j	�t|d��y)Nr�r�)r.r[r�r�)r
r�r�rrrQr�)rbr{rwrYs    r@�test_ndarray_fortranz'TestBufferProtocol.test_ndarray_fortranJsD��,��
�U�&�&�
9��
�R� 2�<� ?�
@���������f�U�F�&;�<rbc�@�td�D�]�}t|�D�cgc]}tdd���}}t|�}t|�D�]K}t	|�\}}}tj|�}dtfD�]}	|dk(r
|	tk(r�t||||	��}
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||||��	����N���ycc}w)
Nr�r"rqrrkr�Tr�rlr�r�ri)rlrr�rrr:r�r�r
r�r�r�r�r�r�r�r�r�r�r�)rbr�ry�shape_tr�r�r=r{r�rrYr�rmrw�mvs               r@�test_ndarray_multidimz(TestBufferProtocol.test_ndarray_multidimPs����!�H�D�16�t��=��A�y��B�'��G�=��'�]�F�%�g�.�� )�&� 1�
��U�A�!�?�?�3�/����[�E��q�y�U�f�_� �!��e�C�u�M�B�0��u�h��L�G� ���.�C��K�K���)1�s�T�%)���$'� �)�
,�C�0�$�U�%��D��$�R���0L�M������
�
�b�(8�9��6�6�8�����B�D�-5�3��)-�U�G�(+�$�-�!��e�C�',�Z�'7�9�B�1��u�h��L�G� ���.�C��K�K���)1�s�T�%)���$'� �)�?)�/���=s�Fc��tdgdg��}|jt|jdd�t	|�}|j||�|jt|jdd�tdgdgt��}|jt|jd�t	|�}|j||�|jt|jd�tdgdgt��}|jt|jd�|jt|jdd�t	|�}|j||�|jt|jd�|jt|jdd�gd�}t|t|�gdt��}|jtj|jd	d
�|jt|jdd�t	|�}|j||�|jt|jd	d
�|jt|jdd�gd�}t|t|�gd
t��}|jt|jd	d
�|jtj|jdd�y)Nr.r�r8r�r,�r.r"r[r6r�r7r9r8rrkr"i,)r���)�r.r"r�)r�r7�LQ)s1r)r
rtrR�__setitem__rSrrr �__delitem__r��__getitem__�
IndexErrorrgr:r<r�)rbrYrr{s    r@�test_ndarray_index_invalidz-TestBufferProtocol.test_ndarray_index_invalid}s&��
�a�S���
$�����)�R�^�^�Q��:�
��^������R� ����)�R�^�^�Q��:��a�S���;�
7�����)�R�^�^�Q�7�
��^������R� ����)�R�^�^�Q�7��a�S���;�
7�����-�����?����-������B�
��^������R� ����*�b�n�n�e�<����*�b�n�n�e�Q�?�"��
�U�3�u�:�,�s�+�
N�����&�,�,�����3�?����*�b�n�n�a��D�
��^������R� ����*�b�n�n�a��=����)�R�^�^�Q�
�C�%��
�U�3�u�:�,�t�;�
O�����*�b�n�n�a��=����&�,�,�����?�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	�d�d|d<|j|j	�d�d|d<|j|j	�d�d|d<|j|j	�d�d|d<|j|j	�d�y)	Nr.r�r�.rr8r�r�)	r
r rSrrrQrtrRrr	)rbrYrr`s    r@�test_ndarray_index_scalarz,TestBufferProtocol.test_ndarray_index_scalar�s���
�Q�b��
4��
��^������R� ��r�F��T�%�%�a��+��s�G��T�%�%�a�h�h�j�"�)�)�+�>��r�F��T�%�%�a��+��s�G��T�%�%�a�h�h�j�"�)�)�+�>����)�R�^�^�Q�7����)�R�^�^�Q�7����)�R�^�^�Q��:����)�R�^�^�Q��:��������a�(��������a�(���2��D�$�$�R�Y�Y�[�!�4���2��D�$�$�R�Y�Y�[�!�4���3��T�%�%�b�i�i�k�1�5���3��T�%�%�b�i�i�k�1�5rbc	��tttd��ddgt��}t|t��}|jt|jd�|jt|jtddd��y)	Nr8r"r6r�r�r.r[r�)	r
r�rlr r�rtr~rr)rbrwrYs   r@�test_ndarray_index_null_stridesz2TestBufferProtocol.test_ndarray_index_null_strides�s_��
�T�%��*�%�a��V�;�
G��
�R��
-��	
���+�r�~�~�q�9����+�r�~�~�u�Q�q��|�Drbc�"�td�D�]\}}}t|dg|��}tdd�D]}|j||||��|j	t
|jd�|j	t
|jd�t|�s��t|�}|j||�tdd�D]}|j||||��|j	t
|jd�|j	t
|jd���td�D]�\}}}t|dgt|��}t|ttz��}tdd�D]}|j||||��t|�s�h|j�}|j|j|�t�tdd�D]}|j||||����gd�}t|dg��}t|t ��}tdd�D]}|j||||��gd�}t|dg��}t|t"��}tdd�D]}|j||||��y)	Nr�rlr����rmr�r�r�)r�r
rlrrrtrrr�rSr r�r�r�rq�__eq__�NotImplementedr�r�)rbr=r{ryrYrrrws        r@�!test_ndarray_index_getitem_singlez4TestBufferProtocol.test_ndarray_index_getitem_single�s<��(��^�M�C�����q�c�#�6�B��2�q�\��� � ��A���a��1�"�
���j�"�.�.�"�=����j�"�.�.�!�<�#�C�(���^��� � ��R�(��r�1��A��$�$�R��U�E�!�H�5�&��!�!�*�b�n�n�b�A��!�!�*�b�n�n�a�@�,�$)��^�M�C�����q�c��S�I�B���L��$=�>�B��2�q�\��� � ��A���a��1�"�$�C�(��.�.�0���
�
�b�i�i��m�^�<��r�1��A��$�$�R��U�E�!�H�5�&�,���
�U�1�#�
&��
�R��
0���r�1��A����R��U�E�!�H�-����
�U�1�#�
&��
�R��
-���r�1��A����R��U�E�!�H�-�rbc��td�D�]T\}}}t|dg|t��}td�D]}|||<|||<�|j	|j�|�|j
t|jd|�|j
t|jd|�t|�s��t|dg|t��}t|�}|j	||�td�D]}|||<|||<�|j	|j�|�|j
t|jd|�|j
t|jd|���Wtd�D]�\}}}t|dg|t��}tdd�D]}||dz||<||dz||<�|j	|j�|�t|�s�nt|dg|t��}t|�}|j	||�tdd�D]}||dz||<||dz||<�|j	|j�|���y)Nr�rkrr�r6r.)r�r
r rlrrrQrtrr	r�rS)rbr=r{�single_itemrYrrs       r@�!test_ndarray_index_setitem_singlez4TestBufferProtocol.test_ndarray_index_setitem_single�s"��'2�1�~�#�C�����q�c�#�[�I�B��1�X��&��a��#��1���
���R�Y�Y�[�%�0����j�"�.�.�"�k�J����j�"�.�.�!�[�I�'��,����q�c�#�[�I�B��B��B����R��$��1�X��&��a��#��1���
���R�Y�Y�[�%�0����j�"�.�.�"�k�J����j�"�.�.�!�[�I�-(6�4(3�1�~�#�C�����q�c�#�[�I�B��2�q�\�� ��1��:��a���1�Q�3���1��"�
���R�Y�Y�[�%�0�'��,����q�c�#�[�I�B��B��B����R��$��2�q�\�� ��1��:��a���1�Q�3���1��"�
���R�Y�Y�[�%�0�!(6rbc
���d}t|�}t|�D�]�}t|�\}}}dtfD�]�}t	||||��}t||�}	t
|d|d�D]�}
|j|	|
||
j��t
|d|d�D]j}|j|	|
|||
|j��t
|d|d�D]&}|j|	|
||||
||��(�l��t	||||tz��}t||�}	t
|d|d�D]�}
|j|	|
||
j��t
|d|d�D]i}|j|	|
|||
|j��t
|d|d�D]&}|j|	|
||||
||��(�k��������y)N�r"r[r�rrkr.r")r�rrr�r
r�rlrrrQr�r�)
rbrr�r�r=r{ryrrYrmrr��ks
             r@�#test_ndarray_index_getitem_multidimz6TestBufferProtocol.test_ndarray_index_getitem_multidim%s������g���!�'�*�E�%�f�-�M�C����V����U�%��5�I���U�E�*����a��y�%��(�3�A��$�$�S��V�R��U�\�\�^�<�"�E�!�H�9�e�A�h�7���(�(��Q����B�q�E�!�H�O�O�4E�F�!&��a��y�%��(�!;�A� �,�,�S��V�A�Y�q�\�2�a�5��8�A�;�G�"<�8�4��U�%��#(��#3�5���U�E�*����a��y�%��(�3�A��$�$�S��V�R��U�\�\�^�<�"�E�!�H�9�e�A�h�7���(�(��Q����B�q�E�!�H�O�O�4E�F�!&�u�Q�x��q��!:�A� �,�,�S��V�A�Y�q�\�2�a�5��8�A�;�G�";�8�4�#%�	+rbc�H�tdd��}|jttdt	��t|�}|j
||�|jttdt	��td�D]�\}}}t|dg|��}t|�D]-\}}|j
|||�|j||v��/t|�s�]t|�}t|�D]-\}}|j
|||�|j||v��/��y)Nr.r�r�z1 in ndz1 in mvr�rl)r
rtrR�eval�localsrSrrr�r&r�r�)rbrYrr=r{ryrr�s        r@�test_ndarray_sequencez(TestBufferProtocol.test_ndarray_sequenceDs���
�Q�b�
!�����)�T�9�f�h�?�
��^������R� ����)�T�9�f�h�?�(��^�M�C�����q�c�#�6�B�!�"�
���1�� � ��E�!�H�-�����R��(�&�$�C�(���^��%�b�M�D�A�q��$�$�Q��a��1��O�O�A��G�,�*�,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
ddd��t|d	d
gdt��}t|�}|jt|jt
ddd�t
ddd�f�|jt|jt
ddd�t
ddd�f�|jt|jd�|jt|jdt
ddd�f�|jt|jt
ddd�if�|jt|jt
ddd�t
ddd�f�|jt|jd�t|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|j�gd�gd�g�|jt|j
t
ddd�|dd�t|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
ddd�d
�t|dgd
t��}
|jt|
j �t|dgd��}t|t"��}
|jt|
j �y)Nrr8r�rr.r�rrkr"r6z@%$rrrlr9r�)r�r7r9r8z###########)r
r rSrtrRr	rr�r~r�rrSrrrQrr��add_suboffsetsr�)rbr{�xl�mlrw�xrrYr�mr�yrr`s           r@�test_ndarray_slice_invalidz-TestBufferProtocol.test_ndarray_slice_invalidWsz��!���U�1�#�[�
9��
��^�����)�R�^�^�U�1�Q�q�\�5�I����)�R�^�^�U�1�Q�q�\�5�I��U�1�#�[�
9��
�U�1�#�[�
9��
�R��
)�����+�r�~�~�u�Q�q��|�R�H��U�1�#�c��
E��
��^�����*�b�n�n�e�A�a��l�C����*�b�n�n�e�A�a��l�C�
�U�1�Q�%��;�
G��
��^�����*�b�n�n� ��1�Q�<��q��1��6�	8����*�b�n�n� ��1�Q�<��q��1��6�	8����)�R�^�^�U�;����)�R�^�^�e�U�1�Q�q�\�5J�K����)�R�^�^�e�A�a��l�B�5G�H�	
���-�r�~�~� ��1�Q�<��q��1��6�	8����)�R�^�^�U�;��U�1�#�c��
E��
�U�1�#�c�
2��
��^��
��^�����*�b�n�n�e�A�a��l�B�q��G�L��������e�,����*�b�n�n�e�A�a��l�B�q��G�L��������e�,��U�1�#�c��
E��
�U�1�#�c�
2��
��^��
��^�����*�b�n�n�e�A�a��l�B�q��G�L��������e�,����*�b�n�n�e�A�a��l�B�q��G�L��������e�,��U�1�a�&��K�
H��
�U�1�#�c�
2��
��^��
��^�����*�b�n�n�e�A�a��l�B�q��G�L��������y�)�&<�=����-�r�~�~�u�Q�q��|��Q�q�'�	#��U�1�#�c��
E��
�U�1�#�c�
2��
��^��
��^�����*�b�n�n�e�A�a��l�B�q��G�L��������e�,����*�b�n�n�e�A�a��l�B�q��G�L��������e�,�	
���)�]�E�!�A�a�L�"�E����)�]�M�1�E����*�m�U�1�Q�q�\�1�E��E�!��S��?�����)�Q�%5�%5�6�
�U�1�#�c�
2���B�|�,�����)�Q�%5�%5�6rbc�0�gd�}t|dgdt��}t|dgd��}|dd|dd|j|j�|�t	|�}t	|�}|j||�|j||�|dd|dd|j|j�|�t|ddgdt��}t|ddgd��}|d	d
�dd�f|d	d
�d
d
�f<|j|j�t|ddg��y)Nr�r�rrkrlr�r6r[r.r")r
r rrrQrSr�)rbr{r`r�r%r's      r@�test_ndarray_slice_zero_shapez0TestBufferProtocol.test_ndarray_slice_zero_shape�s��,���E�"��c��E���E�"��c�2���1�Q���!�A���������U�+�
��]��
��]������Q������Q���Q�q�'��1�Q���������e�,��E�!�Q���;�G���E�!�Q���4����!��Q�q�S��k��!�A�#�q��s�(���������V�E�A�q�6�%:�;rbc�2�d}t|�}t|�}t|�D]�}t|�\}}}t	j
|�}dtfD]|}	t||||	��}
t||�}t||�D]P}d}
	t||�}d}	|
|}|s|
r|j||
��1|jj���R�~��y#t$r}|j}
Yd}~�`d}~wwxYw#t$r}|j}Yd}~�zd}~wwxYw�Nrrrk)rgr�rrr:r�r�r
r�rIr��	Exception�	__class__rqrrrQ)rbrr�r�r�r=r{ryr�rrYrmr��listerrrdr�nderr�ndsliceds                  r@�test_ndarray_slice_multidimz.TestBufferProtocol.test_ndarray_slice_multidim�s
�����7�|���g���!�'�*�E�%�f�-�M�C������s�+�H��V����U�%��5�I���U�E�*��*�4��7�F�"�G�.�!+�C��!8��!�E�,�#%�f�:�����
�
�e�W�5��(�(����):�F�C�#8�	%�+��%�.�"#�+�+���.��%�,� !�����,�s0�C�C7�	C4	�C/	�/C4	�7	D	�D	�D	c��d}t|�}t|�}t|�D]�}t|�\}}}t	j
|�}t
|||��}	|	j�t
|||��}
|
j�t|
�}t||�}t||�D]P}
d}	t||
�}d}	|	|
}|s|r|j||��1|jj!���R��y#t$r}|j}Yd}~�^d}~wwxYw#t$r}|j}Yd}~�xd}~wwxYw)N)r"r[r�r"rl)rgr�rrr:r�r
r#rSr�rIr�r.r/rqrrrQ)rbrr�r�r�r=r{ryr�rYrwrrmr�r0rdrr1r2s                   r@�'test_ndarray_slice_redundant_suboffsetsz:TestBufferProtocol.test_ndarray_slice_redundant_suboffsets�s,�����7�|���g���!�'�*�E�%�f�-�M�C������s�+�H���e�C�8�B�������e�C�8�B������B��B����&�C�&�t�U�3����*�'��V�4�F���(�!�&�z�H��G��M�M�%��1��$�$�X�_�_�%6��?�#4�+��"!�*��k�k�G��*��!�(��K�K�E��(�s0�0D�?D"�	D�	D�D�"	E�+D<�<Ec�j�td�D�]�\}}}td�D�]�}td�D�]�}dtfD�]�}|tz}t	|dg||��}t	|dg||��}	t|	�}
d}d}|dd}
	|
|}|
|}|
||
|<t
|�t
|�k7}d}	||||<|r|j|t�n2|j|j�|
�|j||�t|�s��d}	|
||
|<|r|j|t���|j|
j�|
�|j|
|�|j||�|j|
|	|j|d|j |j"|j$|j���	������������y#t$r}|j}Yd}~��Bd}~wwxYw#t$r}|j}Yd}~��Zd}~wwxYw#t$r}|j}Yd}~��d}~wwxYw)Nr�rrkFr�)r�r:r�r r
rSrgr.r/rqr�rrrQr�r�r�r�r�r�)rbr=r{ry�lslicer@rrrYrwr�lsterr�diff_structurerm�lval�rvalrr1�mverrs                   r@� test_ndarray_slice_assign_singlez3TestBufferProtocol.test_ndarray_slice_assign_singles��(��^�M�C���#�A�,��'��l�F�"#�V���!�+�-��$�U�1�#�c��K��$�U�1�#�c��K��'��^��!%��)-��#�A�h��1�#&�v�;�D�#&�v�;�D�*-�f�+�C��K�-0��Y�#�d�)�-C�N�!%��0�)+�F��B�v�J�*� �M�M�%��<� �,�,�R�Y�Y�[�#�>� �M�M�%��8�3�C�8�$� $��0�)+�F��B�v�J�*� �M�M�%��<� �,�,�R�Y�Y�[�#�>� �,�,�R��4� �M�M�%��8� �K�K���')�{�{��e�#%�7�7�"�(�(�B�J�J�"$�)�)�+�(�/�["-�+�'�,��$ )�1�%&�[�[�F��1�� )�0�$%�K�K�E��0�� )�0�$%�K�K�E��0�sH�<)G�(G/�
H�	G,�G'�'G,�/	H�8H
�
H�	H2�H-�-H2c
�D�d}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-)rgr�rrr�rl�
ITERATIONSrr
r r�r�r.r/rqrrrQ)rbrr�r�r�r=r{ryrr�r�rYrmr0ryrr1s                 r@�"test_ndarray_slice_assign_multidimz5TestBufferProtocol.test_ndarray_slice_assign_multidim=s�����7�|���g���!�'�*�E�%�f�-�M�C����V����z�*�A�';�D�%�'H�$�G�W� ��e�C�',�[�'8�:�B� ���.�C�"�G�.�!2�3��W�g�!N��!�E�,�&(��k��7�����
�
�e�W�5��(�(�����f�=�-+�%�	+��%�.�"#�+�+���.��%�,� !�����,�s0�C�D�	C=	�'C8	�8C=	�	D	�	D	�D	c��tt�D�]�}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"s��7|d}d|vr��Bt%|||�}
|j'|d|
j(|d|
j*|
j,|
j.|
j��	�	������y)
NrCT�r�r�r"rr�r[Fr�)rlr?rYr:r�r�MAXDIM�MAXSHAPEr�r�rr!rQrSr�rrr�r(r*r�r�r�r�r�)rbryr=r�r�r{r`�xlistr�mvlistr��ylistr��zs              r@�test_ndarray_randomz&TestBufferProtocol.test_ndarray_random^sv���z�"�A��s�|��!�?�?�3�/��"�8�T�&�,4�6����� 0�!� 4�5�0��a�8��*�5�#�q�9�����
����]��'��,��Y�Y�[�F��$�$�V�U�3��Q�4�!�8�.�u�c�1�F�K�A��H�H�J�E��$�$�U�E�2�#�A��B�+�C�0��(�(��Q�/�!#������(�(���7���a�D�E��E�z� �2�5�#�q�A�A��K�K��t�)*����u�%&�V�V�1�7�7�A�I�I�$%�H�H�J� �0�C$�#rbc���tt�D]�}tdD]�}tj|�}t|dtt��}|jt|��t||�}d}	t|||�}|j|�ts�zd}		t!|||�}
����y#t$r}|j}Yd}~�Gd}~wwxYw#t$r}|j}	Yd}~�Ad}~wwxYw)NrCFrB)rlr?rYr:r�rrCrD�assertFalser�rr!r.r/r�r(r*)rbryr=r�r�r{r1r`r�	numpy_errr�s           r@�test_ndarray_random_invalidz.TestBufferProtocol.test_ndarray_random_invalid�s����z�"�A��s�|��!�?�?�3�/��"�8�U�6�,4�6��� � �!1�1�!5�6�0��a�8����(�.�u�c�1�=�A�����&�� %�I�0�6�u�c�1�E���-$�#��!�(��K�K�E��(��%�0�$%�K�K�	��0�s0�1
B+�
C
�+	C
�4C�C
�
	C,�C'�'C,c�&�tt�D�]�}tdD�]�}tj|�}ttt��\}}}}t|d|��}t|d|��}	|jt|��|jt|	��t||�}
t||	�}t|
||�}t|||	�}
|
|||<|j�}|
j�}t|�}t|
�}|j|j�|�|j|j�|�|ddkDr�|	ddkDr�t|
||t ��}t|||	t ��}||||<|j�}|j�}|j||�|j||�t|�}t|�}|j|j�|�|j|j�|�t"s��
d|vsd|vr��t%|
||�}t%|||	�}||||<t'|�s[t'|	�sP|j)|d|j*|d|j,|j.|j0|j��	�	|j)|
d|j*|d|j,|j.|j0|j��	�	�����y)
NrCrBTr�r"rr�Fr�)rlr?rYr:r�rrCrDrr�r�rr!rQrSrrr�r(r*r�r�r�r�r�r�)rbryr=r�r�r�r�r��tl�tr�litems�ritemsr$r&�xllist�xrlistr%r'�ylr(�yllist�yrlist�zl�zrs                        r@� test_ndarray_random_slice_assignz3TestBufferProtocol.test_ndarray_random_slice_assign�s����z�"�A��s�|��!�?�?�3�/��(�v��I�1�����#�H�d�&�A��#�H�d�&�A����� 0�"� 5�6���� 0�"� 5�6�1�#�r�:��1�#�r�:��+�F�C��<��+�F�C��<�� ��k��7��������������^����^��� � �����f�5�� � �����f�5��a�5�1�9��A����/���R�v�N�B�/���R�v�N�B�"$�W�+�B�w�K��Y�Y�[�F��Y�Y�[�F��$�$�V�V�4��$�$�V�V�4�#�B��B�#�B��B��$�$�R�Y�Y�[�&�9��$�$�R�Y�Y�[�&�9���F�{�a�6�k� �3�F�C��D�B�3�F�C��D�B�"$�W�+�B�w�K�)�"�-�n�R�6H����B�D�-/�[�[�c�E�)+������,.�J�J�B�I�I�K�$�I�
�K�K���)+���#��%'�W�W�B�H�H�(*�
�
��	�	�� �E�m$�#rbc��gd�}t|ddgt��}t|�}|j|jtz�|j	|j
|�|j
|jd�|j|j�|j|j�|j|j�y)Nr�r[r6r�)rr�)r
r�r�rrqr_rrrUrKr�r�r�)rbr{rYrws    r@�test_ndarray_re_exportz)TestBufferProtocol.test_ndarray_re_export�s���,��
�U�1�Q�%�v�
6��
�R�[��������6�)�*��
�
�b�f�f�b�!��������0�������)�������)�������'rbc	�H�dtfD�]}tgd�dg|��}t|�}|j||�|j|j	�g�|j|j	�g�tgd�gd�|��}|j|j	�g�tgd�gd�|��}|j|j	�gggg�tgd�gd�|��}|j|j	�ggggggggggggg���y)Nrr�r��rr[r[�r[rr[)r[r[r�r�r
rSrrrQ�rbrrYrs    r@�test_ndarray_zero_shapez*TestBufferProtocol.test_ndarray_zero_shape�s�����[�E�����5�9�B��B��B����R��$����R�Y�Y�[�"�-����R�Y�Y�[�"�-����u�=�B����R�Y�Y�[�"�-����u�=�B����R�Y�Y�[�2�r�2�,�7����u�=�B����R�Y�Y�[�!�2�r�l�R��R�L�2�r�2�,�G�
I�!rbc��dtfD]u}tdgdgdg|��}t|�}|j||�|j|j	�gd��|j|j	�gd���wy)Nrr.r�r�)r.r.r.r.r.r`ras    r@�test_ndarray_zero_stridesz,TestBufferProtocol.test_ndarray_zero_stridessk����[�E��!��Q�C�!��E�B�B��B��B����R��$����R�Y�Y�[�/�:����R�Y�Y�[�/�:�!rbc���tttd��dgd��}|j|jd�|j|j�gd��y)N�r[r9r�)r9r8r�)r
r�rlrrr�rQ�rbrYs  r@�test_ndarray_offsetz&TestBufferProtocol.test_ndarray_offset
sD��
�T�%��)�_�Q�C��
:��������A�&��������g�.rbc��dtfD]E}tttd��dg|��}|j	�}|j||��Gy�Nrr[r�)r�r
r�rlr�rr)rbrrYrJs    r@�#test_ndarray_memoryview_from_bufferz6TestBufferProtocol.test_ndarray_memoryview_from_buffersF����[�E���e�A�h���s�%�@�B��)�)�+�A����Q��#�!rbc	��dtfD]S}tttd��dg|��}td�D]"}|j	||t||g���$�Uyrj)r�r
r�rlrrr|)rbrrYrs    r@�test_ndarray_get_pointerz+TestBufferProtocol.test_ndarray_get_pointersS����[�E���e�A�h���s�%�@�B��1�X��� � ��A���B���(<�=��!rbc�D�tttd��gd���}t|ttz��}|j|j
�|j
��t|�}|j|j
�|j
��y)Nrf)r"r"r�r�r�)r
r�rlr�r�rrrQrS)rbrwrYrJs    r@� test_ndarray_tolist_null_stridesz3TestBufferProtocol.test_ndarray_tolist_null_stridessh��
�T�%��)�_�G�
4��
�R��� 5�
6���������b�i�i�k�2��r�N���������R�Y�Y�[�1rbc��|jtdd��ttt	d��ddg��}ttt	d��ddg��}|jt||��tdgdgd�	�}|jt|d
��|jtd
|��y)Nr�s456r�r[r6r�r.rrlrW)rKr�r
r�rlr�)rbr`r�s   r@�test_ndarray_cmp_contigz*TestBufferProtocol.test_ndarray_cmp_contig$s�������F�F�3�4��D��r��O�A�a�5�1���D��r��O�A�a�5�1������A�q�)�*��Q�C��s�3�/�����
�1�g�.�/����
�7�A�.�/rbc	��tjdgd��}t|�}|jtt|�tt
td���}tt
td��dg��}|jt	|�t	|��tt
td��ddg��}|jt	|�t	|��tt
td��gd���}|jt	|�t	|��ttt
td��ddg���}tt
td��ddgt��}|jt	|�t	|��ttt
td��gd	����}tt
td��gd	�t��}|jt	|�t	|��tt
td���}tt
td��gd
�t��}|jt	|�t	|��tt
td��gd
�d��}|jt	|�t	|j���y)Nrr�r�r�r[r6)r[r"r"r��r"r[r"�r"r"r[rl)
rQr
rtr��hashrZr�rlrrr�r�r�r/)rbrLrYrs    r@�test_ndarray_hashz$TestBufferProtocol.test_ndarray_hash0s����K�K��W�%��
�Q�Z�����*�d�B�/�
�$�u�R�y�/�"��
�T�%��)�_�R�D�
1������b��4��7�+��T�%��)�_�Q�q�E�
2������b��4��7�+�
�T�%��)�_�G�
4������b��4��7�+�
�)�D��r��O�A�a�5�9�:��
�T�%��)�_�Q�q�E��
D������b��4��7�+��)�D��r��O�7�;�<��
�T�%��)�_�G�:�
F������b��4��7�+�
�$�u�R�y�/�"��
�T�%��)�_�G�6�
B������b��4��7�+��T�%��)�_�G�C�
@������b��4��
�
��#5�6rbc���tttttt
ttttttf}|jttidt
�tdddt ��}dD]6}|D]/}t|||�}|j#||j%���1�8tdgdgdt ��}dD](}|D]!}t|||�}|j#|d	��#�*tt't)d
��gd�dt ��}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|ddg�ddgt ��}
|
j%�}n|j%�}|D]�}	t|d|�}|j#||�t|D�cgc]}|��c}ddgt ��}
|j#t5|
�t5|��t.s�p|j#|	j%d�����|dk(r!tt3|ddg�ddgt ��}
nt|ddgt ��}
|
j%�}tt
tttfD]�}	t|d|�}|j#||�t|D�cgc]}|��c}ddgt*t z��}
|j#t5|
�t5|��t.s�w|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.s�s|j#|	j%d�������tt't)d��ddgt t6z��}t|dt
�}|j#||j%��t|D�cgc]}|��c}ddgt ��}
|j#t5|
�t5|��t|dt
�}tt3|ddg�ddgt ��}
|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,$rY��wxYw#t,$rY��]wxYwcc}w#t,$rY��ywxYwcc}w#t,$rY���wxYwcc}wcc}wcc}wcc}w)Nrir�r�rrkrhr.rrbr8�r"rr9rr�r[rr"r�r�r�r6r�rr�)r#r�r$rornrj)r�r�r�r�r�r�r�r�r�r�r�r�rtrRr�r
r rrr/r�rlr�r~r(r%r�rSr�)rbr�rYro�requestrr�ndbytesrm�nar`r�r�r�s              r@�test_py_buffer_to_contiguousz/TestBufferProtocol.test_py_buffer_to_contiguousUs��
�M�8�\��
��+��+��/�
��	
���)�%<�b�#�'�	)��Q�b��K�
@��$�E�#��+�B��w�?��� � ��B�J�J�L�1�$�%��a�S���C�{�
C��$�E�#��+�B��w�?��� � ��C�(�$�%�
�T�%��(�^�9�S�&�(��$�E�#��+�B��w�?��� � ��C�(�$�%��Z��A��!��Q�C��1�[�=�I�B��j�j�l�G�(��'�G�/��E�7�C�A��$�$�Q��0� (�)�
��1�#�c��;��O�B��j�j�l�G�(��'�G�/��E�7�C�A��$�$�Q��0� (�)�!� �Y�q�c�A�3�k�
J���*�*�,��$�E�)�:�6��+�B��w�?��� � ��G�,�7�%�
��"��X���*�*�,��$�E�#���/��E�7�C�A�� � ��G�,�$�%�P�5��9�o���Z��A���Q��F�!�K�-�@�B�� �	�#��()�1�v�S�./�1�f�s�#�?��
�J���I�c�A�q�6�2�1�a�&�"-�/���9�9�;���:�:�<��#���/��C��A�A�� � ��H�-���N��1�Q��N�1�a�&��L��� � ��A��
�2��?���$�$�Q��
�
��
�(=�>�$�"�A�v��I�c�A�q�6�2�1�a�&�"-�/���C��1�v�[�A���y�y�{�H�&�
�~�)�8�5���/��C��A�A�� � ��H�-���N��1�Q��N�1�a�&�
�;�@V�W��� � ��A��
�2��?���$�$�Q��
�
��
�(=�>�5�"�J���C��1�v�[�A���9�9�;���:�:�<��&�
�~�)�8�5���/��C��A�A�� � ��H�-�
��N��1�Q��N�1�a�&��+�
�N��� � ��A��
�2��?���$�$�Q��
�
��
�(=�>�!5�w!�\�T�%��)�_�Q��F�+�f�:L�
M��
$�B��]�;������B�J�J�L�)���N��1�Q��N�1�a�&��D������A��
�2��7�
$�B��]�;���I�c�A�q�6�*�1�a�&��L������A�I�I�K�(���N��1�Q��N�1�a�&�
�;�8N�O������A��
�2��7�
$�B��]�;������B�J�J�L�)���N��1�Q��N�1�a�&��D������A��
�2��7��M#�����l#�����+��"#�����+�� #�����+��#��#��#sl�=
^�
^�6	^+�
^0�/	_�;
_�#	_�8	_�	_�
	_$�	^�^�	^(�'^(�0	^=�<^=�	_�_c�2	�dgfgd�dgfttd��gd�fg}|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�|j1t2ti�tgd�dg��}t|t ��}
|j1t4t|
�t|ttz��}
|j1t4t|
�tdgdzdgdzd��}
|j1t6t|
�|j1t6|
j�|j1t6t8|
t:d�|j1t6t8|
t:d�|j1t6t8|
ddd�t:d�y)Nr�r�r[r�rr�r.r�rTr�r�r�rBr�r.r�ri�9r`r%rrlr�)r�rlr
rSr�r�r�rgr�r�r�r�r�rrr�r�r�rr�r-r�r�r�r�rtrRr~r�r�r�)rb�items_shaper{r�rwrJr�r�rmr�rYs           r@�test_memoryview_constructionz/TestBufferProtocol.test_memoryview_constructionE	sF���2�w��1�#���e�E�l�1C�W�0M�N��(�L�E�5���e�,�B��2��A��O�O�A�N�N�+��O�O�A�L�L�)��u�:�D�(��u�a��=�G����&�C��K�K��r�!"��d�!����
�
!��A��B��K�K���!"��d�!����
�
!���O�L�$@�A�B����R�Z�Z��,��)�)�+�A��K�K��t�!"��d�!����
�
!���L�1�B����R�Y�Y��+����R�X�X�r�*����R�Z�Z��,��)�)�+�A�!�Q�Y�5�'�E�C��K�K��t�!"��d��r�y�y�k�4��
�
!�S(�^(�L�E�5���e�:�>�B��2��A��O�O�A�N�N�+��O�O�A�L�L�)��u�:�D�(��u�a��=�G����&�C��K�K��r�!"��d�!����
�
!��A��B��K�K���!"��d�!����
�
!�'(�2(���O�L�E�5���e�6�:�B��2��A��u�:�D����&�C��K�K��r�!"��d�!���
�
��
�
!��A��B��K�K���!"��d�!���
�
��
�
!�!,�,	
���)�Z��s�;����)�Z��4�
�W�Q�C�
(��
�R��
-�����+�z�2�6�
�R��� <�
=�����+�z�2�6��a�S��W�Q�C��G�C�
8�����*�j�"�5����*�b�&?�&?�@����*�n�b�*�c�J����*�n�b�*�c�J����*�n�b��2��h�
�C�Prbc��gd�}gd�gd�gd�fD]V}t||��}|j|j�t|�}|j	t
|jd��Xtdd�D]b\}}}td�}|j
|�}|j|j�d�|j|j�g��dy)	Nr�r^r_r�rr.rSrb)r
r�r�rSrtrRrer�rrr/rQ)rbr{r�rw�msrcr=ryrJs        r@�test_memoryview_cast_zero_shapez2TestBufferProtocol.test_memoryview_cast_zero_shape�	s���
���w��0�E���e�,�B��O�O�B�O�O�,��b�>�D����i����C�8�	1�%�Q��5�I�C��A��c�?�D��	�	�#��A����Q�Y�Y�[�#�.����Q�X�X�Z��,�	6rbc�`�|j}tj}d}d}tt	d��}|td�||d|zz��t
|ddgd�	�}|t|�||d|zz��t
|gd
�d�	�}|t|�||d|zz��y)NzPnin 2P2n2i5P P�3nr8rbr.r"r6rrl)r"r"r"r[)�check_sizeofr�calcvobjsizer�rlrSr
)rb�check�vsize�base_struct�per_dimr{rLs       r@�test_memoryview_sizeofz)TestBufferProtocol.test_memoryview_sizeof�	s����!�!���$�$��'�����U�1�X���
�j��o�u�[�1�w�;�%>�?�@��E�!�Q���4��
�j��m�U�;��W��#<�=�>��E��3�7��
�j��m�U�;��W��#<�=�>rbc��Gd�dt�}Gd�dt�}d�}|d�|d�dtd�d	td
d�gd�hd
�ddidddddtddt	d�t	d�dddd|d�g}tdd�D]�\}}}t
|dg|t��}t
|dg|t��}	t|�}
tj||	d|�||
d<|j|
d|	d�tj|�}d|vr��|D]f}d}
	tj||	||�d}	||
d<|
s|r%|j#|
d�|j#|d��O|j|
d|	d��h��y#tj$rtj}
Y�swxYw#ttf$r}|j }Yd}~��d}~wwxYw)Nc��eZdZd�Zd�Zy)�=TestBufferProtocol.test_memoryview_struct_module.<locals>.INTc��||_yr���val�rbr�s  r@�__init__zFTestBufferProtocol.test_memoryview_struct_module.<locals>.INT.__init__�	�	����rbc��|jSr�r�ras r@�__int__zETestBufferProtocol.test_memoryview_struct_module.<locals>.INT.__int__�	����x�x�rbN)�__name__�
__module__�__qualname__r�r�r�rbr@�INTr��	���
�
 rbr�c��eZdZd�Zd�Zy)�=TestBufferProtocol.test_memoryview_struct_module.<locals>.IDXc��||_yr�r�r�s  r@r�zFTestBufferProtocol.test_memoryview_struct_module.<locals>.IDX.__init__�	r�rbc��|jSr�r�ras r@�	__index__zGTestBufferProtocol.test_memoryview_struct_module.<locals>.IDX.__index__�	r�rbN)r�r�r�r�r�r�rbr@�IDXr��	r�rbr�c��y)Nr9r�r�rbr@rz;TestBufferProtocol.test_memoryview_struct_module.<locals>.f�	s��rbr�y������@@z-21.1gffffff(@r�r"r�>r6r�r7r9r8r�)r�TF�asabcrL�abcc��|Sr�r�)r`s r@�<lambda>zBTestBufferProtocol.test_memoryview_struct_module.<locals>.<lambda>�	s��qrbrqrSrkrrr.)�objectr
r�Ellipsisr%r�r
r rSr:r'rrr�r<rRr�r/�assertIsNot)rbr�r�r�valuesr=r{r|rwrYrJr�r��
struct_err�mv_errrs                r@�test_memoryview_struct_modulez0TestBufferProtocol.test_memoryview_struct_module�	s���	 �&�	 �	 �&�	 �	��a�&�#�a�&��'�'�*�D�(�1�a�.��7�Q�q�E�2�t���t�X���	�$���6�1B��u�d�F��[�
"��!,�B�� =��C�����r�d�3�k�J�B���r�d�3�k�J�B��2��A����S�"�a��.��A�a�D����Q�q�T�2�a�5�)����s�+�H��c�z����!�
�.��$�$�S�"�h��:���)��A�a�D����$�$�Z��6��$�$�V�T�2��$�$�Q�q�T�2�a�5�1�#�!>��"�|�|�.�!'���J�.��"�:�.�)��[�[�F��)�s*�E<�1F%�<#F"�!F"�%G
�4G�G
c��tgd�dgdg��}|j|j�t|�}|j	t
|jd�y)Nr�r[rr�r)r
rKr�rSrtrRre)rbrwr�s   r@�!test_memoryview_cast_zero_stridesz4TestBufferProtocol.test_memoryview_cast_zero_strides
sG���W�Q�C�!��
5��������)��"�~�����)�T�Y�Y��4rbc	�.�tD]�}td�rd|zn|}tj|�}tD]~}td�rd|zn|}tj|�}t	tt
d��d|zg|��}t|�}|jt|j|d|zg�����td�D]�\}}	}
t	|	dg|��}t|�}td�D]v\}}
}
t|�s'|jt|j|dzg��9t|�r�Et|�r�Q|jt|j|dzg��x��tjd�}tjd�}t	tt
d|z��dd|gd��}t|�}|jt|jdd|gd��t	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|
jd�t	ddgdgd��}t|�}
|jt|
j d�|jt|
j"dd�|jt|
j$�t	tt
d	��gd
���}t|�}
|jt|
jdi��t	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&z�t	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.rrr6�xr�r�r[�Xz@Xz@XYz=Bz!Lz<Pz>l�BI�xBIrr��IIrr8rr,r�)r"r[r6r�r7r9r�)r"r[r6r�r7r9r)r"r[r6r�r7r9r`i�r�)r[r�r9r�r)r"r[r6r�r%l����)r9r9�Ir1iQiAji��	)�r��r�r8)r�r�r�r�r"��)r�r�r4r4r")r�r�r4r8r")�NON_BYTE_FORMATrr:r�r
r�rlrSrtrRrer�r�r�r�rSrr	rQr�rV�maxsize)rb�sfmt�sformat�ssize�dfmt�dformat�dsizerwr��sitemsry�size_h�size_drJrYr�r�s                 r@�test_memoryview_cast_invalidz/TestBufferProtocol.test_memoryview_cast_invalid
sP��#�D�$-�a�L�c�D�j�d�G��O�O�G�,�E�'��(1�!��#��*�$������0���T�%��)�_�R��Y�K��P��!�"�~���!�!�)�T�Y�Y��r�5�y�k�J�(�$� +�1�~�O�D�&�!����s�4�8�B��b�>�D�)�!�n�
��a��+�D�1��%�%�j�$�)�)�T�')�5�y�k�3�*�$�/��t�8L��)�)�)�T�Y�Y��+-�u�9�+�7�
-� .�����%������%��
�T�%��F�
�+�,�Q�q��L��
M���"�~�����)�T�Y�Y�q��6�l�3��O�
�T�%��*�%�[�
9���r�N��	
���)�Q�V�V�,����)�Q�V�V�Q��1�5�	
���)�Q�V�V�R�0�	
���*�a�f�f�c�2����*�a�f�f�d�3����*�a�f�f�e�4�	
���*�a�f�f�d�3����*�a�f�f�d�3����*�a�f�f�d�3����*�a�f�f�d�3����*�a�f�f�d�3����*�a�f�f�e�4��e�U�^�A�3�t�
<���r�N�����-�q�}�}�a�@����-�q�}�}�a��C����-�q�x�x�8��T�%��*�%�[�
9���r�N�����)�Q�V�V�S���;��T�%��*�%�g�Y�
7���r�N�����-�����U�G��D����*�a�f�f�c�"���>����*�a�f�f�c�9I��J����*�a�f�f�c���I����)�Q�V�V�S�8I��J��T�e�H�o�6�o��1�o�6�7�z�
J���r�N�����)�Q�V�V�S�	��B��T�%��*�%�c�U�3�
?���r�N�����*�a�f�f�c�A�3�s�7�;��T�e�H�o�6�o��1�o�6�7��z�
J���r�N�����)�Q�V�V�S�	��B��T�e�H�o�6�o��1�o�6�7��z�
J���r�N�����)�Q�V�V�S�	��B��T�%��*�%�c�U�3�
?��
��^��
�T�%��*�%�c�U�3�
?��
��^���;�;�'�!����i����#�A�
C����j�"�'�'�3�@�
B����j�"�'�'�3�@�
B�
���i����#� �*�o�
/����j�"�'�'�3�>�
@����j�"�'�'�3�>�
@��I7��7��
7s�-	`�	`
�<	`c�����dd�fdd�fdd�ff���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��
tdd�D]2\}	}
}tj|	|
�}t	|�}||||
|	��4tdd�D]0\}	}
}t|
dg|	t��}t	|�}||||
|	��2y)Nrc�4�t|j��Sr��r�r/)rws r@r�z9TestBufferProtocol.test_memoryview_cast.<locals>.<lambda>�
s��4��
�
��-rbrc�n�t|j��D�cgc]}|dkDr|dz
n|��c}Scc}w)Nr1r$r��rwr`s  r@r�z9TestBufferProtocol.test_memoryview_cast.<locals>.<lambda>�
s2��T�"�*�*�,�=O�P�=O��Q��W�A�c�E�!�3�=O�P��Ps�2rc��t|j��D�cgc]}tt|�d���c}Scc}w)Nzlatin-1)r�r/rZ�chrr�s  r@r�z9TestBufferProtocol.test_memoryview_cast.<locals>.<lambda>�
s.��d�2�:�:�<�>P�Q�>P��E�#�a�&�)�4�>P�Q��Qs�;c
�T��tj|�}�
D]�\}}|j|�}||�}�j||d|ddd|zgd|d��
|j|�}	�j	|	|�|j�}�j|	|||dddg|f|d��
��y)Nr.Fr5r~T�	r_r�r=rsr�r�r�rmre)r:r�rer�rrrQ)rwrJr{r=�srcsizerT�to_bytelistr�rm�m3�bytespecrbs          ��r@�iter_roundtripz?TestBufferProtocol.test_memoryview_cast.<locals>.iter_roundtrip�
s�����o�o�c�*�G�(0�$����V�V�G�_��!�"�o�����B�B�%&�G�e�!"�2�g�:�,�� #�$��0�
�W�W�S�\��� � ��R�(��i�i�k�����B�B�%,�#��!"�2�$��
� #�$��0�)1rbrr�rlr.Tr~r�r�rr�r5rQrSrk)
r:r�r
r4rSrer�r�rQr )
rbr�r�rw�	destitems�	destshaperJr��destsizer=r{ryr�s
`           @r@�test_memoryview_castz'TestBufferProtocol.test_memoryview_cast�
s�����-�
.��P�
Q��Q�
R�
��	0�(�/�/�#�&��
�Q�b��
-��)�"�c�1�5��	�9��r�N��
�V�V�C�[�����B�B��C�$��)�T�!��	�	.��?�?�3�'��
�a�S��\�(��C�
@��)�"�c�8�2�F��	�9��r�N��
�V�V�C�r�V�
"�����B�B�%�3���"�b�!��	�	.�)��W�5�M�C������S�%�(�B��2��A��2�q�%��-�6�)��\�:�M�C�����r�d�3�k�J�B��2��A��2�q�%��-�;rbc���t�D�]�}tdD�]�}|dk(r�
dtd�|z}tj|�}t|�|z}t
|�rdnd}t||�D�]f\}}}	tj|�}
|dkDr|gng}||
gz}t|||��}
t|
�}t|
|||�	�\}}|�#|jt|j||��}|d
k(r��t|||��}|j||�	�}t|�}|j}|j!�}|j#||
||d||||d��
|j|�}|j||�	�}t|�}|
j}|
j!�}|j#||
|
|d||||d��
|j#||
|
|d||||d��
��i������t$�rGd
�dt$j&�}|dd�}t|�}|jd�}|j)|j*|�|j)|j,d�|j/|j0d�|j)|j2d�|j)|j4|j6f�|j)|jd�|j)|j8d�t%j:d�}t|�}|jd�}|j)|j*|�|j)|j,d�|j/|j0d�|j)|j2d�|j)|j4|j6f�|j)|jd�|j)|j8d�yy)NrCr)rBrCr"rSrTrrlr�r,Tr�c�D�eZdZdejfdej
fgZy)�>TestBufferProtocol.test_memoryview_cast_1D_ND.<locals>.BEPointr`r�N)r�r�r��ctypes�c_long�c_double�_fields_r�rbr@�BEPointr�s�� �&�-�-�0�3����2H�I�rbr�r�g33333i@rr.Fr~r��333333�?r)r8rYrr:r�r�r�r�r
rSr4rtrRrergr�rQr�r��BigEndianStructurerrr_r�rqrsr�r�r-rUr�)rb�_tshaper^�tfmt�tsizerr_r=r{ry�sizer��tshaperwrJ�titemsrYr�r�r�rmr��m4r��pointr�r`s                           r@�test_memoryview_cast_1D_NDz-TestBufferProtocol.test_memoryview_cast_1D_ND�
sz��%��G������3�;�� ��1��.��5������-����M�E�)��&4�T�&:�l�	��%0��C�%8�M�C���!�?�?�3�/�D�#$�q�5�Q�C�b�E�$��v�-�F� ��e�C�@�B�"�2��A�%/��D�%�v�%N�N�F�F��~��)�)�)�Q�V�V�T�6�J� ���� �!��v�d�C�B�����F��3�B��v�;�D� �j�j�G��)�)�+�C��K�K���).�D�4�%)���$'�d� �4������B�����E��2�B��u�:�D� �j�j�G��)�)�+�C��K�K���)-�3��%)���$'�d� �4�
�K�K���)-�3��%)���$'�d� �4�Q&9�%�'�n�
J�&�3�3�
J��C��'�E��E�"�B������B����R�V�V�U�+����R�[�[�!�,��M�M�"�+�+�u�-����R�W�W�a�(����R�X�X��	�	�|�4����R�Z�Z��.����R�]�]�B�/�����$�A��A��B������B����R�V�V�Q�'����R�[�[�!�,��M�M�"�+�+�u�-����R�W�W�a�(����R�X�X��	�	�|�4����R�Z�Z��.����R�]�]�B�/�1rbc	��tjdttdd���}t|�}|j	||�|j	|j�|j��|ddd�}|ddd�}|j	||�|j	|j�|j��t
ttd��gd�d�	�}t|�}|j	|j�|j��t
d
dgdgd�	�}t|�}|jt|j
�t
d
gdgd�	�}t|�}|jt|j
�t
gd�ddgd�	�}t|�}|jt|j
�y)Nrrr7r"r[i	)r�r"r9r[r�rrl)r"r�)r9r�r>�12345r.r�)r��b�c�d�e�f)	rQr�rlrSrrrQr
rtrS)rbrLrJrws    r@�test_memoryview_tolistz)TestBufferProtocol.test_memoryview_tolist so��
�K�K��T�%��A�,�/�0���q�M������A���������Q�X�X�Z�0�
�a�d��d�G��
�a�d��d�G������A���������Q�X�X�Z�0�
�T�%�
�+�,�L��
M���r�N���������R�Y�Y�[�1�
�f�g�&�q�c�$�
?���r�N�����-�q�x�x�8�
�h�Z��s�3�
7���r�N�����-�q�x�x�8�
�4�Q�q�E�#�
N���r�N�����-�q�x�x�8rbc��ttd��}|j�}|j|j	d��|j�|j�}|j|j	d��y)Nr�z<memoryz	<released)rSr%�__repr__r��
startswithr�)rbrJr�s   r@�test_memoryview_reprz'TestBufferProtocol.test_memoryview_repr>sY���y��|�$��
�J�J�L��������Y�/�0�	�	�	��
�J�J�L��������[�1�2rbc�V�dD]g}td�}tj|d|dg�}t|�}|jd|�|jd|�|jd|��it	dgd��}t|�}|jttdt��y)	N)rrg���?g@g"@rr�z9.0 in m)	�floatrQrS�assertInr
rtrRrr )rbr=�infrwrJs     r@�test_memoryview_sequencez+TestBufferProtocol.test_memoryview_sequenceGs����C���,�C����S�3��S�/�2�B��2��A��M�M�#�q�!��M�M�%��#��M�M�#�q�!�
��S�"�S�
)���r�N�����)�T�:�v�x�@rbc#�K�|jt�5}d��ddd�|jtj�d|fz�y#1swY�3xYw�w)Nz#index out of bounds on dimension %d)rtrrr�str�	exception)rb�dim�cms   r@�assert_out_of_bounds_errorz-TestBufferProtocol.assert_out_of_bounds_errorUsJ����
�
�
�z�
*�b��+�����R�\�\�*�>�#��G�	I�+�
*�s�A�A�2A�A�Ac��tdgd��}t|�}|j|dd�|j|d|�|j|d|�|jt|j
d�tdgd��}t|�}|jt|j
d�tttd	��d	gt�
�}t|�}|jt|j
d�|jt|j
d�|jt|j
d
�|jt|j
d�|jt|j
d�tttd��ddgt�
�}t|�}|j|dd�|j|dd�|j|dd�|j|dd�|j|dd�dD]$}|jd��5||dfddd��&dD]$}|jd��5|d|fddd��&|jt|j
d�|jt|j
d�|jt|j
d �|jt|j
d!�|jt|j
d�|jt|j
d�y#1swY��!xYw#1swY��xYw)"N�)@rrlr�.rr��iiir9r�r,�@����r8r�r[r6�rr)r"rr�r��r�r�)r�r��r[r�r.�r�r6r�r"�r,rr+�rrr�r
r
)r
rSrrrtrRrrSr�rlr rr)rbrwrJ�indexs    r@�test_memoryview_indexz(TestBufferProtocol.test_memoryview_index\s����T��C�
0���r�N������2���%�����3���#�����3���$����)�Q�]�]�A�6�
�W�B�u�
5���r�N�����-�q�}�}�b�A��T�%��(�^�A�3�k�
B���r�N�����*�a�m�m�U�;����)�Q�]�]�C�8����)�Q�]�]�C�8�	
���*�a�m�m�R�8����*�a�m�m�Q�7��T�%��)�_�Q�q�E��
E���r�N������4��!�$�����4��!�$�����4��"�%�����6��B�'�����6��A�&��E��0�0�Q�0�7��%��(��8�7���E��0�0�Q�0�7��!�U�(��8�7��	
���*�a�m�m�Z�@����*�a�m�m�Z�@����)�Q�]�]�I�>����)�Q�]�]�J�?�	
���-�q�}�}�b�A����-�q�}�}�a�@�8�7��8�7�s�:L<�#M	�<M	�	M	c��tdgdt��}t|�}d|d<|j|dd�d|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dd�tdD]l}|dk(s|dk(r�tgd�dg|t��}t|�}tdd�}d||<|j||d�|j||||��ntgd�dgdt��}t|�}d|d<|j|dd�tgd �dgdt��}t|�}d!|d"<|j|d"d!�td#gd"gdt��}t|�}|j	t
|jdd$�tttd%��gd&�t��}t|�}tdj�D]�\}}|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"d1�d3|d4<|j|ddd3�d5D]$}|j#d"�6�5d||df<ddd��&d7D]$}|j#d�6�5d|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dg�y#1swY��xYw#1swY��xYw)<Nrrrkg�6@r�g�7@.rg33333�8@r9r�r"rqr�r,r�r	r
r�rrfr8�rCrrr�r[r�)�1�2�3r)TFTTr.�xr�r�r�rr�rr�s���xLr�r�r�r6�*)rr.�+r
rrrrr+rr)r
r rSrrrtrRr	r�rlrrYrrqr{rer�rSr)rbrwrJr=rrYr��_ranger��lo�hirs            r@�test_memoryview_assignz)TestBufferProtocol.test_memoryview_assign�s?���T��C�{�
C���r�N����"������2���%���#������2���%����)�Q�]�]�A�t�<��T�%��(�^�A�3�
/���r�N�����)�Q�]�]�A�r�:��T�%��(�^�A�3�k�
B���r�N�����*�a�m�m�U�A�>����)�Q�]�]�C��<����)�Q�]�]�C��<�	
���*�a�m�m�R��<����*�a�m�m�Q��;��3�<�C��c�z�S�C�Z������C�{�K�B��2��A��"�a� �A��A�a�D����Q�q�T�1�%����Q�q�T�2�a�5�)� ��'��s�3�&�(���r�N����!������1��t�$�
�(���C�&�(���r�N����!���
�
�a��d�D�!��d�V�A�3�s�+�
F���r�N�����)�Q�]�]�A�s�;�
�T�%��*�%�[��
L��
��^��"�3�<�-�-�/�K�C���s�
���c�z�������B��F�B���c�z�S�C�Z��T�'��1�d�7�B���c�z��!�!�*�b�n�n�a��A��F��!�!�)�R�^�^�Q��F����j�"�.�.�!�R�@�0��W�W�S�\�����*�b�n�n�a��E��T�%��(�^�A�3�t�;�
O���r�N�����-�q�}�}�a��C�
�h�Z��s�3�k�
J���r�N�����-�q�}�}�a��C��T�%��)�_�Q�q�E��
E���r�N����#������A��q��2�&���%������A��q��2�&��E��0�0�Q�0�7���%��(��8�7���E��0�0�Q�0�7���!�U�(��8�7��	
���*�a�m�m�Z��C����*�a�m�m�Z��C����)�Q�]�]�I�q�A����)�Q�]�]�J��B�	
���-�q�}�}�a�!�Q��H�8�7��8�7�s�W3�4X�3W=	�X		c
��tttd��dgt��}t	|�}|jt|jtddd��|jt|jtddd�tddg��|jt|jd�tttd��dgt��}t	|�}|jt|jtddd�tddd�f�|jt|jtddd�tddd�ftddg��|jt|jtddd�if�|jt|jtddd�iftddg��|jt|jtddd�dg�dtfD�]?}tttd��dgdgdt|z�	�}tttd
��dgdg|��}t	|�}t	|�}|dd|dd|dd|dd|j||�|j||�|ddddd�|dd
ddd�<|ddddd�|dd
ddd�<|j||�|j||�|ddd�ddd�|ddd�ddd�<|ddd�ddd�|ddd�ddd�<|j||�|j||���By)Nr�r�rr"r.r�r�r�)r�r�r�r�r�r�r[r6r�)r
r�rlr rSrtr�rrr	r%rSrRr�rr)rbrwrJrr�r�r�r�s        r@�test_memoryview_slicez(TestBufferProtocol.test_memoryview_slice�s��
�T�%��)�_�R�D��
D���r�N��	
���*�a�m�m�U�1�Q�q�\�B����*�a�m�m�U�1�Q�q�\�#�Q�q�E�*�	,�	
���-�q�}�}�b�A��T�%��)�_�R�D��
D���r�N�����-�q�}�}� ��1�Q�<��q��1��6�	8����-�q�}�}� ��1�Q�<��q��1��6�	�1�Q�%�8H�	J�	
���)�Q�]�]�U�1�Q�q�\�2�4F�G����)�Q�]�]�U�1�Q�q�\�2�4F�#�Q�q�E�*�	,�	
���)�Q�]�]�E�!�A�a�L�1�#�F���[�E��$�u�R�y�/�"���t�B� +�E� 1�3�C��$�u�R�y�/�"���s�%�P�C��C��B��C��B��1�Q�x�C��!�H���1�g�B�q��G����R��%����R��%� ��1�X�c��c�]�C��!�H�T�r�T�N��q��G�C�a�C�L�B�q��G�D�b�D�M����R��%����R��%� #�A�a��E�
�3�Q�3��C��!�B��K��"���!�!�A�a�%�y��1��~�B�q��2�v�J�t��t�����R��%����R��%�/!rbc��d�}tdd�D�]�}t|d�D�]�\}}}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)Nc�n�t|�D]�\}}||}||}|j||�|||<||k7r%|j||�|j||�n$|j||�|j||�|||<|j||�|j||�|||<|||<��yr�)r&rr�assertNotEqual)	�testcaserLrrJ�
singleitemrry�ai�mis	         r@�cmptestz9TestBufferProtocol.test_memoryview_array.<locals>.cmptest8s���!�!����1��q�T���q�T���$�$�R��,�!��!����#��+�+�A�q�1��+�+�A�q�1��(�(��A�.��(�(��A�.�!��!���$�$�Q��*��$�$�Q��*���!����!��%rbr.r�rQ)
rlr�r:rQrSrrrQr/rgr.r/rqr�)rbr-rr=r{r*r7r@rLrrJ�	array_err�have_resize�al�arr�m_errs                 r@�test_memoryview_arrayz(TestBufferProtocol.test_memoryview_array6s���	�$�q�!��A�*5�a��*A�&��U�J�'��l�F�"+�A�,��!�K�K��U�3��!�K�K��U�3��&�q�M���(�(��A�.��(�(�����Q�X�X�Z�@��(�(�����a�i�i�k�B��(�(��Q���Q��8���a��A�z�:�$(�	�&*��4�!"�6��B�!"�6��B�()�&�	�A�f�I�*-�b�'�S��W�*<�K�!%��0�()�&�	�A�f�I�'� �M�M�%��<�"�i� �M�M�%��;� �,�,�Q��2� �,�,�Q�X�X�Z�����D� �,�,�Q�Y�Y�[�!�)�)�+�F�#�D�!�Q��:�>�K#/�+�+B���. )�4�()���I��4�� )�0�$%�K�K�E��0�s0� )H
�H/�
	H,�H'�'H,�/	I�8I	�	Ic���tjdgd��}tjdgd��}t|�}t|�}dD]N}|jt||�|�t�|jt||�|�t��Pt|�}|j�|j
||�|j||�|j||�t|�}t|�}|j�|j||�|j||�t|�}|j|gd��tdgdgdt��}d	td
�f|d<|jt|�|�tjdd
�}t|�}|j||�|j||�tr�Gd�dtj�}|dd�}t|�}t|�}|j||�|j||�|j||�|jt|j�yy)Nrr�)r.r"r9)�__lt__�__le__�__gt__�__ge__rr.zl x d xrkr�r,r�ur�c�D�eZdZdejfdejfgZy)�ITestBufferProtocol.test_memoryview_compare_special_cases.<locals>.BEPointr`r�N�r�r�r�r�r�r�r�rbr@r�r;���� �&�-�-�0�3��
�
�2F�G�rbr�r�r)rQrSrq�getattrrr�rrr(r
r r�r�r�rtrSrQ)	rbrLrr��w�attrrYr�r�s	         r@�%test_memoryview_compare_special_casesz8TestBufferProtocol.test_memoryview_compare_special_casests���K�K��Y�'���K�K��Y�'��
�q�M���q�M��<�D��M�M�*�'�!�T�*�1�-�~�>��M�M�*�'�!�T�*�1�-�~�>�=�

�q�M��	�	�	������A�����A�q�!����A�q�!��q�M���q�M��	�	�	�����A�q�!����A�q�!�
�q�M�����A�y�)��f�X�a�S��+�
N���U�5�\�"��1�����J�r�N�B�/�
�K�K��U�#���q�M�����A�q�!����A�q�!��
H�&�3�3�
H��C��%�E��5�!�A��5�!�A�����1�%�����5�)�����q�)����1�1�8�8�<�rbc��tdgd��}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|��tttd��dgttz�	�}tttd��dgttz�	�}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��@Lrlrrki�r�r�r�r�r�)rCr�r��Lf5s�hf5s)i?���r�r�)r
r rSrrrK�__ne__r(rr�rlr�)rb�nd1�nd2r�r?rYrwrJs        r@�!test_memoryview_compare_ndim_zeroz4TestBufferProtocol.test_memoryview_compare_ndim_zero�s
���d�"�T�2���d�"�S��D���s�O���s�O������A������A������C� �����a� �����C� �����a� �������!��%�������!��%���"�����A�q�!����A�q�!����A�s�#����C��#����A�s�#����C��#�������!��%�������!��%�
�T�%��)�_�R�D��F�8J�
K��
�T�%��)�_�R�D��F�8J�
K���r�N������B����!�����A�r�"��+�2�f�E���+�2�f�'�)���s�O���s�O������A������A������C� �����a� �����C� �����a� ��+�2�f�E���,�B�v�'�)���s�O���s�O�����A�q�!����A�q�!����A�s�#����C��#����A�s�#����C��#�����C� �����C� rbc�P�tgd�dgd��}tgd�dgd��}t|�}t|�}|j||�|j||�|j||�|j||�|j||�tgd�dgd��}tgd�dgd��}t|�}t|�}|j||�|j||�|j||�|j||�|j||�tgd�d	gd��}tgd�dgd��}t|�}t|�}|j||ddd
��|j|ddd
�|�|j||ddd
��|j|ddd�|ddd��tgd�d	gd
��}tgd�dgd��}t|�}t|�}|j||ddd
��|j|ddd
�|�|j||ddd
��|j|ddd�|ddd��tgd�d	gd��}tgd�dgdt��}t|�}t|�}|j||ddd
��|j|ddd
�|�|j||ddd
��|j|ddd�|ddd��tgd�d	gd��}tgd�dgdt��}t|�}t|�}|j||ddd
��|j|ddd
�|�|j||ddd
��|j|ddd�|ddd��y)N�����@�����'���r��@hrl)rMrNrOrPi�z<iz>h)rMrOrQr[r"r�r�z!hz<lrkzh  0cz>  h)r
rSrrr(r��rbrHrIr�r?s     r@� test_memoryview_compare_ndim_onez3TestBufferProtocol.test_memoryview_compare_ndim_one�s����2�1�#�d�K���1�!��T�J���s�O���s�O������C� �����C� ����A�s�#����A�s�#����A�q�!��2�1�#�d�K���1�!��T�J���s�O���s�O������C� �����C� ����A�s�#����A�s�#����A�q�!��(���D�A���2�1�#�d�K���s�O���s�O������C��!��H�%�����3�Q�3���%�����A�c��c�F�#�����4�R�4��!�D�b�D�'�*��(���D�A���2�1�#�d�K���s�O���s�O������C��!��H�%�����3�Q�3���%�����A�c��c�F�#�����4�R�4��!�D�b�D�'�*��(���D�A���2�1�#�d�"�$���s�O���s�O������C��!��H�%�����3�Q�3���%�����A�c��c�F�#�����4�R�4��!�D�b�D�'�*��(���G�D���2�1�#�f�"�$���s�O���s�O������C��!��H�%�����3�Q�3���%�����A�c��c�F�#�����4�R�4��!�D�b�D�'�*rbc�L�tddgdgd��}tddgdgd��}t|�}t|�}|j||�|j||�|j||�|j||�|j||�tddgdgd��}tddgdgd	��}t|�}t|�}|j||�|j||�|j||�|j||�|j||�y)
N�r�rrRrli|���i?���z= h0cz@   i�r
rSrrrSs     r@�"test_memoryview_compare_zero_shapez5TestBufferProtocol.test_memoryview_compare_zero_shape0
s���s�C�j���D�9���t�T�l�1�#�d�;���s�O���s�O������C� �����C� �����C� �����C� �����A���s�C�j���G�<���t�T�l�1�#�g�>���s�O���s�O������C� �����C� �����C� �����C� �����A�rbc�T�tgd�dgd��}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�#�d�C���s�e�A�3���C�@���s�O���s�O������C� �����C� �����C� �����C� �����A���z�l�1�n�Q�C��?���z�l�1�#��s�7�K���s�O���s�O������C� �����C� �����C� �����C� �����A�rbc��d}tdD]s}t|dd|�\}}}dtfD]T}t||g||��}t	|�}|j||�|ddd�}t	|�}|j||��V�ud}t
d�D]p}	t|�\}}}dtfD]T}t||g||��}t	|�}|j||�|ddd�}t	|�}|j||��V�ry)	NrqrKrSrCrrkr�r�)rYrr�r
rSrrrl)
rbrr^r=r{r*rrYrJrys
          r@�&test_memoryview_compare_random_formatsz9TestBufferProtocol.test_memoryview_compare_random_formatsd
s��
���D�M�D�%.�q�,��T�%J�"�C��
��V����U�1�#�c��G���r�N��� � ��B�'���"��X���r�N��� � ��B�'�%�"�
���s��A�%.�q�\�"�C��
��V����U�1�#�c��G���r�N��� � ��B�'���"��X���r�N��� � ��B�'�%�rbc��tttdd��gd�d��}tttdd��gd�d��}t|�}t|�}|j	||�|j	||�|j||�|j||�|j||�tdgdzgd�d	��}td
gdzgd�d��}t|�}t|�}|j	||�|j	||�|j||�|j||�|j||�tttd��gd�d
��}tttd��gd�d
��}t|�}t|�}|j	||�|j	||�|j||�|j||�|j||�tdgdzddgd��}tdgdzddgd��}t|�}t|�}|j	||�|j	||�|j||�|j||�|j||�tttd��gd�d
��}tttd��gd�d��}t|�}t|�}|j	||�|j	||�|j	||�|j	||�|j	||�y)N��r7�r[r"r�rRrlrr��rr.r"z=f q xxL)g333333�r.r"z< f 2Qrr�r[r9z! b B xLz
= Qx l xxLr�r
r�rlrSrrr(rSs     r@�"test_memoryview_compare_multidim_cz5TestBufferProtocol.test_memoryview_compare_multidim_c�
s����d�5��b�>�*�)�D�I���d�5��B�<�(�	�$�G���s�O���s�O������C� �����C� ����A�s�#����A�s�#����A�q�!��y�k�"�n�I�j�I���|�n�R�'�y��J���s�O���s�O������C� �����C� ����A�s�#����A�s�#����A�q�!��d�5��9�o�Y�s�C���d�5��9�o�Y�s�C���s�O���s�O������C� �����C� ����A�s�#����A�s�#����A�q�!��y�k�"�n�Q��F�:�F���y�k�"�n�Q��F�<�H���s�O���s�O������C� �����C� ����A�s�#����A�s�#����A�q�!��d�5��9�o�Y�s�C���d�5��9�o�Y�s�C���s�O���s�O������C� �����C� �����C� �����C� �����A�rbc�D�tttdd��gd�dt��}tttdd��gd�dt��}t	|�}t	|�}|j||�|j||�|j
||�|j
||�|j
||�tdgd	zd
dgdt��}td
gd	zd
dgdt��}t	|�}t	|�}|j||�|j||�|j
||�|j
||�|j
||�tttdd��gd�dt��}tttdd��gd�dt��}t	|�}t	|�}|j||�|j||�|j
||�|j
||�|j
||�tttdd��gd�dt��}tttdd��gd�dt��}t	|�}t	|�}|j||�|j||�|j
||�|j
||�|j
||�tttd��gd�dt��}tttd��gd�dt��}t	|�}t	|�}|j||�|j||�|j||�|j||�|j||�y)Nr^r7)r�r"r[rRrkrr��rr�r7r"r[�=Qq)r�rz=qQrrr_�0llrM)r
r�rlr�rSrrr(rSs     r@�(test_memoryview_compare_multidim_fortranz;TestBufferProtocol.test_memoryview_compare_multidim_fortran�
s���d�5��b�>�*�)�D�&�(���d�5��B�<�(�	�$�&�(���s�O���s�O������C� �����C� ����A�s�#����A�s�#����A�q�!��}�o�a�'��1�v�e�&�(���}�o�a�'��1�v�e�&�(���s�O���s�O������C� �����C� ����A�s�#����A�s�#����A�q�!��d�5��b�>�*�)�C�&�(���d�5��b�>�*�)�C�&�(���s�O���s�O������C� �����C� ����A�s�#����A�s�#����A�q�!��d�5��b�>�*�)�E�&�(���d�5��b�>�*�)�C�&�(���s�O���s�O������C� �����C� ����A�s�#����A�s�#����A�q�!��d�5��9�o�Y�t�&�(���d�5��9�o�Y�t�&�(���s�O���s�O������C� �����C� �����C� �����C� �����A�rbc��	�ttdd��}t|gd��}t|gd�d��}t|gd�dt��}t|�}t|�}|j
||�|j
||�|j
||�dgd	z}d
|d<t|gd��}t|gd�d��}t|gd�d
t��}t|�}t|�}|j
||�|j
||�|j
||�tttd��ddgd��}|ddd�ddd�f}tttd��ddgd��}|ddd�ddd�f}t|�}t|�}|j
||�|j
||�|j||�|j||�|j||�tdgdzddgd��}|ddd�ddd�f}tdgdzddgd��}|ddd�ddd�f}t|�}t|�}|j
||�|j
||�|j
||�|j
||�|j
||�tttd	��gd�d��}|dd�ddd�f}tttd	��gd�d��}|dd�ddd�f}t|�}t|�}|j
||�|j
||�|j||�|j||�|j||�tttd	��gd�d��}|dd�ddd�f}tttd	��gd�d��}|dd�ddd�f}t|�}t|�}|j
||�|j
||�|j||�|j||�|j||�tdgd	zgd �d!��}|dd�ddd�f}tdgd	zgd �d"��}|dd�ddd�f}t|�}t|�}|j
||�|j
||�|j||�|j||�|j||�y)#Nr^r7r_�@lrlrrk)gffffff
����rr�)g�������rkrr�zd b czd h c�(r8�@Ir[r.r�r�r)r�r'�r�r"z=iiz>iirrr)r"r��r�r[r"�b3s�i3s)r�rlr�r
r�rSrrr()	rb�lst1�lst2rHrIr�r?r�r�s	         r@�&test_memoryview_compare_multidim_mixedz9TestBufferProtocol.test_memoryview_compare_multidim_mixeds����E�#�r�N�#����y�)���d�)�D�9���d�)�C�z�J���s�O���s�O������C� �����C� �����A��"�"�2�%��#��Q����y�)���d�)�G�<���d�)�G�:�N���s�O���s�O������C� �����C� �����A���d�5��9�o�a��V�D�A���!�A�b�&�$�B�$�,����d�5��9�o�a��V�C�@���!�A�a�%��2��+����s�O���s�O������C� �����C� ����A�s�#����A�s�#����A�q�!��(�)�"�,�R��G�E�J���!�A�b�&�$�B�$�,����(�)�"�,�R��G�E�J���!�A�a�%��2��+����s�O���s�O������C� �����C� �����C� �����C� �����A���d�5��9�o�Y�s�C���!�A�$��"��*�o���d�5��9�o�Y�s�C���!�A�$��"��*�o���s�O���s�O������C� �����C� ����A�s�#����A�s�#����A�q�!��d�5��9�o�Y�s�C���!�A�$��"��*�o���d�5��9�o�Y�s�C���!�A�$��"��*�o���s�O���s�O������C� �����C� ����A�s�#����A�s�#����A�q�!��{�m�B�&�i��F���!�A�$��"��*�o���{�m�B�&�i��F���!�A�$��"��*�o���s�O���s�O������C� �����C� ����A�s�#����A�s�#����A�q�!rbc���tttd��gd�d��}tttd��gd�d��}t|�}t|�}|j	||�|j	||�|j||�|j||�|j||�tttd��gd�d��}tttd��gd�d��}t|�}t|�}|j	||�|j	||�|j||�|j||�|j||�y)Nr�)rr[r"rrl)r�rr"z@irbrSs     r@�+test_memoryview_compare_multidim_zero_shapez>TestBufferProtocol.test_memoryview_compare_multidim_zero_shapegs"���d�5��9�o�Y�s�C���d�5��9�o�Y�t�D���s�O���s�O������C� �����C� ����A�s�#����A�s�#����A�q�!��d�5��9�o�Y�s�C���d�5��9�o�Y�t�D���s�O���s�O������C� �����C� ����A�s�#����A�s�#����A�q�!rbc��tdgdzgd�d��}tdggd�gd�d��}t|�}t|�}|j||�|j||�|j||�|j||�|j||�|j|j�|j��td	gd
zddgd
��}td	gddgddgd��}t|�}t|�}|j||�|j||�|j||�|j||�|j||�y)NrVr)r6r�r6rDrlrrr�rrqr"r�z=lQrz<lQ)r
rSrrrQrSs     r@�-test_memoryview_compare_multidim_zero_stridesz@TestBufferProtocol.test_memoryview_compare_multidim_zero_strides�s>���s�e�B�h�i��=���s�e�9�i��L���s�O���s�O������C� �����C� �����C� �����C� �����A���������Q�X�X�Z�0��v�h�r�k�!�Q���>���v�h�q�!�f�q�!�f�U�K���s�O���s�O������C� �����C� �����C� �����C� �����A�rbc�>�tttd��ddgd��}|ddd�ddd	�f}tttd��ddgd
t��}|ddd�ddd	�f}t	|�}t	|�}|j||�|j||�|j
||�|j
||�|j
||�tdgdzddgd
t��}d|dd<|ddd�ddd	�f}tdgdzddgdttz��}d|dd<|ddd�ddd	�f}t	|�}t	|�}|j||�|j||�|j||�|j||�|j||�tttd��gd�dt��}|dd�ddd	�f}tttd��gd�d��}|dd�ddd	�f}t	|�}t	|�}|j||�|j||�|j
||�|j
||�|j
||�tdgdzgd�dttz��}|dd�ddd	�f}tdgdzgd�d��}|dd�ddd	�f}t	|�}t	|�}|j||�|j||�|j
||�|j
||�|j
||�tttd��gd�dt��}|dd�ddd	�f}tttd��gd�dt��}|dd�ddd	�f}t	|�}t	|�}|j||�|j||�|j||�|j||�|j||�tdgdzgd�dttz��}d|ddd<|dd�ddd	�f}tdgdzgd�dttz��}d|ddd<|dd�ddd	�f}t	|�}t	|�}|j||�|j||�|j
||�|j
||�|j
||�ttdd ��}t|gd��}t|gd�d!t��}t|gd�d"ttz��}t	|�}t	|�}|j||�|j||�|j||�d#gdz}d$|d%<t|gd��}t|gd�d&t��}t|gd�d'ttz��}t	|�}t	|�}|j||�|j||�|j||�y)(Nrlr�r8rmrlr[r.r�r�rrkrerf)r.r�r"r9z>Qqr�rrr_)r�r��Bbror)�hellorbr.�)r[r[r[�5s0sP)ssushirbr.r^r7rjr)ssashimisslicedg�����4@)sramensspicygfffff�"@r�z
< 10p 9p dz
> 10p 9p d)
r
r�rlr�rSrrr(r r�r�)	rbr�rHr�rIr�r?rrrss	         r@�+test_memoryview_compare_multidim_suboffsetsz>TestBufferProtocol.test_memoryview_compare_multidim_suboffsets�s����d�5��9�o�a��V�D�A���!�A�b�&�$�B�$�,����d�5��9�o�a��V�C�v�N���!�A�a�%��2��+����s�O���s�O������C� �����C� ����A�s�#����A�s�#����A�q�!��}�o�b�(��A��u�'�)����A��q�	��!�A�b�&�$�B�$�,����}�o�b�(��A��u�"�;�.�0����A��q�	��!�A�a�%��2��+����s�O���s�O������C� �����C� �����C� �����C� �����A���d�5��9�o�Y�s�"�$���!�A�$��"��*�o���d�5��9�o�Y�s�C���!�A�$��"��*�o���s�O���s�O������C� �����C� ����A�s�#����A�s�#����A�q�!��|�n�R�'�y��"�;�.�0���!�A�$��"��*�o���|�n�R�'�y��F���!�A�$��"��*�o���s�O���s�O������C� �����C� ����A�s�#����A�s�#����A�q�!��d�5��9�o�Y�s�&�Q���!�A�$��"��*�o���d�5��9�o�Y�t�6�R���!�A�$��"��*�o���s�O���s�O������C� �����C� �����C� �����C� �����A���)�*�2�-�Y�w�"�;�.�0��)��A��q�	�!���!�A�$��"��*�o���)�*�2�-�Y�w�"�;�.�0��)��A��q�	�!���!�A�$��"��*�o���s�O���s�O������C� �����C� ����A�s�#����A�s�#����A�q�!��E�#�r�N�#����y�)���d�)�D��G���d�)�C�z�&�?P�Q���s�O���s�O������C� �����C� �����A��/�/��2��-��R����y�)���d�)�L��O���d�)�L�&�v�-�/���s�O���s�O������C� �����C� �����A�rbc��dD�]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[r�r"r"r"rrlrkr.r"r[)r*r(r&�QLH)r.r.r.)r
r r�rSrrr()rb�	byteorderr`r�rLrs      r@�!test_memoryview_compare_not_equalz4TestBufferProtocol.test_memoryview_compare_not_equals���.�I������;�y��}�M�A������;�y��}�)�*�4�6�A� �A�a�D��G�A�J�q�M�!���1�
�A��1�
�A����Q��"����Q��"�����1�%�����1�%�����1�%��.�/��3�;�(���0�A��.�/��3�;�(���k�*�6L�N�A�(�A�a�D��G�A�J�q�M�!���1�
�A��1�
�A����Q��"����Q��"�����1�%�����1�%�����1�%�1.rbc���tjdgd��}t|�}|j�|jtt|�|jt|j
d�|jtt|�|jt|j�|jt|j�|jttdt��|jt|jd�|jt|jdd�dD]#}|jt|j|��%tjdgd��}t|�}t|�}|j||�|j�|j||�|j||�|j||�y)Nr)g�������?g������@gffffff
@rz1.0 in mrr.)r_r-rsr�rr�r�r�rUr�r�r�)rQrSr�rtr�rer
rQr/rr rr	�__getattribute__rrr()rbrLrJr@rr�r�s       r@�test_memoryview_check_releasedz1TestBufferProtocol.test_memoryview_check_released:s_���K�K��_�-���q�M��	�	�	��	
���*�j�!�4����*�a�f�f�c�2����*�g�q�1����*�a�h�h�/����*�a�i�i�0����*�d�J���A����*�a�m�m�Q�7����*�a�m�m�Q��:�3�D�
���j�!�*<�*<�d�C�3�
�K�K��_�-��
��]��
��]������R� �
�
�
�����B��#����B��"�����R� rbc��d}t|dgd��}t|�}|j||�|j|j�|j��t|gdgd��}t|�}|j||�|j|j�|j��tt	d�D�cgc]}|��c}gd�d	��}t|�}|j||�|j|j�|j��tt	d
�D�cgc]}|��c}gd�d��}t|�}|j||�|j|j�|j��t
rWGd
�dt
j�}|dd�}t|�}|j|j�t|��yycc}wcc}w)NrLr�rRrlr.z>hQiLlr�rtz=hQiLlr�)r�r"r"r[r"z<hQiLlc�D�eZdZdejfdejfgZy)�;TestBufferProtocol.test_memoryview_tobytes.<locals>.BEPointr`r�Nr<r�rbr@r�r�r=rbr�r�r)r
rSrrr/rlr�r�rZ)rbr�rYrJryr�r�rLs        r@�test_memoryview_tobytesz*TestBufferProtocol.test_memoryview_tobytesbs���
)��
�Q�q�c�$�
/���r�N������B���������b�j�j�l�3�
�a�S���H�
5���r�N������B���������b�j�j�l�3�
��r��+��A�a��+�7�8�
L���r�N������B���������b�j�j�l�3�
��s��,��A�a��,�K�$�&���r�N������B���������b�j�j�l�3��
H�&�3�3�
H��C��%�E��5�!�A����Q�Y�Y�[�%��,�7�
��,��
-s�
	G:�<	G?c��|jttitd�|jttdt
d�t
gd�dgdg��}|jtt|t
d�t
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	d�d|d	<|j|d	d�|j|d	d��pt
dgdgd
t�
�}dD]f}t|t|�}|jt|jd�|j||�|j|j�g��ht
ttd��gd�d
t�
�}dD]>}t|t|�}|jt
|�j�ggg��@t
dgdgdt�
�}dD]S}t|t
|�}|j||�|j|j�|j���Ut
gd�dgdt�
�}dD]S}t|t
|�}|j||�|j|j�|j���Ut
gd�dgdgt��}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|dd���t
ttd��ddgt��}dD]J}t|t
|�}|jt
|�j�|j���L|jtt|t
d�t|t�}|jt
|�j�|j��t
ttd��ddgttz��}dD]J}t|t
|�}|jt
|�j�|j���L|jtt|t
d�t|t|�}|jt
|�j�|j��t
ttd��ddgtt z��}dD]k}|jtt|t
|�t|t|�}|jt
|�j�|j���mt
gd�dgdg��}t|td�}|j#|j$�y)Nrirr�r�r"r�rjr�r�rrlrhrkrqr.rr8rxrr[rr�rfr�r�r6r�)r�rj)rirjr�)rtrRr�r�r~�PyBUF_WRITEr
rrr rrrQr�rlr	r�r�r�r�)rbrYrorJs    r@�test_memoryview_get_contiguousz1TestBufferProtocol.test_memoryview_get_contiguous�s���	
���)�^�R��S�I�	
���+�~�t�[�#�N��Y�q�c�A�3�
7�����+�~�r�;��L��Q�b��
-��$�E��r�:�u�5�A����Q��#����Q�r�U�A�&�%��Q�b��K�
@��$�E��r�:�u�5�A����Q��#����Q�r�U�A�&�%�%�E��B�r�F��r�;��6�A����Q��#����Q�r�U�A�&��A�b�E����Q�r�U�B�'����R��V�R�(�%��a�S���C�{�
C��$�E��r�:�u�5�A����j�!�-�-��;����Q��#����Q�X�X�Z��,�	%��T�%��(�^�9�S�&�(��$�E��r�:�u�5�A����W�Q�Z�.�.�0�2�r�(�;�%�
�a�S���C�{�
C��$�E��r�;��6�A����Q��#����Q�X�X�Z�����5�%�
�Y�q�c�#�[�
I��$�E��r�;��6�A����Q��#����Q�X�X�Z�����5�%��Y�q�c�A�3�k�
J��$�E��r�:�u�5�A����Q��#����Q�X�X�Z�����5����i�����2�>����Q�q�T�1�%����R��U�A�&�
%���"��X��$�E��r�:�u�5�A����Q��#����Q�X�X�Z�����5����i�����2�>����Q�q�T�1�%����R��U�A�&�
%��T�%��)�_�Q��F�+�
F���E��r�;��6�A����W�Q�Z�.�.�0�"�)�)�+�>� �	
���+�~�r�;��L��2�z�5�1��������*�*�,�b�i�i�k�:�
�T�%��)�_�Q��F�&�z�1�3���E��r�;��6�A����W�Q�Z�.�.�0�"�)�)�+�>� �	
���+�~�r�;��L��2�z�5�1��������*�*�,�b�i�i�k�:��T�%��)�_�Q��F�+�f�:L�
M��$�E����k�>�2�{�#�
%��r�:�u�5�A����W�Q�Z�.�.�0�"�)�)�+�>�	%��[���a�S�
9���2�z�3�/��������'rbc�H�tjd�}tjdgd��}t|�}t	j
|�}t
d|z�}|j|�|j|j�|�tjd�}tttd��gd�d��}t|�}t	j
|�}t
d|z�}|j|�|j|j�|�y)Nrr�r�rr�rsrl)
r:r�rQrS�io�BytesIOr%�readintorrr/r
r�rl)rbr�rLrJr)rrYs       r@�test_memoryview_serializingz.TestBufferProtocol.test_memoryview_serializing�s������s�#���K�K��[�)���q�M���j�j��m���a��f������Q���������a�(����s�#��
�T�%��)�_�G�C�
@���r�N���j�j��m���e�D�j�!�����Q���������a�(rbc�h�tttd���}t|�}|j	t|�t|��|j
dddg��}|j	t|�t|��|ddd�}tttd��ddd��}|j	t|�t|��tttd��gd�t�	�}t|�}|j	t|�t|��tttd��gd���}|ddd
�dd�ddd�f}t|�}|j	t|�t|��tttd��gd�t�	�}|ddd
�dd�ddd�f}t|�}|j	t|�t|��tttd��dgd
��}t|�}tttd��dgd��}t|�}|j	||�|j	t|�t|��tttd��gd�d��}t|�}|jt|j�tttdd��gd�d��}t|�}|jt|j�tttd��gd�d��}t|�}|jt|j�tttdd��gd�d��}t|�}|jt|j�y)Nr�rr[r6r�r�r�r_r�r"r�)r"r�r[rrlrrtrrr7rz= Lz< h)
rZr�rlrSrrrurer
r�r�rtr��__hash__)	rbrrJ�mc�mxrYr`rLr�s	         r@�test_memoryview_hashz'TestBufferProtocol.test_memoryview_hashs���
�$�u�R�y�/�"���q�M������a��$�q�'�*��V�V�C��!�u�V�
%������b��4��7�+��t��t�W���$�u�R�y�/�$�B�$�'�(������b��4��7�+��T�%��)�_�G�:�
F���r�N������a��$�r�(�+��T�%��)�_�G�
4���s��s�B��"��}����q�M������a��$�q�'�*��T�%��)�_�G�6�
B���s��s�B��"��}����q�M������a��$�q�'�*�
�D��r��O�B�4��<���q�M���D��r��O�B�4��<���q�M������A������a��$�q�'�*��T�%��)�_�G�C�
@���r�N�����*�a�j�j�1�
�T�%��A�,�'�w�s�
C���r�N�����*�a�j�j�1�
�T�%��)�_�G�E�
B���r�N�����*�a�j�j�1�
�T�%��A�,�'�w�u�
E���r�N�����*�a�j�j�1rbc
��tgd��}t|�}t|�}|jt|j
�~|j�tgd��}t|�}t|tt��}t|tt��}|j|j|�|jt|j
�~~|j�tgd��}t|�}t|�}t|�}|j�|jt|j
�~|j�tgd��}t|�}t|�}t|tt��}t|tt��}|j|j|�|j�|jt|j
�~~|j�tgd�dgt��}t|�}|jgd�dg��t|�}t|�}|j|j�|j��t|�}	|j|	j�|j��|j|	j�|j��|j�|	j�|j�|j|j�|j��~|j�|j�d�}
td	�}t|�5}|
|�|j|d
td��ddd�tt!t#d��gd
�d��}t|tt��}	t|	tt��}|j|j|�t|�5}|
|�|j|d
dj�gd�gd�gg�ddd�d
tfD�]�}td	�}t|�5}~t|t|��}	t|	�5}~	t|t|��}t|�5}
~|
|
�|
|�|
|�|j|d
td��|j|dtd��|j|
dtd��~
ddd�~ddd�~ddd�td	�}t|�5}~t|t|��}	t|	�5}~	t|t|��}t|�5}
~|
|�|
|�|
|
�|j|d
td��|j|dtd��|j|
dtd��~~~
ddd�ddd�ddd����td	�}|jt�5t|�5}t|�}|d
td�k(ddd�ddd�y#1swY���xYw#1swY��FxYw#1swY��vxYw#1swY��zxYw#1swY��~xYw#1swY��xYw#1swY��xYw#1swY���xYw#1swY�xxYw#1swYyxYw)Nr��r�rr[r�)r6r�r7r9r8r�r�c�F�t|�5}	ddd�y#1swYyxYwr��rS)rr�s  r@�catch22z;TestBufferProtocol.test_memoryview_release.<locals>.catch22�s���A��"�����s�� r�rrr�rtrrlr.r`)r[r6r�rr"r)r%rSr
rtr~r�r��ND_REDIRECTrqr_r�r�rrrQr��ordr�rl)rbrLrJrYrHrIr�r�r`r�r�rHrr�rws               r@�test_memoryview_releasez*TestBufferProtocol.test_memoryview_releaseTs>��
�g����q�M��
�Q�Z�����+�q�y�y�1��	�	�	���g����q�M���a�
�[�A���c�-�{�C���
�
�c�g�g�q�!����+�q�y�y�1���	�	�	��
�g���
��]��
��^��
�R�[��
�
�
�����+�r�z�z�2��
�
�
���g���
��]��
��^���b��k�B���c�-�{�C���
�
�c�g�g�r�"�
�
�
�����+�r�z�z�2���
�
�
���W�Q�C�|�
<��
��^��
����A�3��'�
��^���r�N���������R�Y�Y�[�1��r�N���������R�Y�Y�[�1��������R�Y�Y�[�1�
�
�
��	�	�	��
�����������R�Y�Y�[�1��
�
�
��	�	�	��
	�
�f���
��]�b��B�K����R��U�C��I�.��
�D��r��O�7�3�?���A�m�;�?���A�m�;�?���
�
�a�e�e�Q��
��]�a��A�J����Q�q��V�]�]�_�	�9�/E�.F�G��
��%�E��&�!�A��A��"���B�}�E�B����]�b����=��F�A�#�A��"������������(�(��A���D�	�:��(�(��A���D�	�:��(�(��A���D�	�:��'��#��!�$�&�!�A��A��"���B�}�E�B����]�b����=��F�A�#�A��"������������(�(��A���D�	�:��(�(��A���D�	�:��(�(��A���D�	�:���B�'�#���+&�L
�f���
�
�
�{�
+��A��!��Q�Z���!���D�	�!��,�
+�i�]���]��'���#�]�����2'���#�]�����&���,�
+�s��<'Z
� 3Z�=Z>�Z1�;A5Z$	�0	Z1�9	Z>� [#�?[�A7[	�[�[#�[<�[0�9[<�
Z�Z!�$Z.
�)Z1�1Z;�6Z>�>[	�[
�[�[ �[#�#[-	�0[9	�5[<�<\c�&�ttd�D�cgc]}d|z��	c}dgd��}tjdtd�D�cgc]}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)Nr�r�rrlr�r.r[)	r
rlrQr�r�rSrqr_rr)rbr`rYrLr�rHrJs       r@�test_memoryview_redirectz+TestBufferProtocol.test_memoryview_redirect�sf��
�u�R�y�1�y�!�c�A�g�y�1�"��c�
J���K�K��u�R�y�9�y�!�c�A�g�y�9�:���a��A���-�{�C�A���-�{�C�A��1�
�A��M�M�!�%�%��#��M�M�!�%�%��#��M�M�!�%�%��#����Q��"����Q��"����Q��"����Q�q��V�Q�q��V�,����Q�q��V�Q�q��V�,����Q�q��V�Q�q��V�,��1����Q�q��V�Q�q��V�,�#��2��9s�F	�F
c�&�d}gd�}|jttddd�t�}t|�}|j	||d|dddgdg|��	td�D]}|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|��	td�D]}|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[r6r�r7r9r8r�rqr�r.r"r[Tr�r�r�r�)�legacy_mode)rtrR�staticarrayrSr�rlrrr
r�rqr_r�)rbr=rmr`r�rrHrJs        r@�$test_memoryview_from_static_exporterz7TestBufferProtocol.test_memoryview_from_static_exporter�sZ����)��	
���)�[�!�Q��:�
�M���q�M�����A�1��C�$��2�$����	�	��r��A����Q�q�T�1�%��
�
��M���q�M��
�
��M���A�m�,���A�m�,���q�M���
�
�a�e�e�Q���
�
�a�e�e�Q�����A�1��C�$��2�$����	�	�
�q�!�Q��M���A�m�;�?���A�m�;�?���q�M���
�
�a�e�e�Q���
�
�a�e�e�Q���
�
�a�e�e�Q�����A�1��C�$��2�$����	�	�
�q�!�Q�
�D�)���q�M�����A�4��C�$��2�$����	�	��r��A����Q�q�T�1�%��
�
��D�)���q�M��
�
��D�)���A�m�,���A�m�,���q�M���
�
�a�e�e�T�"��
�
�a�e�e�Q�����A�1��C�$��2�$����	�	�
�q�!�Q��D�)���A�m�;�?���A�m�;�?���q�M��	
�
�
�a�e�e�T�"��
�
�a�e�e�Q���
�
�a�e�e�Q�����A�1��C�$��2�$����	�	�
�q�!�Qrbc�r�tgd�dgttz��}|jtt
|�y)Nr�r[r�)r
r��ND_GETBUF_UNDEFINEDrtr~rSrgs  r@�#test_memoryview_getbuffer_undefinedz6TestBufferProtocol.test_memoryview_getbuffer_undefinedJs,���W�q�c��8K�)K�
L�����+�z�2�6rbc�d�tgd�dgt��}|jtt|�y)Nr�r[r�)r
r�rtr~rS)rbr`s  r@�test_issue_7385z"TestBufferProtocol.test_issue_7385Ps$���G�A�3�n�=�����+�z�1�5rbc��dD]:}|jtj|�tj|���<y)N)rB�ii�3s)rr�	_testcapi�PyBuffer_SizeFromFormatr:r�)rbrs  r@�test_pybuffer_size_from_formatz1TestBufferProtocol.test_pybuffer_size_from_formatTs5��'�F����Y�>�>�v�F�#�_�_�V�4�
6�'rbN�F)Vr�r�r�rcr�r�r�requires_resourcer�r�r�r�r�r�r�rr
rrrrrr!r)r+r3r5r=r@rIrMrZr\rbrdrhrkrmrorqrvr|r�r�r�r�r�r�r�r�r�r�r�r��
contextlib�contextmanagerrrr"r%r3rArJrTrXrZr\rcrhrtrvrxr~r�r�r�r�r�r�r�r�r�r�r��cpython_onlyr�r�rbr@r]r]s@��1�"'�U�J�X.,�`�W���u�%�g<�&�g<�R\=�|� $�
'�3�*=�+)�Z%L�N6�4E�..�`,1�\H�>-�&W7�r<�(D�@!@�F4/�l>�B'0�R3�8<E�|(�I�&;�/�
$�>�2�
0�#7�Jn8�`sQ�j-�$�'�'�L�?�62�p5�q@�f:.�x�W���u�%�R0�&�R0�h9�<3�A����I��I�3A�jkI�Z6&�p<?�|3=�j=!�~F+�P�4�4(�8<�|F�P_"�B"�4�6�B&�:&!�P!8�Fs(�j)�<:2�x~"�@-�0\�|7�6�
���6��6rbr]c��eZdZd�Zd�Zd�Zd�Zd�Zd�Ze	jedud�d	��Zd
�Z
d�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zy)�TestPythonBufferProtocolc��Gd�d�}t|��}|j|j�d�|jt|��d�y)Nc��eZdZd�Zy)�5TestPythonBufferProtocol.test_basic.<locals>.MyBufferc��td�S�Nr{r��rbrs  r@�
__buffer__z@TestPythonBufferProtocol.test_basic.<locals>.MyBuffer.__buffer___�
��!�(�+�+rbN�r�r�r�r�r�rbr@�MyBufferr�^���
,rbr�r{)rSrrr/rZ)rbr�rs   r@�
test_basicz#TestPythonBufferProtocol.test_basic]sG��	,�	,���
�
#���������x�0�����x�z�*�H�5rbc��Gd�d�}|jtt|��Gd�d�}|jtt|��Gd�d�}|jtt|��y)Nc��eZdZd�Zy)�ETestPythonBufferProtocol.test_bad_buffer_method.<locals>.MustReturnMVc��y)Nrr�r�s  r@r�zPTestPythonBufferProtocol.test_bad_buffer_method.<locals>.MustReturnMV.__buffer__hs��rbNr�r�rbr@�MustReturnMVr�gs��
rbr�c��eZdZd�Zy)�FTestPythonBufferProtocol.test_bad_buffer_method.<locals>.NoBytesEitherc��yr�r�r�s  r@r�zQTestPythonBufferProtocol.test_bad_buffer_method.<locals>.NoBytesEither.__buffer__ns��rbNr�r�rbr@�
NoBytesEitherr�ms��
 rbr�c��eZdZd�Zy)�CTestPythonBufferProtocol.test_bad_buffer_method.<locals>.WrongArityc��td�Sr�r�ras r@r�zNTestPythonBufferProtocol.test_bad_buffer_method.<locals>.WrongArity.__buffer__tr�rbNr�r�rbr@�
WrongArityr�sr�rbr�)rtrRrS)rbr�r�r�s    r@�test_bad_buffer_methodz/TestPythonBufferProtocol.test_bad_buffer_methodfsb��	�	�	
���)�Z���@�	 �	 �	
���)�Z���A�	,�	,�	
���)�Z���>rbc�H�Gd�d�}|�}|j|j�t|�5}|j|j�|j	|j�d�ddd�|j|j�y#1swY�%xYw)Nc��eZdZd�Zd�Zd�Zy)�CTestPythonBufferProtocol.test_release_buffer.<locals>.WhatToReleasec�2�d|_td�|_y�NFr{)�heldr%�baras r@r�zLTestPythonBufferProtocol.test_release_buffer.<locals>.WhatToRelease.__init__{s��!��	�#�H�-��rbc�h�|jrtd��d|_t|j�S�Nzalready heldT)r�rRrSr�r�s  r@r�zNTestPythonBufferProtocol.test_release_buffer.<locals>.WhatToRelease.__buffer__s*���9�9�#�N�3�3� ��	�!�$�'�'�*�*rbc��d|_y�NF�r��rbr#s  r@�__release_buffer__zVTestPythonBufferProtocol.test_release_buffer.<locals>.WhatToRelease.__release_buffer__�s	��!��	rbN�r�r�r�r�r�r�r�rbr@�
WhatToReleaser�zs��
.�
+�
"rbr�r{�rKr�rSr�rrr/�rbr��wrrs    r@�test_release_bufferz,TestPythonBufferProtocol.test_release_bufferysw��	"�	"��_��������!�
��^�r��O�O�B�G�G�$����R�Z�Z�\�8�4��	
������!��^���<B�B!c�H�Gd�d�}|�}|j|j�t|�5}|j|j�|j	|j�d�ddd�|j|j�y#1swY�%xYw)Nc��eZdZd�Zd�Zd�Zy)�ITestPythonBufferProtocol.test_same_buffer_returned.<locals>.WhatToReleasec�@�d|_td�|_d|_yr�)r�r%r��
created_mvras r@r�zRTestPythonBufferProtocol.test_same_buffer_returned.<locals>.WhatToRelease.__init__�s��!��	�#�H�-���"&��rbc��|jrtd��d|_t|j�|_|jSr�)r�rRrSr�r�r�s  r@r�zTTestPythonBufferProtocol.test_same_buffer_returned.<locals>.WhatToRelease.__buffer__�s5���9�9�#�N�3�3� ��	�",�T�W�W�"5������&rbc��d|_yr�r�r�s  r@r�z\TestPythonBufferProtocol.test_same_buffer_returned.<locals>.WhatToRelease.__release_buffer__�s	��!��	rbNr�r�rbr@r�r��s��
'�

'�
"rbr�r{r�r�s    r@�test_same_buffer_returnedz2TestPythonBufferProtocol.test_same_buffer_returned�sw��	"�	"�"�_��������!�
��^�r��O�O�B�G�G�$����R�Z�Z�\�8�4��	
������!��^�r�c�4�Gd�d�}|dd�}|dd�}tj|tjj�5}|j|j
�d�td�|d<|j|j
�d�ddd�tj|tjj�5}|j|j
�d�|jt�5td	�|d<ddd�|j|j
�d�ddd�tj|tjj�5}|j|j
�d�|jt�5td�|d<ddd�|j|j
�d�ddd�|jt�5tj|tjj�ddd�t|�5}|j|j
�d�|jt�5td�|d<ddd�|j|j
�d�ddd�y#1swY��xYw#1swY���xYw#1swY���xYw#1swY��&xYw#1swY��xYw#1swY��xYw#1swY�xYw#1swYyxYw)
Nc��eZdZdd�Zd�Zy)�CTestPythonBufferProtocol.test_buffer_flags.<locals>.PossiblyMutableNc�2�t|�|_||_yr�)r%�_data�_mutable)rb�data�mutables   r@r�zLTestPythonBufferProtocol.test_buffer_flags.<locals>.PossiblyMutable.__init__�s��&�t�_��
� '��
rbc���|tjjzr,|jst	d��t|j�Stt|j��S)Nznot mutable)�inspect�BufferFlags�WRITABLEr�rrSr�rZr�s  r@r�zNTestPythonBufferProtocol.test_buffer_flags.<locals>.PossiblyMutable.__buffer__�sK���7�.�.�7�7�7��=�=�*�=�9�9�%�d�j�j�1�1�%�e�D�J�J�&7�8�8rb)�returnN)r�r�r�r�r�r�rbr@�PossiblyMutabler��s��
(�
9rbr�r{TFrrsxello�h)rS�_from_flagsr�r�r�rrr/r��SIMPLErtrRr)rbr�r��	immutablers     r@�test_buffer_flagsz*TestPythonBufferProtocol.test_buffer_flags�sA��	9�	9�"�(�D�1��#�H�e�4�	�
�
#�
#�G�W�-@�-@�-I�-I�
J�b����R�Z�Z�\�8�4���I�B�q�E����R�Z�Z�\�8�4�K��
#�
#�G�W�-@�-@�-G�-G�
H�B����R�Z�Z�\�8�4��"�"�9�-��D�	��1��.����R�Z�Z�\�8�4�	I�
�
#�
#�I�w�/B�/B�/I�/I�
J�b����R�Z�Z�\�8�4��"�"�9�-��D�	��1��.����R�Z�Z�\�8�4�	K��
�
�|�
,��"�"�9�g�.A�.A�.J�.J�K�-�
�	�
"�b����R�Z�Z�\�8�4��"�"�9�-��D�	��1��.����R�Z�Z�\�8�4�	#�
"�#K�
J��.�-��I�
H��.�-��K�
J��-�
,��.�-��#�
"�s��AJ5�6K�K�(K�36K)�)K�8(K)�=/K6�?6L�5L�(L�5J?�K	�K�K�K&	�!K)�)K3�6K?�L	�L�Lc�6�td�}|jd�}|j|j�d�|j	|�|jt�5|jtjdz�ddd�y#1swYyxYw)Nr{rr.)	r%r�rrr/r�rtr�rVr�)rbr�rs   r@�test_call_builtinsz+TestPythonBufferProtocol.test_call_builtins�sl��
�x�
 ��
�]�]�1�
���������x�0�
���b�!�
�
�
�}�
-��M�M�#�+�+��/�*�.�
-�
-�s�##B�BNzrequires _testcapic��tj�}|j|jd�|j	d�}|j|t�|j|j�d�|j|jd�|j|�|j|jd�|jt�5|j�ddd�|jt�5|j|�ddd�|j|jd�y#1swY�UxYw#1swY�2xYw)Nrstestr.)r��testBufrr�
referencesr��assertIsInstancerSr/r�rtr�)rbr)rs   r@�
test_c_bufferz&TestPythonBufferProtocol.test_c_buffer�s������!���������+�
�^�^�A�
�����b�*�-��������w�/��������+����r�"��������+�
�
�
�z�
*��J�J�L�+��
�
�z�
*��"�"�2�&�+��������+�+�
*��+�
*�s�D;�E�;E�Ec��Gd�dt�}|d�}t|�}|j|j�d�y)Nc���eZdZ�fd�Z�xZS)�4TestPythonBufferProtocol.test_inheritance.<locals>.Ac�"��t�|�|�Sr���superr��rbrr/s  �r@r�z?TestPythonBufferProtocol.test_inheritance.<locals>.A.__buffer__������w�)�%�0�0rb�r�r�r�r��
__classcell__�r/s@r@rjr
��
���
1�
1rbrjr{�r%rSrrr/)rbrjrLrs    r@�test_inheritancez)TestPythonBufferProtocol.test_inheritance�s8��	1�	�	1�
�h�K��
��]���������x�0rbc���d�G�fd�dt�}|d�}t|�5}|j|j�d�|j�d�ddd�|j�d�y#1swY�xYw)Nrc�,���eZdZ�fd�Z��fd�Z�xZS)�BTestPythonBufferProtocol.test_inheritance_releasebuffer.<locals>.Bc�"��t�|�|�Sr�rrs  �r@r�zMTestPythonBufferProtocol.test_inheritance_releasebuffer.<locals>.B.__buffer__�rrbc�.���dz
�t�|�|�y)Nr.�r
r�)rb�viewr/�
rb_call_counts  ��r@r�zUTestPythonBufferProtocol.test_inheritance_releasebuffer.<locals>.B.__release_buffer__�s�����"�
���*�4�0rb�r�r�r�r�r�r)r/rs@�r@rr�s���
1�
1�
1rbrr{r.r)rbrrrrs    @r@�test_inheritance_releasebufferz7TestPythonBufferProtocol.test_inheritance_releasebuffer�sm����
�	1�	�	1�
�h�K��
��]�b����R�Z�Z�\�8�4����]�A�.��	
�����*��]�s�3A6�6A?c�����Gd�dt�}|d�}t|�5}|j|j�d�ddd�d�d�G��fd�dt�}|d�}t|�5}|j|j�d�|j�d�ddd�|j�d�|j	�d	�y#1swY��xYw#1swY�:xYw)
Nc��eZdZd�Zy)�JTestPythonBufferProtocol.test_inherit_but_return_something_else.<locals>.Ac��td�Sr�r�r�s  r@r�zUTestPythonBufferProtocol.test_inherit_but_return_something_else.<locals>.A.__buffer__r�rbNr�r�rbr@rjr"r�rbrjr{rFc�*���eZdZd�Z���fd�Z�xZS)�JTestPythonBufferProtocol.test_inherit_but_return_something_else.<locals>.Bc��td�Sr�r�r�s  r@r�zUTestPythonBufferProtocol.test_inherit_but_return_something_else.<locals>.B.__buffer__
r�rbc�R���dz
�	t�|�|�y#t$rd�YywxYw)Nr.T)r
r�r�)rbrr/r�	rb_raiseds  ���r@r�z]TestPythonBufferProtocol.test_inherit_but_return_something_else.<locals>.B.__release_buffer__s3�����"�
�%��G�.�t�4��!�%� $�I�%�s��&�&r)r/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����	,�	�	,�
�h�K��
��]�b����R�Z�Z�\�8�4���
��	�
	%�	�
	%�
�h�K��
��]�b����R�Z�Z�\�8�4����]�A�.��	
�����*��
�
�i��&�-�]��$�]�s�!C�73C#�C �#C,c��Gd�dt�}|d�}t|�5}|j|j�d�ddd�y#1swYyxYw)Nc���eZdZ�fd�Z�xZS)�>TestPythonBufferProtocol.test_override_only_release.<locals>.Cc�$��t�|�|�yr�r)rbr#r/s  �r@r�zQTestPythonBufferProtocol.test_override_only_release.<locals>.C.__release_buffer__!s�����*�6�2rb)r�r�r�r�rrs@r@r�r, s
���
3�
3rbr�r{r)rbr�rrs    r@�test_override_only_releasez3TestPythonBufferProtocol.test_override_only_releasesB��	3�	�	3�
�h�K��
��]�b����R�Z�Z�\�8�4��]�]�s�!A
�
Ac�T���d�G��fd�dt�}|d�}t|�5}�j|j�d�ddd�|j	��jt�5�j�ddd�y#1swY�HxYw#1swYyxYw)Nc�*���eZdZdef���fd�Z�xZS)�@TestPythonBufferProtocol.test_release_saves_reference.<locals>.Cr#c����jt�5t|�ddd��jt�5|jd�ddd��jt�5|j	�ddd��jt�5|ddddd��jt�5|jd�ddd�|��j
|j�d�t�|�%|�y#1swY��xYw#1swY��xYw#1swY��xYw#1swY��xYw#1swY�kxYw)Nrr.rr{)
rtr�rSrer�r�rrr/r
r�)r�r#r/rb�smuggled_buffers  ���r@r�zSTestPythonBufferProtocol.test_release_saves_reference.<locals>.C.__release_buffer__,s�����&�&�z�2��v�&�3��&�&�z�2��K�K��$�3��&�&�z�2��%�%�'�3��&�&�z�2��2�A�J�3��&�&�z�2��%�%�a�(�3�#)��� � ����!1�8�<���*�6�2�3�2��2�2��2�2��2�2��2�2�s;�D�D�/D$�D0�D<�D�D!�$D-�0D9�<E)r�r�r�rSr�r)r/rbr3s@��r@r�r1+s���
3�j�
3�
3rbr�r{)r%rSrrr/�clearrtr�)rbr�rrr3s`   @r@�test_release_saves_referencez5TestPythonBufferProtocol.test_release_saves_reference(s�����	3�	�	3�"
�h�K��
��]�b����R�Z�Z�\�8�4��	���	�
�
�
�z�
*��#�#�%�+�
*��]��+�
*�s�!B�8B�B�B'c����td��G�fd�d�}|�}t|�5}|j|j�d�ddd�|j|jj�d�|jt�5�j�ddd�|jj��j�y#1swY��xYw#1swY�@xYw)Nr{c���eZdZ�fd�Zd�Zy)�OTestPythonBufferProtocol.test_release_saves_reference_no_subclassing.<locals>.Cc���t��Sr�r�)rbrr�s  �r@r�zZTestPythonBufferProtocol.test_release_saves_reference_no_subclassing.<locals>.C.__buffer__Gs
���!�"�~�%rbc��||_yr��r#r�s  r@r�zbTestPythonBufferProtocol.test_release_saves_reference_no_subclassing.<locals>.C.__release_buffer__J�	��$��rbN�r�r�r�r�r�)r�s�r@r�r8Fs
���
&�
%rbr�)	r%rSrrr/r#rtr~r4r�)rbr�rrr�s    @r@�+test_release_saves_reference_no_subclassingzDTestPythonBufferProtocol.test_release_saves_reference_no_subclassingCs����
�x�
 ��	%�	%�
�C��
��]�b����R�Z�Z�\�8�4��������)�)�+�X�6�
�
�
�{�
+��H�H�J�,�	������
���
��]��,�
+�s�!C�C#�C �#C,c�4�Gd�d�}Gd�d|t�}|d�}t|�5}|j|j�d�ddd�Gd�d�}Gd	�d
|t�}|d�}t|�5}|j|j�d�ddd�|j	�|jt�5|jj�ddd�y#1swY��xYw#1swY�^xYw#1swYyxYw)Nc��eZdZd�Zy)�ITestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.Ac��td�S)N�hello Ar�r�s  r@r�zTTestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.A.__buffer__Ys
��!�*�-�-rbNr�r�rbr@rjrAXs��
.rbrjc���eZdZ�fd�Z�xZS)�ITestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.Bc�"��t�|�|�Sr�rrs  �r@r�zTTestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.B.__buffer__]rrbrrs@r@rrE\rrbrr{rCc��eZdZd�Zy)�PTestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.Releaserc��||_yr�r;r�s  r@r�zcTestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.Releaser.__release_buffer__er<rbN)r�r�r�r�r�rbr@�ReleaserrHds��
%rbrJc���eZdZ�fd�Z�xZS)�ITestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.Cc�"��t�|�|�Sr�rrs  �r@r�zTTestPythonBufferProtocol.test_multiple_inheritance_buffer_last.<locals>.C.__buffer__irrbrrs@r@r�rLhrrbr�shello C)r%rSrrr/r4rtr�r#�rbrjrrrrJr�rs        r@�%test_multiple_inheritance_buffer_lastz>TestPythonBufferProtocol.test_multiple_inheritance_buffer_lastWs���	.�	.�	1��9�	1�
�h�K��
��]�b����R�Z�Z�\�:�6��	%�	%�	1��)�	1�
�j�M��
��]�b����R�Z�Z�\�:�6��	���	�
�
�
�z�
*�
�H�H����+�
*��]���]��+�
*�s#�!C6�!D�D�6C?�D�Dc���Gd�d�}Gd�dt|�}|d�}t|�5}|j|j�d�ddd�Gd�d�}Gd�d	t|�}|d�}t|�5}|j|j�d�ddd�|j	�|j|jd�y#1swY��xYw#1swY�BxYw)
Nc��eZdZd�Zd�Zy)�QTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.Ac��td���Nzshould not be called�rr�s  r@r�z\TestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.A.__buffer__u���"�#9�:�:rbc��td��rTrUr�s  r@r�zdTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.A.__release_buffer__xrVrbNr=r�rbr@rjrRts��
;�
;rbrjc���eZdZ�fd�Z�xZS)�QTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.Bc�"��t�|�|�Sr�rrs  �r@r�z\TestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.B.__buffer__|rrbrrs@r@rrY{rrbrr{c��eZdZdZd�Zy)�XTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.ReleaserNc��||_yr�r;r�s  r@r�zkTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.Releaser.__release_buffer__�r<rb)r�r�r�r#r�r�rbr@rJr\�s���F�
%rbrJc���eZdZ�fd�Z�xZS)�QTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.Cc�"��t�|�|�Sr�rrs  �r@r�z\TestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raising.<locals>.C.__buffer__�rrbrrs@r@r�r_�rrbr�)r%rSrrr/r4rqr#rNs        r@�-test_multiple_inheritance_buffer_last_raisingzFTestPythonBufferProtocol.test_multiple_inheritance_buffer_last_raisingss���	;�	;�	1�	�1�	1�
�h�K��
��]�b����R�Z�Z�\�8�4��	%�	%�
	1�	�8�	1�
�h�K��
��]�b����R�Z�Z�\�8�4��	���	��
�
�a�h�h��%�!�]���]�s�!C�!C&�C#�&C/c���Gd�d�}td�}t|�5|jt�5|j	|��ddd�ddd�y#1swY�xYw#1swYyxYw)Nc��eZdZd�Zd�Zy)�JTestPythonBufferProtocol.test_release_buffer_with_exception_set.<locals>.Ac�*�ttd��S)Nr8)rSrZr�s  r@r�zUTestPythonBufferProtocol.test_release_buffer_with_exception_set.<locals>.A.__buffer__�s��!�%��(�+�+rbc��yr�r�)rbrs  r@r�z]TestPythonBufferProtocol.test_release_buffer_with_exception_set.<locals>.A.__release_buffer__�s��rbNr=r�rbr@rjrd�s��
,�
rbrjr8)r%rSrtr~r})rbrjrs   r@�&test_release_buffer_with_exception_setz?TestPythonBufferProtocol.test_release_buffer_with_exception_set�sT��	�	�
�a�L��
��]��"�"�;�/������
�0��]�/�/���]�s"�A+�A�A+�A(	�$A+�+A4)r�r�r�r�r�r�r�rr�unittest�skipIfr�rrrr)r.r5r>rOrargr�rbr@r�r�\su��6�?�&"�,"�2%5�N+��X�_�_�Y�$�&�(<�=�,�>�,� 1�+� '�<5�&�6�(�8&�>rbr��__main__)r
NN)r�r6r�)r�r6)rr�r�)r�)kr�rh�testr�test.supportrr��	itertoolsrr�randomrrr	�warningsrVrQr��os�decimalr
�	fractionsr�_testbuffer�ImportErrorr
r:r��EnvironmentVarGuard�environ�catch_warningsrRr(r��
SHORT_TEST�NATIVEr;r<�STANDARDrArYr=�copyr��ARRAYr�BYTEFMTrsrurrrarjrnr}rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr!r*r4r8r:r<r@r�rIrMrZr?rCrD�
skipUnless�TestCaser]r�r��main)rs0r@�<module>r�s6�� ���"��+�,�,�������������	&��	&�	&�	(�B�J�	 ��	 �	 �	"�0�
#�
)���
�
�
���
��q�
��a�
��Q�
���
��q�
��a�
��Q�
���
��q�
��a�
��Q�
���	
��q�	
��a�	
��Q�	
����s���s��	�
�����C��!���s����s��	�y��y��z��z��z��z��0��d�7��Q��W��	���.������
��
��s�|��-�c�2����S����[�[�]�
�	���
��	�A�����!�H�
��+�+�-��	�A���:��A�J�
��������
������������
�	����.�0C�D�����5�����5������5������5���
� -����0�(�2�$�&�c�l�D�l��.��2C�1�l�D��%�!�
�
����
�
�
�
�0��C�I��,
�2�<?�4�

��=:�~
�
*�):�V9�;�1�@�B	8� C��
0�%�
	3�!�
�&�
�	
��
��
��J�
�F��H��I�!�N��L�����V�D�E�����W�E�F�T96��*�*�T96�G�F�T96�nrA�x�0�0�A�H
�z���H�M�M�O���ET���G���
��
�F���
��
�F���

#�	"��
)�	(�����K���
���I���<�<�<�
��
��LEs��K>�L�L�M�-L5�L(�L5�M�M�M�-
M4�;M4�>L	�L	�L�L�L%�$L%�(L2	�-L5�5L?�:M�M
�M
�M�M�M1�0M1

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists