U
    9%e<                     @   s   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
mZmZ d dlmZmZmZmZ e Zde_e Zde_dd Zd	d
 Zdd Zdd Zdd Zdd Zdd Zdd ZG dd deeZedkre   dS )    N)compile_isolatedFlagsjit)typeserrorsutils)captured_stdouttagTestCaseEnableNRTStatsMixinTc                 C   s   t |  d S Nprintx r   U/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/numba/tests/test_print.pyprint_value   s    r   c                 C   s   t | | j d S r   )r   r   )arrir   r   r   print_array_item   s    r   c                 C   s   t | || d S r   r   abcr   r   r   print_values   s    r   c                   C   s
   t   d S r   r   r   r   r   r   print_empty   s    r   c                 C   s   t | dd d S )Nhop!g      @r   r   r   r   r   print_string    s    r   c                 C   s   t | |f|  d S r   r   r   r   r   r   print_vararg#   s    r    c                 C   s   t | d|f|  d S )Nr   r   r   r   r   r   print_string_vararg&   s    r!   c                    s    fdd}t dd S )Nc                      s    S r   r   r   r   r   r   print_closure*   s    z)make_print_closure.<locals>.print_closureTnopythonr   )r   r"   r   r   r   make_print_closure)   s    r%   c                   @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )	TestPrintc              
      s  t   fdd}|tjd |tjd |tjd |tjd |tjddtd	f |tjd
 |t	dt
ddf t tjf}|j}t < |d tj }d}|| |d W 5 Q R X  < ddddg}| |ttj|f W 5 Q R X W 5 Q R X ttjdd}t |ftd}|j}t , |t
jdt
jd tj d W 5 Q R X dS )z8
        Test printing a single argument value.
        c              
      sT   t  | f}|j}|D ]8}t ( || tj t|d  W 5 Q R X qd S )N
)r   entry_pointr	   assertEqualsysstdoutgetvaluestr)typvaluescrcfuncvalpyfuncselfr   r   check_values7   s    z1TestPrint.test_print_values.<locals>.check_values)   )r7   r8      g3/mlg3/m)r7      r9   l   {        )TFg      ?g@xDnan)y      ?      ?msd   g?z1.10000002384r'   r7            C)flags
   dtypez[0 1 2 3 4 5 6 7 8 9]
N)r   r   int32Zint64Zuint64booleanZfloat64floatZ	complex64ZNPTimedeltanpZtimedelta64r   Zfloat32r(   r	   r*   r+   r,   
assertTrue
startswithendswithZassertNoNRTLeakZassertRefCountListZArrayenable_pyobj_flagsaranger)   )r5   r6   r0   r1   gotexpectr   Z	arraytyper   r3   r   test_print_values1   s:    	

(zTestPrint.test_print_valuesc              
   C   s   t dg}t jttdd|d}t}tdd|}tt|D ]B}t 2 ||| | 	t
j t|| d d  W 5 Q R X qBd	S )
z:
        Test printing a Numpy character sequence
        )r   ZS4r7   	   rD   Tr#   r   r'   N)rI   rE   Z
frombuffer	bytearrayranger   r   lenr	   r)   r*   r+   r,   r-   )r5   rE   r   r4   r1   r   r   r   r   test_print_array_itemc   s    
zTestPrint.test_print_array_itemc              	   C   sP   t }t|tjfd }|j}t $ |ddd | tj	 d W 5 Q R X d S )Nr>   r7      1 2 3
)
r   r   r   rF   r(   r	   r)   r*   r+   r,   r5   r4   r0   r1   r   r   r   test_print_multiple_valuesq   s    z$TestPrint.test_print_multiple_valuesc              	   C   sH   t }tddd|}t $ |ddd | tj d W 5 Q R X d S )NT)r$   Znogilr7   rX   r>   rY   )r   r   r	   r)   r*   r+   r,   r5   r4   r1   r   r   r   test_print_nogily   s
    zTestPrint.test_print_nogilc              	   C   sB   t }t|d}|j}t  |  | tj d W 5 Q R X d S )Nr   r'   )r   r   r(   r	   r)   r*   r+   r,   rZ   r   r   r   test_print_empty   s    
zTestPrint.test_print_emptyc              	   C   sH   t }t|tjf}|j}t   |d | tj	 d W 5 Q R X d S )Nr7   z1 hop! 3.5
)
r   r   r   rF   r(   r	   r)   r*   r+   r,   rZ   r   r   r   test_print_strings   s    zTestPrint.test_print_stringsc              	   C   s   t }tdd|}t $ |ddd | tj d W 5 Q R X t}tdd|}t $ |ddd | tj d W 5 Q R X d S )NTr#   r7   )rX   r>   )   y              @z1 (2, 3) 4 5j
z1 hop! (2, 3) 4 5j
)r    r   r	   r)   r*   r+   r,   r!   r\   r   r   r   test_print_vararg   s    zTestPrint.test_print_varargc              	      sb   t dddd  t dd fdd}td}t   || | tj d W 5 Q R X d S )	NTr#   c                 S   s   t |  d S r   r   r   r   r   r   foo   s    z*TestPrint.test_inner_fn_print.<locals>.fooc                    s    |   d d S )NZhellor   r   rb   r   r   bar   s    z*TestPrint.test_inner_fn_print.<locals>.barr?   z[0 1 2 3 4]
hello
)r   rI   rO   r	   r)   r*   r+   r,   )r5   rd   r   r   rc   r   test_inner_fn_print   s    

zTestPrint.test_inner_fn_printc              	   C   sH   t dddd }| tj}|  W 5 Q R X d}| |jj| d S )NTr#   c                   S   s   t ddd d S )Nr   T)flushr   r   r   r   r   print_kwarg   s    z8TestPrint.test_print_w_kwarg_raises.<locals>.print_kwargzKNumba's print() function implementation does not support keyword arguments.)r   assertRaisesr   ZUnsupportedErrorZassertIn	exceptionmsg)r5   rg   Zraisesexpectedr   r   r   test_print_w_kwarg_raises   s    
z#TestPrint.test_print_w_kwarg_raisesc              	   C   sP   t dddd }t . |  | tj ddgd d  W 5 Q R X d	S )
z9 See: https://github.com/numba/numba/issues/3811
        Tr#   c                   S   s   t ddgd  d S )N r   '  )r   joinr   r   r   r   rb      s    z/TestPrint.test_print_no_truncation.<locals>.foorm   r   rn   r'   N)r   r	   r)   r*   r+   r,   ro   )r5   rb   r   r   r   test_print_no_truncation   s
    
z"TestPrint.test_print_no_truncationN)__name__
__module____qualname__rR   rW   r[   r]   r^   r_   ra   re   rl   rp   r   r   r   r   r&   /   s   2r&   __main__)!r*   numpyrI   ZunittestZnumba.core.compilerr   r   Znumbar   Z
numba.corer   r   r   Znumba.tests.supportr	   r
   r   r   rN   Zenable_pyobjectZforce_pyobj_flagsZforce_pyobjectr   r   r   r   r   r    r!   r%   r&   rq   mainr   r   r   r   <module>   s,    