
    shC                     z   S SK r S SKrS SKrS SKrS SKrS SKrS SKJrJ	r	  S SK
Jr  S SKJr  S SKJr  S SKJr  S rS rS	 rS
 rS rS rS rS rS rS rS r " S S\5      r " S S\R"                  5      r " S S\R"                  5      r  " S S\R"                  5      r!\"S:X  a  \RF                  " 5         gg)    N)jitnjit)types)TypingError)_header_lead)TestCasec                      g N r       p/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_typingerror.pywhatr          r   c                      [        5       $ r
   )r   r   r   r   foor      s	    6Mr   c                     U R                   $ r
   axs    r   barr      s    33Jr   c                      U R                   S-  $ )N   )shaper   s    r   	issue_868r      s    77Q;r   c                     U S:  a  gg)Nr   r                 ?r   r   s    r   impossible_return_typer      s    1ur   c                  .    [         R                  " S5      $ N   )mathhypotr   r   r   bad_hypot_usager$   "   s    ::a=r   c                      / n [        U 5      $ r
   )len)ls    r   imprecise_listr(   %   s    
Aq6Mr   c                  l    [         R                  " / 5      n U R                  [         R                  5      $ r
   )nparrayastypeint32r   s    r   using_imprecise_listr.   )   s"    
A88BHHr   c                  ,    [         R                  S5      $ )Nr   )numpyzr-   r   r   r   unknown_moduler1   -   s    <<?r   c                     g r
   r   )r   yzs      r   nopr5   0   r   r   c                  V    [         R                  " S[         R                  S9n SU S'   U $ )Nr!   dtyper   r   )r*   emptyfloat64)arrs    r   array_setitem_invalid_castr<   3   s$    
((1BJJ
'CCFJr   c                       \ rS rSrS rSrg)Foo9   c                     g)Nz<Foo instance>r   )selfs    r   __repr__Foo.__repr__:   s    r   r   N)__name__
__module____qualname____firstlineno__rB   __static_attributes__r   r   r   r>   r>   9   s     r   r>   c                   P    \ 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)TestTypingError>   c                      [        S5      " [        5        U R                  S5        g ! [         a%  nU R	                  S[        U5      5         S nAg S nAff = f)Nr   Should raise errorzUntyped global name 'what')r   r   failr   assertInstrrA   es     r   test_unknown_function%TestTypingError.test_unknown_function@   sK    	,IcN II*+  	@MM6A??	@s   ) 
AAAc                      [        [        R                  45      " [        5        U R	                  S5        g ! [
         a%  nU R                  S[        U5      5         S nAg S nAff = f)NrM   z#Unknown attribute 'a' of type int32)r   r   r-   r   rN   r   rO   rP   rQ   s     r   test_unknown_attrs"TestTypingError.test_unknown_attrsH   sS    	,%++!#& II*+  	IMM?QHH	Is   $8 
A'A""A'c                     U R                  [        5       n[        S5      " [        5        S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nr   zname 'numpyz' is not defined)assertRaisesr   r   r1   rO   rP   	exception)rA   raisess     r   test_unknown_module#TestTypingError.test_unknown_moduleP   sF    {+vIn% ,4c&:J:J6KL ,+s   A
A(c                    U R                  [        5       n[        [        R                  " [        R
                  SS5      45      " [        5        SSS5        [        S-   R                  [        [        R                  5      [        R                  " S5      5      nU R                  U[        WR                  5      5        U R                  S[        UR                  5      5        g! , (       d  f       N= f)z
Summary: multiplying a scalar by a non-scalar would cause a crash in
type inference because TimeDeltaMixOp always assumed at least one of
its operands was an NPTimeDelta in its generic() method.
r!   CNzX Function(<built-in function mul>) found for signature:
 
 >>> mul(UniTuple({} x 1), {})r   zDuring: typing of)rY   r   r   r   Arrayr-   r   r   formatrP   intpIntegerLiteralrO   rZ   )rA   r[   expecteds      r   test_issue_868TestTypingError.test_issue_868V   s     {+v%++ekk1c245i@ , " %I IVC

OU%9%9!%<= 	 	hF$4$4 56)3v/?/?+@A ,+s   ;C((
C6c                     U R                  [        5       n[        [        R                  45      " [
        5        S S S 5        SnU R                  U[        WR                  5      5        g ! , (       d  f       N6= f)NzECan't unify return type from the following types: Tuple(), complex128)	rY   r   r   r   r-   r   rO   rP   rZ   )rA   r[   msgs      r   test_return_type_unification,TestTypingError.test_return_type_unificatione   sT    {+v%++ !79 ,c3v//01	 ,+s   %A++
A9c                    U R                  [        5       n[        S5      " [        5        S S S 5        [	        WR
                  5      nU R                  SU5        UR                  5        Vs/ s H  nSU;   d  M  UPM     nnU R                  [        R                  " SUS   5      5        U R                  [        R                  " SUS   5      5        g ! , (       d  f       N= fs  snf )Nr   z  * (float64, float64) -> float64During:z0.*During: resolving callee type: Function.*hypotr   ..*During: typing of call .*test_typingerror.pyr!   )rY   r   r   r$   rP   rZ   rO   
splitlines
assertTrueresearch)rA   r[   errmsgr   	ctx_liness        r   test_bad_hypot_usage$TestTypingError.test_bad_hypot_usagel   s    {+vIo' , V%%& 	8&A !' 1 1 3G 31yA~Q 3	G 			"UW`abWcde		"SU^_`Uabc ,+ Hs   C-
C';C'
C$c                     U R                  [        5       n[        S5      " [        5        SSS5        [	        WR
                  5      nSnU R                  X25        U R                  SU5        g! , (       d  f       NI= f)zd
Type inference should catch that a list type's remain imprecise,
instead of letting lowering fail.
r   NzKCannot infer the type of variable 'l', have imprecise type: list(undefined)z&For Numba to be able to compile a list)rY   r   r   r(   rP   rZ   rO   )rA   r[   rr   rh   s       r   test_imprecise_list#TestTypingError.test_imprecise_list}   sb    
 {+vIn% , V%%&!c">G ,+s   A//
A=c                     U R                  [        5       n[        S5      " [        5        SSS5        [	        WR
                  5      nU R                  SU5        g! , (       d  f       N6= f)zP
Type inference should report informative error about untyped list.
TODO: #2931
r   NzUndecided type)rY   r   r   r.   rP   rZ   rO   rA   r[   rr   s      r   test_using_imprecise_list)TestTypingError.test_using_imprecise_list   sP    
 {+vI*+ , V%%&&/	 ,+s   A
A*c                 F   U R                  [        5       n[        S5      " [        5        S S S 5        [	        WR
                  5      nU R                  [        SR                  [        R                  5      -   U5        U R                  SU5        g ! , (       d  f       Nl= f)Nr   z Function({})z4(array(float64, 1d, C), Literal[int](0), complex128))rY   r   r   r<   rP   rZ   rO   r   ra   operatorsetitemrz   s      r   test_array_setitem_invalid_cast/TestTypingError.test_array_setitem_invalid_cast   s{    {+vI01 , V%%&?11(2B2BCC	
 	B	
 ,+s   B
B c                    SSK Jn  US 5       nU R                  [        5       nU" 5         S S S 5        [	        WR
                  5      nSnU R                  XT5        UR                  5        Vs/ s H  nSU;   d  M  UPM     nnSS/n[        U5       H-  u  pU R                  [        R                  " XgU	   5      5        M/     g ! , (       d  f       N= fs  snf )Nr   )r   c                  2    Sn [        U 5       H  u  pM     U $ r    )	enumerate)r4   r   bs      r   r   JTestTypingError.test_template_rejection_error_message_cascade.<locals>.foo   s    A!! %Hr   z	No match.rl   z4.*During: resolving callee type: Function.*enumeraterm   )numbar   rY   r   rP   rZ   rO   rn   r   ro   rp   rq   )
rA   r   r   r[   rr   rd   r   rs   rq   is
             r   -test_template_rejection_error_message_cascade=TestTypingError.test_template_rejection_error_message_cascade   s    		 
	 {+vE ,V%%&h' & 1 1 3G 31yA~Q 3	GICEf%DAOOBIIa167 & ,+ Hs   C.
C<C
Cr   N)rD   rE   rF   rG   rS   rV   r\   re   ri   rt   rw   r{   r   r   rH   r   r   r   rJ   rJ   >   s8    ,,MB2d"H	0
8r   rJ   c                   $    \ rS rSrSrS rS rSrg)TestArgumentTypingError   zI
Test diagnostics of typing errors caused by argument inference failure.
c                    [        SS9" [        5      n[        R                  " S5      nUR	                  UR
                  R                  5       5      nU R                  [        5       nU" SX"5        S S S 5        SUR
                   3nU R                  U[        WR                  5      5        g ! , (       d  f       NC= f)NTnopython   r!   zUnsupported array dtype: )r   r5   r*   onesr,   r8   newbyteorderrY   r   rO   rP   rZ   )rA   cfuncr   r[   rd   s        r   test_unsupported_array_dtype4TestArgumentTypingError.test_unsupported_array_dtype   s    T"3'GGAJHHQWW))+,{+v!QN ,.qwwi8hF$4$4 56 ,+s   (
B//
B=c                 F   [        SS9" [        5      n[        5       nU R                  [        5       nU" SUS5        S S S 5        [
        R                  " S5      nU R                  UR                  [        WR                  5      5      S L5        g ! , (       d  f       NZ= f)NTr   r!   zThis error may have been caused by the following argument\(s\):\n- argument 1:.*Cannot determine Numba type of <class 'numba.tests.test_typingerror.Foo'>)r   r5   r>   rY   r   rp   compilero   rq   rP   rZ   )rA   r   r   r[   rd   s        r   test_unsupported_type-TestArgumentTypingError.test_unsupported_type   s    T"3'e{+v!S! ,  L N 	F,<,<(=>dJK ,+s   B
B r   N)rD   rE   rF   rG   __doc__r   r   rH   r   r   r   r   r      s    7
Lr   r   c                       \ rS rSrS rSrg)TestCallError   c                 x  ^^ [        SSS9S 5       m[        SS9UU4S j5       n[        R                  " S[        R                  S9mU R	                  [
        5       nU" 5         S S S 5        [        WR                  5      nSnU R                  [        R                  " XC5      5        g ! , (       d  f       NK= f)	Nz(f8[:],)Tr   c                     U $ r
   r   r   s    r   inner0TestCallError.test_readonly_array.<locals>.inner   s    Hr   c                     > T" T 5      $ r
   r   )gvaluesr   s   r   outer0TestCallError.test_readonly_array.<locals>.outer   s    >!r   
   r7   z0Invalid use of.*readonly array\(float64, 1d, C\))r   r*   r   r:   rY   r   rP   rZ   assertIsNotNonerp   rq   )rA   r   r[   gotpatr   r   s        @@r   test_readonly_array!TestCallError.test_readonly_array   s    	Z$	'	 
(	 
d		" 
	" ''"BJJ/{+vG , &""#ARYYs01 ,+s   B++
B9r   N)rD   rE   rF   rG   r   rH   r   r   r   r   r      s    2r   r   __main__)$r"   rp   textwrapr~   numpyr*   unittestr   r   r   
numba.corer   numba.core.errorsr   numba.core.types.functionsr   numba.tests.supportr   r   r   r   r   r   r$   r(   r.   r1   r5   r<   objectr>   rJ   r   r   rD   mainr   r   r   <module>r      s     	       ) 3 (		 &  
z8h'' z8zLh// L82H%% 2( zMMO r   