
    ,i8                     X   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 G d d	e          Z G d
 de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Zedk    r ej                     dS dS )    N)GUFuncBuilder)	vectorizeguvectorize)PyUFunc_One)DUFunc)tagTestCase)configc                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestUfuncBuildingc                 >    ddl m} t          |          }|                    d          }                     |j                   |                    d          }                     |j                   |                                 fd}t          j        dd          } ||           |d d d	         } ||           |                    d
          } ||            	                    j
        d                                dj                   d S )Nr   addint32(int32, int32)zint64(int64, int64)c                      | |           }                     | | z   |                               |j        | j                   d S NassertPreciseEqualassertEqualdtypeabselfufuncs     e/var/www/html/speakWrite/venv/lib/python3.11/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pycheckz1TestUfuncBuilding.test_basic_ufunc.<locals>.check   L    aA##AE1---QWag.....       int32r      r#      r   zAn addition)+numba.tests.npyufunc.ufuncbuilding_usecasesr   UFuncBuilderassertFalse
objectmodebuild_ufuncnparangereshaper   __name__assertIn__doc__r   r   ufbcresr   r   r   s   `     @r   test_basic_ufuncz"TestUfuncBuilding.test_basic_ufunc   s3   CCCCCC3ww,--)))ww,--)))!!	/ 	/ 	/ 	/ 	/ 	/
 Ib(((acccFaIIfa 	///mU]33333r   c                 z    ddl m} t          |          }|                    d          }                     |j                   |                                 fd}t          j        dd          dz   } ||           |d d d	         } ||           |                    d
          } ||           d S )Nr   r   zcomplex64(complex64, complex64)c                      | |           }                     | | z   |                               |j        | j                   d S r   r   r   s     r   r   z2TestUfuncBuilding.test_ufunc_struct.<locals>.check/   r   r   r    	complex64r"                 ?r#   r$   )	r&   r   r'   r(   r)   r*   r+   r,   r-   r1   s   `     @r   test_ufunc_structz#TestUfuncBuilding.test_ufunc_struct(   s    CCCCCC3ww899)))!!	/ 	/ 	/ 	/ 	/ 	/
 Ib,,,r1acccFaIIfar   c                 4   ddl m} t          |ddi          }|                    d          }|                     |j                   |                                }t          j        dd	          } |||          }|                     ||z   |           d S )
Nr   r   forceobjTtargetoptionsr   
   r!   r"   )	r&   r   r'   
assertTruer)   r*   r+   r,   r   )r   r   r2   r3   r   r   r   s          r   test_ufunc_forceobjz%TestUfuncBuilding.test_ufunc_forceobj<   s    CCCCCC3z4.@AAAww,--(((!!Ib(((E!QKKAq)))))r   c                     ddl m} t          |ddi          }|                    d           |                                }|                      |dd          d	           d
S )zA
        Check nested call to an implicitly-typed ufunc.
        r   )outernopythonTr<   (int64, int64)r%   r#   N)r&   rB   r'   r   r*   r   )r   rB   builderr   s       r   test_nested_callz"TestUfuncBuilding.test_nested_callG   s     	FEEEEEu.8$-?A A A$%%%##%%r1q)))))r   c                     ddl m} t          |ddi          }|                    d           |                                }|                      |dd          d	           d
S )zA
        Check nested call to an explicitly-typed ufunc.
        r   )outer_explicitrC   Tr<   rD   rE   r%   r#   N)r&   rI   r'   r   r*   r   )r   rI   rF   r   s       r   test_nested_call_explicitz+TestUfuncBuilding.test_nested_call_explicitR   s     	ONNNNN~.8$-?A A A$%%%##%%r1q)))))r   N)r.   
__module____qualname__r4   r9   r@   rG   rJ    r   r   r   r      s_        4 4 44  (	* 	* 	*	* 	* 	*	* 	* 	* 	* 	*r   r   c                       e Zd Zd Zd ZdS )TestUfuncBuildingJitDisabledc                 @    t           j        | _        dt           _        d S NFr
   DISABLE_JITold_disable_jitr   s    r   setUpz"TestUfuncBuildingJitDisabled.setUp`       %1"r   c                 (    | j         t          _        d S r   rT   r
   rS   rU   s    r   tearDownz%TestUfuncBuildingJitDisabled.tearDownd       !1r   Nr.   rK   rL   rV   rZ   rM   r   r   rO   rO   ^   2        # # #2 2 2 2 2r   rO   c                        e Zd Zd Zd Zd ZdS )TestGUfuncBuildingc                    ddl m} t          |d          }|                    d          }|                     |j                   |                                }t          j        dd          	                    dd	          } |||          }| 
                    ||z   |           |                     |j        t          j        d                     |                     |j        d
           |                     d|j                   d S )Nr   guadd(x, y),(x, y)->(x, y)z(void(int32[:,:], int32[:,:], int32[:,:])r>   r!   r"   r#      rb   zA generalized addition)r&   rb   r   r   r(   r)   r*   r+   r,   r-   r   r   r   r.   r/   r0   r   rb   gufbr3   r   r   r   s          r   test_basic_gufuncz$TestGUfuncBuilding.test_basic_gufuncj   s   EEEEEEU$;<<xxBCC)))  ""Ib(((00A66E!QKKAq)))"(7"3"3444 	111.>>>>>r   c                 \   ddl m} t          |d          }|                    d          }|                     |j                   |                                }t          j        dd          	                    dd	          d
z   } |||          }| 
                    ||z   |           d S )Nr   ra   rc   4void(complex64[:,:], complex64[:,:], complex64[:,:])r>   r7   r"   r#   rd   r8   )r&   rb   r   r   r(   r)   r*   r+   r,   r-   r   re   s          r   test_gufunc_structz%TestGUfuncBuilding.test_gufunc_struct{   s    EEEEEEU$;<<xxNOO)))  ""Ib,,,44Q::R?E!QKKAq)))))r   c                 |   ddl m} t          |dt          d                    }|                    d          }|                     |j                   |                                }t          j	        dd	
          
                    dd          dz   } |||          }|                     ||z   |           d S )Nr   ra   rc   Tr;   r<   ri   r>   r7   r"   r#   rd   r8   )r&   rb   r   dictr   r?   r)   r*   r+   r,   r-   r   re   s          r   test_gufunc_struct_forceobjz.TestGUfuncBuilding.test_gufunc_struct_forceobj   s    EEEEEEU$;+/+>+>+>@ @ @xx   (((  ""Ib,,,44Q::R?E!QKKAq)))))r   N)r.   rK   rL   rg   rj   rn   rM   r   r   r_   r_   h   sA        ? ? ?"
* 
* 
** * * * *r   r_   c                       e Zd Zd Zd ZdS )TestGUfuncBuildingJitDisabledc                 @    t           j        | _        dt           _        d S rQ   rR   rU   s    r   rV   z#TestGUfuncBuildingJitDisabled.setUp   rW   r   c                 (    | j         t          _        d S r   rY   rU   s    r   rZ   z&TestGUfuncBuildingJitDisabled.tearDown   r[   r   Nr\   rM   r   r   rp   rp      r]   r   rp   c                   j    e Zd Zg dZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd ZdS )TestVectorizeDecor)r      Nreorderablec                     ddl m}  t          dg          |          }t          j        dd          } |||          }|                     ||z   |           d S )Nr   r   r   r>   r!   r"   r&   r   r   r+   r,   r   r   r   r   r   r   s        r   test_vectorizez!TestVectorizeDecor.test_vectorize   sr    CCCCCC2	0122377Ib(((E!QKKAq)))))r   c                     ddl m}  t          dgd          |          }t          j        dd          } |||          }|                     ||z   |           d S )	Nr   r   r   Trl   r>   r!   r"   rx   ry   s        r   test_vectorize_objmodez)TestVectorizeDecor.test_vectorize_objmode   sw    CCCCCCA	01DAAA#FFIb(((E!QKKAq)))))r   c                     ddl m}  t          dg          |          }t          j        dd          } |||          }|                     |t          j        |j        t          j                             d S )Nr   )equalszbool_(int32, int32)r>   r!   r"   )	r&   r~   r   r+   r,   r   onesshapebool_)r   r~   r   r   rs        r   test_vectorize_bool_returnz-TestVectorizeDecor.test_vectorize_bool_return   s    FFFFFF2	01226::Ib(((E!AJJ2717"(#C#C#CDDDDDr   c                 H   ddl m} d}| j        D ]B} t          |g|          |          }|dk    rd n|}|                     |j        |           C t          |g          |          }|                     |j        d            |                     t                    5   t          |gd          |           d d d            n# 1 swxY w Y   |                     t                    5   t          |gd          |           d d d            d S # 1 swxY w Y   d S )Nr   r   r   )identityrv   noner#   )	r&   r   _supported_identitiesr   r   r   assertIsassertRaises
ValueError)r   r   sigr   r   expecteds         r   test_vectorize_identityz*TestVectorizeDecor.test_vectorize_identity   s   CCCCCC#2 	7 	7H7Iseh777<<E'=88tthHU^X6666 	3%  %%end+++z** 	3 	3-Isef---c222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3z** 	. 	.(Isea(((---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s$   !C		CC.DDDc                 `   ddl m} t          j        ddd          }t          j        ddd          }t	          |          }|                      |||          ||z              t	          |          }t          j        d          } ||||           |                     |||z              d S )Nr   r   ru   r>   r#   )r&   r   r+   linspacer   r   empty)r   r   r   r   r   ufunc2cs          r   test_vectorize_no_argsz)TestVectorizeDecor.test_vectorize_no_args   s    CCCCCCK!BK!B#a

AE2223HRLLq!Q1q5)))))r   c                     ddl m} t          j        ddd          }t          j        ddd          } t	          t
          d          |          }|                      |||          ||z             d S )Nr   )mulru   r>   r#   T)r   rC   )r&   r   r+   r   r   r   r   )r   r   r   r   r   s        r   test_vectorize_only_kwsz*TestVectorizeDecor.test_vectorize_only_kws   s    CCCCCCK!BK!B>	;>>>sCCa

AE22222r   c                       fd}ddl m}  t          dgd          |          } ||            t          d          |          } ||            ||           dS )zO
        Passing the output array as a keyword argument (issue #1867).
        c                 Z   t          j        ddd          }t          j        |          } | |||          }                    ||                               |||z                                  t                    5   | |||           d d d            d S # 1 swxY w Y   d S )Nr>      r!   r"   )out)zzz)r+   r,   
zeros_liker   r   r   	TypeError)r   r   r   gotr   s       r   r   z=TestVectorizeDecor.test_vectorize_output_kwarg.<locals>.check   s    	"b000A-""C%1#&&&CMM#s#####CQ///""9-- % %a$$$$% % % % % % % % % % % % % % % % % %s   B  B$'B$r   r   r   TrC   N)r&   r   r   )r   r   r   r   s   `   r   test_vectorize_output_kwargz.TestVectorizeDecor.test_vectorize_output_kwarg   s    	% 	% 	% 	% 	% 	DCCCCCA	01DAAA#FFe(	4(((--eer   c                     ddl m}  t          dgd          |          }t          j        dd                              dd	          } |||          }|                     ||z   |           d S )
Nr   ra   $(int32[:,:], int32[:,:], int32[:,:])(x,y),(x,y)->(x,y)r>   r!   r"   r#   rd   )r&   rb   r   r+   r,   r-   r   )r   rb   r   r   r   s        r   test_guvectorizez#TestVectorizeDecor.test_guvectorize   s    EEEEEE2CD02 2279 9Ib(((00A66E!QKKAq)))))r   c                    ddl m}  t          dgd          |          }t          j        dd                              dd	          }t          j        |          } ||||           |                     ||z   |           d S )
Nr   ra   r   z(x,y),(x,y),(x,y)r>   r!   r"   r#   rd   )r&   rb   r   r+   r,   r-   r   r   )r   rb   r   r   r   s        r   test_guvectorize_no_outputz-TestVectorizeDecor.test_guvectorize_no_output   s    EEEEEE1CD/1 1168 8Ib(((00A66mAaCAs+++++r   c                     ddl m}  t          dgdd          |          }t          j        dd	                              d
d          } |||          }|                     ||z   |           d S )Nr   )	guadd_objr   r   Trl   r>   r!   r"   r#   rd   )r&   r   r   r+   r,   r-   r   )r   r   r   r   r   s        r   test_guvectorize_objectmodez.TestVectorizeDecor.test_guvectorize_objectmode  s    IIIIIIACD04A A AAJL LIb(((00A66E!QKKAq)))))r   c                     ddl m}  t          dgdd          |          }t          j        dd	                              d
d          } ||d          }|                     |dz   |           dS )zA
        Test passing of scalars to object mode gufuncs.
        r   )guadd_scalar_objz(int32[:,:], int32, int32[:,:])z(x,y),()->(x,y)Trl   r>   r!   r"   r#   rd   r%   N)r&   r   r   r+   r,   r-   r   )r   r   r   r   r   s        r   "test_guvectorize_scalar_objectmodez5TestVectorizeDecor.test_guvectorize_scalar_objectmode
  s     	QPPPPP>>?-> > >>NP PIb(((00A66E!QKKAq)))))r   c                    ddl m}m}  t          dgdd          |          }t	          j        dd	                              d
d          }|                     |          5   |||           d d d            d S # 1 swxY w Y   d S )Nr   )guerrorMyExceptionr   r   Trl   r>   r!   r"   r#   rd   )r&   r   r   r   r+   r,   r-   r   )r   r   r   r   r   s        r   $test_guvectorize_error_in_objectmodez7TestVectorizeDecor.test_guvectorize_error_in_objectmode  s   	 	 	 	 	 	 	 	ACD04A A AAHJ JIb(((00A66{++ 	 	E!QKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   $A>>BBc                     ddl m}m} dgdf}| j        D ]<} t	          |d|i|          }|dk    rd n|}|                     |j        |           = t	          | |          }|                     |j        d            |                     t                    5   t	          |ddi|           d d d            n# 1 swxY w Y   |                     t                    5   t	          |ddi|           d d d            d S # 1 swxY w Y   d S )	Nr   )r   rb   r   r   r   rv   r   r#   )
r&   r   rb   r   r   r   r   r   r   r   )r   r   rb   argsr   r   r   s          r   test_guvectorize_identityz,TestVectorizeDecor.test_guvectorize_identity  s   JJJJJJJJ78:NO2 	7 	7H9K999%@@E'=88tthHU^X6666"T"5))end+++z** 	5 	5/K///444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5z** 	0 	0*K***3///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s$   B;;B?B? DD
Dc                 |   ddl m} dg}|                     t                    5 } t	          |d          |           d d d            n# 1 swxY w Y   |                     dt          |j                             |                     t                    5 } t	          |d          |           d d d            n# 1 swxY w Y   | 	                    t          |j                  d           |                     t                    5 } t	          |d          |           d d d            d S # 1 swxY w Y   d S )	Nr   ra   r   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&   rb   r   r   r   r/   str	exception	NameErrorr   )r   rb   sigsraisess       r   test_guvectorize_invalid_layoutz2TestVectorizeDecor.test_guvectorize_invalid_layout.  s   EEEEEE67z** 	,f$Ke$$U+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,.F4D0E0EFFFy)) 	=V5K455e<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=V-..8	: 	: 	: z** 	<f4K344U;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s5   A

AAB==CC
D11D58D5N)r.   rK   rL   r   rz   r|   r   r   r   r   r   r   r   r   r   r   r   r   rM   r   r   rt   rt      s        777* * ** * *E E E. . . 	* 	* 	*3 3 3  ,* * *, , ,* * *	* 	* 	*  0 0 0 < < < < <r   rt   c                       e Zd Zd ZdS )TestNEP13WithoutSignaturec                 T  	 t          d          d             } G 	fdd          	t          j        g dt          j                  }t          j        g dt          j                  }t          j        g d	t          j                  } ||||          }|                     |t          j                   |                     |                                g d
            | 	|          ||          }|                     |	           |                     |                                g d
            || 	|          |          }|                     |	           |                     |                                g d
            ||| 	|                    }|                     |	           |                     |                                g d
           t          j        g dt          j                  }t          j        g dt          j                  }t          j        g dt          j                  } ||||          }|                     |t          j                   |                     |                                g d            | 	|          ||          }|                     |	           |                     |                                g d            || 	|          |          }|                     |	           |                     |                                g d            ||| 	|                    }|                     |	           |                     |                                g d           d S )NTr   c                     d| z  d|z  z   |z   S )Nd   r>   rM   )hundredstensr   s      r   	new_ufuncz5TestNEP13WithoutSignature.test_all.<locals>.new_ufuncE  s    x<"T')D00r   c                   ,    e Zd Zd Zd Zd Z fdZdS )6TestNEP13WithoutSignature.test_all.<locals>.NEP13Arrayc                     || _         d S r   array)r   r   s     r   __init__z?TestNEP13WithoutSignature.test_all.<locals>.NEP13Array.__init__K  s    "


r   c                     | j         S r   r   rU   s    r   	__array__z@TestNEP13WithoutSignature.test_all.<locals>.NEP13Array.__array__N  s
    z!r   c                 4    | j                                         S r   )r   tolistrU   s    r   r   z=TestNEP13WithoutSignature.test_all.<locals>.NEP13Array.tolistQ  s    z((***r   c                 T    |dk    rt           S   |d |D             i |          S )N__call__c                 6    g | ]}t          j        |          S rM   )r+   asarray).0xs     r   
<listcomp>zZTestNEP13WithoutSignature.test_all.<locals>.NEP13Array.__array_ufunc__.<locals>.<listcomp>X  s     )F)F)FA"*Q--)F)F)Fr   )NotImplemented)r   r   methodr   kwargs
NEP13Arrays        r   __array_ufunc__zFTestNEP13WithoutSignature.test_all.<locals>.NEP13Array.__array_ufunc__T  sB    Z''))!z%%)F)F)F)F)F"Q&"Q"QRRRr   N)r.   rK   rL   r   r   r   r   )r   s   r   r   r   J  sb        # # #" " "+ + +S S S S S S Sr   r   )ru   r#   r%   r"   )   rd      )      	   )   i  iq  )g?g@gffffff
@)g@g      @gffffff@)g@g!@g#@)gfffff6d@g̼q@gfffff^y@)	r   r+   r   int64assertIsInstancendarrayr   r   float64)
r   r   r   r   r   all_npnep13_1nep13_2nep13_3r   s
            @r   test_allz"TestNEP13WithoutSignature.test_allB  s    
D	!	!	!	1 	1 
"	!	1	S 	S 	S 	S 	S 	S 	S 	S 	S 	S" HYYYbh///HYYYbh///HYYYbh///1a##fbj111///:::)JJqMM1a00gz222))???;;;)Azz!}}a00gz222))???;;;)Aq**Q--00gz222))???;;; H___BJ777H___BJ777H___BJ7771a##fbj111*?*?*?@@@)JJqMM1a00gz222))+@+@+@AAA)Azz!}}a00gz222))+@+@+@AAA)Aq**Q--00gz222))+@+@+@AAAAAr   N)r.   rK   rL   r   rM   r   r   r   r   @  s-        @B @B @B @B @Br   r   c                       e Zd Zd Zd ZdS )TestVectorizeDecorJitDisabledc                 @    t           j        | _        dt           _        d S rQ   rR   rU   s    r   rV   z#TestVectorizeDecorJitDisabled.setUp  rW   r   c                 (    | j         t          _        d S r   rY   rU   s    r   rZ   z&TestVectorizeDecorJitDisabled.tearDown  r[   r   Nr\   rM   r   r   r   r     r]   r   r   __main__)numpyr+   numba.np.ufunc.ufuncbuilderr   numbar   r   numba.np.ufuncr   numba.np.ufunc.dufuncr   r'   numba.tests.supportr   r	   
numba.corer
   unittestr   rO   r_   rp   rt   r   r   r.   mainrM   r   r   <module>r      s       5 5 5 5 5 5 ( ( ( ( ( ( ( ( & & & & & & 8 8 8 8 8 8 - - - - - - - -       O* O* O* O* O* O* O* O*d2 2 2 2 2#4 2 2 2+* +* +* +* +* +* +* +*\2 2 2 2 2$6 2 2 2\< \< \< \< \< \< \< \<@BB BB BB BB BB BB BB BBJ2 2 2 2 2$6 2 2 2 zHMOOOOO r   