o
    i6                     @   s~  d dl Z d dlZd dlmZ d dlmZmZ d dlm	Z	 d dl
mZ d dlmZmZ d dlmZ d dlZdd	 Zd
d Zdd Zdd Zedddd Zedgdddd Zdd Zdd ZG dd dZdd Zdd  ZG d!d" d"eZd#d$ Z G d%d& d&eZ!G d'd( d(e!Z"G d)d* d*eZ#G d+d, d,e#Z$G d-d. d.eZ%G d/d0 d0eZ&G d1d2 d2e%Z'e(d3kre)  dS dS )4    N)GUFuncBuilder)	vectorizeguvectorize)PyUFunc_One)DUFunc)tagTestCase)configc                 C      | | S )An addition abr   r   v/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyadd      r   c                 C   s   | |kS Nr   r   r   r   r   equals   s   r   c                 C   s   | | S )zA multiplicationr   r   r   r   r   mul   r   r   c                 C   sJ   |j \}}t|D ]}t|D ]}| ||f |||f  |||f< qq	dS )A generalized additionN)shaperanger   r   cxyijr   r   r   guadd   s   
"r   Tnopythonc                 C   r
   r   r   r   r   r   r   inner    r   r"   int64(int64, int64)c                 C   r
   r   r   r   r   r   r   inner_explicit$   r   r$   c                 C   
   t | |S r   )r"   r   r   r   r   outer(      
r&   c                 C   r%   r   )r$   r   r   r   r   outer_explicit+   r'   r(   c                   @      e Zd ZdS )DummyN__name__
__module____qualname__r   r   r   r   r*   /   s    r*   c                 C   sP   t   |j\}}t|D ]}t|D ]}| ||f |||f  |||f< qqd S r   r*   r   r   r   r   r   r   	guadd_obj2   s   
"r0   c                 C   sH   t   |j\}}t|D ]}t|D ]}| ||f | |||f< qqd S r   r/   r   r   r   r   guadd_scalar_obj9   s   
r1   c                   @   r)   )MyExceptionNr+   r   r   r   r   r2   A   s    r2   c                 C   s   t r   )r2   )r   r   r   r   r   r   guerrorE   s   r3   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestUfuncBuildingc                    s   t t}|d} |j |d} |j |  fdd}tjddd}|| |d d d }|| |d	}||  j	d
  
dj d S )Nint32(int32, int32)r#   c                    .   | | }  | |  |  |j| j d S r   assertPreciseEqualassertEqualdtyper   selfufuncr   r   checkS      
z1TestUfuncBuilding.test_basic_ufunc.<locals>.check   int32r:      rC      r   r   )UFuncBuilderr   assertFalse
objectmodebuild_ufuncnparangereshaper9   r,   assertIn__doc__r<   ufbcresr>   r   r   r;   r   test_basic_ufuncK   s   


z"TestUfuncBuilding.test_basic_ufuncc                    sz   t t}|d} |j |  fdd}tjdddd }|| |d d d }|| |d	}|| d S )
Nzcomplex64(complex64, complex64)c                    r6   r   r7   r   r;   r   r   r>   j   r?   z2TestUfuncBuilding.test_ufunc_struct.<locals>.checkr@   	complex64rB                 ?rC   rD   )rF   r   rG   rH   rI   rJ   rK   rL   rO   r   r;   r   test_ufunc_structd   s   

z#TestUfuncBuilding.test_ufunc_structc                 C   sZ   t tddid}|d}| |j | }tjddd}|||}| || | d S )NforceobjTZtargetoptionsr5   
   rA   rB   )rF   r   
assertTruerH   rI   rJ   rK   r8   )r<   rP   rQ   r=   r   r   r   r   r   test_ufunc_forceobjw   s   

z%TestUfuncBuilding.test_ufunc_forceobjc                 C   8   t tddid}|d | }| |ddd dS )	zA
        Check nested call to an implicitly-typed ufunc.
        r!   TrW   (int64, int64)rE   rC   N)rF   r&   r   rI   r9   r<   Zbuilderr=   r   r   r   test_nested_call      
z"TestUfuncBuilding.test_nested_callc                 C   r[   )	zA
        Check nested call to an explicitly-typed ufunc.
        r!   TrW   r\   r]   rE   rC   N)rF   r(   r   rI   r9   r^   r   r   r   test_nested_call_explicit   r`   z+TestUfuncBuilding.test_nested_call_explicitN)r,   r-   r.   rR   rU   rZ   r_   ra   r   r   r   r   r4   I   s    

r4   c                   @      e Zd Zdd Zdd ZdS )TestUfuncBuildingJitDisabledc                 C      t j| _dt _d S NFr	   DISABLE_JITold_disable_jitr<   r   r   r   setUp      
z"TestUfuncBuildingJitDisabled.setUpc                 C      | j t_d S r   rh   r	   rg   ri   r   r   r   tearDown      z%TestUfuncBuildingJitDisabled.tearDownNr,   r-   r.   rj   rn   r   r   r   r   rc          rc   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestGUfuncBuildingc                 C   s   t td}|d}| |j | }tjddddd}|||}| 	|| | | 
|jtd | 
|jd | d	|j d S )
N(x, y),(x, y)->(x, y)z(void(int32[:,:], int32[:,:], int32[:,:])rX   rA   rB   rC      r   r   )r   r   r   rG   rH   rI   rJ   rK   rL   r8   r9   r:   r,   rM   rN   r<   ZgufbrQ   r=   r   r   r   r   r   test_basic_gufunc   s   


z$TestGUfuncBuilding.test_basic_gufuncc                 C   s`   t td}|d}| |j | }tjdddddd }|||}| 	|| | d S )	Nrs   4void(complex64[:,:], complex64[:,:], complex64[:,:])rX   rS   rB   rC   rt   rT   )
r   r   r   rG   rH   rI   rJ   rK   rL   r8   ru   r   r   r   test_gufunc_struct   s   


z%TestGUfuncBuilding.test_gufunc_structc                 C   sj   t tdtddd}|d}| |j | }tjddd	d	d
d }|||}| 
|| | d S )Nrs   TrV   rW   rw   rX   rS   rB   rC   rt   rT   )r   r   dictr   rY   rH   rI   rJ   rK   rL   r8   ru   r   r   r   test_gufunc_struct_forceobj   s   

z.TestGUfuncBuilding.test_gufunc_struct_forceobjN)r,   r-   r.   rv   rx   r{   r   r   r   r   rr      s    rr   c                   @   rb   )TestGUfuncBuildingJitDisabledc                 C   rd   re   rf   ri   r   r   r   rj      rk   z#TestGUfuncBuildingJitDisabled.setUpc                 C   rl   r   rm   ri   r   r   r   rn      ro   z&TestGUfuncBuildingJitDisabled.tearDownNrp   r   r   r   r   r|      rq   r|   c                   @   s   e Zd Zg 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dd Zdd Zdd Zdd Zdd Zdd ZdS )TestVectorizeDecor)r      Nreorderablec                 C   s:   t dgt}tjddd}|||}| || | d S )Nr5   rX   rA   rB   r   r   rJ   rK   r8   r<   r=   r   r   r   r   r   test_vectorize   s   
z!TestVectorizeDecor.test_vectorizec                 C   s>   t dgddt}tjddd}|||}| || | d S )Nr5   Try   rX   rA   rB   r   r   r   r   r   test_vectorize_objmode   s   
z)TestVectorizeDecor.test_vectorize_objmodec                 C   sD   t dgt}tjddd}|||}| |tj|jtjd d S )Nzbool_(int32, int32)rX   rA   rB   )r   r   rJ   rK   r8   onesr   Zbool_)r<   r=   r   rr   r   r   test_vectorize_bool_return   s   
z-TestVectorizeDecor.test_vectorize_bool_returnc                 C   s   d}| j D ]}t|g|dt}|dkrd n|}| |j| qt|gt}| |jd  | t t|gddt W d    n1 sGw   Y  | t t|gddt W d    d S 1 sfw   Y  d S )Nr5   )identityr   nonerC   )_supported_identitiesr   r   r9   r   assertIsassertRaises
ValueError)r<   sigr   r=   expectedr   r   r   test_vectorize_identity   s   
"z*TestVectorizeDecor.test_vectorize_identityc                 C   sl   t ddd}t ddd}tt}| |||||  tt}t d}|||| | |||  d S )Nr   r~   rX   rC   )rJ   linspacer   r   r8   empty)r<   r   r   r=   Zufunc2r   r   r   r   test_vectorize_no_args   s   
z)TestVectorizeDecor.test_vectorize_no_argsc                 C   sF   t ddd}t ddd}ttddt}| |||||  d S )Nr   r~   rX   rC   T)r   r!   )rJ   r   r   r   r   r8   )r<   r   r   r=   r   r   r   test_vectorize_only_kws  s   z*TestVectorizeDecor.test_vectorize_only_kwsc                    sH    fdd}t dgddt}|| t ddt}|| || dS )zO
        Passing the output array as a keyword argument (issue #1867).
        c                    s   t jdddd}t |}| |||d} ||  |||   t | |||d W d    d S 1 s:w   Y  d S )NrX      rA   rB   )out)zzz)rJ   rK   
zeros_liker   r8   r   	TypeError)r=   r   r   gotri   r   r   r>     s   
"z=TestVectorizeDecor.test_vectorize_output_kwarg.<locals>.checkr5   Tr    N)r   r   )r<   r>   r=   r   ri   r   test_vectorize_output_kwarg
  s   
z.TestVectorizeDecor.test_vectorize_output_kwargc                 C   D   t dgdt}tjddddd}|||}| || | d S N$(int32[:,:], int32[:,:], int32[:,:])(x,y),(x,y)->(x,y)rX   rA   rB   rC   rt   )r   r   rJ   rK   rL   r8   r   r   r   r   test_guvectorize     
z#TestVectorizeDecor.test_guvectorizec                 C   sP   t dgdt}tjddddd}t|}|||| | || | d S )Nr   z(x,y),(x,y),(x,y)rX   rA   rB   rC   rt   )r   r   rJ   rK   rL   r   r8   )r<   r=   r   r   r   r   r   test_guvectorize_no_output&  s   
z-TestVectorizeDecor.test_guvectorize_no_outputc                 C   r   r   )r   r0   rJ   rK   rL   r8   r   r   r   r   test_guvectorize_objectmode.  r   z.TestVectorizeDecor.test_guvectorize_objectmodec                 C   sD   t dgdt}tjddddd}||d}| |d | d	S )
zA
        Test passing of scalars to object mode gufuncs.
        z(int32[:,:], int32, int32[:,:])z(x,y),()->(x,y)rX   rA   rB   rC   rt   rE   N)r   r1   rJ   rK   rL   r8   r   r   r   r   "test_guvectorize_scalar_objectmode5  s   
z5TestVectorizeDecor.test_guvectorize_scalar_objectmodec                 C   sd   t dgdddt}tjddddd	}| t ||| W d    d S 1 s+w   Y  d S )
Nr   r   Try   rX   rA   rB   rC   rt   )r   r3   rJ   rK   rL   r   r2   )r<   r=   r   r   r   r   $test_guvectorize_error_in_objectmode?  s   "z7TestVectorizeDecor.test_guvectorize_error_in_objectmodec                 C   s   dgdf}| j D ]}t|d|it}|dkrd n|}| |j| qt| t}| |jd  | t t|ddit W d    n1 sIw   Y  | t t|ddit W d    d S 1 shw   Y  d S )Nr   r   r   r   r   rC   )	r   r   r   r9   r   r   r   r   r   )r<   argsr   r=   r   r   r   r   test_guvectorize_identityF  s   

"z,TestVectorizeDecor.test_guvectorize_identityc                 C   s   dg}|  t}t|dt W d    n1 sw   Y  | dt|j |  t}t|dt W d    n1 s?w   Y  | t|jd |  t}t|dt W d    d S 1 sew   Y  d S )Nr   z)-:zbad token in signaturez(x,y),(x,y)->(x,z,v)zundefined output symbols: v,zz(x,y),(x,y),(x,y)->)	r   r   r   r   rM   str	exception	NameErrorr9   )r<   ZsigsZraisesr   r   r   test_guvectorize_invalid_layoutU  s   "z2TestVectorizeDecor.test_guvectorize_invalid_layoutN)r,   r-   r.   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r}      s     

r}   c                   @   s   e Zd Zdd ZdS )TestNEP13WithoutSignaturec           	         s  t dddd }G  fddd tjg dtjd}tjg d	tjd}tjg d
tjd}||||}| |tj | | g d | |||}| |  | | g d || ||}| |  | | g d ||| |}| |  | | g d tjg dtjd}tjg dtjd}tjg dtjd}||||}| |tj | | g d | |||}| |  | | g d || ||}| |  | | g d ||| |}| |  | | g d d S )NTr    c                 S   s   d|  d|  | S )Nd   rX   r   )ZhundredsZtensr   r   r   r   	new_ufunck  s   z5TestNEP13WithoutSignature.test_all.<locals>.new_ufuncc                       s0   e Zd Zdd Zdd Zdd Z fddZd	S )
z6TestNEP13WithoutSignature.test_all.<locals>.NEP13Arrayc                 S   s
   || _ d S r   array)r<   r   r   r   r   __init__q  r'   z?TestNEP13WithoutSignature.test_all.<locals>.NEP13Array.__init__c                 S   s   | j S r   r   ri   r   r   r   	__array__t  s   z@TestNEP13WithoutSignature.test_all.<locals>.NEP13Array.__array__c                 S   s
   | j  S r   )r   tolistri   r   r   r   r   w  r'   z=TestNEP13WithoutSignature.test_all.<locals>.NEP13Array.tolistc                    s(   |dkrt S  |dd |D i |S )N__call__c                 S   s   g | ]}t |qS r   )rJ   Zasarray).0r   r   r   r   
<listcomp>~  s    zZTestNEP13WithoutSignature.test_all.<locals>.NEP13Array.__array_ufunc__.<locals>.<listcomp>)NotImplemented)r<   r=   methodr   kwargs
NEP13Arrayr   r   __array_ufunc__z  s   zFTestNEP13WithoutSignature.test_all.<locals>.NEP13Array.__array_ufunc__N)r,   r-   r.   r   r   r   r   r   r   r   r   r   p  s
    r   )r~   rC   rE   rB   )   rt      )      	   )   i  iq  )g?g@gffffff
@)g@g      @gffffff@)g@g!@g#@)gfffff6d@g̼q@gfffff^y@)	r   rJ   r   Zint64ZassertIsInstanceZndarrayr9   r   Zfloat64)	r<   r   r   r   r   Zall_npZnep13_1Znep13_2Znep13_3r   r   r   test_allh  sB   
z"TestNEP13WithoutSignature.test_allN)r,   r-   r.   r   r   r   r   r   r   f  s    r   c                   @   rb   )TestVectorizeDecorJitDisabledc                 C   rd   re   rf   ri   r   r   r   rj     rk   z#TestVectorizeDecorJitDisabled.setUpc                 C   rl   r   rm   ri   r   r   r   rn     ro   z&TestVectorizeDecorJitDisabled.tearDownNrp   r   r   r   r   r     rq   r   __main__)*sysnumpyrJ   Znumba.np.ufunc.ufuncbuilderr   Znumbar   r   Znumba.np.ufuncr   Znumba.np.ufunc.dufuncr   rF   Znumba.tests.supportr   r   Z
numba.corer	   Zunittestr   r   r   r   r"   r$   r&   r(   r*   r0   r1   	Exceptionr2   r3   r4   rc   rr   r|   r}   r   r   r,   mainr   r   r   r   <module>   sF    

M
+
 E
