a
    ³ÐOcš=  ã                	   @   sD  d dl Z d dlmZ d dlZd dlZddlmZmZm	Z	m
Z
mZmZ ddlmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZ dd„ Zd	d
„ Zdd„ Zdd„ Z dd„ Z!dd„ Z"dd„ Z#dd„ Z$dd„ Z%ej& 'dg d¢¡ej& 'dg d¢¡dd„ ƒƒZ(dd „ Z)ej& 'd!e*d"ƒe*d"d ƒed#ƒed d$gƒg¡d%d&„ ƒZ+d'd(„ Z,dS ))é    N)Úassert_raisesé   )ÚonesÚasarrayÚreshapeÚresult_typeÚallÚequal)ÚArray)Ú_all_dtypesÚ_boolean_dtypesÚ_floating_dtypesÚ_integer_dtypesÚ_integer_or_boolean_dtypesÚ_numeric_dtypesÚint8Úint16Úint32Úint64Úuint64Úboolc                      sL  t dƒ‰ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fd	d„ƒ tt‡ fd
d„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tddggƒ‰tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fd d„ƒ tt‡ fd!d„ƒ tt‡ fd"d„ƒ tt‡ fd#d„ƒ d S )$N©é   é   c                      s   ˆ d d… S ©Nr   © r   ©Úar   ú^/var/www/html/gsl.tools/lib/python3.9/site-packages/numpy/array_api/tests/test_array_object.pyÚ<lambda>)   ó    z%test_validate_index.<locals>.<lambda>c                      s   ˆ d d… S ©Néüÿÿÿr   r   r   r   r   r   *   r    c                      s   ˆ d dd… S )Nr   éÿÿÿÿr   r   r   r   r   r   +   r    c                      s   ˆ d dd… S )Néûÿÿÿr#   r   r   r   r   r   r   ,   r    c                      s   ˆ dd … S r   r   r   r   r   r   r   -   r    c                      s   ˆ dd … S r!   r   r   r   r   r   r   .   r    c                      s   ˆ dd d… S )Nr   r#   r   r   r   r   r   r   /   r    c                      s   ˆ dd d… S )Nr"   r#   r   r   r   r   r   r   0   r    c                      s   ˆ dd d…f S ©N.é   r   r   r   r   r   r   2   r    c                      s   ˆ dd d…f S ©N.r$   r   r   r   r   r   r   3   r    c                      s   ˆ dd dd…f S ©N.r&   r#   r   r   r   r   r   r   4   r    c                      s   ˆ dd dd…f S )N.iúÿÿÿr#   r   r   r   r   r   r   5   r    c                      s   ˆ ddd …f S r%   r   r   r   r   r   r   6   r    c                      s   ˆ ddd …f S r'   r   r   r   r   r   r   7   r    c                      s   ˆ ddd d…f S r(   r   r   r   r   r   r   8   r    c                      s   ˆ ddd d…f S )N.r$   r#   r   r   r   r   r   r   9   r    c                      s   ˆ ˆ d d …df dkdf S ©Nr   é   r   r   r   r   r   r   <   r    c                      s   ˆ ˆ d d …df dkdf S )Nr   r*   .r   r   r   r   r   r   =   r    c                      s   ˆ dˆ d dkf S )N.r   r*   r   r   r   r   r   r   >   r    c                      s   ˆ g d¢ S )N©TTTr   r   r   r   r   r   ?   r    c                      s   ˆ d S )N)r+   r   r   r   r   r   r   @   r    r   r*   c                      s   ˆ ˆ S ©Nr   r   ©r   Úidxr   r   r   D   r    c                      s
   ˆ ˆf S r,   r   r   r-   r   r   r   E   r    c                      s   ˆ ddg S r)   r   r   r   r   r   r   F   r    c                      s   ˆ d S )N)©r   r*   r/   r   r   r   r   r   r   G   r    c                      s   ˆ ddg S r)   r   r   r   r   r   r   H   r    c                      s   ˆ t  ddgg¡ S r)   )ÚnpÚarrayr   r   r   r   r   I   r    c                      s   ˆ d S )Nr   r   r   r   r   r   r   L   r    c                      s   ˆ d S )N©r   r   r   r   r   r   r   M   r    c                      s   ˆ d S ©Nr   r   r   r   r   r   r   N   r    c                      s   ˆ d d … S r,   r   r   r   r   r   r   O   r    )r   r   Ú
IndexErrorr   r   r   r-   r   Útest_validate_index   sB    r5   c                     sB  dddddddddddddddddddœ} dd„ ‰ |   ¡ D �]Ä\‰}ˆg}ˆd	vr~d
ˆdd …  }dˆdd …  }|||g7 }dD �]z‰|D �]n‰ˆ ƒ D ]ì‰|dk�s|dkrºˆjtv �s|dkrÎˆjtv �s|dkrâˆjtv �s|dkröˆjtv �s|dk�rnˆjtv �rnˆjtv �r&tˆƒtk�s^ˆjtv �r@tˆƒt	k�s^ˆjtv �rntˆƒt
t	fv �rntˆˆƒˆƒ q˜tt‡‡‡fdd„ƒ q˜|D �]n‰ˆ ƒ D �]^‰ˆ ƒ D �]N‰ˆjtk�rÈˆjttttfv �sxˆjtk�rèˆjttttfv �sxˆjtv �r ˆjtv�sxˆjtv �rˆjtv�sxˆjtv �r0ˆjtv�sxˆjtv �rHˆjtv�sxˆjtv �r`ˆjtv�sxˆjtv �r’ˆjtv�r’tt‡‡‡fdd„ƒ �q¢ˆ d¡�rÎtˆjˆjƒˆjk�rÎtt‡‡‡fdd„ƒ �q¢|dk�rˆjtv �rðˆjtv �sÊˆjtv �rˆjtv �sÊ|dk�r*ˆjtv �r*ˆjtv �sÊ|dk�rLˆjtv �rLˆjtv �sÊ|dk�r†ˆjtv �rnˆjtv �sÊˆjtv �r†ˆjtv �sÊ|dk�r¨ˆjtv �r¨ˆjtv �sÊ|dk�rÚˆjtv �rÚˆjtv �rÚtˆˆƒˆƒ ntt‡‡‡fdd„ƒ �q¢�q–�qŠqŒq‚q:dddddœ}|  ¡ D ]f\‰}ˆ ƒ D ]T‰|dk�r@ˆjtv �sV|dk�rdˆjtv �rdtˆˆƒƒ  ntt‡‡fdd„ƒ �q&�q‡ fdd„}dD ]†‰dD ]z‰|ƒ D ]l‰tˆƒt
t	fv �rÄˆjtv �sÞtˆƒt	k�röˆjtv �rött‡‡‡fdd„ƒ ntt‡‡‡fdd„ƒ �q¢�q˜�q�|ƒ D �]‰|ƒ D �]‰ˆjtk�rPˆjttttfv �sèˆjtk�rpˆjttttfv �sèˆjtv �rˆˆjtv�sèˆjtv �r ˆjtv�sèˆjtv �r¸ˆjtv�sèˆjtv �rÐˆjtv�sèˆjtv �sèˆjtv �r(tt‡‡fdd„ƒ tt‡‡fdd„ƒ tt‡‡fdd„ƒ �q*ˆjdk�sVˆjdk�sVˆjd ˆjd  k�rÀtt‡‡fd!d„ƒ tt‡‡fd"d„ƒ tˆjˆjƒˆjk�rªtt‡‡fd#d„ƒ ntt‡‡fd$d„ƒ nvˆ ˆ¡ ˆ ˆ¡ tˆjˆjƒˆjk�r tt‡‡fd%d„ƒ n6ˆjd  ˆjd k�r,tt‡‡fd&d„ƒ n
ˆ ˆ¡ �q*�qd S )'NÚnumericZinteger_or_booleanr   ÚintegerZfloating)Ú__add__Ú__and__Ú__eq__Ú__floordiv__Ú__ge__Ú__gt__Ú__le__Ú
__lshift__Ú__lt__Ú__mod__Ú__mul__Ú__ne__Ú__or__Ú__pow__Ú
__rshift__Ú__sub__Ú__truediv__Ú__xor__c                  s   sL   t D ]} td| d�V  qtD ]} td| d�V  qtD ]} td| d�V  q4d S )Nr*   ©ÚdtypeFç      ð?)r   r   r   r   )Údr   r   r   Ú_array_valsj   s    z#test_operators.<locals>._array_vals)r:   rC   r>   r<   r@   r=   Z__rr   Z__i)r*   rL   FÚbooleanc                      s   t ˆˆ ƒˆƒS r,   ©Úgetattrr   ©Ú_opr   Úsr   r   r   •   r    z test_operators.<locals>.<lambda>c                      s   t ˆˆ ƒˆƒS r,   rP   r   ©rS   ÚxÚyr   r   r   §   r    c                      s   t ˆˆ ƒˆƒS r,   rP   r   rU   r   r   r   ­   r    c                      s   t ˆˆ ƒˆƒS r,   rP   r   rU   r   r   r   º   r    )Ú__abs__Ú
__invert__Ú__neg__Ú__pos__c                      s   t ˆ ˆƒƒ S r,   rP   r   )r   Úopr   r   r   Í   r    c                  3   sJ   ˆ ƒ D ]
} | V  qt D ].}td|d�V  td|d�V  td|d�V  qd S )Nr   rJ   )r   r   )r   r   )r   r   )r   rM   )rN   r   r   Ú_matmul_array_valsÑ   s    
z*test_operators.<locals>._matmul_array_vals)Ú
__matmul__Ú__rmatmul__Ú__imatmul__c                      s   t ˆˆ ƒˆƒS r,   rP   r   rR   r   r   r   á   r    c                      s   t ˆˆ ƒˆƒS r,   rP   r   rR   r   r   r   ã   r    c                      s
   ˆ   ˆ¡S r,   ©r^   r   ©rV   rW   r   r   r   ð   r    c                      s
   ˆ  ˆ ¡S r,   ©r_   r   rb   r   r   r   ñ   r    c                      s
   ˆ   ˆ¡S r,   ©r`   r   rb   r   r   r   ò   r    r   r*   r   c                      s
   ˆ   ˆ¡S r,   ra   r   rb   r   r   r   ô   r    c                      s
   ˆ  ˆ ¡S r,   rc   r   rb   r   r   r   õ   r    c                      s
   ˆ   ˆ¡S r,   rd   r   rb   r   r   r   ÷   r    c                      s
   ˆ   ˆ¡S r,   rd   r   rb   r   r   r   ù   r    c                      s
   ˆ   ˆ¡S r,   rd   r   rb   r   r   r   þ   r    c                      s
   ˆ   ˆ¡S r,   rd   r   rb   r   r   r     r    )ÚitemsrK   r   r   r   r   r   Útyper   ÚintÚfloatrQ   r   Ú	TypeErrorr   r   r   r   r   Ú
startswithr   Ú
ValueErrorÚshaper^   r_   r`   )Zbinary_op_dtypesZdtypesÚopsZropZiopZunary_op_dtypesr]   r   )rN   rS   r   r\   rT   rV   rW   r   Útest_operatorsQ   s¬   î



ÿÿþþýýüüûû	÷	
÷
ö

öõõ
 ÿÿþþýýüüûûúúùù	ÿþ"ÿÿþþþýýýüüüûûúúúùùù	(ü
ÿþýü	

ÿÿ" ÿÿþþýýüüûûúù	.

rn   c                      s&  t dƒ‰ t dƒ‰t dƒ‰tˆ ƒdks(J ‚tˆƒdks8J ‚tˆƒdksHJ ‚t ˆ¡dksZJ ‚ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ tt‡fd	d„ƒ tt‡fd
d„ƒ tt‡ fdd„ƒ tt‡fdd„ƒ tt‡ fdd„ƒ tt‡fdd„ƒ tt‡ fdd„ƒ tt‡fdd„ƒ d S )NFr   ç        c                   S   s   t tdgƒƒS )NF)r   r   r   r   r   r   r     r    z0test_python_scalar_construtors.<locals>.<lambda>c                   S   s   t tdgƒƒS r3   )rg   r   r   r   r   r   r     r    c                   S   s   t tdgƒƒS )Nro   )rh   r   r   r   r   r   r     r    c                   S   s   t  tdgƒ¡S r3   )ÚoperatorÚindexr   r   r   r   r   r     r    c                      s   t ˆ ƒS r,   ©r   r   ©Úir   r   r     r    c                      s   t ˆ ƒS r,   rr   r   ©Úfr   r   r     r    c                      s   t ˆ ƒS r,   ©rg   r   ©Úbr   r   r     r    c                      s   t ˆ ƒS r,   rw   r   ru   r   r   r     r    c                      s   t ˆ ƒS r,   ©rh   r   rx   r   r   r     r    c                      s   t ˆ ƒS r,   rz   r   rs   r   r   r     r    c                      s
   t  ˆ ¡S r,   ©rp   rq   r   rx   r   r   r   !  r    c                      s
   t  ˆ ¡S r,   r{   r   ru   r   r   r   "  r    )	r   r   rg   rh   rp   rq   r   ri   rk   r   r   )ry   rv   rt   r   Útest_python_scalar_construtors  s&    r|   c                      sp   t dƒ‰ ˆ jdksJ ‚ttˆ  d¡ˆ ƒƒs.J ‚tt‡ fdd„ƒ tttˆ dd�ˆ ƒƒsZJ ‚tt‡ fdd„ƒ d S )Nr   Úcpuc                      s
   ˆ   d¡S )NÚgpu)Ú	to_devicer   r   r   r   r   *  r    z&test_device_property.<locals>.<lambda>©Údevicec                      s   t ˆ dd�S )Nr~   r€   )r   r   r   r   r   r   -  r    )r   r�   r   r	   r   r   rk   r   r   r   r   r   Útest_device_property%  s    r‚   c                     s†   t dƒ‰ t dƒ} tt‡ fdd„ƒ t| jtƒs2J ‚| jjdksBJ ‚tˆ jtƒsRJ ‚ˆ jjdksbJ ‚t| jtƒsrJ ‚| jjdks‚J ‚d S )N)r*   r   r   ©r   r   c                      s   ˆ j S r,   )ÚTr   r   r   r   r   2  r    z'test_array_properties.<locals>.<lambda>)r   r   )r*   r   r   )r   r   rk   Ú
isinstancer„   r
   rl   ZmTrx   r   r   r   Útest_array_properties/  s    r†   c               	   C   sf   t dtd�} t | ¡| ju s J ‚tj| tjd�}t t |tj dtjd�¡¡sRJ ‚|jtjksbJ ‚d S )Nrƒ   rJ   )	r   r   r0   r   Z_arrayÚfloat64r   r	   rK   )r   ry   r   r   r   Útest___array__<  s
    "rˆ   c                  C   s*   t dƒ} | d d d …f }|jdks&J ‚d S )Nr&   )r*   r&   )r   rl   )r   Z	indexed_ar   r   r   Útest_allow_newaxisC  s    r‰   c                  C   s>   t dƒ} t t¡� | d  W d   ƒ n1 s00    Y  d S )N©r   r   r   )Nr   r   ©r   ÚpytestÚraisesr4   r   r   r   r   Ú(test_disallow_flat_indexing_with_newaxisH  s    rŽ   c                  C   sF   t dƒ} t t¡�  | d tdƒf  W d   ƒ n1 s80    Y  d S )NrŠ   T)r   rŒ   r�   r4   r   r   r   r   r   Útest_disallow_mask_with_newaxisM  s    r�   rl   )r   )r&   rŠ   rq   )ÚstringFTc                 C   s>   t | ƒ}t t¡� ||  W d   ƒ n1 s00    Y  d S r,   r‹   )rl   rq   r   r   r   r   Útest_error_on_invalid_indexR  s    r‘   c                  C   s   t dƒ} | tdƒ  d S )Nr   T)r   r   r   r   r   r   Ú!test_mask_0d_array_without_errorsY  s    r’   rt   r&   Tr*   c                 C   sx   t dƒ}t t¡� |d| f  W d   ƒ n1 s40    Y  t t¡� || df  W d   ƒ n1 sj0    Y  d S )NrŠ   .r‹   )rt   r   r   r   r   Ú)test_error_on_invalid_index_with_ellipsis]  s
    *r“   c                  C   sl   t dtd�} | |  jdksJ ‚t dtd�} t dtd�}t t¡� | |  W d  ƒ n1 s^0    Y  dS )ap  
    Indexing operations convert array keys before indexing the internal array

    Fails when array_api array keys are not converted into NumPy-proper arrays
    in __getitem__(). This is achieved by passing array_api arrays with 0-sized
    dimensions, which NumPy-proper treats erroneously - not sure why!

    TODO: Find and use appropiate __setitem__() case.
    )r   r   rJ   r2   N)r   Úbool_rl   rŒ   r�   r4   )r   Úkeyr   r   r   Ú!test_array_keys_use_private_arrayg  s    
r–   )-rp   Znumpy.testingr   Únumpyr0   rŒ   Ú r   r   r   r   r   r	   Z_array_objectr
   Z_dtypesr   r   r   r   r   r   r   r   r   r   r   r   r”   r5   rn   r|   r‚   r†   rˆ   r‰   rŽ   r�   ÚmarkZparametrizer‘   r’   Úslicer“   r–   r   r   r   r   Ú<module>   s2    88 6
"ÿ
