
    ܙd<                     &   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 Zd Zd	 Zd
 Zd Zd Zd Zd Z G d dee          Zedk    r ej                      dS dS )    N)compile_isolatedFlagsjit)typeserrorsutils)captured_stdouttagTestCaseEnableNRTStatsMixinTc                 $    t          |            d S Nprintxs    6lib/python3.11/site-packages/numba/tests/test_print.pyprint_valuer      s    	!HHHHH    c                 :    t          | |         j                   d S r   )r   r   )arris     r   print_array_itemr      s    	#a&(OOOOOr   c                 (    t          | ||           d S r   r   abcs      r   print_valuesr       s    	!QNNNNNr   c                  "    t                       d S r   r    r   r   print_emptyr#      s    	GGGGGr   c                 (    t          | dd           d S )Nhop!g      @r   r   s    r   print_stringr&       s    	!VSr   c                 "    t          | |g|R   d S r   r   r   s      r   print_varargr(   #   s    	!QOOOOOOOr   c                 $    t          | d|g|R   d S )Nr%   r   r   s      r   print_string_varargr*   &   s"    	!VQr   c                 @      fd} t          d                     S )Nc                       S r   r"   r   s   r   print_closurez)make_print_closure.<locals>.print_closure*   s    r   Tnopythonr   )r   r-   s   ` r   make_print_closurer0   )   s7        3a   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 )	TestPrintc                     t            fd} |t          j        d            |t          j        d            |t          j        d            |t          j        d            |t          j        ddt          d          f            |t          j        d	            |t          j	        d
          t          j        dd
          f           t          t          j        f          }|j        }t                      5   |d           t           j                                        }d}                     |                    |                                          |                    d                     ddd           n# 1 swxY w Y                                    5  g d}                     |          5   |t          j        t          j                  |f           ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   t          j        t          j        dd          }t          |ft4                    }|j        }t                      5   |t          j        dt          j                                                  t           j                                        d           ddd           dS # 1 swxY w Y   dS )z8
        Test printing a single argument value.
        c                 (   t          | f          }|j        }|D ]u}t                      5   ||                               t          j                                        t          |          dz              d d d            n# 1 swxY w Y   vd S )N
)r   entry_pointr
   assertEqualsysstdoutgetvaluestr)typvaluescrcfuncvalpyfuncselfs        r   check_valuesz1TestPrint.test_print_values.<locals>.check_values7   s    !&3&11BNE M M$&& M ME#JJJ$$SZ%8%8%:%:CHHtOLLLM M M M M M M M M M M M M M MM Ms   ABB
	B
	)   )rD   rE      g3/mlg3/m)rD      rF   l   {        )TFg      ?g@xDnan)y      ?      ?msd   g?z1.10000002384r5   N)rD            rD   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   float32r6   r
   r8   r9   r:   
assertTrue
startswithendswithassertNoNRTLeakassertRefCountListArrayenable_pyobj_flagsaranger7   )	rB   rC   r>   r?   gotexpectr   	arraytyperA   s	   `       @r   test_print_valueszTestPrint.test_print_values1   s    	M 	M 	M 	M 	M 	M 	U[),,,U[ #L 	M 	M 	MU\ $D 	E 	E 	EU]M222U]S+uU||$DEEEU_g...U&t,,r~c4/H/H.JKKKfu}&677 	0 	0E#JJJ*%%''C$FOOCNN622333OOCLL..///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 !!## 	< 	<A$$Q'' < <UZ44qd;;;< < < < < < < < < < < < < < <	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< KQ44	fyl:LMMM 	8 	8E")Bbh///000SZ002268 8 8	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s\   A<FFF-H*G=1H=H	HH	HHH,AKKKc           	         t          j        dg          }t          j        t          t	          dd                    |          }t
          } t          d          |          }t	          t          |                    D ]}t                      5   |||           | 	                    t          j                                        t          ||         d                   dz              d	d	d	           n# 1 swxY w Y   d	S )
z:
        Test printing a Numpy character sequence
        )r   S4rD   	   rQ   Tr.   r   r5   N)r[   rR   
frombuffer	bytearrayranger   r   lenr
   r7   r8   r9   r:   r;   )rB   rR   r   rA   r?   r   s         r   test_print_array_itemzTestPrint.test_print_array_itemc   s<    +''mIeAqkk22%@@@!"T"""6**s3xx 	Q 	QA "" Q Qc1  !4!4!6!6CF3K8H8H48OPPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q	Q 	Qs   AC::C>	C>	c                 *   t           }t          |t          j        fdz            }|j        }t                      5   |ddd           |                     t          j        	                                d           d d d            d S # 1 swxY w Y   d S )NrK   rD      1 2 3
)
r    r   r   rS   r6   r
   r7   r8   r9   r:   rB   rA   r>   r?   s       r   test_print_multiple_valuesz$TestPrint.test_print_multiple_valuesq   s    fu{nq&899 	? 	?E!QNNNSZ0022I>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   A BBBc                    t           } t          dd          |          }t                      5   |ddd           |                     t          j                                        d           d d d            d S # 1 swxY w Y   d S )NT)r/   nogilrD   rt   rK   ru   )r    r   r
   r7   r8   r9   r:   rB   rA   r?   s      r   test_print_nogilzTestPrint.test_print_nogily   s    .T...v66 	? 	?E!QNNNSZ0022I>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   A A==BBc                    t           }t          |d          }|j        }t                      5   |             |                     t
          j                                        d           d d d            d S # 1 swxY w Y   d S )Nr"   r5   )r#   r   r6   r
   r7   r8   r9   r:   rv   s       r   test_print_emptyzTestPrint.test_print_empty   s    fb)) 	: 	:EGGGSZ0022D999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s   =A77A;>A;c                     t           }t          |t          j        f          }|j        }t                      5   |d           |                     t          j        	                                d           d d d            d S # 1 swxY w Y   d S )NrD   z1 hop! 3.5
)
r&   r   r   rS   r6   r
   r7   r8   r9   r:   rv   s       r   test_print_stringszTestPrint.test_print_strings   s    fu{n55 	D 	DE!HHHSZ0022NCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Ds   >BB
Bc                    t           } t          d          |          }t                      5   |ddd           |                     t          j                                        d           d d d            n# 1 swxY w Y   t          } t          d          |          }t                      5   |ddd           |                     t          j                                        d           d d d            d S # 1 swxY w Y   d S )NTr.   rD   )rt   rK   )   y              @z1 (2, 3) 4 5j
z1 hop! (2, 3) 4 5j
)r(   r   r
   r7   r8   r9   r:   r*   rz   s      r   test_print_varargzTestPrint.test_print_vararg   s    "T"""6** 	G 	GE!VW%%%SZ00224EFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G %"T"""6** 	L 	LE!VW%%%SZ00224JKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	Ls%   A A;;A?A?4A DDDc                 `   t          d          d             t          d          fd            }t          j        d          }t                      5   ||           |                     t
          j                                        d           d d d            d S # 1 swxY w Y   d S )NTr.   c                 $    t          |            d S r   r   r   s    r   fooz*TestPrint.test_inner_fn_print.<locals>.foo   s    !HHHHHr   c                 4     |             d           d S )Nhellor"   )r   r   s    r   barz*TestPrint.test_inner_fn_print.<locals>.bar   s!    CFFFCLLLLLr   rL   z[0 1 2 3 4]
hello
)r   r[   rf   r
   r7   r8   r9   r:   )rB   r   r   r   s      @r   test_inner_fn_printzTestPrint.test_inner_fn_print   s   	d				 	 
		 
d				 	 	 	 
		 IaLL 	L 	LCFFFSZ00224JKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	Ls   >B##B'*B'c                     t          d          d             }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   d}|                     |j        j        |           d S )NTr.   c                  (    t          dd           d S )Nr   T)flushr   r"   r   r   print_kwargz8TestPrint.test_print_w_kwarg_raises.<locals>.print_kwarg   s    #T""""""r   zKNumba's print() function implementation does not support keyword arguments.)r   assertRaisesr   UnsupportedErrorassertIn	exceptionmsg)rB   r   raisesexpecteds       r   test_print_w_kwarg_raisesz#TestPrint.test_print_w_kwarg_raises   s    	d				# 	# 
		# v677 	6KMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	)f&*H55555s   AAAc                 2   t          d          d             }t                      5   |             |                     t          j                                        d                    dgdz            dz              ddd           dS # 1 swxY w Y   dS )	z9 See: https://github.com/numba/numba/issues/3811
        Tr.   c                  R    t          d                    dgdz                       d S )N r   '  )r   joinr"   r   r   r   z/TestPrint.test_print_no_truncation.<locals>.foo   s(    "''3%%-(()))))r   r   r   r   r5   N)r   r
   r7   r8   r9   r:   r   )rB   r   s     r   test_print_no_truncationz"TestPrint.test_print_no_truncation   s     
d				* 	* 
		* 	S 	SCEEESZ0022BGGSEEM4J4JT4QRRR	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	Ss   ABBBN)__name__
__module____qualname__rj   rr   rw   r{   r}   r   r   r   r   r   r"   r   r   r2   r2   /   s        08 08 08dQ Q Q? ? ?? ? ?: : :D D DL L LL L L"	6 	6 	6S S S S Sr   r2   __main__)!r8   numpyr[   unittestnumba.core.compilerr   r   numbar   
numba.corer   r   r	   numba.tests.supportr
   r   r   r   re   enable_pyobjectforce_pyobj_flagsforce_pyobjectr   r   r    r#   r&   r(   r*   r0   r2   r   mainr"   r   r   <module>r      s   



      7 7 7 7 7 7 7 7       + + + + + + + + + +6 6 6 6 6 6 6 6 6 6 6 6 UWW %)  "EGG #'                 ! ! !TS TS TS TS TS#X TS TS TSl zHMOOOOO r   