
    shA                        S SK r S SKrS SKrS SKJr  S SKJr  S SKJ	r	J
r
  S SKJr  S SKJr  S SKJrJr  S SKJr   " S	 S
\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S5      r " S S5      r " S S\5      r " S S\R$                  5      r " S S\5      r\S:X  a  \R@                  " 5         gg)    N)assert_array_equal)GUFuncBuilder)	vectorizeguvectorize)PyUFunc_One)DUFunc)tagTestCase)configc                   2    \ rS rSrS rS rS rS rS rSr	g)	TestUfuncBuilding   c                   ^ ^ SSK Jn  [        U5      nUR                  S5      nT R                  UR                  5        UR                  S5      nT R                  UR                  5        UR                  5       mU U4S jn[        R                  " SSS9nU" U5        US S S	2   nU" U5        UR                  S
5      nU" U5        T R                  TR                  S5        T R                  STR                  5        g )Nr   addint32(int32, int32)zint64(int64, int64)c                    > T" X 5      nTR                  X -   U5        TR                  UR                  U R                  5        g NassertPreciseEqualassertEqualdtypeabselfufuncs     {/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pycheck1TestUfuncBuilding.test_basic_ufunc.<locals>.check   6    aA##AE1-QWWagg.       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_ufunc"TestUfuncBuilding.test_basic_ufunc   s    C3ww,-)ww,-)!	/
 IIb(accFaIIfa 	/mU]]3r"   c                 B  ^ ^ SSK Jn  [        U5      nUR                  S5      nT R                  UR                  5        UR                  5       mU U4S jn[        R                  " SSS9S-   nU" U5        US S S	2   nU" U5        UR                  S
5      nU" U5        g )Nr   r   zcomplex64(complex64, complex64)c                    > T" X 5      nTR                  X -   U5        TR                  UR                  U R                  5        g r   r   r   s     r   r   2TestUfuncBuilding.test_ufunc_struct.<locals>.check2   r!   r"   r#   	complex64r%                 ?r&   r'   )	r)   r   r*   r+   r,   r-   r.   r/   r0   r4   s   `     @r   test_ufunc_struct#TestUfuncBuilding.test_ufunc_struct+   s    C3ww89)!	/
 IIb,r1accFaIIfar"   c                    SSK Jn  [        USS0S9nUR                  S5      nU R                  UR                  5        UR                  5       n[        R                  " SSS	9nU" XU5      nU R                  XU-   U5        g )
Nr   r   forceobjTtargetoptionsr   
   r$   r%   )	r)   r   r*   
assertTruer,   r-   r.   r/   r   )r   r   r5   r6   r   r   r   s          r   test_ufunc_forceobj%TestUfuncBuilding.test_ufunc_forceobj?   sl    C3z4.@Aww,-(!IIb(!Kq)r"   c                     SSK Jn  [        USS0S9nUR                  S5        UR	                  5       nU R                  U" SS5      S	5        g
)z1
Check nested call to an implicitly-typed ufunc.
r   )outernopythonTrB   (int64, int64)r(   r&   N)r)   rI   r*   r   r-   r   )r   rI   builderr   s       r   test_nested_call"TestUfuncBuilding.test_nested_callJ   sN     	Fu.8$-?A$%##%r1q)r"   c                     SSK Jn  [        USS0S9nUR                  S5        UR	                  5       nU R                  U" SS5      S	5        g
)z1
Check nested call to an explicitly-typed ufunc.
r   )outer_explicitrJ   TrB   rK   rL   r(   r&   N)r)   rQ   r*   r   r-   r   )r   rQ   rM   r   s       r   test_nested_call_explicit+TestUfuncBuilding.test_nested_call_explicitU   sN     	O~.8$-?A$%##%r1q)r"    N)
r1   
__module____qualname____firstlineno__r7   r>   rF   rN   rR   __static_attributes__rT   r"   r   r   r      s    44(	*	*	*r"   r   c                        \ rS rSrS rS rSrg)TestUfuncBuildingJitDisableda   c                 D    [         R                  U l        S[         l        g NFr   DISABLE_JITold_disable_jitr   s    r   setUp"TestUfuncBuildingJitDisabled.setUpc       %11"r"   c                 .    U R                   [        l        g r   r`   r   r_   ra   s    r   tearDown%TestUfuncBuildingJitDisabled.tearDowng       !11r"   r`   Nr1   rU   rV   rW   rb   rg   rX   rT   r"   r   rZ   rZ   a       #2r"   rZ   c                   &    \ rS rSrS rS rS rSrg)TestGUfuncBuildingk   c                    SSK Jn  [        US5      nUR                  S5      nU R	                  UR
                  5        UR                  5       n[        R                  " SSS9R                  SS	5      nU" XU5      nU R                  XU-   U5        U R                  UR                  [        R                  " S5      5        U R                  UR                  S
5        U R                  SUR                  5        g )Nr   guadd(x, y),(x, y)->(x, y)z(void(int32[:,:], int32[:,:], int32[:,:])rD   r$   r%   r&      rr   zA generalized addition)r)   rr   r   r   r+   r,   r-   r.   r/   r0   r   r   r   r1   r2   r3   r   rr   gufbr6   r   r   r   s          r   test_basic_gufunc$TestGUfuncBuilding.test_basic_gufuncm   s    EU$;<xxBC)  "IIb(00A6!Kq)"((7"34 	1.>r"   c                 (   SSK Jn  [        US5      nUR                  S5      nU R	                  UR
                  5        UR                  5       n[        R                  " SSS9R                  SS	5      S
-   nU" XU5      nU R                  XU-   U5        g )Nr   rq   rs   4void(complex64[:,:], complex64[:,:], complex64[:,:])rD   r<   r%   r&   rt   r=   )r)   rr   r   r   r+   r,   r-   r.   r/   r0   r   ru   s          r   test_gufunc_struct%TestGUfuncBuilding.test_gufunc_struct~   s~    EU$;<xxNO)  "IIb,44Q:R?!Kq)r"   c                 4   SSK Jn  [        US[        SS9S9nUR	                  S5      nU R                  UR                  5        UR                  5       n[        R                  " SS	S
9R                  SS5      S-   nU" XU5      nU R                  XU-   U5        g )Nr   rq   rs   TrA   rB   rz   rD   r<   r%   r&   rt   r=   )r)   rr   r   dictr   rE   r,   r-   r.   r/   r0   r   ru   s          r   test_gufunc_struct_forceobj.TestGUfuncBuilding.test_gufunc_struct_forceobj   s    EU$;+/+>@xx  (  "IIb,44Q:R?!Kq)r"   rT   N)r1   rU   rV   rW   rw   r{   r   rX   rT   r"   r   rn   rn   k   s    ?"
**r"   rn   c                        \ rS rSrS rS rSrg)TestGUfuncBuildingJitDisabled   c                 D    [         R                  U l        S[         l        g r]   r^   ra   s    r   rb   #TestGUfuncBuildingJitDisabled.setUp   rd   r"   c                 .    U R                   [        l        g r   rf   ra   s    r   rg   &TestGUfuncBuildingJitDisabled.tearDown   ri   r"   rj   Nrk   rT   r"   r   r   r      rl   r"   r   c                   p    \ rS rSr/ SQrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rSrg)TestVectorizeDecor   )r      Nreorderablec                     SSK Jn  [        S/5      " U5      n[        R                  " SSS9nU" X35      nU R                  X3-   U5        g )Nr   r   r   rD   r$   r%   r)   r   r   r.   r/   r   r   r   r   r   r   s        r   test_vectorize!TestVectorizeDecor.test_vectorize   sC    C01237IIb(!Kq)r"   c                     SSK Jn  [        S/SS9" U5      n[        R                  " SSS9nU" X35      nU R                  X3-   U5        g )	Nr   r   r   Tr~   rD   r$   r%   r   r   s        r   test_vectorize_objmode)TestVectorizeDecor.test_vectorize_objmode   sE    C01DA#FIIb(!Kq)r"   c                     SSK Jn  [        S/5      " U5      n[        R                  " SSS9nU" X35      nU R                  U[        R                  " UR                  [        R                  S95        g )Nr   )equalszbool_(int32, int32)rD   r$   r%   )	r)   r   r   r.   r/   r   onesshapebool_)r   r   r   r   rs        r   test_vectorize_bool_return-TestVectorizeDecor.test_vectorize_bool_return   sT    F0126:IIb(!J277177"((#CDr"   c                    SSK Jn  SnU R                   H:  n[        U/US9" U5      nUS:X  a  S OUnU R	                  UR
                  U5        M<     [        U/5      " U5      nU R                  UR
                  S 5        U R                  [        5         [        U/SS9" U5        S S S 5        U R                  [        5         [        U/SS9" U5        S S S 5        g ! , (       d  f       N>= f! , (       d  f       g = f)Nr   r   r   )identityr   noner&   )	r)   r   _supported_identitiesr   r   r   assertIsassertRaises
ValueError)r   r   sigr   r   expecteds         r   test_vectorize_identity*TestVectorizeDecor.test_vectorize_identity   s    C#22Hseh7<E'=8thHU^^X6 3
 3% %ennd+z*sef-c2 +z*sea(- +* +***s   C C1 
C.1
C?c                 6   SSK Jn  [        R                  " SSS5      n[        R                  " SSS5      n[	        U5      nU R                  U" X#5      X#-   5        [	        U5      n[        R                  " S5      nU" X#U5        U R                  XbU-   5        g )Nr   r   r   rD   r&   )r)   r   r.   linspacer   r   empty)r   r   r   r   r   ufunc2cs          r   test_vectorize_no_args)TestVectorizeDecor.test_vectorize_no_args   sy    CKK!BKK!B#a
AE23HHRLqQq5)r"   c                     SSK Jn  [        R                  " SSS5      n[        R                  " SSS5      n[	        [
        SS9" U5      nU R                  U" X#5      X#-  5        g )Nr   )mulr   rD   r&   T)r   rJ   )r)   r   r.   r   r   r   r   )r   r   r   r   r   s        r   test_vectorize_only_kws*TestVectorizeDecor.test_vectorize_only_kws   sP    CKK!BKK!B;>sCa
AE2r"   c                    ^  U 4S jnSSK Jn  [        S/SS9" U5      nU" U5        [        SS9" U5      nU" U5        U" U5        g)z?
Passing the output array as a keyword argument (issue #1867).
c                 "  > [         R                  " SSSS9n[         R                  " U5      nU " XUS9nTR                  X25        TR	                  X!U-   5        TR                  [        5         U " XUS9  S S S 5        g ! , (       d  f       g = f)NrD      r$   r%   )out)zzz)r.   r/   
zeros_liker   r   r   	TypeError)r   r   r   gotr   s       r   r   =TestVectorizeDecor.test_vectorize_output_kwarg.<locals>.check   sq    		"b0A--"C#&CMM####CQ/""9-a$ .--s   /B  
Br   r   r   TrJ   N)r)   r   r   )r   r   r   r   s   `   r   test_vectorize_output_kwarg.TestVectorizeDecor.test_vectorize_output_kwarg   sG    	% 	D01DA#Fe4(-eer"   c                     SSK Jn  [        S/S5      " U5      n[        R                  " SSS9R                  SS	5      nU" X35      nU R                  X3-   U5        g )
Nr   rq   $(int32[:,:], int32[:,:], int32[:,:])(x,y),(x,y)->(x,y)rD   r$   r%   r&   rt   )r)   rr   r   r.   r/   r0   r   )r   rr   r   r   r   s        r   test_guvectorize#TestVectorizeDecor.test_guvectorize   sX    ECD02279IIb(00A6!Kq)r"   c                     SSK Jn  [        S/S5      " U5      n[        R                  " SSS9R                  SS	5      n[        R                  " U5      nU" X3U5        U R                  X3-   U5        g )
Nr   rq   r   z(x,y),(x,y),(x,y)rD   r$   r%   r&   rt   )r)   rr   r   r.   r/   r0   r   r   )r   rr   r   r   r   s        r   test_guvectorize_no_output-TestVectorizeDecor.test_guvectorize_no_output   sg    ECD/1168IIb(00A6mmAaCs+r"   c                     SSK Jn  [        S/SSS9" U5      n[        R                  " SSS	9R                  S
S5      nU" X35      nU R                  X3-   U5        g )Nr   )	guadd_objr   r   Tr~   rD   r$   r%   r&   rt   )r)   r   r   r.   r/   r0   r   )r   r   r   r   r   s        r   test_guvectorize_objectmode.TestVectorizeDecor.test_guvectorize_objectmode  s\    ICD04AAJLIIb(00A6!Kq)r"   c                     SSK Jn  [        S/SSS9" U5      n[        R                  " SSS	9R                  S
S5      nU" US5      nU R                  US-   U5        g)z1
Test passing of scalars to object mode gufuncs.
r   )guadd_scalar_objz(int32[:,:], int32, int32[:,:])z(x,y),()->(x,y)Tr~   rD   r$   r%   r&   rt   r(   N)r)   r   r   r.   r/   r0   r   )r   r   r   r   r   s        r   "test_guvectorize_scalar_objectmode5TestVectorizeDecor.test_guvectorize_scalar_objectmode  sb     	Q>?->>NPIIb(00A6!QKAq)r"   c                     SSK JnJn  [        S/SSS9" U5      n[        R
                  " SSS	9R                  S
S5      nU R                  U5         U" XD5        S S S 5        g ! , (       d  f       g = f)Nr   )guerrorMyExceptionr   r   Tr~   rD   r$   r%   r&   rt   )r)   r   r   r   r.   r/   r0   r   )r   r   r   r   r   s        r   $test_guvectorize_error_in_objectmode7TestVectorizeDecor.test_guvectorize_error_in_objectmode  sd    	CD04AAHJIIb(00A6{+!K ,++s   	A##
A1c                    SSK JnJn  S/S4nU R                   H:  n[	        USU06" U5      nUS:X  a  S OUnU R                  UR                  U5        M<     [	        U6 " U5      nU R                  UR                  S 5        U R                  [        5         [	        USS06" U5        S S S 5        U R                  [        5         [	        USS06" U5        S S S 5        g ! , (       d  f       N>= f! , (       d  f       g = f)	Nr   )r   rr   r   r   r   r   r   r&   )
r)   r   rr   r   r   r   r   r   r   r   )r   r   rr   argsr   r   r   s          r   test_guvectorize_identity,TestVectorizeDecor.test_guvectorize_identity!  s    J78:NO22H99%@E'=8thHU^^X6 3
 T"5)ennd+z*//4 +z***3/ +* +***s   C!C2!
C/2
D c                 0   SSK Jn  S/nU R                  [        5       n[	        US5      " U5        S S S 5        U R                  S[        WR                  5      5        U R                  [        5       n[	        US5      " U5        S S S 5        U R                  [        UR                  5      S5        U R                  [        5       n[	        US5      " U5        S S S 5        g ! , (       d  f       N= f! , (       d  f       Nu= f! , (       d  f       g = f)	Nr   rq   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)   rr   r   r   r   r2   str	exception	NameErrorr   )r   rr   sigsraisess       r   test_guvectorize_invalid_layout2TestVectorizeDecor.test_guvectorize_invalid_layout1  s    E67z*fe$U+ +.F4D4D0EFy)V45e< *V--.8	: z*f34U; +* +* *)
 +*s#   C%4C6	D%
C36
D
DrT   N)r1   rU   rV   rW   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rX   rT   r"   r   r   r      sO    7**E. 	*3,*,*	*0 <r"   r   c                   0    \ rS rSrSrS rS rS rS rSr	g)	
NEP13ArrayiC  z4https://numpy.org/neps/nep-0013-ufunc-overrides.htmlc                     Xl         g r   arrayr   r   s     r   __init__NEP13Array.__init__E      
r"   c                     U R                   $ r   r   ra   s    r   	__array__NEP13Array.__array__H  s    zzr"   c                 6    U R                   R                  5       $ r   )r   tolistra   s    r   r   NEP13Array.tolistK  s    zz  ""r"   c           
          US:w  a  [         $ [        U" U Vs/ s H  n[        R                  " U5      PM     sn0 UD65      $ s  snf N__call__)NotImplementedr   r.   asarrayr   r   methodr   kwargsxs         r   __array_ufunc__NEP13Array.__array_ufunc__N  s?    Z!!%!>A"**Q-!>I&IJJ!>s    Ar   N)
r1   rU   rV   rW   r3   r   r   r   r   rX   rT   r"   r   r   r   C  s    >#Kr"   r   c                   V    \ rS rSrSrS rS rS r\r\r	\r
\r\r\r\r\r\r\r\rSrg)FakeDaskArrayiU  zThis class defines both the NEP13 protocol and the dask collection protocol
(https://docs.dask.org/en/stable/custom-collections.html). This is a stand-in for
dask array, dask dataframe, and for any wrapper around them (e.g. xarray or pint).
c                     Xl         g r   r   r   s     r   r   FakeDaskArray.__init__[  r   r"   c                     US:w  a  [         $ [        R                  " [        R                  " U5      5      nU Vs/ s H&  n[	        U[
        5      (       a  UR                  OUPM(     nn[        U" U0 UD65      $ s  snf r   )r   pickleloadsdumps
isinstancer   r   r   s         r   r   FakeDaskArray.__array_ufunc__^  sm    Z!! V\\%01HLM1:a77Q>MUD3F344 Ns   -A;c                     [        S5      e)Nz#called potentially expensive method)AssertionError)r   r   r   s      r   _dask_methodFakeDaskArray._dask_methodg  s    BCCr"   r   N)r1   rU   rV   rW   r3   r   r   r  r   __dask_graph____dask_keys____dask_optimize____dask_postcompute____dask_postpersist____dask_scheduler____dask_tokenize__computepersist	visualizerX   rT   r"   r   r   r   U  sU    
5D I!N M$''%$GGIr"   r   c                       \ rS rSrS rSrg)TestNEP13WithoutSignatureiw  c                    [        SS9S 5       n[        R                  " / SQ[        R                  S9n[        R                  " / SQ[        R                  S9n[        R                  " / SQ[        R                  S9nU" X#U5      nU R	                  U[        R
                  5        U R                  UR                  5       / SQ5        U" [        U5      X45      nU R	                  U[        5        U R                  UR                  5       / SQ5        U" U[        U5      U5      nU R	                  U[        5        U R                  UR                  5       / SQ5        U" X#[        U5      5      nU R	                  U[        5        U R                  UR                  5       / SQ5        [        R                  " / S	Q[        R                  S9n[        R                  " / S
Q[        R                  S9n[        R                  " / SQ[        R                  S9nU" X#U5      nU R	                  U[        R
                  5        U R                  UR                  5       / SQ5        U" [        U5      X45      nU R	                  U[        5        U R                  UR                  5       / SQ5        U" U[        U5      U5      nU R	                  U[        5        U R                  UR                  5       / SQ5        U" X#[        U5      5      nU R	                  U[        5        U R                  UR                  5       / SQ5        g )NTr   c                     SU -  SU-  -   U-   $ )Nd   rD   rT   )hundredstensr   s      r   	new_ufunc5TestNEP13WithoutSignature.test_all.<locals>.new_ufunc|  s    x<"T')D00r"   )r   r&   r(   r%   )   rt      )      	   )   i  iq  )g?g@gffffff
@)g@g      @gffffff@)g@g!@g#@)gfffff6d@g̼q@gfffff^y@)
r   r.   r   int64assertIsInstancendarrayr   r   r   float64)	r   r  r   r   r   all_npnep13_1nep13_2nep13_3s	            r   test_all"TestNEP13WithoutSignature.test_ally  sU    
D	!	1 
"	1 HHYbhh/HHYbhh/HHYbhh/1#fbjj1/:JqM10gz2)?;Az!}a0gz2)?;A*Q-0gz2)?; HH_BJJ7HH_BJJ7HH_BJJ71#fbjj1*?@JqM10gz2)+@AAz!}a0gz2)+@AA*Q-0gz2)+@Ar"   rT   N)r1   rU   rV   rW   r*  rX   rT   r"   r   r  r  w  s    /Br"   r  c                       \ rS rSrSrS rSrg)TestDaski  zTest that numba ufuncs are compatible with dask collections and wrappers around
dask (e.g. xarray or pint) and that they can be serialized, sent over the network,
deserialized on a different host and applied remotely.
c                    [        [        R                  " S[        R                  S95      n[        R                  " S[        R                  S9S-  n[	        S/5      S 5       n[	        5       S 5       n[        S/S5      S	 5       nUUU4 HR  nU R                  U5         U" U5      n[        U[         5      (       d   e[        UR                  U5        S S S 5        MT     g ! , (       d  f       Mf  = f)
Nr  r%   r&   zf8(f8)c                     U S-  $ Nr&   rT   r   s    r   double_static_vectorize9TestDask.test_dask_array.<locals>.double_static_vectorize      q5Lr"   c                     U S-  $ r0  rT   r1  s    r   double_dynamic_vectorize:TestDask.test_dask_array.<locals>.double_dynamic_vectorize  r4  r"   zf8,f8[:]z()->()c                     U S-  US S & g r0  rT   )r   r   s     r   double_guvectorize4TestDask.test_dask_array.<locals>.double_guvectorize  s    UCFr"   )
r   r.   r/   r%  r   r   subTestr  r   r   )r   r   expectr2  r6  r9  funcr   s           r   test_dask_arrayTestDask.test_dask_array  s    "))ARZZ891BJJ/!3	H:		 
	 
	 
	 
j\8	,	 
-	 $$
D
 d#G!!]3333"177F3 $#

 $#s   !6C$$
C3	rT   N)r1   rU   rV   rW   r3   r>  rX   rT   r"   r   r-  r-    s    
4r"   r-  c                        \ rS rSrS rS rSrg)TestVectorizeDecorJitDisabledi  c                 D    [         R                  U l        S[         l        g r]   r^   ra   s    r   rb   #TestVectorizeDecorJitDisabled.setUp  rd   r"   c                 .    U R                   [        l        g r   rf   ra   s    r   rg   &TestVectorizeDecorJitDisabled.tearDown  ri   r"   rj   Nrk   rT   r"   r   rA  rA    rl   r"   rA  __main__)!r   unittestnumpyr.   numpy.testingr   numba.np.ufunc.ufuncbuilderr   numbar   r   numba.np.ufuncr   numba.np.ufunc.dufuncr   r*   numba.tests.supportr	   r
   
numba.corer   r   rZ   rn   r   r   r   r   r  r-  rA  r1   mainrT   r"   r   <module>rQ     s       , 5 ( & 8 - O* O*d2#4 2+* +*\2$6 2\< \<@K K$ D1B 1Bh4x   4B2$6 2 zMMO r"   