o
    8ήc                     @   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 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Zedkrle  dS dS )    N)compile_isolatedFlagsjit)typeserrorsutils)captured_stdouttagTestCaseTc                 C      t |  d S Nprintx r   =/tmp/pip-target-vg8gfxp4/lib/python/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      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   r   r    c                 C   s   t | |g|R   d S r   r   r   r   r   r   print_vararg"   s   r!   c                 C   s   t | d|g|R   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 d   n1 srw   Y   + g d}| |ttj|f W d   n1 sw   Y  W d   n1 sw   Y  ttjdd}t |ftd}|j}t  |t
jdt
jd tj d W d   dS 1 sw   Y  dS )z8
        Test printing a single argument value.
        c              	      sh   t  | f}|j}|D ]&}t  || tj t|d  W d    n1 s,w   Y  qd S )N
)r   entry_pointr	   assertEqualsysstdoutgetvaluestr)typvaluescrcfuncvalpyfuncselfr   r   check_values6   s   z1TestPrint.test_print_values.<locals>.check_values)   )r8   r9      g3/mlg3/m)r8      r:   l   {        )TFg      ?g@xDnan)y      ?      ?msd   g?z1.10000002384r(   N)r8            r8   C)flags
   dtypez[0 1 2 3 4 5 6 7 8 9]
)r   r   int32int64uint64booleanfloat64float	complex64NPTimedeltanptimedelta64r   float32r)   r	   r+   r,   r-   
assertTrue
startswithendswithassertNoNRTLeakassertRefCountListArrayenable_pyobj_flagsaranger*   )r6   r7   r1   r2   gotexpectr   	arraytyper   r4   r   test_print_values0   sD   	

	"zTestPrint.test_print_valuesc              	   C   s   t dg}t jttdd|d}t}tdd|}tt|D ]+}t  ||| | 	t
j t|| d d  W d	   n1 sGw   Y  q!d	S )
z:
        Test printing a Numpy character sequence
        )r   S4r8   	   rE   Tr$   r   r(   N)rO   rF   
frombuffer	bytearrayranger   r   lenr	   r*   r+   r,   r-   r.   )r6   rF   r   r5   r2   r   r   r   r   test_print_array_itemb   s   
$zTestPrint.test_print_array_itemc                 C   sf   t }t|tjfd }|j}t  |ddd | tj	 d W d    d S 1 s,w   Y  d S )Nr?   r8      1 2 3
)
r   r   r   rG   r)   r	   r*   r+   r,   r-   r6   r5   r1   r2   r   r   r   test_print_multiple_valuesp   s   "z$TestPrint.test_print_multiple_valuesc                 C   s^   t }tddd|}t  |ddd | tj d W d    d S 1 s(w   Y  d S )NT)r%   nogilr8   rf   r?   rg   )r   r   r	   r*   r+   r,   r-   r6   r5   r2   r   r   r   test_print_nogilx   s   "zTestPrint.test_print_nogilc                 C   sX   t }t|d}|j}t  |  | tj d W d    d S 1 s%w   Y  d S )Nr   r(   )r   r   r)   r	   r*   r+   r,   r-   rh   r   r   r   test_print_empty   s   
"zTestPrint.test_print_emptyc                 C   s^   t }t|tjf}|j}t  |d | tj	 d W d    d S 1 s(w   Y  d S )Nr8   z1 hop! 3.5
)
r    r   r   rG   r)   r	   r*   r+   r,   r-   rh   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 d    n1 s&w   Y  t}tdd|}t  |ddd | tj d W d    d S 1 sRw   Y  d S )NTr$   r8   )rf   r?   )   y              @z1 (2, 3) 4 5j
z1 hop! (2, 3) 4 5j
)r!   r   r	   r*   r+   r,   r-   r"   rk   r   r   r   test_print_vararg   s   "zTestPrint.test_print_varargc                    sx   t dddd  t dd fdd}td}t  || | tj d W d    d S 1 s5w   Y  d S )	NTr$   c                 S   r   r   r   r   r   r   r   foo   s   z*TestPrint.test_inner_fn_print.<locals>.fooc                    s    |   d d S )Nhellor   r   rq   r   r   bar   s   z*TestPrint.test_inner_fn_print.<locals>.barr@   z[0 1 2 3 4]
hello
)r   rO   rZ   r	   r*   r+   r,   r-   )r6   rt   r   r   rs   r   test_inner_fn_print   s   

"zTestPrint.test_inner_fn_printc                 C   s\   t dddd }| tj}|  W d    n1 sw   Y  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   UnsupportedErrorassertIn	exceptionmsg)r6   rw   raisesexpectedr   r   r   test_print_w_kwarg_raises   s   
z#TestPrint.test_print_w_kwarg_raisesc                 C   sf   t dddd }t  |  | tj ddgd d  W d	   d	S 1 s,w   Y  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   rq      s   z/TestPrint.test_print_no_truncation.<locals>.foor   r   r   r(   N)r   r	   r*   r+   r,   r-   r   )r6   rq   r   r   r   test_print_no_truncation   s   
$"z"TestPrint.test_print_no_truncationN)__name__
__module____qualname__r^   re   ri   rl   rm   rn   rp   ru   r   r   r   r   r   r   r'   .   s    2r'   __main__) r+   numpyrO   unittestnumba.core.compilerr   r   numbar   
numba.corer   r   r   numba.tests.supportr	   r
   r   rY   enable_pyobjectforce_pyobj_flagsforce_pyobjectr   r   r   r   r    r!   r"   r&   r'   r   mainr   r   r   r   <module>   s0     