o
    1&i                     @   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m	Z	m
Z
 d dlmZmZm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G dd deeZedkr[e  dS dS )    N)jitnjit)typeserrorsutils)captured_stdoutTestCaseEnableNRTStatsMixinc                 C      t |  d S Nprintx r   AC:\wamp64\www\opt\env\Lib\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      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nopython)r   )r   r!   r   r   r   make_print_closure    s   r$   c                   @   sv   e Zd Zdd Zdd Zed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              	   C   sd   t |ft}|D ]&}t  || | tj t|d  W d    n1 s*w   Y  q	d S )N
)r   r   r   assertEqualsysstdoutgetvaluestr)selftypvaluescfuncvalr   r   r   check_values(   s   zTestPrint.check_valuesc                 C   sV  |  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t}t # |d tj }d}| || | |d W d   n1 snw   Y  ttjdd}t|ft}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.
        )   )r2   r3      g3/mlg3/m)r2      r4   l   {        )TFg      ?g@xDnan)y      ?      ?msd   g?z1.10000002384r&   Nr2   C
   dtypez[0 1 2 3 4 5 6 7 8 9]
)r1   r   Zint32Zint64Zuint64booleanZfloat64floatZ	complex64ZNPTimedeltanpZtimedelta64r   Zfloat32r   r   r(   r)   r*   
assertTrue
startswithendswithArrayaranger'   )r,   r/   gotexpectZ	arraytyper   r   r   test_print_values/   s.   
	"zTestPrint.test_print_valuesz,Issue with intermittent NRT leak, see #9355.c              	   C   s   |   7 g d}| | | tjtjdd|f W d    n1 s&w   Y  W d    d S W d    d S 1 s>w   Y  d S )N)r2            T)Z	reflected)ZassertNoNRTLeakZassertRefCountr1   r   Listintp)r,   r   r   r   r   test_print_nrt_typeP   s   
"zTestPrint.test_print_nrt_typec              	   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   ZS4r2   	   r;   Tr"   r   r&   N)r?   r<   Z
frombuffer	bytearrayranger   r   lenr   r'   r(   r)   r*   r+   )r,   r<   r   pyfuncr/   r   r   r   r   test_print_array_item]   s   
$zTestPrint.test_print_array_itemc                 C   sb   t }ttjfd |}t  |ddd | tj d W d    d S 1 s*w   Y  d S )NrH   r2      1 2 3
)	r   r   r   rL   r   r'   r(   r)   r*   r,   rR   r/   r   r   r   test_print_multiple_valuesk   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#   Znogilr2   rT   rH   rU   )r   r   r   r'   r(   r)   r*   rV   r   r   r   test_print_nogilr   s   "zTestPrint.test_print_nogilc                 C   sT   t }td|}t  |  | tj d W d    d S 1 s#w   Y  d S )Nr   r&   )r   r   r   r'   r(   r)   r*   rV   r   r   r   test_print_emptyy   s   "zTestPrint.test_print_emptyc                 C   sZ   t }ttjf|}t  |d | tj d W d    d S 1 s&w   Y  d S )Nr2   z1 hop! 3.5
)	r   r   r   rL   r   r'   r(   r)   r*   rV   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"   r2   )rT   rH   )   y              @z1 (2, 3) 4 5j
z1 hop! (2, 3) 4 5j
)r   r   r   r'   r(   r)   r*   r    rV   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 )NZhellor   r   r]   r   r   bar   s   z*TestPrint.test_inner_fn_print.<locals>.barrI   z[0 1 2 3 4]
hello
)r   r?   rD   r   r'   r(   r)   r*   )r,   r_   r   r   r^   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   ZUnsupportedErrorZassertIn	exceptionmsg)r,   rb   Z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   r]      s   z/TestPrint.test_print_no_truncation.<locals>.foorh   r   ri   r&   N)r   r   r'   r(   r)   r*   rj   )r,   r]   r   r   r   test_print_no_truncation   s   
$"z"TestPrint.test_print_no_truncationN)__name__
__module____qualname__r1   rG   unittestskiprM   rS   rW   rX   rY   rZ   r\   r`   rg   rk   r   r   r   r   r%   &   s    !
r%   __main__)r(   numpyr?   ro   Znumbar   r   Z
numba.corer   r   r   Znumba.tests.supportr   r   r	   r   r   r   r   r   r   r    r$   r%   rl   mainr   r   r   r   <module>   s&     