o
    iE                     @   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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mZ ddiZdd	d
Zddi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! Z)d"d# Z*d$d% Z+d&d' Z,d(d) Z-d*d+ Z.d,d- Z/d.d/ Z0d0d1 Z1d2d3 Z2d4d5 Z3d6d7 Z4d8d9 Z5d:d; Z6d<d= Z7d>d? Z8d@dA Z9dBdC Z:dDdE Z;dFdG Z<dHdI Z=dJdK Z>dLdM Z?dNdO Z@dPdQ ZAdRdS ZBdTdU ZCdVdW ZDdXdY ZEdZd[ ZFd\d] ZGd^d_ ZHd`da ZIdbdc ZJdddO Z@ddedfZKdgdh ZLdidj ZMdkdl ZNdmdn ZOdodp ZPdqdr ZQdsdt ZRdudv ZSdwdx ZTdydz ZUG d{d| d|eZVG d}d~ d~eZWG dd deZXG dd deeZYG dd deeZZG dd deeZ[e\dkrze]  dS dS )    N
namedtuple)jittypeofnjittyped)errorstypesconfig)TestCasetagignore_internal_warningsMemoryLeakMixin)overload_methodboxregister_jitableforceobjTF)nopython_nrtr   c                 C      t | S N)absx r   W/home/ubuntu/transcripts/venv/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_usecase1   r   r'   c                 C   
   t | |S r   complexr    r   r   r   complex_usecase4      
r+   c                 C   r(   r   )divmodr    r   r   r   divmod_usecase7   r,   r.   c                  C   s&   d} t dD ]
\}}| || 7 } q| S )Nr         ?      @      @	enumerateresultijr   r   r   enumerate_usecase:   s   r9   c                  C   (   d} t ddD ]
\}}| || 7 } q| S )Nr   r/   *   r3   r5   r   r   r   enumerate_start_usecase@      r<   c                  C   r:   )Nr   r/   gn!	@r3   r5   r   r   r   enumerate_invalid_start_usecaseF   r=   r>   c                 C   
   t || S r   )filter)r   filter_funcr   r   r   filter_usecaseL   r,   rB   c                 C   r   r   )floatr   r   r   r   float_usecaseO   r   rD   c              	   C   s@   t dt dt dt dt dt dt dt dd	}|| S )
NinfINF-inf-INFz
INF       z       
	-INFz1234.45z
-123.4)r                        )rC   get)r   dr   r   r   float_inf_usecaseR   s   

rR   c                 C   s
   |  |S r   )formatr    r   r   r   format_usecase_   r,   rT   c                   C      t  S r   )globalsr   r   r   r   globals_usecaseb   s   rW   c                 C   r   r   )hexr   r   r   r   hex_usecaseg   r   rY   c                 C   r   r   strr   r   r   r   str_usecasej   r   r\   c                 C      t | |dS N)base)intr   r_   r   r   r   int_usecasem      rb   c                 C   s   t | }t|t|fS r   )iternext)r   itr   r   r   iter_next_usecasep   s   rg   c                 C   s   d}t  d S )NrM   r!   )localsr    r   r   r   locals_usecaset   s   
ri   c                 C   r]   r^   )longra   r   r   r   long_usecasex   rc   rk   c                 C   r?   r   )map)r   map_funcr   r   r   map_usecase{   r,   rn   c                 C   r(   r   maxr    r   r   r   max_usecase1   r,   rq   c                 C      t | |gS r   ro   r    r   r   r   max_usecase2   rc   rs   c                 C   r   r   ro   r   r   r   r   max_usecase3   r   rt   c                   C      t dS Nr   ro   r   r   r   r   max_usecase4   r   rw   c                 C   r(   r   minr    r   r   r   min_usecase1   r,   rz   c                 C   rr   r   rx   r    r   r   r   min_usecase2   rc   r{   c                 C   r   r   rx   r   r   r   r   min_usecase3   r   r|   c                   C   ru   rv   rx   r   r   r   r   min_usecase4   r   r}   c                 C   r   r   )octr   r   r   r   oct_usecase   r   r   c                 C   s   t | |S r   )	functoolsreduce)reduce_funcr   r   r   r   reduce_usecase   rc   r   c                 C   r   r   roundr   r   r   r   round_usecase1   r   r   c                 C   r(   r   r   )r   nr   r   r   round_usecase2   r,   r   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   rc   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   r:   )Nr   rI   rJ   rK   )g      @@zipr5   r   r   r   zip_usecase   r=   r   c                  C   s   d} t  D ]}| d7 } q| S Nr   rI   r   r6   r7   r   r   r   zip_0_usecase   s   

r   c                  C   s    d} t dD ]\}| |7 } q| S )Nr   rI   rJ   r   r   r   r   r   zip_1_usecase   s   
r   c                  C   s0   d} t dddD ]\}}}| || | 7 } q| S )Nr   r   )rK   rL   rM   )r   g!@r   )r6   r7   r8   kr   r   r   zip_3_usecase   s   r   c                  C   s6   t d} d}t| }ttt ||}t|}||fS )NrO   rK   )rangerd   listr   )iterabler   rf   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   r   r   r   r   r   r      r   c                 C   s   t | |}t | |d|fS Nstartr   )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 )NrI   r`          @rC   z, world!r[   r*   tupler   setbytesno match)

isinstancer`   rC   r[   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 )	NrJ   rL   )rI   rK   
   rK   r   dictznot dict)np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   hellorI   rJ   rK   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   rC   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 )NrL   r   r   TFr   r`   r   zr   r   r   *invalid_isinstance_usecase_phi_nopropagate4     
r   c                 C   s4   d}t | tr| | f} tt| D ]}||7 }q|S )Nr   )r   r`   r   len)r   r   r7   r   r   r   +invalid_isinstance_usecase_phi_nopropagate2?  s   

r   c                 C   s$   | dkrd}nd }t |trdS dS )NrL   r   TFr   r   r   r   r   #invalid_isinstance_optional_usecaseJ  r   r   c                     s*   t dddgdd  fdd} | S )Nntplr   r   rI   rJ   c                    s
   t  S r   r   r   instr   r   r   implW  r,   z9invalid_isinstance_unsupported_type_usecase.<locals>.implr   )r   r   r   r   +invalid_isinstance_unsupported_type_usecaseT  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d7d8 Zefd9d:Z d;d< Z!efd=d>Z"d?d@ Z#efdAdBZ$dCdD Z%efdEdFZ&dGdH Z'dIdJ Z(efdKdLZ)dMdN Z*efdOdPZ+dQdR Z,efdSdTZ-dUdV Z.dWdX Z/efdYdZZ0d[d\ Z1d]d^ Z2efd_d`Z3efdadbZ4dcdd Z5dedf Z6dgdh Z7efdidjZ8efdkdlZ9dmdn Z:dodp Z;dqdr Z<efdsdtZ=efdudvZ>dwdx Z?dydz Z@efd{d|ZAd}d~ ZBdd ZCdd 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Z`dd ZaefddZbdd ZcefddZdddĄ ZeefddƄZfddȄ Zgddʄ Zhdd̄ Zidd΄ ZjddЄ ZkdS )TestBuiltinsc                 C   s*   t di ||}| }| | | d S Nr   r   )r   assertPreciseEqual)selfpyfuncflagscfuncexpectedr   r   r   run_nullary_func]  s   zTestBuiltins.run_nullary_funcc                 C   sl  t }ttjffi ||}dD ]}| |||| qttjffi ||}dD ]}| j||||dd q+dddtdd	td
  td
d	td  g}ttjffi ||}|D ]}| j||||dd q_ttjffi ||}|D ]}| |||| q|tj	D ]'}dddd|j
 d g}t|ffi ||}|D ]}| |||| qqd S )Nr   rI   g        皙?singleprecy      ?y                y?      @rE                 ?nanr   r   rJ   rI   )r   r   r	   r   r   r   rC   	complex64
complex128unsigned_domainbitwidth)r   r   r   r   r   complex_valuesunsigned_typeunsigned_valuesr   r   r   test_absb  s0   
zTestBuiltins.test_absc                 C      | j td d S N)r   )r   no_pyobj_flagsr   r   r   r   test_abs_npm}     zTestBuiltins.test_abs_npmc                 C   b   t }ttjtjffi ||}g d}g d}t||D ]\}}| |||||| qd S N)r   r   rI   N)r"   r   r	   r   	itertoolsproductr   r   r   r   r   
x_operands
y_operandsr   r!   r   r   r   test_all     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   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fi ||}dD ]}| |||| qttjffi ||}dddtdtdfD ]}| |||| q4ttjffi ||}tdtdtdtdfD ]}| |||| q[d S )Nr   r                ?rE   r   r   )	r'   r   r	   r   r   r   rC   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fi ||}dD ]}| |||| qttdffi ||}dgg fD ]}| |||| q0d S )N)r    r   rI   )r'   r   r	   stringr   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   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fi ||}ddd}g d}|dg }t||D ]&\}}|||\}	}
|||\}}|}| ||||f||	||
f q$|D ]}| t ||d W d    n1 sdw   Y  qMd S )N@   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)
rI   rK   rO      r   il    l         r   )r  )	r.   r   r	   r   r   r  r   assertRaisesZeroDivisionError)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fi ||}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 )	Nr0   g      @g}Ô%ITg       g      g\nr  r   )r.   r   r	   r   r   rE   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   r9   r   r   r   r   r   test_enumerate  r   zTestBuiltins.test_enumeratec                 C   r   r   )r0  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   )r2  r   r   r   r   r   test_enumerate_start_npm  r   z%TestBuiltins.test_enumerate_start_npmc                 C   s`   t }tdi t|}| t}|  W d    n1 sw   Y  d}| |t|j d S )Nr   z2'float' object cannot be interpreted as an integerr   )r>   r   forceobj_flagsr!  	TypeErrorassertInr[   	exception)r   r   r   raisesmsgr   r   r   'test_enumerate_start_invalid_start_type  s   z4TestBuiltins.test_enumerate_start_invalid_start_typec                 C   s\   t }| tj}tdi t| W d    n1 sw   Y  d}| |t|j d S )Nr   z3Only integers supported as start value in enumerater   )	r>   r!  r   TypingErrorr   r   r6  r[   r7  )r   r   r8  r9  r   r   r   +test_enumerate_start_invalid_start_type_npm  s   z8TestBuiltins.test_enumerate_start_invalid_start_type_npmc                 C   `   t }tdtdf}t|fi ||}dd }g d}| t|||t||| d S )Nr   function_ptrc                 S   s   | d S NrJ   r   r   r   r   r   <lambda>      z*TestBuiltins.test_filter.<locals>.<lambda>r   rI   rJ   rK   rL   )rB   r	   r  r   assertSequenceEqualr   )r   r   r   argtysr   rA   r   r   r   r   test_filter     zTestBuiltins.test_filterc                 C   r  r   )r  rE  r   r   r   r   r   test_filter_npm  r
  zTestBuiltins.test_filter_npmc                 C   s   t }ttjffi ||}dD ]}| |||| qttjffi ||}dD ]}| j||||dd q+ttjffi ||}dD ]}| |||| qHd S )Nr   r   r   r   )z-1.1z0.0z1.1rE   rG   rF   rH   )rD   r   r	   r   r   r   r  r  r   r   r   
test_float"  s   zTestBuiltins.test_floatc                 C   r  r   )r  rH  r   r   r   r   r   test_float_npm1  r
  zTestBuiltins.test_float_npmc                 C   s2   t }t|}tdD ]}| |||| q
d S )N   )rR   r   r   r   )r   r   r   r   r   r   r   test_float_string_literal5  s
   z&TestBuiltins.test_float_string_literalc                 C   s   t }ttjtjffi ||}d}dD ]}| |||||| qttjtjffi ||}d}dD ]}| |||||| q5ttjtjffi ||}d}dD ]}| |||||| qVd S )Nz{0}r   r   r   )rT   r   r	   r  r   r   r   )r   r   r   r   r   r!   r   r   r   test_format;  s   zTestBuiltins.test_formatc                 C   r  r   )r  rL  r   r   r   r   r   test_format_npmM  r
  zTestBuiltins.test_format_npmc                 C   s.   t }tdi ||}| }| |t  d S r   rW   r   assertIsrV   )r   r   r   r   gr   r   r   test_globalsQ  s   zTestBuiltins.test_globalsc                 C   r  r   )r  rQ  r   r   r   r   r   test_globals_npmW  r
  zTestBuiltins.test_globals_npmc                 C   s:   t }tdi ||}| | t  | | t  d S rv   rN  )r   r   r   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r   )r  rT  r   r   r   r   test_globals_jit_npmc  r
  z!TestBuiltins.test_globals_jit_npmc                 C   >   t }ttjffi ||}dD ]}| |||| qd S r  )rY   r   r	   r   r   r  r   r   r   test_hexg  
   zTestBuiltins.test_hexc                 C   r  r   )r  rY  r   r   r   r   r   test_hex_npmn  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 ]G}t|ffi t|}|D ]7}t|j}	|	j|  krI|	jksKn q5| |||||| |jrl| ||| |||  q5q&d S )N)i  rI   r   r   i  )i[i! i@B r   )r\   r	   int8int16r   r   uintuint8uint16uint32uint64r   nrt_no_pyobj_flagsr   iinfokeyry   rp   r   signed)
r   r   small_inputslarge_inputsargstypstypr   vtp_infor   r   r   test_int_strr  s4    zTestBuiltins.test_int_strc                 C   sb   t }ttjtjffi ||}g d}g d}t||D ]\}}| |||||| qd S )N)z-10110)rJ   rJ  r      )rb   r   r	   r  r   r   r  r   r  r   r   r   test_int  r  zTestBuiltins.test_intc                 C   r  r   )r  rs  r   r   r   r   r   test_int_npm  r
  zTestBuiltins.test_int_npmc                 C   s   t }tttjdffi ||}| |dd tttjdffi ||}| t |d W d    d S 1 s?w   Y  d S )NrK   )rI   r;   rM   )rI   r;   rI   rI   )rg   r   r	   UniTupler   r   r!  StopIteration)r   r   r   r   r   r   r   test_iter_next  s     
"zTestBuiltins.test_iter_nextc                 C   r   r   )rx  r   r   r   r   r   test_iter_next_npm  r   zTestBuiltins.test_iter_next_npmc                 C   sN   t }| tj ttjffi || W d    d S 1 s w   Y  d S r   )ri   r!  r   ForbiddenConstructr   r	   r   )r   r   r   r   r   r   test_locals  s   "zTestBuiltins.test_localsc                 C   r   r   )r{  r4  r   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>  c                 S   s   | d S r?  r   r   r   r   r   r@    rA  z'TestBuiltins.test_map.<locals>.<lambda>rB  )rn   r	   r  r   rC  r   )r   r   r   rD  r   rm   r   r   r   r   test_map  rF  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fi ||}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   check_minmax_1     zTestBuiltins.check_minmax_1c                 C      |  t| dS )z
        max(*args)
        N)r  rq   r/  r   r   r   
test_max_1     zTestBuiltins.test_max_1c                 C   r  )z
        min(*args)
        N)r  rz   r/  r   r   r   
test_min_1  r  zTestBuiltins.test_min_1c                 C   r   r   )r  r   r   r   r   r   test_max_npm_1  r   zTestBuiltins.test_max_npm_1c                 C   r   r   )r  r   r   r   r   r   test_min_npm_1  r   zTestBuiltins.test_min_npm_1c                 C   r  r  r  r  r   r   r   check_minmax_2  r  zTestBuiltins.check_minmax_2c                 C   r  )z
        max(list)
        N)r  rs   r/  r   r   r   
test_max_2  r  zTestBuiltins.test_max_2c                 C   r  )z
        min(list)
        N)r  r{   r/  r   r   r   
test_min_2  r  zTestBuiltins.test_min_2c                 C   r  r   )r  r  r   r   r   r   r   test_max_npm_2  r
  zTestBuiltins.test_max_npm_2c                 C   r  r   )r  r  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fi  }dtddf}||d d d fD ]}||| qd S )Nr  r   r1   r   )r   rC   r   )argtyr   tupvalr   r   r   r   r   check  s
   z*TestBuiltins.check_minmax_3.<locals>.checkrK   )r	   rv  r   Tupler   )r   r   r   r  r   r  r   check_minmax_3  s   zTestBuiltins.check_minmax_3c                 C   r  )z
        max(tuple)
        N)r  rt   r/  r   r   r   
test_max_3  r  zTestBuiltins.test_max_3c                 C   r  )z
        min(tuple)
        N)r  r|   r/  r   r   r   
test_min_3  r  zTestBuiltins.test_min_3c                 C   r   r   )r  r   r   r   r   r   test_max_npm_3"  r   zTestBuiltins.test_max_npm_3c                 C   r   r   )r  r   r   r   r   r   test_min_npm_3%  r   zTestBuiltins.test_min_npm_3c                 C   s0   t tjtdffi ||}|ddg d S )Nr   rI   )r   r	   r   r  r   r   r   r   r   r   r   check_min_max_invalid_types(  s    z(TestBuiltins.check_min_max_invalid_typesc                 C   :   |  t | t W d    d S 1 sw   Y  d S r   )r!  r5  r  rq   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  rq   r   r   r   r   r   test_max_1_invalid_types_npm0     
"z)TestBuiltins.test_max_1_invalid_types_npmc                 C   r  r   )r!  r5  r  rz   r   r   r   r   test_min_1_invalid_types4  r  z%TestBuiltins.test_min_1_invalid_typesc                 C   r  r   )r  r  rz   r   r   r   r   r   test_min_1_invalid_types_npm8  r  z)TestBuiltins.test_min_1_invalid_types_npmc                 C   sR   t tjtjffi ||}d}t||D ]\}}| |||||| qd S )N)FT)r   r	   bool_r   r  r   )r   r   r   r   operandsr   r!   r   r   r   check_minmax_bool1<  s
   zTestBuiltins.check_minmax_bool1c                 C   r.  r   )r  rq   r/  r   r   r   test_max_bool1C     zTestBuiltins.test_max_bool1c                 C   r.  r   )r  rz   r/  r   r   r   test_min_bool1G  r  zTestBuiltins.test_min_bool1c                 C   s$   t tjffi ||}|d d S NrI   )r   r	   r   r  r   r   r    check_min_max_unary_non_iterableM  s   z-TestBuiltins.check_min_max_unary_non_iterablec                 C   r  r   )r!  r5  r  rt   r   r   r   r   test_max_unary_non_iterableQ  r  z(TestBuiltins.test_max_unary_non_iterablec                 C   8   |    | t W d    d S 1 sw   Y  d S r   )r  r  rt   r   r   r   r   test_max_unary_non_iterable_npmU     
"z,TestBuiltins.test_max_unary_non_iterable_npmc                 C   r  r   )r!  r5  r  r|   r   r   r   r   test_min_unary_non_iterableY  r  z(TestBuiltins.test_min_unary_non_iterablec                 C   r  r   )r  r  r|   r   r   r   r   test_min_unary_non_iterable_npm]  r  z,TestBuiltins.test_min_unary_non_iterable_npmc                 C   sT   |   }tdi t| W d    n1 sw   Y  | d| t|j d S )Nr   z%s() argument is an empty tupler   )r  r   r   r6  r[   r7  )r   r   	func_namer8  r   r   r   check_min_max_empty_tuplec  s   

z&TestBuiltins.check_min_max_empty_tuplec                 C      |  td d S )Nrp   )r  rw   r   r   r   r   test_max_empty_tuplei  r   z!TestBuiltins.test_max_empty_tuplec                 C   r  )Nry   )r  r}   r   r   r   r   test_min_empty_tuplel  r   z!TestBuiltins.test_min_empty_tuplec                 C   rX  )N)ir   r   rI   rJ  )r   r   r	   r   r   r  r   r   r   test_octp  rZ  zTestBuiltins.test_octc                 C   r  r   )r  r  r   r   r   r   r   test_oct_npmw  r
  zTestBuiltins.test_oct_npmc                 C   s   t }tdtdf}t|fi ||}dd }td}| |||||| dd tdD }| |||||| dd tdD }| |||||| d S )	Nr>  r   c                 S      | | S r   r   r    r   r   r   r@    rA  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        )r   r	   r  r   r   r   )r   r   r   rD  r   r   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fi ||}g d}|ddg7 }|D ]}| |||| q!qd S )N)gg      gffffffg      r   皙?      ?g333333?gffffff?r        @gr  )r   r	   r   r   r   r   )r   r   r   tpr   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fi ||}dD ]+}dD ]&}| j|||||||d || |}| j|| ||| ||d q&q"qd S )Nr   exact)r   r  g      ?g      ?r  g      ?g      ?r  g      ?g      @r1   g      @g      )@g      .@g     6@)r   r   rI   rJ   r   )r   r	   r   r   r   r   r   )	r   r   r   r  r   r   r   r   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fi ||}td}| |||| dd tdD }| |||| dd tdD }| |||| d S )Nr   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   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   rI   rJ                 @    rJ   rK   rM   d                    i@)r   r   r   r   r\  r   r   onestlr   r   r   ri    s   z#TestBuiltins.test_sum.<locals>.argsr  rJ   rK   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  rJ   rK   rO   rM   r  )rM   rM   )rM   r  ir  r  )	r   r   r   r   r\  ra  r   r   r  r  r  r   r   args_kws  s   (
z'TestBuiltins.test_sum.<locals>.args_kwsr   r  rL   r   )r   r   r   r   r   py_funcr   rb  ra  r_  assertEqualr   )	r   sum_default	sum_kwargr  ri  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;  r6  rS   r[   r7  r  )r   r  r  r9  r8  r   r   r   test_sum_exceptions  s&   
z TestBuiltins.test_sum_exceptionsc                 C   s>   t }tdd|}| |d|d | |d|d d S )NTrV  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 )NTrV  c                     s   |  }  |  | d S r   )r   )ri  r   r   r   r   r   r   r  $  s   z+TestBuiltins.test_type_unary.<locals>.checkr  rJ   rI   r1   y              ?y              @F)r   r   )r   r  r   r  r   test_type_unary  s   



zTestBuiltins.test_type_unaryc                 C   r.  r   )r   r   r/  r   r   r   test_zip.  r   zTestBuiltins.test_zipc                 C   r   r   )r  r   r   r   r   r   test_zip_npm1  r   zTestBuiltins.test_zip_npmc                 C   r.  r   )r   r   r/  r   r   r   
test_zip_14  r   zTestBuiltins.test_zip_1c                 C   r   r   )r  r   r   r   r   r   test_zip_1_npm7  r   zTestBuiltins.test_zip_1_npmc                 C   r.  r   )r   r   r/  r   r   r   
test_zip_3:  r   zTestBuiltins.test_zip_3c                 C   r   r   )r  r   r   r   r   r   test_zip_3_npm=  r   zTestBuiltins.test_zip_3_npmc                 C   r.  r   )r   r   r/  r   r   r   
test_zip_0@  r   zTestBuiltins.test_zip_0c                 C   r   r   )r  r   r   r   r   r   test_zip_0_npmC  r   zTestBuiltins.test_zip_0_npmc                 C   r  )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_exhaustedF  s   z%TestBuiltins.test_zip_first_exhaustedc                 C   r   r   )r  rc  r   r   r   r   test_zip_first_exhausted_npmM  r   z)TestBuiltins.test_zip_first_exhausted_npmc                 C   Z   g d}|D ]$\}}t |t |f}t|fi tt}|||}| |t|| qd S N))rJ   rK   )r   rK   )rJ   r2   )y               @r  )r   r   r   r   r   r   ri  r   r!   rD  r   rr   r   r   test_pow_op_usecaseP     
z TestBuiltins.test_pow_op_usecasec                 C   r  r  )r   r   r   r   r   r  r   r   r   test_pow_usecase^  r  zTestBuiltins.test_pow_usecasec                 C   s&   t  |}| }| }| || d S r   )r   r   )r   r   r   r   gotr   r   r   _check_min_maxl  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stepr7   r   r   r   franget  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   r@  |      zTTestBuiltins.test_min_max_iterable_input.<locals>.sample_functions.<locals>.<lambda>c                      s    t ddS )NrL   r  r	  r   r
  r   r   r@  }  s    c                      s    t dddS )Nr   r   r	  r   r
  r   r   r@  ~      c                          g dS )N)gffffff@g      @g@r   r   r
  r   r   r@    r  c                      s    ddgS )N)rK   rL   r   r   r   r
  r   r   r@    r  c                      s    dddS )Nr   gffffff
@r  r   r   )r  r  r   r   r@    r  c                      s    t jt j t jt jgS r   )r   r   rE   r   r
  r   r   r@    s    c                      r  )N))rK   ru  )rJ   r   r   r
  r   r   r@    r  r   r
  r  r
  r   sample_functions{  s   zBTestBuiltins.test_min_max_iterable_input.<locals>.sample_functionsr
  )r   ry   r  rp   )r   r  fnr   r  r   test_min_max_iterable_inputr  s   

z(TestBuiltins.test_min_max_iterable_inputN)l__name__
__module____qualname__r   r4  r   r   r  r	  r  r  r  r  r  r  r  r  r*  r+  r,  r-  r0  r1  r2  r3  r:  r<  rE  rG  rH  rI  rK  rL  rM  rQ  rR  rT  rW  rY  r[  rn  rs  rt  rx  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  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   [  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)rI   r   TFr0   r   r   r   Nr  rp  )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)rI   r   TFr0   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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 )NTrV  rK   r  Hellos   worldr   r   )rI   rK   rK   rK   rI   rJ   )rI   nbarJ   )r   r   r   r  r   r   r   inputsinptr   r  r   r   r   test_isinstance  s$   
z%TestIsinstanceBuiltin.test_isinstancec                 C   &   t }tdd|}| | |  d S rU  )r   r   r  r  r   r   r   test_isinstance_dict  s   z*TestIsinstanceBuiltin.test_isinstance_dictc                 C   s*   t }tdd|}| |d|d d S )NTrV  rK   )r   r   r  r  r   r   r   test_isinstance_issue9125  s   z/TestIsinstanceBuiltin.test_isinstance_issue9125c              
   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 )NTrV  rI   r   rJ   r   r2   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/  rU  )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 )NTrV  g333333@&Cannot infer Numba type of Python typer  )	r   r   
assertTruer!  r   r;  r6  r[   r7  )r   r   r   r9  r8  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 )Nr5  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;  r6  r[   r7  )r   fnsr  r9  r8  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_argrI   gffffff@              @5rN   )rO      8r  )r      r  )   r   y              ,@)r  rr           rL   )r`   rC   r*   r[   r   r   r   r   r   r   r\  r   arrayr   r   r2  r	   unicode_typer   r   
empty_listr   r  r   r  r  )	r   r?  clazz_types	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 r  r   r   r<  r   r   r   (  r,   zGTestIsinstanceBuiltin.test_numba_types.<locals>.gen_w_arg.<locals>.implr   r>  r   r<  r   r?  '  r@  z9TestIsinstanceBuiltin.test_numba_types.<locals>.gen_w_argz%Numba type classes.*are not supported)r	   IntegerFloatArrayr   r!  r   r;  assertRegexr[   r7  )r   r?  rL  r9  rN  r  r8  r   r   r   test_numba_types$  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   intpr`   r   r   r   r   r   :  r  zITestIsinstanceBuiltin.test_python_numpy_scalar_alias_problem.<locals>.fooTFc                   S   s   t dtjS r  )r   r   rU  r   r   r   r   barA     zITestIsinstanceBuiltin.test_python_numpy_scalar_alias_problem.<locals>.barr   r  r  )r   r   rV  r   r   r   &test_python_numpy_scalar_alias_problem5  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   r[   r*   r   r   r   r   r   r   r   r   r   L  s   



z4TestIsinstanceBuiltin.test_branch_prune.<locals>.foo)r  y      ?       @)r   rK   rA  )r   r  r  )r   r   r   r   r  r   r   r   test_branch_pruneH  s   


z'TestIsinstanceBuiltin.test_branch_prunec                    s   t dd  t fdd}d}| |||| | tj}|d W d    n1 s0w   Y  t|j}| 	d| | 	d| d S )	Nc                 S   r  r   r   r    r   r   r   r)  ^     zBTestIsinstanceBuiltin.test_branch_prune_and_bind_to_sig.<locals>.fc                    s   t | tr	 |  S  | S r   r   r   r   r)  r   r   call_fb     
zGTestIsinstanceBuiltin.test_branch_prune_and_bind_to_sig.<locals>.call_fr   rI   zCannot bindz+TypeError: missing a required argument: 'y')
r   r   r  r  r!  r   r;  r[   r7  r6  )r   r_  r   r8  r9  r   r^  r   !test_branch_prune_and_bind_to_sig\  s   



z7TestIsinstanceBuiltin.test_branch_prune_and_bind_to_sigc                    sH   t dd  t dd t fdd}d}| |||| d S )Nc                 S   r  r   r   r    r   r   r   r)  ~  r\  zITestIsinstanceBuiltin.test_branch_prune_non_tuples_as_star_arg.<locals>.fc                 S      | S r   r   r   r   r   r   rP       zITestIsinstanceBuiltin.test_branch_prune_non_tuples_as_star_arg.<locals>.gc                    s   t | tr	 |  S | S r   r]  r   r)  rP  r   r   r_    r`  zNTestIsinstanceBuiltin.test_branch_prune_non_tuples_as_star_arg.<locals>.call_frI   r   r   r  r  )r   r_  r   r   rd  r   (test_branch_prune_non_tuples_as_star_arg{  s   


z>TestIsinstanceBuiltin.test_branch_prune_non_tuples_as_star_argc                    sF   t dd  t dd dt fdd}| | |  d S )Nc                 S   r  r   r   r    r   r   r   r)    r\  zFTestIsinstanceBuiltin.test_branch_prune_literal_as_star_arg.<locals>.fc                 S   rb  r   r   r   r   r   r   rP    rc  zFTestIsinstanceBuiltin.test_branch_prune_literal_as_star_arg.<locals>.grI   c                     s   } t | tr |  S | S r   r]  r   r)  rP  oner   r   r_    s   
zKTestIsinstanceBuiltin.test_branch_prune_literal_as_star_arg.<locals>.call_fre  )r   r_  r   rg  r   %test_branch_prune_literal_as_star_arg  s   

z;TestIsinstanceBuiltin.test_branch_prune_literal_as_star_argN)r  r  r  r.  r0  r1  r3  r4  r7  r9  rO  rT  rY  r[  ra  rf  ri  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   
z7TestGetattrBuiltin.test_getattr_func_retty.<locals>.foorI   Q@rM   rN   rO   r   r   r  r   r   r   r   r   r   test_getattr_func_retty  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ndimrm  r   r   r   r   r     r  z8TestGetattrBuiltin.test_getattr_value_retty.<locals>.foorK   ru  )r   r   r   r2  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>.foorr  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cosrI   ry  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;  r6  r[   r7  r   r   r8  r9  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   rm  r   invalid_attrr   r   r     r  zCTestGetattrBuiltin.test_getattr_raises_attribute_error.<locals>.foogGz?z'float64' has no attribute '')r   r!  AttributeErrorr6  r[   r7  )r   r   r8  r   r  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 )Nr  rm  )r   defaultr   r   r   r     rW  z9TestGetattrBuiltin.test_getattr_with_default.<locals>.fooro  )N   rZ  )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   rm  )r   nonliteral_strr   r   r   r     r  z<TestGetattrBuiltin.test_getattr_non_literal_str.<locals>.foorI   rl  z(argument 'name' must be a literal stringr}  r~  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  rc  zPTestGetattrBuiltin.test_getattr_no_optional_type_generated.<locals>.default_hashc                     s   t tdd } |  S )NrI   r  )r  r   r  )	hash_funcr  r   r   r     s   zGTestGetattrBuiltin.test_getattr_no_optional_type_generated.<locals>.foorr  rz  r   r  r   'test_getattr_no_optional_type_generated   s
   
z:TestGetattrBuiltin.test_getattr_no_optional_type_generatedN)r  r  r  rt  rv  r{  r  r  r  r  r  r   r   r   r   rj    s    

	
rj  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 )Nrl  r  hasattrr   r   r   r   r     s   z,TestHasattrBuiltin.test_hasattr.<locals>.foorI   rp  rq  rL   ABC)r   r	   r   r   r   r2  r   rK  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 )NrK   rl  __str__rI   r  )predrn  r   r   r   r   "  s   z;TestHasattrBuiltin.test_hasattr_non_const_attr.<locals>.foorN   zGhasattr() cannot determine the type of variable "attr" due to a branch.)r   r!  r   NumbaTypeErrorr6  r[   r7  r~  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   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S )TestStrAndReprBuiltinc                 C   rw  )Nc                   S   rU   r   rZ   r   r   r   r   r   7  s   z3TestStrAndReprBuiltin.test_str_default.<locals>.foorX  rz  r   r   r   test_str_default5  s   
z&TestStrAndReprBuiltin.test_str_defaultc                 C   s*   t dd }d}| |||| d S )Nc                 S   s
   t | dS )N)objectrZ   r   r   r   r   r   ?  r  z8TestStrAndReprBuiltin.test_str_object_kwarg.<locals>.fooza stringrX  )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   rZ   r   r   r   r   r   H  r\  z<TestStrAndReprBuiltin.test_str_calls_dunder_str.<locals>.foozthis is the dummy object strc                        S r   r   r   string_reprr   r   r@  O      zATestStrAndReprBuiltin.test_str_calls_dunder_str.<locals>.<lambda>r  c                    r:  )Nc                    r  r   r   dummyr  r   r   r   S     zVTestStrAndReprBuiltin.test_str_calls_dunder_str.<locals>.ol_dummy_string.<locals>.implr   r  r   r  r   r   ol_dummy_stringQ     zHTestStrAndReprBuiltin.test_str_calls_dunder_str.<locals>.ol_dummy_string__repr__c                 S   s   dd }|S )Nc                 S   r  )NzSHOULD NOT BE CALLEDr   r  r   r   r   r   Y  r  zTTestStrAndReprBuiltin.test_str_calls_dunder_str.<locals>.ol_dummy_repr.<locals>.implr   r  r   r   r   ol_dummy_reprW  s   zFTestStrAndReprBuiltin.test_str_calls_dunder_str.<locals>.ol_dummy_repr)r   make_dummy_typer  r   r  r  )r   r   r  	DummyTyper  r  r  r   r  r   test_str_calls_dunder_strF  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   rZ   r   r   r   r   r   a  r\  z>TestStrAndReprBuiltin.test_str_falls_back_to_repr.<locals>.foozthis is the dummy object reprc                    r  r   r   r  r  r   r   r@  h  r  zCTestStrAndReprBuiltin.test_str_falls_back_to_repr.<locals>.<lambda>r  c                    r:  )Nc                    r  r   r   r  r  r   r   r   l  r  zVTestStrAndReprBuiltin.test_str_falls_back_to_repr.<locals>.ol_dummy_repr.<locals>.implr   r  r  r   r   r  j  r  zHTestStrAndReprBuiltin.test_str_falls_back_to_repr.<locals>.ol_dummy_repr)r   r  r  r   r  r  )r   r   r  r  r  r  r   r  r   test_str_falls_back_to_repr_  s   
z1TestStrAndReprBuiltin.test_str_falls_back_to_reprc                 C   rk  )Nc                 S   s   t | | fS r   )reprr   r   r   r   r   s  rW  z,TestStrAndReprBuiltin.test_repr.<locals>.foo)abcF{   rX  rs  r   r   r   	test_reprr  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                    r  r   r   r  r  r   r   r@    r  z:TestStrAndReprBuiltin.test_repr_fallback.<locals>.<lambda>c                    s"   |j |j  }|j |dS rv   )pyapiunserializeserialize_objectcall_function_objargs)rk  objr   clazobj)r  r   r   	box_dummy  s   z;TestStrAndReprBuiltin.test_repr_fallback.<locals>.box_dummyc                 S   r   r   rZ   r   r   r   r   r     r\  z5TestStrAndReprBuiltin.test_repr_fallback.<locals>.foo)r  r   r  r   r   r  r  )r   r  r  r  r   r   )r  r  r   test_repr_fallbackz  s   
z(TestStrAndReprBuiltin.test_repr_fallbackN)	r  r  r  r  r  r  r  r  r  r   r   r   r   r  3  s    	r  __main__r  )^r   r   sysr   collectionsr   numpyr   unittestwarningsnumbar   r   r   r   
numba.corer   r	   r
   numba.tests.supportr   r   r   r   numba.core.extendingr   r   r   r4  r   rc  r   r"   r%   r'   r+   r.   r9   r<   r>   rB   rD   rR   rT   rW   rY   r\   rb   rg   ri   rk   rn   rq   rs   rt   rw   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(  rj  r  r  r  mainr   r   r   r   <module>   s    



	
      7!  `$
^