
    wgC                     x   d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Z G d de      Z G d dej"                        Z G d dej"                        Z  G d dej"                        Z!e"dk(  r ejF                          yy)    N)jitnjit)types)TypingError)_header_lead)TestCasec                       y N r       a/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/numba/tests/test_typingerror.pywhatr          r   c                      t               S r
   )r   r   r   r   foor      s	    6Mr   c                     | j                   S r
   axs    r   barr      s    33Jr   c                      | j                   dz  S )N   )shaper   s    r   	issue_868r      s    77Q;r   c                     | dkD  ryy)Nr   r                 ?r   r   s    r   impossible_return_typer      s    1ur   c                  ,    t        j                  d      S N   )mathhypotr   r   r   bad_hypot_usager$   "   s    ::a=r   c                      g } t        |       S r
   )len)ls    r   imprecise_listr(   %   s    
Aq6Mr   c                  j    t        j                  g       } | j                  t         j                        S r
   )nparrayastypeint32r   s    r   using_imprecise_listr.   )   s"    
A88BHHr   c                  ,    t         j                  d      S )Nr   )numpyzr-   r   r   r   unknown_moduler1   -   s    <<?r   c                      y r
   r   )r   yzs      r   nopr5   0   r   r   c                  Z    t        j                  dt         j                        } d| d<   | S )Nr!   dtyper   r   )r*   emptyfloat64)arrs    r   array_setitem_invalid_castr<   3   s$    
((1BJJ
'CCFJr   c                       e Zd Zd Zy)Fooc                      y)Nz<Foo instance>r   )selfs    r   __repr__zFoo.__repr__:   s    r   N)__name__
__module____qualname__rA   r   r   r   r>   r>   9   s     r   r>   c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)TestTypingErrorc                     	  t        d      t               | j                  d       y # t        $ r%}| j	                  dt        |             Y d }~y d }~ww xY w)Nr   Should raise errorzUntyped global name 'what')r   r   failr   assertInstrr@   es     r   test_unknown_functionz%TestTypingError.test_unknown_function@   sM    	,DIcN II*+  	@MM6A??	@s   ) 	AAAc                     	  t        t        j                  f      t               | j	                  d       y # t
        $ r%}| j                  dt        |             Y d }~y d }~ww xY w)NrH   z#Unknown attribute 'a' of type int32)r   r   r-   r   rI   r   rJ   rK   rL   s     r   test_unknown_attrsz"TestTypingError.test_unknown_attrsH   sU    	,!D%++!#& II*+  	IMM?QHH	Is   $8 	A&A!!A&c                     | j                  t              5 } t        d      t               d d d        | j	                  dt        j                               y # 1 sw Y   /xY w)Nr   zname 'numpyz' is not defined)assertRaisesr   r   r1   rJ   rK   	exception)r@   raisess     r   test_unknown_modulez#TestTypingError.test_unknown_moduleP   sO    {+ 	&vDIn%	&4c&:J:J6KL	& 	&s   AA#c           	         | j                  t              5 } t        t        j                  t        j
                  dd      f      t               ddd       t        dz   j                  t        t        j                        t        j                  d            }| j                  |t        j                               | j                  dt        |j                               y# 1 sw Y   xY w)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)rR   r   r   r   Arrayr-   r   r   formatrK   intpIntegerLiteralrJ   rS   )r@   rT   expecteds      r   test_issue_868zTestTypingError.test_issue_868V   s     {+ 	Av5D%++ekk1c245i@	A " %I IVC

OU%9%9!%<= 	 	hF$4$4 56)3v/?/?+@A	A 	As   :C&&C/c                     | j                  t              5 } t        t        j                  f      t
               d d d        d}| j                  |t        j                               y # 1 sw Y   1xY w)NzECan't unify return type from the following types: Tuple(), complex128)	rR   r   r   r   r-   r   rJ   rK   rS   )r@   rT   msgs      r   test_return_type_unificationz,TestTypingError.test_return_type_unificatione   s]    {+ 	:v D%++ !79	:c3v//01		: 	:s   %A++A4c                    | j                  t              5 } t        d      t               d d d        t	        j
                        }| j                  d|       |j                         D cg c]	  }d|v s| }}| j                  t        j                  d|d                | j                  t        j                  d|d                y # 1 sw Y   xY wc c}w )Nr   z  * (float64, float64) -> float64During:z0.*During: resolving callee type: Function.*hypotr   ..*During: typing of call .*test_typingerror.pyr!   )rR   r   r   r$   rK   rS   rJ   
splitlines
assertTrueresearch)r@   rT   errmsgr   	ctx_liness        r   test_bad_hypot_usagez$TestTypingError.test_bad_hypot_usagel   s    {+ 	(vDIo'	( V%%& 	8&A !' 1 1 3G1yA~QG	G 			"UW`abWcde		"SU^_`Uabc	( 	( Hs   C-	C7CCc                     | j                  t              5 } t        d      t               ddd       t	        j
                        }d}| j                  ||       | j                  d|       y# 1 sw Y   ExY w)z|
        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)rR   r   r   r(   rK   rS   rJ   )r@   rT   rh   r_   s       r   test_imprecise_listz#TestTypingError.test_imprecise_list}   sm    
 {+ 	&vDIn%	& V%%&!c6">G	& 	&s   A00A9c                     | j                  t              5 } t        d      t               ddd       t	        j
                        }| j                  d|       y# 1 sw Y   1xY w)zh
        Type inference should report informative error about untyped list.
        TODO: #2931
        r   NzUndecided type)rR   r   r   r.   rK   rS   rJ   r@   rT   rh   s      r   test_using_imprecise_listz)TestTypingError.test_using_imprecise_list   sY    
 {+ 	,vDI*+	, V%%&&/		, 	,s   AA%c                 <   | j                  t              5 } t        d      t               d d d        t	        j
                        }| j                  t        dj                  t        j                        z   |       | j                  d|       y # 1 sw Y   gxY w)Nr   z Function({})z4(array(float64, 1d, C), Literal[int](0), complex128))rR   r   r   r<   rK   rS   rJ   r   rY   operatorsetitemrn   s      r   test_array_setitem_invalid_castz/TestTypingError.test_array_setitem_invalid_cast   s    {+ 	2vDI01	2 V%%&?11(2B2BCC	
 	B	
	2 	2s   BBc                    ddl m} |d        }| j                  t              5 } |        d d d        t	        j
                        }d}| j                  ||       |j                         D cg c]	  }d|v s| }}ddg}t        |      D ]-  \  }	}| j                  t        j                  |||	                / y # 1 sw Y   xY wc c}w )Nr   )r   c                  0    d} t        |       D ]  \  }} | S r    )	enumerate)r4   r   bs      r   r   zJTestTypingError.test_template_rejection_error_message_cascade.<locals>.foo   s&    A!! 1Hr   z	No match.rb   z4.*During: resolving callee type: Function.*enumeraterc   )numbar   rR   r   rK   rS   rJ   rd   rv   re   rf   rg   )
r@   r   r   rT   rh   r\   r   ri   rg   is
             r   -test_template_rejection_error_message_cascadez=TestTypingError.test_template_rejection_error_message_cascade   s    		 
	 {+ 	vE	V%%&h' & 1 1 3G1yA~QG	GICEf% 	8DAqOOBIIa167	8	 	 Hs   B?/	C9C?CN)rB   rC   rD   rN   rP   rU   r]   r`   rj   rl   ro   rs   rz   r   r   r   rF   rF   >   s8    ,,MB2d"H	0
8r   rF   c                       e Zd ZdZd Zd Zy)TestArgumentTypingErrorzQ
    Test diagnostics of typing errors caused by argument inference failure.
    c                 |    t        d      t              }t        j                  d      }|j	                  |j
                  j                               }| j                  t              5 } |d||       d d d        d|j
                   }| j                  |t        j                               y # 1 sw Y   >xY w)NTnopython   r!   zUnsupported array dtype: )r   r5   r*   onesr,   r8   newbyteorderrR   r   rJ   rK   rS   )r@   cfuncr   rT   r\   s        r   test_unsupported_array_dtypez4TestArgumentTypingError.test_unsupported_array_dtype   s    "T"3'GGAJHHQWW))+,{+ 	v!QN	.qwwi8hF$4$4 56	 	s   *B22B;c                 @    t        d      t              }t               }| j                  t              5 } |d|d       d d d        t        j                  d      }| j                  |j                  t        j                              d u       y # 1 sw Y   TxY w)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>   rR   r   rf   compilere   rg   rK   rS   )r@   r   r   rT   r\   s        r   test_unsupported_typez-TestArgumentTypingError.test_unsupported_type   s    "T"3'e{+ 	v!S!	  L N 	F,<,<(=>dJK	 	s   BBN)rB   rC   rD   __doc__r   r   r   r   r   r|   r|      s    7
Lr   r|   c                       e Zd Zd Zy)TestCallErrorc                 |   t        dd      d        t        d      fd       }t        j                  dt        j                        | j	                  t
              5 } |        d d d        t        j                        }d}| j                  t        j                  ||             y # 1 sw Y   FxY w)	Nz(f8[:],)Tr~   c                     | S r
   r   r   s    r   innerz0TestCallError.test_readonly_array.<locals>.inner   s    Hr   c                              S r
   r   )gvaluesr   s   r   outerz0TestCallError.test_readonly_array.<locals>.outer   s    >!r   
   r7   z0Invalid use of.*readonly array\(float64, 1d, C\))r   r*   r   r:   rR   r   rK   rS   assertIsNotNonerf   rg   )r@   r   rT   gotpatr   r   s        @@r   test_readonly_arrayz!TestCallError.test_readonly_array   s    	Z$	'	 
(	 
d		" 
	" ''"BJJ/{+ 	vG	 &""#ARYYsC01	 	s   %B22B;N)rB   rC   rD   r   r   r   r   r   r      s    2r   r   __main__)$r"   rf   textwraprq   numpyr*   unittestrx   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>   rF   r|   r   rB   mainr   r   r   <module>r      s     	       ) 3 (		 &  
z8h'' z8zLh// L82H%% 2( zHMMO r   