o
    i                     @   s  d dl Z d dlZd dlZd dlZd dlm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mZmZmZ d dlmZmZmZ d dlmZmZmZmZ d dlmZmZ e Zde_e Z de _!e Z"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,dd Z-dd Z.dd Z/dd  Z0d!d" Z1d#d$ Z2d%d& Z3d'd( Z4d)d* Z5d+d, Z6d-d. Z7d/d0 Z8d1d2 Z9d3d4 Z:d5d6 Z;d7d8 Z<d9d: Z=d;d< Z>d=d> Z?d?d@ Z@dAdB ZAdCdD ZBdEdF ZCdGdH ZDdIdJ ZEdKdL ZFdMdN ZGdOdP ZHdQdR ZIdSdT ZJdUdV ZKdWdX ZLdYdZ ZMd[d\ ZNd]d^ ZOd_dJ ZEdd`daZPdbdc ZQddde ZRdfdg ZSdhdi ZTdjdk ZUdldm ZVdndo ZWdpdq ZXdrds ZYG dtdu dueZZG dvdw dweZ[G dxdy dyeZ\G dzd{ d{eeZ]G d|d} d}eeZ^G d~d deeZ_e`dkrea  dS dS )    N
namedtuple)compile_isolatedFlags)jittypeofnjittyped)errorstypesconfig)TestCasetagignore_internal_warningsMemoryLeakMixin)overload_methodboxTc                 C      t | S N)absx r   h/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/numba/tests/test_builtins.pyabs_usecase       r   c                 C   H   | d kr|d krt g S | d krt |gS |d krt | gS t | |gS r   )allr   yr   r   r   all_usecase#      

r    c                 C   r   r   )anyr   r   r   r   any_usecase-   r!   r#   c                 C   r   r   )boolr   r   r   r   bool_usecase7   r   r%   c                 C   
   t | |S r   complexr   r   r   r   complex_usecase:      
r)   c                 C   r&   r   )divmodr   r   r   r   divmod_usecase=   r*   r,   c                  C   s&   d} t dD ]
\}}| || 7 } q| S )Nr         ?      @      @	enumerateresultijr   r   r   enumerate_usecase@   s   r7   c                  C   (   d} t ddD ]
\}}| || 7 } q| S )Nr   r-   *   r1   r3   r   r   r   enumerate_start_usecaseF      r:   c                  C   r8   )Nr   r-   gn!	@r1   r3   r   r   r   enumerate_invalid_start_usecaseL   r;   r<   c                 C   
   t || S r   )filter)r   filter_funcr   r   r   filter_usecaseR   r*   r@   c                 C   r   r   )floatr   r   r   r   float_usecaseU   r   rB   c                 C   s
   |  |S r   )formatr   r   r   r   format_usecaseX   r*   rD   c                   C      t  S r   )globalsr   r   r   r   globals_usecase[   s   rG   c                 C   r   r   )hexr   r   r   r   hex_usecase`   r   rI   c                 C   r   r   strr   r   r   r   str_usecasec   r   rL   c                 C      t | |dS N)base)intr   rO   r   r   r   int_usecasef      rR   c                 C   s   t | }t|t|fS r   )iternext)r   itr   r   r   iter_next_usecasei   s   rW   c                 C   s   d}t  d S )N   r   )localsr   r   r   r   locals_usecasem   s   
rZ   c                 C   rM   rN   )longrQ   r   r   r   long_usecaseq   rS   r\   c                 C   r=   r   )map)r   map_funcr   r   r   map_usecaset   r*   r_   c                 C   r&   r   maxr   r   r   r   max_usecase1x   r*   rb   c                 C      t | |gS r   r`   r   r   r   r   max_usecase2{   rS   rd   c                 C   r   r   r`   r   r   r   r   max_usecase3~   r   re   c                   C      t dS Nr   r`   r   r   r   r   max_usecase4   r   rh   c                 C   r&   r   minr   r   r   r   min_usecase1   r*   rk   c                 C   rc   r   ri   r   r   r   r   min_usecase2   rS   rl   c                 C   r   r   ri   r   r   r   r   min_usecase3   r   rm   c                   C   rf   rg   ri   r   r   r   r   min_usecase4   r   rn   c                 C   r   r   )octr   r   r   r   oct_usecase   r   rp   c                 C   s   t | |S r   )	functoolsreduce)reduce_funcr   r   r   r   reduce_usecase   rS   rt   c                 C   r   r   roundr   r   r   r   round_usecase1   r   rw   c                 C   r&   r   ru   )r   nr   r   r   round_usecase2   r*   ry   c                 C   r   r   sumr   r   r   r   sum_usecase   r   r|   c                 C   s   t | |S r   )typeabr   r   r   type_unary_usecase   rS   r   c                 C   s
   t | S r   )operatortruth)pr   r   r   truth_usecase   r*   r   c                 C   r   r   )unichrr   r   r   r   unichr_usecase   r   r   c                  C   r8   )Nr            )g      @@zipr3   r   r   r   zip_usecase   r;   r   c                  C   s   d} t  D ]}| d7 } q| S Nr   r   r   r4   r5   r   r   r   zip_0_usecase   s   

r   c                  C   s    d} t dD ]\}| |7 } q| S )Nr   r   r   r   r   r   r   r   zip_1_usecase   s   
r   c                  C   s0   d} t dddD ]\}}}| || | 7 } q| S )Nr   r   )r      rX   )r   g!@r   )r4   r5   r6   kr   r   r   zip_3_usecase   s   r   c                  C   s6   t d} d}t| }ttt ||}t|}||fS )N   r   )rangerT   listr   )iterablerx   rV   Zfrontbackr   r   r   zip_first_exhausted   s   r   c                 C   s   | | S r   r   r   r   r   r   pow_op_usecase   r   r   c                 C   r&   r   )powr   r   r   r   pow_usecase   r*   r   c                 C   r   r   rz   r   r   r   r   r|      r   c                 C   s   t | |}t | |d|fS Nstartrz   )r   r   retr   r   r   sum_kwarg_usecase   s   
r   c                 C   s   t | ttfrt | tr| d dfS t | tr| d dfS dS t | tr*| d dfS t | tr4| jdfS t | ttfrDt | trBdS d	S t | trKd
S t | t	rRdS dS )Nr   rP          @rA   z, world!rK   r(   tupler   setbytesno match)

isinstancerP   rA   rK   r(   imagr   r   r   r   r   r   r   r   isinstance_usecase   s&   







r   c                  C   s6   ddd} dt dd}t| trt|trdS dS )	Nr   r   )r   r   
   r   r~   dictznot dict)npZzerosr   r   r~   r   r   r   isinstance_dict   s
   
r   c                 C   s   t | tjrdS t | tjtjfrt | tjrdS dS t | tjtjfr6t | tjr,dS t | tjr4dS d S t | tjr>dS dS )N
typed listint32int64float32float64
typed dictr   )	r   r	   Listr   r   r   r   r   Dictr   r   r   r   isinstance_usecase_numba_types   s   r   c                  C   sB   d} t dd}t }d|d< t| trt|t rt|trdS dS )Ns   hellor   r   r   TF)r   r   r   r   r   r   cr   r   r    isinstance_usecase_numba_types_2  s   

r   c                 C   s   t | drdS dS )N)fooztrue branchzfalse branchr   r   r   r   r   invalid_isinstance_usecase  s   
r   c                 C   s   t | tdfr	dS dS )Nz
not a typeTF)r   rA   r   r   r   r   isinstance_usecase_invalid_type%  s   r   c                 C   s$   | dkrd}nd}t |trdS dS )Nr   r   r   TFr   rP   r   zr   r   r   *invalid_isinstance_usecase_phi_nopropagate-     
r   c                 C   s$   | dkrd}nd }t |trdS dS )Nr   r   TFr   r   r   r   r   #invalid_isinstance_optional_usecase8  r   r   c                     s*   t dddgdd  fdd} | S )Nntplr   r   r   r   c                    s
   t  S r   r   r   instr   r   r   implE  r*   z9invalid_isinstance_unsupported_type_usecase.<locals>.implr   )r   r   r   r   +invalid_isinstance_unsupported_type_usecaseB  s   
r   c                   @   s  e Zd Zdd ZefddZdd ZefddZd	d
 ZefddZ	dd Z
efddZdd ZefddZdd ZefddZdd ZefddZdd Zefdd Zd!d" Zefd#d$Zd%d& Zefd'd(Zd)d* Zd+d, Zd-d. Zefd/d0Zd1d2 Zefd3d4Zd5d6 Zefd7d8Zd9d: Z efd;d<Z!d=d> Z"d?d@ Z#dAdB Z$efdCdDZ%dEdF Z&e'fdGdHZ(efdIdJZ)dKdL Z*efdMdNZ+dOdP Z,efdQdRZ-dSdT Z.dUdV Z/efdWdXZ0dYdZ Z1d[d\ Z2efd]d^Z3efd_d`Z4dadb Z5dcdd Z6dedf Z7efdgdhZ8efdidjZ9dkdl Z:dmdn Z;dodp Z<efdqdrZ=efdsdtZ>dudv Z?dwdx Z@efdydzZAd{d| ZBd}d~ ZCdd ZDdd ZEdd ZFefddZGefddZHefddZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPefddZQdd ZRefddZSdd ZTefddZUdd ZVefddZWdd ZXefddZYdd ZZdd Z[dd Z\dd Z]e^fddZ_dd Z`e^fddZadd Zbe^fddZcdd Zde^fddZedd Zfe^fddĄZgddƄ ZhddȄ Ziddʄ Zjdd̄ Zkdd΄ ZldS )TestBuiltinsc                 C   s,   t |d|d}|j}| }| | | d S Nr   flags)r   entry_pointassertPreciseEqual)selfpyfuncr   crcfuncexpectedr   r   r   run_nullary_funcK  s   zTestBuiltins.run_nullary_funcc           	      C   sl  t }t|tjf|d}|j}dD ]}| |||| qt|tjf|d}|j}dD ]}| j||||dd q+dddtd	d
td  tdd
td	  g}t|tjf|d}|j}|D ]}| j||||dd q_t|tj	f|d}|j}|D ]}| |||| q|tj
D ]'}dddd|j d g}t||f|d}|j}|D ]}| |||| qqd S )Nr   r   r   g        皙?singleprecy      ?y                y?      @inf              ?nanr   r   r   r   )r   r   r   r   r   r   r   rA   	complex64
complex128Zunsigned_domainZbitwidth)	r   r   r   r   r   r   Zcomplex_valuesZunsigned_typeZunsigned_valuesr   r   r   test_absQ  s:   
zTestBuiltins.test_absc                 C      | j td d S Nr   )r   no_pyobj_flagsr   r   r   r   test_abs_npmq     zTestBuiltins.test_abs_npmc           	      C   b   t }t|tjtjf|d}|j}g d}g d}t||D ]\}}| |||||| qd S Nr   )r   r   r   N)r    r   r   r   r   	itertoolsproductr   	r   r   r   r   r   
x_operands
y_operandsr   r   r   r   r   test_allt     zTestBuiltins.test_allc                 C   :   |    | jtd W d    d S 1 sw   Y  d S r   )assertTypingErrorr   r   r   r   r   r   test_all_npm~     
"zTestBuiltins.test_all_npmc           	      C   r   r   )r#   r   r   r   r   r   r   r   r   r   r   r   test_any  r   zTestBuiltins.test_anyc                 C   r   r   )r   r   r   r   r   r   r   test_any_npm  r   zTestBuiltins.test_any_npmc                 C   s   t }t|tjf|d}|j}dD ]}| |||| qt|tjf|d}|j}dddtdtdfD ]}| |||| q4t|tjf|d}|j}t	dtdt	dtdfD ]}| |||| q[d S )	Nr   r   r                ?r   r   r   )
r%   r   r   r   r   r   r   rA   r   r(   r   r   r   r   r   r   r   r   r   	test_bool  s    zTestBuiltins.test_boolc                 C   r   r   )r   r   r   r   r   r   test_bool_npm  r   zTestBuiltins.test_bool_npmc                 C   s~   t }t|tjf|d}|j}dD ]}| |||| qt|tdf|d}|j}dgg fD ]}| |||| q0d S )Nr   )r    r   r   )r%   r   r   stringr   r   Dummyr   r   r   r   test_bool_nonnumber  s   z TestBuiltins.test_bool_nonnumberc                 C   r   r   )r   r  r   r   r   r   r   test_bool_nonnumber_npm  r   z$TestBuiltins.test_bool_nonnumber_npmc           	      C   r   Nr   r   )r)   r   r   r   r   r   r   r   r   r   r   r   test_complex     zTestBuiltins.test_complexc                 C   r   r   )r  r   r   r   r   r   test_complex_npm  r   zTestBuiltins.test_complex_npmc              	   C   s   t }t|tjtjf|d}|j}ddd}g d}|dg }t||D ]&\}}	|||	\}
}|||	\}}|}| ||||f||
||f q$|D ]}| t	 ||d W d    n1 sdw   Y  qMd S )Nr   @   c                 S   s    | dkr| d|d > d M } | S r   r   )r   bitsr   r   r   truncate_result  s   z6TestBuiltins.test_divmod_ints.<locals>.truncate_result)
r   r   r      r   il    l         r   )r  )
r,   r   r   r   r   r   r   r   assertRaisesZeroDivisionError)r   r   r   r   r   r  denominators
numeratorsr   r   expected_quotexpected_remquotremfr   r   r   test_divmod_ints  s*   

zTestBuiltins.test_divmod_intsc                 C   r   r   )r  r   r   r   r   r   test_divmod_ints_npm  r   z!TestBuiltins.test_divmod_ints_npmc              	   C   s   t }t|tjtjf|d}|j}ddddddtjtj tjg	}|dd	g }t	||D ]\}}|||\}	}
|||\}}| 
||f|	|
f q+|D ]}| t ||d	 W d    n1 saw   Y  qJd S )
Nr   r.   g      @g}Ô%ITg       g      g\nr   r   )r,   r   r   r   r   r   r   r   r   r   r   r  r  )r   r   r   r   r   r  r  r   r   r  r  r  r  r   r   r   test_divmod_floats  s&   zTestBuiltins.test_divmod_floatsc                 C   r   r   )r  r   r   r   r   r   test_divmod_floats_npm  r   z#TestBuiltins.test_divmod_floats_npmc                 C      |  t| d S r   )r   r7   r   r   r   r   r   test_enumerate  r   zTestBuiltins.test_enumeratec                 C   r   r   )r   r   r   r   r   r   test_enumerate_npm  r   zTestBuiltins.test_enumerate_npmc                 C   r  r   )r   r:   r  r   r   r   test_enumerate_start  r   z!TestBuiltins.test_enumerate_startc                 C   r   r   )r"  r   r   r   r   r   test_enumerate_start_npm  r   z%TestBuiltins.test_enumerate_start_npmc                 C   s^   t }t|dtd}| t}|  W d    n1 sw   Y  d}| |t|j d S )Nr   r   z2'float' object cannot be interpreted as an integer)	r<   r   enable_pyobj_flagsr  	TypeErrorr   assertInrK   	exception)r   r   r   raisesmsgr   r   r   'test_enumerate_start_invalid_start_type  s   
z4TestBuiltins.test_enumerate_start_invalid_start_typec                 C   sX   t }| tj}t|dtd}W d    n1 sw   Y  d}| |t|j d S )Nr   r   z3Only integers supported as start value in enumerate)	r<   r  r
   TypingErrorr   r   r&  rK   r'  )r   r   r(  r   r)  r   r   r   +test_enumerate_start_invalid_start_type_npm  s   z8TestBuiltins.test_enumerate_start_invalid_start_type_npmc                 C   \   t }t|tdtdf|d}|j}dd }g d}| t|||t||| d S )Nr   function_ptrr   c                 S   s   | d S Nr   r   r   r   r   r   <lambda>      z*TestBuiltins.test_filter.<locals>.<lambda>r   r   r   r   r   )r@   r   r   r  r   assertSequenceEqualr   )r   r   r   r   r   r?   r   r   r   r   test_filter     zTestBuiltins.test_filterc                 C   r   r   )r   r4  r   r   r   r   r   test_filter_npm  r   zTestBuiltins.test_filter_npmc                 C   s   t }t|tjf|d}|j}dD ]}| |||| qt|tjf|d}|j}dD ]}| j||||dd q+t|tjf|d}|j}dD ]}| |||| qHd S )Nr   r   r   r   r   )z-1.1z0.0z1.1)rB   r   r   r   r   r   r   r  r   r   r   r   
test_float"  s   zTestBuiltins.test_floatc                 C   r   r   )r   r7  r   r   r   r   r   test_float_npm4  r   zTestBuiltins.test_float_npmc                 C   s   t }t|tjtjf|d}|j}d}dD ]}| |||||| qt|tjtjf|d}|j}d}dD ]}| |||||| q5t|tjtjf|d}|j}d}dD ]}| |||||| qVd S )Nr   z{0}r   r   r   )rD   r   r   r  r   r   r   r   )r   r   r   r   r   r   r   r   r   r   test_format8  s2   zTestBuiltins.test_formatc                 C   r   r   )r   r9  r   r   r   r   r   test_format_npmO  r   zTestBuiltins.test_format_npmc                 C   s0   t }t|d|d}|j}| }| |t  d S r   )rG   r   r   assertIsrF   )r   r   r   r   r   gr   r   r   test_globalsS  s
   zTestBuiltins.test_globalsc                 C   r   r   )r   r=  r   r   r   r   r   test_globals_npmZ  r   zTestBuiltins.test_globals_npmc                 K   s:   t }tdi ||}| | t  | | t  d S rg   )rG   r   r;  rF   )r   Z	jit_flagsr   Zjittedr   r   r   test_globals_jit^  s   zTestBuiltins.test_globals_jitc                 C   s:   |    | jdd W d    d S 1 sw   Y  d S NTZnopython)r   r?  r   r   r   r   test_globals_jit_npmf  r   z!TestBuiltins.test_globals_jit_npmc                 C   >   t }t|tjf|d}|j}dD ]}| |||| qd S r  )rI   r   r   r   r   r   r   r   r   r   test_hexj     zTestBuiltins.test_hexc                 C   r   r   )r   rD  r   r   r   r   r   test_hex_npmr  r   zTestBuiltins.test_hex_npmc              	   C   s   t }g d}g d}g ||}tjtjtjtjtjtjtjtj	tj
g	}|D ]3}t||f|d}|j}	|D ]#}
| |	||
|||
 |jrX| |	||
 |||
  q5q&d S )N)i  r   r   r   i  )i[i! i@B r   r   )rL   r   int8Zint16r   r   Zuintuint8Zuint16uint32uint64r   r   r   signed)r   r   r   Zsmall_inputsZlarge_inputsargsZtypstypr   r   vr   r   r   test_int_strv  s0    zTestBuiltins.test_int_strc           	      C   sb   t }t|tjtjf|d}|j}g d}g d}t||D ]\}}| |||||| qd S )Nr   )z-10110)r      r      )	rR   r   r   r  r   r   r   r   r   r   r   r   r   test_int  r	  zTestBuiltins.test_intc                 C   r   r   )r   rU  r   r   r   r   r   test_int_npm  r   zTestBuiltins.test_int_npmc                 C   s   t }t|ttjdf|d}|j}| |dd t|ttjdf|d}|j}| t |d W d    d S 1 s?w   Y  d S )Nr   r   )r   r9   rX   )r   r9   r   r   )	rW   r   r   UniTupler   r   r   r  StopIteration)r   r   r   r   r   r   r   r   test_iter_next  s   
"zTestBuiltins.test_iter_nextc                 C   r   r   )rZ  r   r   r   r   r   test_iter_next_npm  r   zTestBuiltins.test_iter_next_npmc                 C   sH   t }| tj t|tjf|d}W d    d S 1 sw   Y  d S r   )rZ   r  r
   ZForbiddenConstructr   r   r   )r   r   r   r   r   r   r   test_locals  s   "zTestBuiltins.test_localsc                 C   r   r   )r\  forceobj_flagsr   r   r   r   test_locals_forceobj  r   z!TestBuiltins.test_locals_forceobjc                 C   r   r   )r   r\  r   r   r   r   r   test_locals_npm  r   zTestBuiltins.test_locals_npmc                 C   r-  )Nr   r.  r   c                 S   s   | d S r/  r   r   r   r   r   r0    r1  z'TestBuiltins.test_map.<locals>.<lambda>r2  )r_   r   r   r  r   r3  r   )r   r   r   r   r   r^   r   r   r   r   test_map  r5  zTestBuiltins.test_mapc                 C   r   r   )r   r`  r   r   r   r   r   test_map_npm  r   zTestBuiltins.test_map_npmc           	      C   ^   t |tjtjf|d}|j}g d}g d}t||D ]\}}| |||||| qd S r  r   r   r   r   r   r   r   	r   r   r   r   r   r   r   r   r   r   r   r   check_minmax_1     zTestBuiltins.check_minmax_1c                 C      |  t| dS )z
        max(*args)
        N)re  rb   r  r   r   r   
test_max_1     zTestBuiltins.test_max_1c                 C   rg  )z
        min(*args)
        N)re  rk   r  r   r   r   
test_min_1  ri  zTestBuiltins.test_min_1c                 C   r   r   )rh  r   r   r   r   r   test_max_npm_1  r   zTestBuiltins.test_max_npm_1c                 C   r   r   )rj  r   r   r   r   r   test_min_npm_1  r   zTestBuiltins.test_min_npm_1c           	      C   rb  r  rc  rd  r   r   r   check_minmax_2  rf  zTestBuiltins.check_minmax_2c                 C   rg  )z
        max(list)
        N)rm  rd   r  r   r   r   
test_max_2  ri  zTestBuiltins.test_max_2c                 C   rg  )z
        min(list)
        N)rm  rl   r  r   r   r   
test_min_2  ri  zTestBuiltins.test_min_2c                 C   r   r   )r   rn  r   r   r   r   r   test_max_npm_2  r   zTestBuiltins.test_max_npm_2c                 C   r   r   )r   ro  r   r   r   r   r   test_min_npm_2  r   zTestBuiltins.test_min_npm_2c                    s@    fdd}|t t jd |t t jt jt jf d S )Nc                    sT   t | f d}|j}dtddf}||d d d fD ]}||| qd S )Nr   r   r   r/   r   )r   r   rA   r   )Zargtyr   r   tupvalr   r   r   r   r   check  s   z*TestBuiltins.check_minmax_3.<locals>.checkr   )r   rX  r   Tupler   )r   r   r   ru  r   rt  r   check_minmax_3  s   zTestBuiltins.check_minmax_3c                 C   rg  )z
        max(tuple)
        N)rw  re   r  r   r   r   
test_max_3"  ri  zTestBuiltins.test_max_3c                 C   rg  )z
        min(tuple)
        N)rw  rm   r  r   r   r   
test_min_3(  ri  zTestBuiltins.test_min_3c                 C   r   r   )rx  r   r   r   r   r   test_max_npm_3.  r   zTestBuiltins.test_max_npm_3c                 C   r   r   )ry  r   r   r   r   r   test_min_npm_31  r   zTestBuiltins.test_min_npm_3c                 C   s0   t |tjtdf|d}|j}|ddg d S )Nr   r   r   )r   r   r   r  r   r   r   r   r   r   r   r   r   check_min_max_invalid_types4  s
   z(TestBuiltins.check_min_max_invalid_typesc                 C   :   |  t | t W d    d S 1 sw   Y  d S r   )r  r%  r}  rb   r   r   r   r   test_max_1_invalid_types:     "z%TestBuiltins.test_max_1_invalid_typesc                 C   <   |    | jttd W d    d S 1 sw   Y  d S r   )r   r}  rb   r   r   r   r   r   test_max_1_invalid_types_npm>     
"z)TestBuiltins.test_max_1_invalid_types_npmc                 C   r~  r   )r  r%  r}  rk   r   r   r   r   test_min_1_invalid_typesB  r  z%TestBuiltins.test_min_1_invalid_typesc                 C   r  r   )r   r}  rk   r   r   r   r   r   test_min_1_invalid_types_npmF  r  z)TestBuiltins.test_min_1_invalid_types_npmc                 C   sR   t |tjtjf|d}|j}d}t||D ]\}}| |||||| qd S )Nr   )FT)r   r   Zbool_r   r   r   r   )r   r   r   r   r   Zoperandsr   r   r   r   r   check_minmax_bool1J  s   zTestBuiltins.check_minmax_bool1c                 C   r  r   )r  rb   r  r   r   r   test_max_bool1R     zTestBuiltins.test_max_bool1c                 C   r  r   )r  rk   r  r   r   r   test_min_bool1V  r  zTestBuiltins.test_min_bool1c                 C   s$   t |tjf|d}|j}|d d S )Nr   r   )r   r   r   r   r|  r   r   r    check_min_max_unary_non_iterable\  s   z-TestBuiltins.check_min_max_unary_non_iterablec                 C   r~  r   )r  r%  r  re   r   r   r   r   test_max_unary_non_iterablea  r  z(TestBuiltins.test_max_unary_non_iterablec                 C   8   |    | t W d    d S 1 sw   Y  d S r   )r   r  re   r   r   r   r   test_max_unary_non_iterable_npme     
"z,TestBuiltins.test_max_unary_non_iterable_npmc                 C   r~  r   )r  r%  r  rm   r   r   r   r   test_min_unary_non_iterablei  r  z(TestBuiltins.test_min_unary_non_iterablec                 C   r  r   )r   r  rm   r   r   r   r   test_min_unary_non_iterable_npmm  r  z,TestBuiltins.test_min_unary_non_iterable_npmc                 C   sP   |   }t|dtd W d    n1 sw   Y  | d| t|j d S )Nr   r   z%s() argument is an empty tuple)r   r   r   r&  rK   r'  )r   r   	func_namer(  r   r   r   check_min_max_empty_tuples  s   

z&TestBuiltins.check_min_max_empty_tuplec                 C      |  td d S )Nra   )r  rh   r   r   r   r   test_max_empty_tupley  r   z!TestBuiltins.test_max_empty_tuplec                 C   r  )Nrj   )r  rn   r   r   r   r   test_min_empty_tuple|  r   z!TestBuiltins.test_min_empty_tuplec                 C   rC  )Nr   )ir   r   r   rS  )rp   r   r   r   r   r   r   r   r   r   test_oct  rE  zTestBuiltins.test_octc                 C   r   r   )r   r  r   r   r   r   r   test_oct_npm  r   zTestBuiltins.test_oct_npmc                 C   s   t }t|tdtdf|d}|j}dd }td}| |||||| dd tdD }| |||||| d	d tdD }| |||||| d S )
Nr.  r   r   c                 S   s   | | S r   r   r   r   r   r   r0    r1  z*TestBuiltins.test_reduce.<locals>.<lambda>r   c                 S      g | ]}||d   qS g      $@r   .0r   r   r   r   
<listcomp>      z,TestBuiltins.test_reduce.<locals>.<listcomp>c                 S      g | ]}t ||qS r   r'   r  r   r   r   r        )rt   r   r   r  r   r   r   )r   r   r   r   r   rs   r   r   r   r   test_reduce  s   zTestBuiltins.test_reducec                 C   r   r   )r   r  r   r   r   r   r   test_reduce_npm  r   zTestBuiltins.test_reduce_npmc                 C   sb   t }tjtjfD ]&}t||f|d}|j}g d}|ddg7 }|D ]}| |||| q!qd S )Nr   )gg      gffffffg      r   皙?      ?g333333?gffffff?r         @gr   )rw   r   r   r   r   r   r   )r   r   r   tpr   r   valuesr   r   r   r   test_round1  s   zTestBuiltins.test_round1c                 C   r   r   )r  r   r   r   r   r   test_round1_npm  r   zTestBuiltins.test_round1_npmc           
      C   s   t }tjtjfD ]F}|tju rdnd}t||tjf|d}|j}dD ]+}dD ]&}| j|||||||d || |}	| j|| ||| ||d q&q"qd S )Nr   exactr   )r   r  g      ?g      ?r  g      ?g      ?r   g      ?g      @r/   g      @g      )@g      .@g     6@)r   r   r   r   r   )ry   r   r   r   r   r   r   r   )
r   r   r   r  r   r   r   r   rx   r   r   r   r   test_round2  s"   zTestBuiltins.test_round2c                 C   r   r   )r  r   r   r   r   r   test_round2_npm  r   zTestBuiltins.test_round2_npmc                 C   s   t }t|tdf|d}|j}td}| |||| dd tdD }| |||| dd tdD }| |||| d S )Nr   r   r   c                 S   r  r  r   r  r   r   r   r    r  z1TestBuiltins.test_sum_objmode.<locals>.<listcomp>c                 S   r  r   r'   r  r   r   r   r    r  )r|   r   r   r  r   r   r   r   r   r   r   test_sum_objmode  s   zTestBuiltins.test_sum_objmodec           	   	      s  t t}t t}t ddd}tdddg  fdd}| D ]}| |||| qtd	td
t	df}| 
||||  fdd}| D ]\}}| |||d|j||d qOtddD ]}tddD ]}| |||d|j||d qoqhd S )Nr   c                 S   s"   t | }t||}t||d|fS r   )r   r{   )szr   tmpr   r   r   r   	sum_range  s   
z(TestBuiltins.test_sum.<locals>.sum_ranger   r   r   c                  3   s    g t dV  dd t dD V  dd t dD V  dV  dV  tdtdtd	fV  tt d
} | V  td
V   ddV   ddV  d S )Nr   c                 S   r  r  r   r  r   r   r   r    r  z7TestBuiltins.test_sum.<locals>.args.<locals>.<listcomp>c                 S      g | ]}|d  qS r   r   r  r   r   r   r        r   r   r                 @    r   r   rX   d                    i@)r   r   r   r   rG  r	   r   onestlr   r   r   rL    s   z#TestBuiltins.test_sum.<locals>.argsr  r   r   c                  3   s    g t ddfV  dd t dD dfV  dd t dD dfV  dV  d	V  td
tdtdftdfV  tt d} | dfV  tddtd fV   dddfV   dddfV  d S )Nr      c                 S   r  r  r   r  r   r   r   r    r  z;TestBuiltins.test_sum.<locals>.args_kws.<locals>.<listcomp>y              3@c                 S   r  r  r   r  r   r   r   r    r  )r   	   )r  r   r  r   r   r   rX   r  )rX   rX   )rX   r  ir  r  )	r   r   r   r   rG  rI  r	   r   r  r  r  r   r   args_kws  s   (
z'TestBuiltins.test_sum.<locals>.args_kwsr   r  r   r   )r   r|   r   r   r   py_funcr   rJ  rI  rH  assertEqualr   )	r   sum_default	sum_kwargr  rL  r   r  r   r  r   r  r   test_sum  s,   
zTestBuiltins.test_sumc                 C   sL  t t}t t}d}| tj}|dd W d    n1 s w   Y  | |dt|j	 | tj}|dd W d    n1 sGw   Y  | |dt|j	 | tj}|dt
d W d    n1 spw   Y  | |dt|j	 | tj}|d W d    n1 sw   Y  | d	t|j	 d S )
Nzsum() can't sum {}r   r   stringss   123r   	bytearrayabcdzNo implementation)r   r|   r   r  r
   r+  r&  rC   rK   r'  r  )r   r  r  r)  r(  r   r   r   test_sum_exceptions  s&   
z TestBuiltins.test_sum_exceptionsc                 C   s>   t }tdd|}| |d|d | |d|d d S )NTrA  F)r   r   r  r   r   r   r   r   r   
test_truth.  s   zTestBuiltins.test_truthc                    sX   t tdd  fdd}|dd |dd |d	d |dd |d
d d S )NTrA  c                     s   |  }  |  | d S r   )r   )rL  r   r   r   r   r   r   ru  :  s   z+TestBuiltins.test_type_unary.<locals>.checkr   r   r   r/   y              ?y              @F)r   r   )r   ru  r   r  r   test_type_unary5  s   



zTestBuiltins.test_type_unaryc                 C   r  r   )r   r   r  r   r   r   test_zipD  r   zTestBuiltins.test_zipc                 C   r   r   )r  r   r   r   r   r   test_zip_npmG  r   zTestBuiltins.test_zip_npmc                 C   r  r   )r   r   r  r   r   r   
test_zip_1J  r   zTestBuiltins.test_zip_1c                 C   r   r   )r  r   r   r   r   r   test_zip_1_npmM  r   zTestBuiltins.test_zip_1_npmc                 C   r  r   )r   r   r  r   r   r   
test_zip_3P  r   zTestBuiltins.test_zip_3c                 C   r   r   )r  r   r   r   r   r   test_zip_3_npmS  r   zTestBuiltins.test_zip_3_npmc                 C   r  r   )r   r   r  r   r   r   
test_zip_0V  r   zTestBuiltins.test_zip_0c                 C   r   r   )r  r   r   r   r   r   test_zip_0_npmY  r   zTestBuiltins.test_zip_0_npmc                 C   rg  )z
        Test side effect to the input iterators when a left iterator has been
        exhausted before the ones on the right.
        N)r   r   r  r   r   r   test_zip_first_exhausted\  s   z%TestBuiltins.test_zip_first_exhaustedc                 C   r   r   )r  nrt_no_pyobj_flagsr   r   r   r   test_zip_first_exhausted_npmc  r   z)TestBuiltins.test_zip_first_exhausted_npmc                 C   R   g d}|D ] \}}t tt|t|ftd}|||}| |t|| qd S N))r   r   )r   r   )r   r0   )y               @r  r   )r   r   r   r   r   r   r   rL  r   r   Zcresrr   r   r   test_pow_op_usecasef     z TestBuiltins.test_pow_op_usecasec                 C   r  r  )r   r   r   r   r   r   r  r   r   r   test_pow_usecaset  r  zTestBuiltins.test_pow_usecasec                 C   s&   t  |}| }| }| || d S r   )r   r   )r   r   r   r   gotr   r   r   _check_min_max  s   
zTestBuiltins._check_min_maxc                    sP   t dd   fdd}|tdD ]}| | q|tdD ]}| | qd S )Nc                 s   s,    | }||k r|V  ||7 }||k sd S d S r   r   )r   stopstepr5   r   r   r   frange  s   z8TestBuiltins.test_min_max_iterable_input.<locals>.frangec                 3   sx     fddV   fddV   fddV   fddV   fddV   fddV   fddV   fd	dV  d S )
Nc                      s    t dS Nr   r   r   opr   r   r0        zTTestBuiltins.test_min_max_iterable_input.<locals>.sample_functions.<locals>.<lambda>c                      s    t ddS )Nr   r  r  r   r  r   r   r0    s    c                      s    t dddS )Nr  r   r  r   r  r   r   r0        c                          g dS )N)gffffff@g      @g@r   r   r  r   r   r0    r  c                      s    ddgS )N)r   r   r   r   r   r  r   r   r0    r  c                      s    dddS )Nr   gffffff
@r  r   r   )r  r  r   r   r0    r  c                      s    t jt j t jt jgS r   )r   r   r   r   r  r   r   r0    s    c                      r  )N))r   rW  )r   r   r   r  r   r   r0    r  r   r  r  r  r   sample_functions  s   zBTestBuiltins.test_min_max_iterable_input.<locals>.sample_functionsr  )r   rj   r  ra   )r   r  fnr   r  r   test_min_max_iterable_input  s   

z(TestBuiltins.test_min_max_iterable_inputN)m__name__
__module____qualname__r   r$  r   r   r   r   r   r   r   r  r  r  r  r
  r  r  r  r  r   r!  r"  r#  r*  r,  r4  r6  r7  r8  r9  r:  r=  r>  r?  rB  rD  rF  r  rO  rU  rV  rZ  r[  r\  r^  r_  r`  ra  re  rh  rj  rk  rl  rm  rn  ro  rp  rq  rw  rx  ry  rz  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r]  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   I  s     

	)		@r   c                   @      e Zd Zdd Zdd ZdS )TestOperatorMixedTypesc                    s\   dD ])}t t| t fdd}d}t||D ]\}}| |||||| qqd S )N)eqnec                    
    | |S r   r   r~   r  r   r   func     
z/TestOperatorMixedTypes.test_eq_ne.<locals>.func)r   r   TFr.   r   r   r   Nr  rQ  )getattrr   r   r   r   r   r  )r   opstrr  thingsr   r   r   r  r   
test_eq_ne  s   
z!TestOperatorMixedTypes.test_eq_nec           	         st   dD ]5}t t| t fdd}d}t||D ]\}}|||}|||}d|||f }| ||| qqd S )N)gtltgeler  r  c                    r  r   r   r~   r  r   r   r    r  z-TestOperatorMixedTypes.test_cmp.<locals>.func)r   r   TFr.   r   r   z0%s %s %s does not match between Python and Numba)r  r   r   r   r   r  r  )	r   r  r  r  r   r   r   r  messager   r  r   test_cmp  s   

zTestOperatorMixedTypes.test_cmpN)r  r  r  r  r  r   r   r   r   r    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 )TestIsinstanceBuiltinc              
   C   s`   t }tdd|}dddddg dd	td
dgdd f
}|D ]}||}||}| || qd S )NTrA  r   r  ZHellos   worldr   r   )r   r   r   r   r   r   )r   Znbar   )r   r   r   r  r   r   r   ZinputsZinptr   r  r   r   r   test_isinstance  s$   
z%TestIsinstanceBuiltin.test_isinstancec                 C   &   t }tdd|}| | |  d S r@  )r   r   r  r  r   r   r   test_isinstance_dict  s   z*TestIsinstanceBuiltin.test_isinstance_dictc              
   C   s   t }tdd|}tddftddftddftd	d
ftddft	ddgdftj
tjtjdff}|D ]\}}||}| || q=d S )NTrA  r   r   r   r   r0   r   g      @r   y              @r   r   r   )r   r   r   r   r   r   r   r   r	   r   r   emptyr  r  r   r   r   test_isinstance_numba_types  s   
z1TestIsinstanceBuiltin.test_isinstance_numba_typesc                 C   r	  r@  )r   r   r  r  r   r   r   test_isinstance_numba_types_2  s   z3TestIsinstanceBuiltin.test_isinstance_numba_types_2c                 C   sn   t }tdd|}| |d d}| tj}|d W d    n1 s'w   Y  | |t|j d S )NTrA  g333333@&Cannot infer numba type of python typer  )	r   r   
assertTruer  r
   r+  r&  rK   r'  )r   r   r   r)  r(  r   r   r   test_isinstance_invalid_type  s   
z2TestIsinstanceBuiltin.test_isinstance_invalid_typec              	   C   s~   t dftdftdft dfg}|D ]+\}}t|}| tj}|d W d    n1 s.w   Y  | |t	|j
 qd S )Nr  zGisinstance() cannot determine the type of variable "z" due to a branch.z6isinstance() does not support variables of type "ntpl(r  )r   r   r   r   r   r  r
   r+  r&  rK   r'  )r   fnsr  r)  r(  r   r   r   test_isinstance_exceptions	  s(   
z0TestIsinstanceBuiltin.test_isinstance_exceptionsc           	      C   s   dd }t ttttttttt	j
t	jf}dddddgdd	d
hd ddt	g dt	
dt	dtjtjtjtjtjt	df}|D ]}t||}|D ]}||}||}| || qNqDd S )Nc                        fdd}|S )Nc                    
   t |  S r   r   r   
clazz_typer   r   r   "  r*   zHTestIsinstanceBuiltin.test_combinations.<locals>.gen_w_arg.<locals>.implr   r  r   r   r  r   	gen_w_arg!     z:TestIsinstanceBuiltin.test_combinations.<locals>.gen_w_argr   gffffff@              @5   )r      8r  )r      r  )   r   y              ,@)r  rT           r   )rP   rA   r(   rK   r   r   r   r   r   r   rG  r   arrayr	   r   r  r   Zunicode_typer   r   
empty_listr   r  r   r  r  )	r   r  clazz_typesZ	instancesctr  r   r   r  r   r   r   test_combinations  s$   
z'TestIsinstanceBuiltin.test_combinationsc              	   C   sz   dd }t jt jt jf}d}|D ]*}t||}| tj}|  W d    n1 s,w   Y  | t	|j
| qd S )Nc                    r  )Nc                      s
   t d S Nr   r   r   r  r   r   r   9  r*   zGTestIsinstanceBuiltin.test_numba_types.<locals>.gen_w_arg.<locals>.implr   r  r   r  r   r  8  r  z9TestIsinstanceBuiltin.test_numba_types.<locals>.gen_w_argz%Numba type classes.*are not supported)r   IntegerFloatZArrayr   r  r
   r+  assertRegexrK   r'  )r   r  r%  r)  r&  r  r(  r   r   r   test_numba_types5  s   z&TestIsinstanceBuiltin.test_numba_typesc                 C   sX   t dd }| | d | | d t dd }| | d | | d d S )Nc                   S   s   t tdtS r  )r   r   intprP   r   r   r   r   r   K  r  zITestIsinstanceBuiltin.test_python_numpy_scalar_alias_problem.<locals>.fooTFc                   S   s   t dtjS r(  )r   r   r-  r   r   r   r   barR     zITestIsinstanceBuiltin.test_python_numpy_scalar_alias_problem.<locals>.barr   r  r  )r   r   r.  r   r   r   &test_python_numpy_scalar_alias_problemF  s   

z<TestIsinstanceBuiltin.test_python_numpy_scalar_alias_problemc                 C   s8   t dd }dD ]}||}||}| || qd S )Nc                 S   s<   t | tr	| d S t | trt| S t | trt| S J )Nsome_string)r   rK   r(   r   r   r   lenr   r   r   r   r   ]  s   



z4TestIsinstanceBuiltin.test_branch_prune.<locals>.foo)r  y      ?       @)r   r   r  )r   r  r  )r   r   r   r   r  r   r   r   test_branch_pruneY  s   


z'TestIsinstanceBuiltin.test_branch_pruneN)r  r  r  r  r
  r  r  r  r  r'  r,  r1  r4  r   r   r   r   r    s    r  c                   @   sL   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S )TestGetattrBuiltinc                 C   0   t dd }dD ]}| |||| qd S )Nc                 S   s   t | d}| S )N__hash__r  )r   attrr   r   r   r   s  s   
z7TestGetattrBuiltin.test_getattr_func_retty.<locals>.foor   Q@rX   r  r   r   r   r  r   r   r   r   r   r   test_getattr_func_rettyq  s
   
z*TestGetattrBuiltin.test_getattr_func_rettyc                 C   sB   t dd }tdD ]}td| }| |||| q
d S )Nc                 S   s
   t | dS )Nndimr8  r   r   r   r   r   }  r  z8TestGetattrBuiltin.test_getattr_value_retty.<locals>.foor   rW  )r   r   r   r  r   r  )r   r   r   r  r   r   r   test_getattr_value_retty{  s   
z+TestGetattrBuiltin.test_getattr_value_rettyc                 C   "   t dd }| | |  d S )Nc                   S   s
   t tdS )Npir  r   r   r   r   r   r     r  z7TestGetattrBuiltin.test_getattr_module_obj.<locals>.foor=  r   r   r   r   r   test_getattr_module_obj  s   
z*TestGetattrBuiltin.test_getattr_module_objc                 C   sX   t dd }| tj}|  W d    n1 sw   Y  d}| |t|j d S )Nc                   S   s   t tddS )Ncosr   rD  r   r   r   r   r     s   zGTestGetattrBuiltin.test_getattr_module_obj_not_implemented.<locals>.fooz-Returning function objects is not implementedr   r  r
   r+  r&  rK   r'  r   r   r(  r)  r   r   r   'test_getattr_module_obj_not_implemented  s   
z:TestGetattrBuiltin.test_getattr_module_obj_not_implementedc                    sd   d t  fdd}| t}|d W d    n1 sw   Y  | d  dt|j d S )N__not_a_valid_attr__c                    r  r   r8  r   Zinvalid_attrr   r   r     r  zCTestGetattrBuiltin.test_getattr_raises_attribute_error.<locals>.foogGz?z'float64' has no attribute '')r   r  AttributeErrorr&  rK   r'  )r   r   r(  r   rL  r   #test_getattr_raises_attribute_error  s   
z6TestGetattrBuiltin.test_getattr_raises_attribute_errorc                 C   s>   t dd }tddD ]\}}| |||||| qd S )Nc                 S   s   t | d|S )NrK  r8  )r   defaultr   r   r   r     r/  z9TestGetattrBuiltin.test_getattr_with_default.<locals>.foor:  )N   r2  )r   r   r   r  )r   r   r   r   r   r   r   test_getattr_with_default  s
   
z,TestGetattrBuiltin.test_getattr_with_defaultc                 C   s\   t dd }| tj}|dd W d    n1 sw   Y  d}| |t|j d S )Nc                 S   r&   r   r8  )r   Znonliteral_strr   r   r   r     r  z<TestGetattrBuiltin.test_getattr_non_literal_str.<locals>.foor   r7  z(argument 'name' must be a literal stringrH  rI  r   r   r   test_getattr_non_literal_str  s   
z/TestGetattrBuiltin.test_getattr_non_literal_strc                    s2   t dd  t  fdd}| | |  d S )Nc                   S      dS )Ni90  r   r   r   r   r   default_hash  s   zPTestGetattrBuiltin.test_getattr_no_optional_type_generated.<locals>.default_hashc                     s   t tdd } |  S )Nr   rK  )r  r   r  )Z	hash_funcrU  r   r   r     s   zGTestGetattrBuiltin.test_getattr_no_optional_type_generated.<locals>.foor=  rE  r   rV  r   'test_getattr_no_optional_type_generated  s
   
z:TestGetattrBuiltin.test_getattr_no_optional_type_generatedN)r  r  r  r?  rA  rF  rJ  rO  rR  rS  rW  r   r   r   r   r5  n  s    

	
r5  c                   @   r  )TestHasattrBuiltinc                 C   s\   t dd }tj}dddtj||tj|t	ddfD ]}| 
|||| qd S )Nc                 S   s   t | dt | dfS )Nr7  rK  hasattrr   r   r   r   r     s   z,TestHasattrBuiltin.test_hasattr.<locals>.foor   r;  r<  r   ABC)r   r   r   r	   r   r  r   r$  r   r  r   r  )r   r   tyr   r   r   r   test_hasattr  s   
zTestHasattrBuiltin.test_hasattrc                 C   sZ   t dd }| tj}|d W d    n1 sw   Y  d}| |t|j d S )Nc                 S   s    | dkrd}nd}t d| d S )Nr   r7  __str__r   rY  )predr9  r   r   r   r     s   z;TestHasattrBuiltin.test_hasattr_non_const_attr.<locals>.foor  zGhasattr() cannot determine the type of variable "attr" due to a branch.)r   r  r
   ZNumbaTypeErrorr&  rK   r'  rI  r   r   r   test_hasattr_non_const_attr  s   

z.TestHasattrBuiltin.test_hasattr_non_const_attrN)r  r  r  r]  r`  r   r   r   r   rX    s    rX  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S )TestStrAndReprBuiltinc                 C   rB  )Nc                   S   rE   r   rJ   r   r   r   r   r     s   z3TestStrAndReprBuiltin.test_str_default.<locals>.foor0  rE  r   r   r   test_str_default  s   
z&TestStrAndReprBuiltin.test_str_defaultc                 C   s*   t dd }d}| |||| d S )Nc                 S   s
   t | dS )N)objectrJ   r   r   r   r   r     r  z8TestStrAndReprBuiltin.test_str_object_kwarg.<locals>.fooza stringr0  )r   r   valuer   r   r   test_str_object_kwarg  s   
z+TestStrAndReprBuiltin.test_str_object_kwargc                    sr   t dd }|  \}}| }d  fdd|_t|d fdd}t|d	d
d }| |||| d S )Nc                 S   r   r   rJ   r   r   r   r   r        z<TestStrAndReprBuiltin.test_str_calls_dunder_str.<locals>.foozthis is the dummy object strc                        S r   r   r   string_reprr   r   r0        zATestStrAndReprBuiltin.test_str_calls_dunder_str.<locals>.<lambda>r^  c                    r  )Nc                    rg  r   r   dummyri  r   r   r        zVTestStrAndReprBuiltin.test_str_calls_dunder_str.<locals>.ol_dummy_string.<locals>.implr   rm  r   ri  r   r   ol_dummy_string     zHTestStrAndReprBuiltin.test_str_calls_dunder_str.<locals>.ol_dummy_string__repr__c                 S   s   dd }|S )Nc                 S   rT  )NzSHOULD NOT BE CALLEDr   rl  r   r   r   r     rn  zTTestStrAndReprBuiltin.test_str_calls_dunder_str.<locals>.ol_dummy_repr.<locals>.implr   ro  r   r   r   ol_dummy_repr  s   zFTestStrAndReprBuiltin.test_str_calls_dunder_str.<locals>.ol_dummy_repr)r   make_dummy_typer^  r   r  r  )r   r   r  	DummyTyperm  rp  rs  r   ri  r   test_str_calls_dunder_str  s   

z/TestStrAndReprBuiltin.test_str_calls_dunder_strc                    s`   t dd }|  \}}| }d  fdd|_t|d fdd}| |||| d S )	Nc                 S   r   r   rJ   r   r   r   r   r      rf  z>TestStrAndReprBuiltin.test_str_falls_back_to_repr.<locals>.foozthis is the dummy object reprc                    rg  r   r   rh  ri  r   r   r0  '  rk  zCTestStrAndReprBuiltin.test_str_falls_back_to_repr.<locals>.<lambda>rr  c                    r  )Nc                    rg  r   r   rl  ri  r   r   r   +  rn  zVTestStrAndReprBuiltin.test_str_falls_back_to_repr.<locals>.ol_dummy_repr.<locals>.implr   ro  ri  r   r   rs  )  rq  zHTestStrAndReprBuiltin.test_str_falls_back_to_repr.<locals>.ol_dummy_repr)r   rt  rr  r   r  r  )r   r   r  ru  rm  rs  r   ri  r   test_str_falls_back_to_repr  s   
z1TestStrAndReprBuiltin.test_str_falls_back_to_reprc                 C   r6  )Nc                 S   s   t | | fS r   )reprr   r   r   r   r   2  r/  z,TestStrAndReprBuiltin.test_repr.<locals>.foo)abcF{   r0  r>  r   r   r   	test_repr1  s
   
zTestStrAndReprBuiltin.test_reprc                    sj   |   \ }  }dt| dfdd _t| fdd}tdd }| |||| d S )	Nz<object type:>c                    rg  r   r   rh  ri  r   r   r0  A  rk  z:TestStrAndReprBuiltin.test_repr_fallback.<locals>.<lambda>c                    s"   |j |j  }|j |dS rg   )ZpyapiZunserializeZserialize_objectZcall_function_objargs)rM  objr   Zclazobj)r  r   r   	box_dummyC  s   z;TestStrAndReprBuiltin.test_repr_fallback.<locals>.box_dummyc                 S   r   r   rJ   r   r   r   r   r   H  rf  z5TestStrAndReprBuiltin.test_repr_fallback.<locals>.foo)rt  r   rr  r   r   r  r  )r   ru  rm  r~  r   r   )r  rj  r   test_repr_fallback9  s   
z(TestStrAndReprBuiltin.test_repr_fallbackN)	r  r  r  rb  re  rv  rw  r{  r  r   r   r   r   ra    s    	ra  __main__r  )br   rq   sysr   collectionsr   numpyr   ZunittestwarningsZnumba.core.compilerr   r   Znumbar   r   r   r	   Z
numba.corer
   r   r   Znumba.tests.supportr   r   r   r   Znumba.core.extendingr   r   r$  Zenable_pyobjectr]  Zforce_pyobjectr   r  Znrtr   r    r#   r%   r)   r,   r7   r:   r<   r@   rB   rD   rG   rI   rL   rR   rW   rZ   r\   r_   rb   rd   re   rh   rk   rl   rm   rn   rp   rt   rw   ry   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r5  rX  ra  r  mainr   r   r   r   <module>   s    


	
      _! ,`$
^