o
    —Je‹B  ã                	   @   sT  d dl Z d dlmZ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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(„ Z0dS ))é    N)Úassert_raisesÚsuppress_warningsé   )ÚonesÚasarrayÚreshapeÚresult_typeÚallÚequal)ÚArray)Ú_all_dtypesÚ_boolean_dtypesÚ_real_floating_dtypesÚ_floating_dtypesÚ_complex_floating_dtypesÚ_integer_dtypesÚ_integer_or_boolean_dtypesÚ_real_numeric_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                      ó   ˆ d d… S ©Nr   © r    ©Úar    úu/home/seandotau/au.memorygallery.club/gallery/lib/python3.10/site-packages/numpy/array_api/tests/test_array_object.pyÚ<lambda>,   ó    z%test_validate_index.<locals>.<lambda>c                      r   ©Néüÿÿÿr    r    r!   r    r#   r$   -   r%   c                      ó   ˆ d dd… S )Nr   éÿÿÿÿr    r    r!   r    r#   r$   .   ó    c                      r(   )Néûÿÿÿr)   r    r    r!   r    r#   r$   /   r*   c                      ó   ˆ dd … S r   r    r    r!   r    r#   r$   0   r%   c                      r,   r&   r    r    r!   r    r#   r$   1   r%   c                      ó   ˆ dd d… S )Nr   r)   r    r    r!   r    r#   r$   2   r*   c                      r-   )Nr'   r)   r    r    r!   r    r#   r$   3   r*   c                      ó   ˆ dd d…f S ©N.é   r    r    r!   r    r#   r$   5   ó    c                      r.   ©N.r+   r    r    r!   r    r#   r$   6   r1   c                      ó   ˆ dd dd…f S ©N.r0   r)   r    r    r!   r    r#   r$   7   ó    c                      r3   )N.iúÿÿÿr)   r    r    r!   r    r#   r$   8   r5   c                      ó   ˆ ddd …f S r/   r    r    r!   r    r#   r$   9   r1   c                      r6   r2   r    r    r!   r    r#   r$   :   r1   c                      ó   ˆ ddd d…f S r4   r    r    r!   r    r#   r$   ;   r5   c                      r7   )N.r+   r)   r    r    r!   r    r#   r$   <   r5   c                      s   ˆ ˆ d d …df dkdf S ©Nr   é   r    r    r!   r    r#   r$   ?   ó    c                      s   ˆ ˆ d d …df dkdf S )Nr   r9   .r    r    r!   r    r#   r$   @   r:   c                      s   ˆ dˆ d dkf S )N.r   r9   r    r    r!   r    r#   r$   A   ó    c                      s   ˆ g d¢ S )N©TTTr    r    r!   r    r#   r$   B   r%   c                      ó   ˆ d S )N)r<   r    r    r!   r    r#   r$   C   ó    r   r9   c                      s   ˆ ˆ S ©Nr    r    ©r"   Úidxr    r#   r$   G   r>   c                      s
   ˆ ˆf S r?   r    r    r@   r    r#   r$   H   ó   
 c                      ó   ˆ ddg S r8   r    r    r!   r    r#   r$   I   r%   c                      r=   )N)©r   r9   rD   r    r    r!   r    r#   r$   J   r>   c                      rC   r8   r    r    r!   r    r#   r$   K   r%   c                      s   ˆ t  ddgg¡ S r8   )ÚnpÚarrayr    r!   r    r#   r$   L   r;   c                      r=   )Nr    r    r    r!   r    r#   r$   O   r>   c                      r=   )N©r   r    r    r!   r    r#   r$   P   r>   c                      r=   ©Nr   r    r    r!   r    r#   r$   Q   r>   c                      s   ˆ d d … S r?   r    r    r!   r    r#   r$   R   r%   )r   r   Ú
IndexErrorr   r    r    r@   r#   Útest_validate_index   sB   rJ   c            	         sF  i dd“dd“dd“dd“d	d“d
d“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“ddi¥} dd„ ‰ t dƒ}|  ¡ D ]6\‰}ˆg}ˆdvrgdˆdd …  }dˆdd …  }|||g7 }d d!d"|d#fD ]‰|D ]‰ˆ ƒ 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r¬ˆjtv s·|dkr!ˆjtv r!ˆjtv rÂt	ˆƒt
ksêˆjtv rÍt	ˆƒt ksêˆjtv rÚt	ˆƒtt fv sêˆjtv r!t	ˆƒttt fv r!ˆjtv rÿˆ|krÿtt‡‡‡fd%d&„ƒ qytƒ }| td'¡ tˆˆƒˆƒ W d   ƒ n	1 sw   Y  qytt‡‡‡fd(d&„ƒ qy|D ]I‰ˆ ƒ D ]A‰ˆ ƒ D ]9‰ˆjtkrNˆjttttfv s¦ˆjtkr^ˆjttttfv s¦ˆjtv rjˆjtvs¦ˆjtv rvˆ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 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rˆ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 r2ˆjtv s`ˆjtv r>ˆjtv s`|d$krOˆjtv rOˆjtv s`|dkriˆjtv riˆjtv ritˆˆƒˆƒ q;tt‡‡‡fd+d&„ƒ q;q5q/qsqnqEddddd,œ}| ¡ D ]4\‰}ˆ ƒ D ]+‰|dkrœˆjtv s§|dkr¯ˆjtv r¯tˆˆƒƒ  qtt‡‡fd-d&„ƒ qqˆ‡ fd.d/„}d0D ]D‰d1D ]>‰|ƒ D ]7‰t	ˆƒtt fv rßˆjtv sìt	ˆƒt krùˆjtv rùtt‡‡‡fd2d&„ƒ qÎtt‡‡‡fd3d&„ƒ qÎqÉqÅ|ƒ D ]‰|ƒ D ]
‰ˆjtkr&ˆjttttfv srˆjtkr6ˆjttttfv srˆjtv rBˆjtvsrˆjtv rNˆjtvsrˆjtv rZˆjtvsrˆjtv rfˆjtvsrˆjtv srˆjtv r’tt‡‡fd4d&„ƒ tt‡‡fd5d&„ƒ tt‡‡fd6d&„ƒ qˆjd7ks©ˆjd7ks©ˆjd  ˆjd8 kràtt‡‡fd9d&„ƒ tt‡‡fd:d&„ƒ tˆjˆjƒˆjkrÔtt‡‡fd;d&„ƒ qtt‡‡fd<d&„ƒ qˆ ˆ¡ ˆ  ˆ¡ tˆjˆjƒˆjkrtt‡‡fd=d&„ƒ qˆjd8 ˆjd  krtt‡‡fd>d&„ƒ qˆ !ˆ¡ qqd S )?NÚ__add__ÚnumericÚ__and__Zinteger_or_booleanÚ__eq__r	   Ú__floordiv__zreal numericÚ__ge__Ú__gt__Ú__le__Ú
__lshift__ÚintegerÚ__lt__Ú__mod__Ú__mul__Ú__ne__Ú__or__Ú__pow__Ú
__rshift__Ú__sub__Ú__truediv__ZfloatingÚ__xor__c                  s   sN    t D ]	} td| dV  qtD ]	} td| dV  qtD ]	} td| dV  qd S )Nr9   ©ÚdtypeFç      ð?)r   r   r   r   )Údr    r    r#   Ú_array_valsl   s   €ÿz#test_operators.<locals>._array_valsgêŒ 9Y>)F)rN   rX   rR   rP   rU   rQ   Ú__rr   Z__ir9   ra   y              ð?FÚbooleanc                      ó   t ˆˆ ƒˆƒS r?   ©Úgetattrr    ©Ú_opr"   Úsr    r#   r$   —   r*   z test_operators.<locals>.<lambda>z"invalid value encountered in powerc                      rf   r?   rg   r    ri   r    r#   r$       r*   c                      rf   r?   rg   r    ©rj   ÚxÚyr    r#   r$   ²   r*   c                      rf   r?   rg   r    rl   r    r#   r$   ¸   r*   c                      rf   r?   rg   r    rl   r    r#   r$   Æ   r*   )Ú__abs__Ú
__invert__Ú__neg__Ú__pos__c                      s   t ˆ ˆƒƒ S r?   rg   r    )r"   Úopr    r#   r$   Ù   r%   c                  3   sL    ˆ ƒ D ]} | V  qt D ]}td|dV  td|dV  td|dV  qd S )Nr   r_   )r   r   )r   r   )r   r   )r"   rb   )rc   r    r#   Ú_matmul_array_valsÝ   s   €
ýz*test_operators.<locals>._matmul_array_vals)Ú
__matmul__Ú__rmatmul__Ú__imatmul__)r9   ra   Fc                      rf   r?   rg   r    ri   r    r#   r$   í   r*   c                      rf   r?   rg   r    ri   r    r#   r$   ï   r*   c                      ó
   ˆ   ˆ¡S r?   ©ru   r    ©rm   rn   r    r#   r$   ü   rB   c                      ó
   ˆ  ˆ ¡S r?   ©rv   r    rz   r    r#   r$   ý   rB   c                      rx   r?   ©rw   r    rz   r    r#   r$   þ   rB   r    r   c                      rx   r?   ry   r    rz   r    r#   r$      rB   c                      r{   r?   r|   r    rz   r    r#   r$     rB   c                      rx   r?   r}   r    rz   r    r#   r$     rB   c                      rx   r?   r}   r    rz   r    r#   r$     rB   c                      rx   r?   r}   r    rz   r    r#   r$   
  rB   c                      rx   r?   r}   r    rz   r    r#   r$     rB   )"ÚintÚitemsr`   r   r   r   r   r   r   Útyper   r   Úfloatr   Úcomplexr   ÚOverflowErrorr   ÚfilterÚRuntimeWarningrh   Ú	TypeErrorr   r   r   r   r   Ú
startswithr   Ú
ValueErrorÚshaperu   rv   rw   )	Zbinary_op_dtypesZBIG_INTZdtypesÚopsZropZiopÚsupZunary_op_dtypesrt   r    )rc   rj   r"   rs   rk   rm   rn   r#   Útest_operatorsT   s2  ÿþýüûúùø	÷
öõôóòñðïî	

	 ÿü€
  ÿ"""""""ßÿÿÚÿMü


ö	
ùÿ
  .

ãÿrŒ   c                     sü  t dƒ‰ t dƒ} t dƒ‰t dƒ‰tˆ ƒdksJ ‚t| ƒdks J ‚tˆƒdks(J ‚t | ¡dks1J ‚ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttd	d„ ƒ ttd
d„ ƒ tˆ ƒt| ƒ  u rqtˆƒ  u rqtˆƒ  u rqdu stJ ‚ J ‚tˆ ƒt| ƒ  krŠtˆƒ  krŠdksJ ‚ J ‚tt‡fdd„ƒ tˆ ƒt| ƒ  kr¬tˆƒ  kr¬dks¯J ‚ J ‚tt‡fdd„ƒ tˆ ƒt| ƒ  krÕtˆƒ  krÕtˆƒ  krÕdksØJ ‚ J ‚t | ¡dksáJ ‚tt‡ fdd„ƒ tt‡fdd„ƒ tt‡fdd„ƒ d S )NFr   ç        ù                c                   S   ó   t tdgƒƒS )NF)r   r   r    r    r    r#   r$     r*   z0test_python_scalar_construtors.<locals>.<lambda>c                   S   r   rH   )r~   r   r    r    r    r#   r$     r*   c                   S   r   )Nr   )r   r   r    r    r    r#   r$      r*   c                   S   r   )NrŽ   )r‚   r   r    r    r    r#   r$   !  r*   c                   S   s   t  tdgƒ¡S rH   )ÚoperatorÚindexr   r    r    r    r#   r$   "  r1   c                      ó   t ˆ ƒS r?   )r~   r    ©Úcr    r#   r$   )  r>   c                      r’   r?   )r   r    r“   r    r#   r$   -  r>   c                      ó
   t  ˆ ¡S r?   ©r   r‘   r    ©Úbr    r#   r$   4  rB   c                      r•   r?   r–   r    )Úfr    r#   r$   5  rB   c                      r•   r?   r–   r    r“   r    r#   r$   6  rB   )	r   r   r~   r   r   r‘   r   r†   r‚   )Úir    )r˜   r”   r™   r#   Útest_python_scalar_construtors  s.   @22@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ˆ ƒƒs-J ‚tt‡ fdd„ƒ d S )Nr   Úcpuc                      s
   ˆ   d¡S )NÚgpu)Ú	to_devicer    r!   r    r#   r$   >  rB   z&test_device_property.<locals>.<lambda>©Údevicec                      s   t ˆ ddS )Nr   rŸ   )r   r    r!   r    r#   r$   A  r%   )r   r    r	   r
   rž   r   rˆ   r   r    r    r!   r#   Útest_device_property9  s   r¡   c                     s†   t dƒ‰ t dƒ} tt‡ fdd„ƒ t| jtƒsJ ‚| jjdks!J ‚tˆ jtƒs)J ‚ˆ jjdks1J ‚t| jtƒs9J ‚| jjdksAJ ‚d S )N)r9   r   r   ©r   r   c                      s   ˆ j S r?   )ÚTr    r!   r    r#   r$   F  s    z'test_array_properties.<locals>.<lambda>)r   r   )r9   r   r   )r   r   rˆ   Ú
isinstancer£   r   r‰   ZmTr—   r    r!   r#   Útest_array_propertiesC  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¡¡s)J ‚|jtjks1J ‚d S )Nr¢   r_   )	r   r   rE   r   Z_arrayZfloat64r	   r
   r`   )r"   r˜   r    r    r#   Útest___array__P  s
   "r¦   c                  C   s*   t dƒ} | d d d …f }|jdksJ ‚d S )Nr0   )r9   r0   )r   r‰   )r"   Z	indexed_ar    r    r#   Útest_allow_newaxisW  s   r§   c                  C   s@   t dƒ} t t¡ | d  W d   ƒ d S 1 sw   Y  d S )N©r   r   r   )Nr   r   ©r   ÚpytestÚraisesrI   r!   r    r    r#   Ú(test_disallow_flat_indexing_with_newaxis\  s   
"ÿr¬   c                  C   sH   t dƒ} t t¡ | d tdƒf  W d   ƒ d S 1 sw   Y  d S )Nr¨   T)r   rª   r«   rI   r   r!   r    r    r#   Útest_disallow_mask_with_newaxisa  s   "ÿr­   r‰   )r    )r0   r¨   r‘   )ÚstringFTc                 C   s@   t | ƒ}t t¡ ||  W d   ƒ d S 1 sw   Y  d S r?   r©   )r‰   r‘   r"   r    r    r#   Útest_error_on_invalid_indexf  s   
"ÿr¯   c                  C   s   t dƒ} | tdƒ  d S )Nr    T)r   r   r!   r    r    r#   Ú!test_mask_0d_array_without_errorsm  s   r°   rš   r0   Tr9   c                 C   sz   t dƒ}t t¡ |d| f  W d   ƒ n1 sw   Y  t t¡ || df  W d   ƒ d S 1 s6w   Y  d S )Nr¨   .r©   )rš   r"   r    r    r#   Ú)test_error_on_invalid_index_with_ellipsisq  s   ÿ"ÿr±   c                  C   sn   t dtd} | |  jdksJ ‚t dtd} t dtd}t t¡ | |  W d  ƒ dS 1 s0w   Y  dS )aq  
    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 appropriate __setitem__() case.
    )r   r   r_   rG   N)r   Úbool_r‰   rª   r«   rI   )r"   Úkeyr    r    r#   Ú!test_array_keys_use_private_array{  s   

"ÿr´   )1r   Znumpy.testingr   r   ÚnumpyrE   rª   Ú r   r   r   r   r	   r
   Z_array_objectr   Z_dtypesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r²   rJ   rŒ   r›   r¡   r¥   r¦   r§   r¬   r­   ÚmarkZparametrizer¯   r°   Úslicer±   r´   r    r    r    r#   Ú<module>   s4     D8 ?'
"ÿ
