
    `iC                     t   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j#                     dS dS )    N)jitnjit)types)TypingError)_header_lead)TestCasec                      d S N r       p/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/numba/tests/test_typingerror.pywhatr          Dr   c                      t                      S r
   )r   r   r   r   foor      s    66Mr   c                     | j         S r
   axs    r   barr      s	    3Jr   c                     | j         dz  S )N   )shaper   s    r   	issue_868r      s    7Q;r   c                     | dk    rdS dS )Nr   r                 ?r   r   s    r   impossible_return_typer      s    1uurrr   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q66Mr   c                  h    t          j        g           } |                     t           j                  S r
   )nparrayastypeint32r   s    r   using_imprecise_listr.   )   s#    
A88BHr   c                  6    t                               d          S )Nr   )numpyzr-   r   r   r   unknown_moduler1   -   s    <<??r   c                     d S r
   r   )r   yzs      r   nopr5   0   r   r   c                  P    t          j        dt           j                  } d| d<   | S )Nr!   dtyper   r   )r*   emptyfloat64)arrs    r   array_setitem_invalid_castr<   3   s&    
(1BJ
'
'
'CCFJr   c                       e Zd Zd ZdS )Fooc                     dS )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                   J    e 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 )TestTypingErrorc                     	  t          d          t                     |                     d           d S # t          $ r.}|                     dt          |                     Y d }~d S 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@   s    	,DIIcNNN II*+++++  	@ 	@ 	@MM6A?????????	@s   6 
A. #A))A.c                     	  t          t          j        f          t                     |                     d           d S # t
          $ r.}|                     dt          |                     Y d }~d S 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   s    	,!D%+!!#&&& II*+++++  	I 	I 	IMM?QHHHHHHHHH	Is   (A 
A9#A44A9c                     |                      t                    5 } t          d          t                     d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nr   zname 'numpyz' is not defined)assertRaisesr   r   r1   rJ   rK   	exception)r@   raisess     r   test_unknown_modulez#TestTypingError.test_unknown_moduleP   s    {++ 	&vDIIn%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&4c&:J6K6KLLLLL   AA	A	c           	         |                      t                    5 } t          t          j        t          j        dd          f          t                     ddd           n# 1 swxY w Y   t          dz                       t          t          j
                  t          j        d                    }|                     |t          |j                             |                     dt          |j                             dS )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%+ek1c22455i@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A " %I IVC
OOU%9!%<%<== 	 	hF$4 5 5666)3v/?+@+@AAAAAs   =A$$A(+A(c                    |                      t                    5 } t          t          j        f          t
                     d d d            n# 1 swxY w Y   d}|                     |t          |j                             d S )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99	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:c3v/0011111s   )AAAc                    |                      t                    5 } t          d          t                     d d d            n# 1 swxY w Y   t	          |j                  }|                     d|           d |                                D             }|                     t          j
        d|d                              |                     t          j
        d|d                              d S )Nr   z  * (float64, float64) -> float64c                     g | ]}d |v |	S zDuring:r   .0r   s     r   
<listcomp>z8TestTypingError.test_bad_hypot_usage.<locals>.<listcomp>v       GGG1yA~~Q~~~r   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   errmsg	ctx_liness       r   test_bad_hypot_usagez$TestTypingError.test_bad_hypot_usagel   s   {++ 	(vDIIo'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( V%&& 	8&AAA HG 1 1 3 3GGG	 		"UW`abWcddeee	"SU^_`UabbcccccrV   c                 (   |                      t                    5 } t          d          t                     ddd           n# 1 swxY w Y   t	          |j                  }d}|                     ||           |                     d|           dS )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   rn   r`   s       r   test_imprecise_listz#TestTypingError.test_imprecise_list}   s    
 {++ 	&vDIIn%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& V%&&!c6""">GGGGGrV   c                     |                      t                    5 } t          d          t                     ddd           n# 1 swxY w Y   t	          |j                  }|                     d|           dS )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   rn   s      r   test_using_imprecise_listz)TestTypingError.test_using_imprecise_list   s    
 {++ 	,vDII*+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, V%&&&/////rV   c                 n   |                      t                    5 } t          d          t                     d d d            n# 1 swxY w Y   t	          |j                  }|                     t          d                    t          j
                  z   |           |                     d|           d S )Nr   z Function({})z4(array(float64, 1d, C), Literal[int](0), complex128))rR   r   r   r<   rK   rS   rJ   r   rZ   operatorsetitemrt   s      r   test_array_setitem_invalid_castz/TestTypingError.test_array_setitem_invalid_cast   s    {++ 	2vDII0111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 V%&&?11(2BCCC	
 	
 	
 	B	
 	
 	
 	
 	
rV   c                    ddl m} |d             }|                     t                    5 } |             d d d            n# 1 swxY w Y   t	          |j                  }d}|                     ||           d |                                D             }ddg}t          |          D ]3\  }}	| 	                    t          j        |	||                              4d S )Nr   )r   c                  4    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.c                     g | ]}d |v |	S rd   r   re   s     r   rg   zQTestTypingError.test_template_rejection_error_message_cascade.<locals>.<listcomp>   rh   r   z4.*During: resolving callee type: Function.*enumerateri   )numbar   rR   r   rK   rS   rJ   rj   r|   rk   rl   rm   )
r@   r   r   rT   rn   r]   ro   rm   ir   s
             r   -test_template_rejection_error_message_cascadez=TestTypingError.test_template_rejection_error_message_cascade   s@   		 	 
	 {++ 	vCEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	V%&&h'''GG 1 1 3 3GGG	ICEf%% 	8 	8DAqOOBIa1667777	8 	8s   AA
AN)rB   rC   rD   rN   rP   rU   r^   ra   rp   rr   ru   ry   r   r   r   r   rF   rF   >   s        , , ,, , ,M M MB B B2 2 2d d d"H H H	0 	0 	0
 
 
8 8 8 8 8r   rF   c                       e Zd ZdZd Zd ZdS )TestArgumentTypingErrorzQ
    Test diagnostics of typing errors caused by argument inference failure.
    c                     t          d          t                    }t          j        d          }|                    |j                                                  }|                     t                    5 } |d||           d d d            n# 1 swxY w Y   d|j         }| 	                    |t          |j                             d S )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''GAJJHHQW))++,,{++ 	vE!QNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	8qw88hF$4 5 566666s   9BBBc                 |    t          d          t                    }t                      }|                     t                    5 } |d|d           d d d            n# 1 swxY w Y   t          j        d          }|                     |                    t          |j
                            d u           d S )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   rl   compilerk   rm   rK   rS   )r@   r   r   rT   r]   s        r   test_unsupported_typez-TestArgumentTypingError.test_unsupported_type   s    "T"""3''ee{++ 	vE!S!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  L N N 	F,<(=(=>>dJKKKKKs   A!!A%(A%N)rB   rC   rD   __doc__r   r   r   r   r   r   r      sA         7 7 7
L 
L 
L 
L 
Lr   r   c                       e Zd Zd ZdS )TestCallErrorc                    t          dd          d             t          d          fd            }t          j        dt          j                  |                     t
                    5 } |             d d d            n# 1 swxY w Y   t          |j                  }d}|                     t          j
        ||                     d S )	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    5>>!r   
   r7   z0Invalid use of.*readonly array\(float64, 1d, C\))r   r*   r   r:   rR   r   rK   rS   assertIsNotNonerl   rm   )r@   r   rT   gotpatr   r   s        @@r   test_readonly_arrayz!TestCallError.test_readonly_array   s'   	Z$	'	'	'	 	 
(	'	 
d				" 	" 	" 	" 	" 
		" '"BJ///{++ 	vEGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 &"##ARYsC0011111s   3B

BBN)rB   rC   rD   r   r   r   r   r   r      s#        2 2 2 2 2r   r   __main__)$r"   rl   textwraprw   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>   rF   r   r   rB   mainr   r   r   <module>r      s+    				                      ) ) ) ) ) ) 3 3 3 3 3 3 ( ( ( ( ( (	 	 	                	 	 	           &      
z8 z8 z8 z8 z8h' z8 z8 z8zL L L L Lh/ L L L82 2 2 2 2H% 2 2 2( zHMOOOOO r   