U
    b»{j&Å  ã                   @   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„ ZEd�d`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`d€k�rüe a¡  dS )‚é    N©Ú
namedtuple)Úcompile_isolatedÚFlags)ÚjitÚtypeofÚnjitÚtyped)ÚerrorsÚtypesÚconfig)ÚTestCaseÚtagÚignore_internal_warningsÚMemoryLeakMixin)Úoverload_methodÚboxTc                 C   s   t | ƒS ©N)Úabs©Úx© r   úX/var/www/html/bwave/python/venv/lib/python3.8/site-packages/numba/tests/test_builtins.pyÚabs_usecase    s    r   c                 C   sL   | d kr|d krt g ƒS | d kr*t |gƒS |d kr<t | gƒS t | |gƒS d S r   )Úall©r   Úyr   r   r   Úall_usecase#   s    

r   c                 C   sL   | d kr|d krt g ƒS | d kr*t |gƒS |d kr<t | gƒS t | |gƒS d S r   )Úanyr   r   r   r   Úany_usecase-   s    

r   c                 C   s   t | ƒS r   )Úboolr   r   r   r   Úbool_usecase7   s    r!   c                 C   s
   t | |ƒS r   ©Úcomplexr   r   r   r   Úcomplex_usecase:   s    r$   c                 C   s
   t | |ƒS r   )Údivmodr   r   r   r   Údivmod_usecase=   s    r&   c                  C   s&   d} t dƒD ]\}}| || 7 } q| S )Nr   ©ç      ð?ç      @ç      @©Ú	enumerate©ÚresultÚiÚjr   r   r   Úenumerate_usecase@   s    r1   c                  C   s(   d} t ddƒD ]\}}| || 7 } q| S )Nr   r'   é*   r+   r-   r   r   r   Úenumerate_start_usecaseF   s    r3   c                  C   s(   d} t ddƒD ]\}}| || 7 } q| S )Nr   r'   gn†ðù!	@r+   r-   r   r   r   Úenumerate_invalid_start_usecaseL   s    r4   c                 C   s
   t || ƒS r   )Úfilter)r   Úfilter_funcr   r   r   Úfilter_usecaseR   s    r7   c                 C   s   t | ƒS r   )Úfloatr   r   r   r   Úfloat_usecaseU   s    r9   c                 C   s
   |   |¡S r   )Úformatr   r   r   r   Úformat_usecaseX   s    r;   c                   C   s   t ƒ S r   )Úglobalsr   r   r   r   Úglobals_usecase[   s    r=   c                 C   s   t | ƒS r   )Úhexr   r   r   r   Úhex_usecase`   s    r?   c                 C   s   t | ƒS r   ©Ústrr   r   r   r   Ústr_usecasec   s    rB   c                 C   s   t | |d�S ©N)Úbase)Úint©r   rD   r   r   r   Úint_usecasef   s    rG   c                 C   s   t | ƒ}t|ƒt|ƒfS r   )ÚiterÚnext)r   Úitr   r   r   Úiter_next_usecasei   s    rK   c                 C   s   d}t ƒ d S )Né   r   )Úlocalsr   r   r   r   Úlocals_usecasem   s    rN   c                 C   s   t | |d�S rC   )ÚlongrF   r   r   r   Úlong_usecaseq   s    rP   c                 C   s
   t || ƒS r   )Úmap)r   Úmap_funcr   r   r   Úmap_usecaset   s    rS   c                 C   s
   t | |ƒS r   ©Úmaxr   r   r   r   Úmax_usecase1x   s    rV   c                 C   s   t | |gƒS r   rT   r   r   r   r   Úmax_usecase2{   s    rW   c                 C   s   t | ƒS r   rT   r   r   r   r   Úmax_usecase3~   s    rX   c                   C   s   t dƒS ©Nr   rT   r   r   r   r   Úmax_usecase4�   s    rZ   c                 C   s
   t | |ƒS r   ©Úminr   r   r   r   Úmin_usecase1…   s    r]   c                 C   s   t | |gƒS r   r[   r   r   r   r   Úmin_usecase2ˆ   s    r^   c                 C   s   t | ƒS r   r[   r   r   r   r   Úmin_usecase3‹   s    r_   c                   C   s   t dƒS rY   r[   r   r   r   r   Úmin_usecase4Ž   s    r`   c                 C   s   t | ƒS r   )Úoctr   r   r   r   Úoct_usecase‘   s    rb   c                 C   s   t  | |¡S r   )Ú	functoolsÚreduce)Úreduce_funcr   r   r   r   Úreduce_usecase”   s    rf   c                 C   s   t | ƒS r   ©Úroundr   r   r   r   Úround_usecase1—   s    ri   c                 C   s
   t | |ƒS r   rg   )r   Únr   r   r   Úround_usecase2š   s    rk   c                 C   s   t | ƒS r   ©Úsumr   r   r   r   Úsum_usecase�   s    rn   c                 C   s   t | ƒ|ƒS r   )Útype©ÚaÚbr   r   r   Útype_unary_usecase    s    rs   c                 C   s
   t  | ¡S r   )ÚoperatorÚtruth)Úpr   r   r   Útruth_usecase£   s    rw   c                 C   s   t | ƒS r   )Úunichrr   r   r   r   Úunichr_usecase¦   s    ry   c                  C   s(   d} t ddƒD ]\}}| || 7 } q| S )Nr   ©é   é   é   )g      @çÍÌÌÌÌÌ@©Úzipr-   r   r   r   Úzip_usecase©   s    r�   c                  C   s   d} t ƒ D ]}| d7 } q
| S ©Nr   r{   r   ©r.   r/   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}   é   rL   )r~   gÍÌÌÌÌÌ!@r   )r.   r/   r0   Úkr   r   r   Úzip_3_usecase¼   s    r‰   c                  C   s6   t dƒ} d}t| ƒ}ttt |ƒ|ƒƒ}t|ƒ}||fS )Né   r}   )ÚrangerH   Úlistr€   )Úiterablerj   rJ   ÚfrontÚbackr   r   r   Úzip_first_exhaustedÃ   s    r�   c                 C   s   | | S r   r   r   r   r   r   Úpow_op_usecaseÎ   s    r‘   c                 C   s
   t | |ƒS r   )Úpowr   r   r   r   Úpow_usecaseÒ   s    r“   c                 C   s   t | ƒS r   rl   r   r   r   r   rn   Ö   s    c                 C   s   t | |ƒ}t | |d�|fS ©N©Ústartrl   )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 nht | tƒrR| d dfS t | tƒrf| jdfS t | ttfƒrˆt | tƒr‚dS d	S nt | tƒr–d
S t | t	ƒr¤dS dS )Nr{   rE   ç       @r8   z, world!rA   r#   ÚtuplerŒ   ÚsetÚbytesúno match)
Ú
isinstancerE   r8   rA   r#   Úimagrš   rŒ   r›   rœ   ©rq   r   r   r   Úisinstance_usecaseß   s$    







r¡   c                  C   s:   dddœ} dt  d¡dœ}t| tƒr2t|tƒr2dS dS d S )	Nr|   r‡   )r{   r}   é
   r}   rp   Údictznot dict)ÚnpZzerosrž   r£   rp   r   r   r   Úisinstance_dictõ   s
    
r¥   c                 C   s„   t | tjƒrdS t | tjtjfƒr8t | tjƒr2dS dS nHt | tjtjfƒrlt | tjƒrZdS t | tjƒr€dS nt | tjƒr|dS 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œ   ©rq   rr   Úcr   r   r   Ú isinstance_usecase_numba_types_2  s    

ÿþr±   c                 C   s   t | dƒrdS 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 d S )Nz
not a typeTF©rž   r8   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 d S )Nr‡   r¢   rq   TF©rž   rE   ©r   Úzr   r   r   Ú*invalid_isinstance_usecase_phi_nopropagate-  s    
rº   c                 C   s(   | dkrd}nd }t |tƒr dS dS d S )Nr‡   r¢   TFr·   r¸   r   r   r   Ú#invalid_isinstance_optional_usecase8  s    
r»   c                     s*   t dddgƒ‰ˆddƒ‰ ‡ ‡fdd„} | S )NÚntplrq   rr   r{   r|   c                    s
   t ˆ ˆƒS r   r³   r   ©Úinstr¼   r   r   ÚimplE  s    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€„ ZDd�d‚„ ZEdƒd„„ ZFefd…d†„ZGefd‡dˆ„ZHefd‰dŠ„ZId‹dŒ„ ZJd�dŽ„ ZKd�d�„ ZLd‘d’„ ZMd“d”„ ZNd•d–„ ZOd—d˜„ ZPefd™dš„ZQd›dœ„ ZRefd�dž„ZSdŸd „ ZTefd¡d¢„ZUd£d¤„ ZVefd¥d¦„ZWd§d¨„ ZXefd©dª„ZYd«d¬„ ZZd­d®„ Z[d¯d°„ Z\d±d²„ Z]e^fd³d´„Z_dµd¶„ Z`e^fd·d¸„Zad¹dº„ Zbe^fd»d¼„Zcd½d¾„ Zde^fd¿dÀ„ZedÁdÂ„ Zfe^fdÃdÄ„ZgdÅdÆ„ ZhdÇdÈ„ ZidÉdÊ„ ZjdËdÌ„ ZkdÍdÎ„ ZldÏS )ÐÚ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   sp  t }t|tjf|d�}|j}dD ]}|  ||ƒ||ƒ¡ q t|tjf|d�}|j}dD ]}| j||ƒ||ƒdd� qVd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 ]R}dddd|j d g}t||f|d�}|j}|D ]}|  ||ƒ||ƒ¡ �qL�qd S )NrÃ   ©éÿÿÿÿr   r{   ©gš™™™™™ñ¿ç        çš™™™™™ñ?Úsingle©Úprecyš™™™™™ñ¿      à?y                yš™™™™™ñ?      @Úinfù              ð?Únanr   r¢   r|   r{   )r   r   r   r§   rÅ   rÆ   r©   r8   Ú	complex64Ú
complex128Zunsigned_domainZbitwidth)	rÇ   rÄ   rÈ   rÉ   rÊ   r   Zcomplex_valuesZunsigned_typeZunsigned_valuesr   r   r   Útest_absQ  s6    þ
zTestBuiltins.test_absc                 C   s   | j td� d S ©NrÃ   )rÚ   Úno_pyobj_flags©rÇ   r   r   r   Útest_abs_npmq  s    zTestBuiltins.test_abs_npmc           	      C   sj   t }t|tjtjf|d�}|j}dddd g}dddd g}t ||¡D ] \}}|  |||ƒ|||ƒ¡ qDd S ©NrÃ   rÎ   r   r{   )r   r   r   r§   rÅ   Ú	itertoolsÚproductrÆ   ©	rÇ   rÄ   rÈ   rÉ   rÊ   Ú
x_operandsÚ
y_operandsr   r   r   r   r   Útest_allt  s    zTestBuiltins.test_allc              	   C   s$   |   ¡ � | jtd� W 5 Q R X d S rÛ   )ÚassertTypingErrorrå   rÜ   rÝ   r   r   r   Útest_all_npm~  s    
zTestBuiltins.test_all_npmc           	      C   sj   t }t|tjtjf|d�}|j}dddd g}dddd g}t ||¡D ] \}}|  |||ƒ|||ƒ¡ qDd S rß   )r   r   r   r§   rÅ   rà   rá   rÆ   râ   r   r   r   Útest_any‚  s    zTestBuiltins.test_anyc              	   C   s$   |   ¡ � | jtd� W 5 Q R X d S rÛ   )ræ   rè   rÜ   rÝ   r   r   r   Útest_any_npmŒ  s    
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 ]}|  ||ƒ||ƒ¡ qht|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ª   r8   rÙ   r#   ©rÇ   rÄ   rÈ   rÉ   rÊ   r   r   r   r   Ú	test_bool�  s     zTestBuiltins.test_boolc                 C   s   | j td� d S rÛ   )rí   rÜ   rÝ   r   r   r   Útest_bool_npm   s    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 ]}|  ||ƒ||ƒ¡ q`d S )NrÃ   )r   Ú rŒ   r{   )r!   r   r   ÚstringrÅ   rÆ   ÚDummyrì   r   r   r   Útest_bool_nonnumber£  s    z TestBuiltins.test_bool_nonnumberc              	   C   s$   |   ¡ � | jtd� W 5 Q R X d S rÛ   )ræ   rò   rÜ   rÝ   r   r   r   Útest_bool_nonnumber_npm°  s    
z$TestBuiltins.test_bool_nonnumber_npmc           	      C   sf   t }t|tjtjf|d�}|j}dddg}dddg}t ||¡D ] \}}|  |||ƒ|||ƒ¡ q@d S rß   )r$   r   r   r§   rÅ   rà   rá   rÆ   râ   r   r   r   Útest_complex´  s    

zTestBuiltins.test_complexc                 C   s   | j td� d S rÛ   )rô   rÜ   rÝ   r   r   r   Útest_complex_npm¿  s    zTestBuiltins.test_complex_npmc              
   C   sÔ   t }t|tjtjf|d�}|j}ddd„}ddddd	d
ddddg
}|dg }t ||¡D ]L\}}	|||	ƒ\}
}|||	ƒ\}}|}|  ||ƒ||ƒf||
ƒ||ƒf¡ qX|D ]$}|  t	¡� ||dƒ W 5 Q R X qªd 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_resultr{   r}   rŠ   é   rÎ   éýÿÿÿiùÿÿÿéñÿÿÿl   ÿÿÿÿ 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   s   | j td� d S rÛ   )r  rÜ   rÝ   r   r   r   Útest_divmod_ints_npmÝ  s    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 ]8\}}|||ƒ\}	}
|||ƒ\}}|  
||f|	|
f¡ qV|D ]$}|  t¡� ||d	ƒ W 5 Q R X q”d S )
NrÃ   r(   g      @g}Ã”%­I²Tg       À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   s   | j td� d S rÛ   )r  rÜ   rÝ   r   r   r   Útest_divmod_floats_npmó  s    z#TestBuiltins.test_divmod_floats_npmc                 C   s   |   t|¡ d S r   )rÌ   r1   ©rÇ   rÄ   r   r   r   Útest_enumerateö  s    zTestBuiltins.test_enumeratec                 C   s   | j td� d S rÛ   )r
  rÜ   rÝ   r   r   r   Útest_enumerate_npmù  s    zTestBuiltins.test_enumerate_npmc                 C   s   |   t|¡ d S r   )rÌ   r3   r	  r   r   r   Útest_enumerate_startü  s    z!TestBuiltins.test_enumerate_startc                 C   s   | j td� d S rÛ   )r  rÜ   rÝ   r   r   r   Útest_enumerate_start_npmÿ  s    z%TestBuiltins.test_enumerate_start_npmc              	   C   sJ   t }t|dtd�}|  t¡�}| ¡  W 5 Q R X d}|  |t|jƒ¡ d S )Nr   rÃ   z2'float' object cannot be interpreted as an integer)	r4   r   Úenable_pyobj_flagsrü   Ú	TypeErrorrÅ   ÚassertInrA   Ú	exception)rÇ   rÈ   rÉ   ÚraisesÚmsgr   r   r   Ú'test_enumerate_start_invalid_start_type  s    z4TestBuiltins.test_enumerate_start_invalid_start_typec              	   C   sD   t }|  tj¡�}t|dtd�}W 5 Q R X d}|  |t|jƒ¡ d S )Nr   rÃ   z3Only integers supported as start value in enumerate)	r4   rü   r
   ÚTypingErrorr   rÜ   r  rA   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   sb   t }t|t d¡t d¡f|d�}|j}dd„ }dddd	d
g}|  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‡   )r7   r   r   rñ   rÅ   ÚassertSequenceEqualrŒ   )rÇ   rÄ   rÈ   rÉ   rÊ   r6   r   r   r   r   Útest_filter  s    ÿþÿzTestBuiltins.test_filterc              	   C   s$   |   ¡ � | jtd� W 5 Q R X d S rÛ   )ræ   r  rÜ   rÝ   r   r   r   Útest_filter_npm  s    
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� qVt|tjf|d�}|j}dD ]}|  ||ƒ||ƒ¡ q�d S )NrÃ   rÍ   rÏ   rÒ   rÓ   )z-1.1z0.0z1.1)r9   r   r   r§   rÅ   rÆ   r©   rð   rì   r   r   r   Ú
test_float"  s    zTestBuiltins.test_floatc              	   C   s$   |   ¡ � | jtd� W 5 Q R X d S rÛ   )ræ   r  rÜ   rÝ   r   r   r   Útest_float_npm4  s    
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 ]}|  |||ƒ|||ƒ¡ qjt|tjtjf|d�}|j}d}dD ]}|  |||ƒ|||ƒ¡ q¬d S )NrÃ   z{0}rÍ   rÏ   r¯   )r;   r   r   rð   r§   rÅ   rÆ   r©   )rÇ   rÄ   rÈ   rÉ   rÊ   r   r   r   r   r   Útest_format8  s0    ÿÿÿÿzTestBuiltins.test_formatc              	   C   s$   |   ¡ � | jtd� W 5 Q R X d S rÛ   )ræ   r   rÜ   rÝ   r   r   r   Útest_format_npmO  s    
zTestBuiltins.test_format_npmc                 C   s0   t }t|d|d�}|j}|ƒ }|  |tƒ ¡ d S rÂ   )r=   r   rÅ   ÚassertIsr<   )rÇ   rÄ   rÈ   rÉ   rÊ   Úgr   r   r   Útest_globalsS  s
    zTestBuiltins.test_globalsc              	   C   s$   |   ¡ � | jtd� W 5 Q R X d S rÛ   )ræ   r$  rÜ   rÝ   r   r   r   Útest_globals_npmZ  s    
zTestBuiltins.test_globals_npmc                 K   s6   t }tf |Ž|ƒ}|  |ƒ tƒ ¡ |  |ƒ tƒ ¡ d S r   )r=   r   r"  r<   )rÇ   Z	jit_flagsrÈ   Zjittedr   r   r   Útest_globals_jit^  s    zTestBuiltins.test_globals_jitc              	   C   s$   |   ¡ � | jdd� W 5 Q R X d S ©NT©Znopython)ræ   r&  rÝ   r   r   r   Útest_globals_jit_npmf  s    
z!TestBuiltins.test_globals_jit_npmc                 C   s>   t }t|tjf|d�}|j}dD ]}|  ||ƒ||ƒ¡ q d S )NrÃ   rÍ   )r?   r   r   r§   rÅ   rÆ   rì   r   r   r   Útest_hexj  s
    zTestBuiltins.test_hexc              	   C   s$   |   ¡ � | jtd� W 5 Q R X d S rÛ   )ræ   r*  rÜ   rÝ   r   r   r   Útest_hex_npmr  s    
zTestBuiltins.test_hex_npmc              	   C   s¾   t }dddddg}dddd	g}||•}tjtjtjtjtjtjtjtj	tj
g	}|D ]f}t||f|d
�}|j}	|D ]F}
|  |	||
ƒƒ|||
ƒƒ¡ |jrp|  |	||
 ƒƒ|||
 ƒƒ¡ qpqRd S )NiÒ  r{   r   r¢   iè  iÍ[iŽè! i@B rÎ   rÃ   )rB   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  s<    û	ü÷zTestBuiltins.test_int_strc           	      C   sj   t }t|tjtjf|d�}|j}ddddg}dddd	g}t ||¡D ] \}}|  |||ƒ|||ƒ¡ qDd S )
NrÃ   z-1Ú0Ú1Ú10r|   é   r¢   é   )	rG   r   r   rð   r§   rÅ   rà   rá   rÆ   râ   r   r   r   Útest_intŸ  s    zTestBuiltins.test_intc              	   C   s$   |   ¡ � | jtd� W 5 Q R X d S rÛ   )ræ   r:  rÜ   rÝ   r   r   r   Útest_int_npmª  s    
zTestBuiltins.test_int_npmc              	   C   sv   t }t|t tjd¡f|d�}|j}|  |dƒd¡ t|t tjd¡f|d�}|j}|  t¡� |dƒ W 5 Q R X d S )Nr}   rÃ   )r{   r2   rL   )r{   r2   r{   ©r{   )	rK   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   s   | j td� d S rÛ   )r?  rÜ   rÝ   r   r   r   Útest_iter_next_npm»  s    zTestBuiltins.test_iter_next_npmc              	   C   s2   t }|  tj¡� t|tjf|d�}W 5 Q R X d S rÛ   )rN   rü   r
   ZForbiddenConstructr   r   r¨   )rÇ   rÄ   rÈ   rÉ   r   r   r   Útest_locals¾  s    zTestBuiltins.test_localsc                 C   s   | j td� d S rÛ   )rA  Úforceobj_flagsrÝ   r   r   r   Útest_locals_forceobjÃ  s    z!TestBuiltins.test_locals_forceobjc              	   C   s$   |   ¡ � | jtd� W 5 Q R X d S rÛ   )ræ   rA  rÜ   rÝ   r   r   r   Útest_locals_npmÆ  s    
zTestBuiltins.test_locals_npmc                 C   sb   t }t|t d¡t d¡f|d�}|j}dd„ }dddd	d
g}|  t|||ƒƒt|||ƒƒ¡ d S )NrŒ   r  rÃ   c                 S   s   | d S r  r   r   r   r   r   r  Ñ  r  z'TestBuiltins.test_map.<locals>.<lambda>r   r{   r|   r}   r‡   )rS   r   r   rñ   rÅ   r  rŒ   )rÇ   rÄ   rÈ   rÉ   rÊ   rR   r   r   r   r   Útest_mapÊ  s    ÿþÿzTestBuiltins.test_mapc              	   C   s$   |   ¡ � | jtd� W 5 Q R X d S rÛ   )ræ   rE  rÜ   rÝ   r   r   r   Útest_map_npmÖ  s    
zTestBuiltins.test_map_npmc           	      C   sb   t |tjtjf|d�}|j}dddg}dddg}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Þ  s    

zTestBuiltins.check_minmax_1c                 C   s   |   t|¡ dS )z
        max(*args)
        N)rI  rV   r	  r   r   r   Ú
test_max_1ç  s    zTestBuiltins.test_max_1c                 C   s   |   t|¡ dS )z
        min(*args)
        N)rI  r]   r	  r   r   r   Ú
test_min_1í  s    zTestBuiltins.test_min_1c                 C   s   | j td� d S rÛ   )rJ  rÜ   rÝ   r   r   r   Útest_max_npm_1ó  s    zTestBuiltins.test_max_npm_1c                 C   s   | j td� d S rÛ   )rK  rÜ   rÝ   r   r   r   Útest_min_npm_1ö  s    zTestBuiltins.test_min_npm_1c           	      C   sb   t |tjtjf|d�}|j}dddg}dddg}t ||¡D ] \}}|  |||ƒ|||ƒ¡ q<d S rß   rG  rH  r   r   r   Úcheck_minmax_2ù  s    

zTestBuiltins.check_minmax_2c                 C   s   |   t|¡ dS )z
        max(list)
        N)rN  rW   r	  r   r   r   Ú
test_max_2  s    zTestBuiltins.test_max_2c                 C   s   |   t|¡ dS )z
        min(list)
        N)rN  r^   r	  r   r   r   Ú
test_min_2  s    zTestBuiltins.test_min_2c              	   C   s$   |   ¡ � | jtd� W 5 Q R X d S rÛ   )ræ   rO  rÜ   rÝ   r   r   r   Útest_max_npm_2  s    
zTestBuiltins.test_max_npm_2c              	   C   s$   |   ¡ � | jtd� W 5 Q R X d S rÛ   )ræ   rP  rÜ   rÝ   r   r   r   Útest_min_npm_2  s    
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 ]}ˆ ||ƒˆ|ƒ¡ q6d S )NrÃ   rë   r×   r)   rÎ   )r   rÅ   r8   rÆ   )ZargtyrÉ   rÊ   ÚtupÚval©rÄ   rÈ   rÇ   r   r   Úcheck  s
    z*TestBuiltins.check_minmax_3.<locals>.checkr}   )r   r=  rª   ÚTupler©   )rÇ   rÈ   rÄ   rV  r   rU  r   Úcheck_minmax_3  s    zTestBuiltins.check_minmax_3c                 C   s   |   t|¡ dS )z
        max(tuple)
        N)rX  rX   r	  r   r   r   Ú
test_max_3"  s    zTestBuiltins.test_max_3c                 C   s   |   t|¡ dS )z
        min(tuple)
        N)rX  r_   r	  r   r   r   Ú
test_min_3(  s    zTestBuiltins.test_min_3c                 C   s   | j td� d S rÛ   )rY  rÜ   rÝ   r   r   r   Útest_max_npm_3.  s    zTestBuiltins.test_max_npm_3c                 C   s   | j td� d S rÛ   )rZ  rÜ   rÝ   r   r   r   Útest_min_npm_31  s    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   s$   |   t¡� |  t¡ W 5 Q R X d S r   )rü   r  r^  rV   rÝ   r   r   r   Útest_max_1_invalid_types:  s    z%TestBuiltins.test_max_1_invalid_typesc              	   C   s&   |   ¡ � | jttd� W 5 Q R X d S rÛ   )ræ   r^  rV   rÜ   rÝ   r   r   r   Útest_max_1_invalid_types_npm>  s    
z)TestBuiltins.test_max_1_invalid_types_npmc              	   C   s$   |   t¡� |  t¡ W 5 Q R X d S r   )rü   r  r^  r]   rÝ   r   r   r   Útest_min_1_invalid_typesB  s    z%TestBuiltins.test_min_1_invalid_typesc              	   C   s&   |   ¡ � | jttd� W 5 Q R X d S rÛ   )ræ   r^  r]   rÜ   rÝ   r   r   r   Útest_min_1_invalid_types_npmF  s    
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   s   |   t|¡ d S r   )rc  rV   r	  r   r   r   Útest_max_bool1R  s    zTestBuiltins.test_max_bool1c                 C   s   |   t|¡ d S r   )rc  r]   r	  r   r   r   Útest_min_bool1V  s    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   s$   |   t¡� |  t¡ W 5 Q R X d S r   )rü   r  rf  rX   rÝ   r   r   r   Útest_max_unary_non_iterablea  s    z(TestBuiltins.test_max_unary_non_iterablec              	   C   s"   |   ¡ � |  t¡ W 5 Q R X d S r   )ræ   rf  rX   rÝ   r   r   r   Útest_max_unary_non_iterable_npme  s    
z,TestBuiltins.test_max_unary_non_iterable_npmc              	   C   s$   |   t¡� |  t¡ W 5 Q R X d S r   )rü   r  rf  r_   rÝ   r   r   r   Útest_min_unary_non_iterablei  s    z(TestBuiltins.test_min_unary_non_iterablec              	   C   s"   |   ¡ � |  t¡ W 5 Q R X d S r   )ræ   rf  r_   rÝ   r   r   r   Útest_min_unary_non_iterable_npmm  s    
z,TestBuiltins.test_min_unary_non_iterable_npmc              	   C   s<   |   ¡ �}t|dtd� W 5 Q R X |  d| t|jƒ¡ d S )Nr   rÃ   z%s() argument is an empty tuple)ræ   r   rÜ   r  rA   r  )rÇ   rÈ   Ú	func_namer  r   r   r   Úcheck_min_max_empty_tuples  s
    

ÿz&TestBuiltins.check_min_max_empty_tuplec                 C   s   |   td¡ d S )NrU   )rl  rZ   rÝ   r   r   r   Útest_max_empty_tupley  s    z!TestBuiltins.test_max_empty_tuplec                 C   s   |   td¡ d S )Nr\   )rl  r`   rÝ   r   r   r   Útest_min_empty_tuple|  s    z!TestBuiltins.test_min_empty_tuplec                 C   s>   t }t|tjf|d�}|j}dD ]}|  ||ƒ||ƒ¡ q d S )NrÃ   )iøÿÿÿrÎ   r   r{   r8  )rb   r   r   r§   rÅ   rÆ   rì   r   r   r   Útest_oct€  s
    zTestBuiltins.test_octc              	   C   s$   |   ¡ � | jtd� W 5 Q R X d S rÛ   )ræ   ro  rÜ   rÝ   r   r   r   Útest_oct_npmˆ  s    
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   r  “  r  z*TestBuiltins.test_reduce.<locals>.<lambda>r¢   c                 S   s   g | ]}||d   ‘qS ©g      $@r   ©Ú.0r   r   r   r   Ú
<listcomp>˜  s     z,TestBuiltins.test_reduce.<locals>.<listcomp>c                 S   s   g | ]}t ||ƒ‘qS r   r"   rr  r   r   r   rt  ›  s     )rf   r   r   rñ   rÅ   r‹   rÆ   )rÇ   rÄ   rÈ   rÉ   rÊ   re   r   r   r   r   Útest_reduceŒ  s    ÿþzTestBuiltins.test_reducec              	   C   s$   |   ¡ � | jtd� W 5 Q R X d S rÛ   )ræ   ru  rÜ   rÝ   r   r   r   Útest_reduce_npmž  s    
zTestBuiltins.test_reduce_npmc                 C   st   t }tjtjfD ]^}t||f|d�}|j}dddddddd	d
ddg}|ddg7 }|D ]}|  ||ƒ||ƒ¡ qTqd S )NrÃ   gš™™™™™ù¿g      ø¿gffffffö¿g      à¿rÐ   çš™™™™™¹?ç      à?g333333ã?gffffffö?rë   ç      @gš™™™™™¹¿rê   )ri   r   rª   r©   r   rÅ   rÆ   )rÇ   rÄ   rÈ   ÚtprÉ   rÊ   Úvaluesr   r   r   r   Útest_round1¢  s    zTestBuiltins.test_round1c                 C   s   | j td� d S rÛ   )r|  rÜ   rÝ   r   r   r   Útest_round1_npm­  s    zTestBuiltins.test_round1_npmc           
      C   s¢   t }tjtjfD ]Œ}|tjkr"dnd}t||tjf|d�}|j}dD ]V}dD ]L}| j|||ƒ|||ƒ|d� || |ƒ}	| j|| |ƒ|| |ƒ|d� qLqDqd S )NrÒ   ÚexactrÃ   )rÐ   rw  g      À?g      Ð?rx  g      è?g      ô?rë   g      ü?g      @r)   g      @g      )@g      .@g     €6@)rÎ   r   r{   r|   rÓ   )rk   r   rª   r©   r   r§   rÅ   rÆ   )
rÇ   rÄ   rÈ   rz  rÔ   rÉ   rÊ   r   rj   rË   r   r   r   Útest_round2°  s    ÿÿzTestBuiltins.test_round2c                 C   s   | j td� d S rÛ   )r  rÜ   rÝ   r   r   r   Útest_round2_npmÀ  s    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   s   g | ]}||d   ‘qS rq  r   rr  r   r   r   rt  Ì  s     z1TestBuiltins.test_sum_objmode.<locals>.<listcomp>c                 S   s   g | ]}t ||ƒ‘qS r   r"   rr  r   r   r   rt  Ï  s     )rn   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�¡ qžtddƒD ]2}tddƒD ]"}|  |||d�|j||d�¡ qÞqÐd S )Nr   c                 S   s"   t | ƒ}t||ƒ}t||d�|fS r”   )r‹   rm   )Úszr–   Útmpr—   r   r   r   Ú	sum_range×  s    
z(TestBuiltins.test_sum.<locals>.sum_ranger¼   rq   rr   c                  3   sš   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   s   g | ]}||d   ‘qS rq  r   rr  r   r   r   rt  â  s     z7TestBuiltins.test_sum.<locals>.args.<locals>.<listcomp>c                 S   s   g | ]}|d  ‘qS ©rÖ   r   rr  r   r   r   rt  ã  s     rz   ©r{   r|   ù              @é    r|   r}   rL   éd   éÈ   ù              i@)r‹   r¤   r¨   r§   r,  r	   r¬   Úones©Útl©r¼   r   r   r1  à  s    z#TestBuiltins.test_sum.<locals>.argsrˆ  r|   r}   c                  3   sÊ   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   s   g | ]}||d   ‘qS rq  r   rr  r   r   r   rt  û  s     z;TestBuiltins.test_sum.<locals>.args_kws.<locals>.<listcomp>y              3@c                 S   s   g | ]}|d  ‘qS r…  r   rr  r   r   r   rt  ü  s     éþÿÿÿ)rz   é	   )r†  r   rˆ  r|   r}   rŠ   rL   r‰  )rL   rL   )rL   rŠ  iÎÿÿÿr‹  r’  )	r‹   r¤   r¨   r§   r,  r.  r	   r¬   rŒ  r�  r�  r   r   Úargs_kwsù  s    (
z'TestBuiltins.test_sum.<locals>.args_kwsr•   rú   r‡   )r   )r   rn   r˜   r   rÆ   Úpy_funcr¤   r/  r.  r-  ÚassertEqualr‹   )	rÇ   Úsum_defaultÚ	sum_kwargr„  r1  r   r“  r–   r‚  r   r�  r   Útest_sumÒ  s(    
ÿÿzTestBuiltins.test_sumc              	   C   sü   t tƒ}t tƒ}d}|  tj¡�}|ddƒ W 5 Q R X |  | d¡t|j	ƒ¡ |  tj¡�}|ddƒ W 5 Q R X |  | d¡t|j	ƒ¡ |  tj¡�}|dt
dƒƒ W 5 Q R X |  | d¡t|j	ƒ¡ |  tj¡�}|dƒ W 5 Q R X |  d	t|j	ƒ¡ d S )
Nzsum() can't sum {}rz   rq   Ústringss   123rœ   Ú	bytearrayÚabcdzNo implementation)r   rn   r˜   rü   r
   r  r  r:   rA   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 )NTr(  F)rw   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 )NTr(  c                     s   ˆ| Ž }ˆ  ˆ | Ž |¡ d S r   )rÆ   )r1  rË   ©rÊ   rÈ   rÇ   r   r   rV  :  s    z+TestBuiltins.test_type_unary.<locals>.checkrë   r|   r{   r)   y              ø?y              @F)rs   r   )rÇ   rV  r   rŸ  r   Útest_type_unary5  s    



zTestBuiltins.test_type_unaryc                 C   s   |   t|¡ d S r   )rÌ   r�   r	  r   r   r   Útest_zipD  s    zTestBuiltins.test_zipc                 C   s   | j td� d S rÛ   )r¡  rÜ   rÝ   r   r   r   Útest_zip_npmG  s    zTestBuiltins.test_zip_npmc                 C   s   |   t|¡ d S r   )rÌ   r†   r	  r   r   r   Ú
test_zip_1J  s    zTestBuiltins.test_zip_1c                 C   s   | j td� d S rÛ   )r£  rÜ   rÝ   r   r   r   Útest_zip_1_npmM  s    zTestBuiltins.test_zip_1_npmc                 C   s   |   t|¡ d S r   )rÌ   r‰   r	  r   r   r   Ú
test_zip_3P  s    zTestBuiltins.test_zip_3c                 C   s   | j td� d S rÛ   )r¥  rÜ   rÝ   r   r   r   Útest_zip_3_npmS  s    zTestBuiltins.test_zip_3_npmc                 C   s   |   t|¡ d S r   )rÌ   r„   r	  r   r   r   Ú
test_zip_0V  s    zTestBuiltins.test_zip_0c                 C   s   | j td� d S rÛ   )r§  rÜ   rÝ   r   r   r   Útest_zip_0_npmY  s    zTestBuiltins.test_zip_0_npmc                 C   s   |   t|¡ dS )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   s   | j td� d S rÛ   )r©  Únrt_no_pyobj_flagsrÝ   r   r   r   Útest_zip_first_exhausted_npmc  s    z)TestBuiltins.test_zip_first_exhausted_npmc                 C   sV   ddddg}|D ]@\}}t tt|ƒt|ƒftd�}| ||¡}|  |t||ƒ¡ qd S ©N)r|   r}   )r™   r}   )r|   r*   )y               @r‡  rÃ   )r   r‘   r   rÜ   rÅ   rÆ   ©rÇ   r1  r   r   ZcresÚrr   r   r   Útest_pow_op_usecasef  s    üÿz TestBuiltins.test_pow_op_usecasec                 C   sV   ddddg}|D ]@\}}t tt|ƒt|ƒftd�}| ||¡}|  |t||ƒ¡ qd S r¬  )r   r“   r   rÜ   rÅ   rÆ   r­  r   r   r   Útest_pow_usecaset  s    üÿ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 }qd S r   r   )r–   ÚstopÚstepr/   r   r   r   ÚfrangeŠ  s    z8TestBuiltins.test_min_max_iterable_input.<locals>.frangec                 3   sv   ‡ 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  ’  r  zTTestBuiltins.test_min_max_iterable_input.<locals>.sample_functions.<locals>.<lambda>c                      s   ˆ t ddƒƒS )Nr‡   r�  r·  r   r¸  r   r   r  “  r  c                      s   ˆ t dddƒƒS )Néüÿÿÿrû   rÎ   r·  r   r¸  r   r   r  ”  r  c                      s   ˆ dddgƒS )Ngffffff@g      @gÍÌÌÌÌÌ@r   r   r¸  r   r   r  •  r  c                      s   ˆ ddgƒS )N)r}   r‡   r…   r   r   r¸  r   r   r  –  r  c                      s   ˆˆ dddƒƒS )NrÑ   gffffff
@rw  r   r   )rµ  r¹  r   r   r  —  r  c                      s   ˆ t jt j t jt jgƒS r   )r¤   r×   rÕ   r   r¸  r   r   r  ˜  r  c                      s   ˆ dddgƒS )N)r}   r<  )r|   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   r\   r²  rU   )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  r  r  r  r  r   r!  r$  r%  r&  r)  r*  r+  rª  r4  r:  r;  r?  r@  rA  rC  rD  rE  rF  rI  rJ  rK  rL  rM  rN  rO  rP  rQ  rR  rX  rY  rZ  r[  r\  r^  r_  r`  ra  rb  rc  rd  re  rf  rg  rh  ri  rj  rl  rm  rn  ro  rp  ru  rv  r|  r}  r  r€  r�  r˜  rœ  rž  r   rB  r¡  r¢  r£  r¤  r¥  r¦  r§  r¨  r©  r«  r¯  r°  r²  r¾  r   r   r   r   rÁ   I  sÎ    

	)		@rÁ   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestOperatorMixedTypesc                    s\   dD ]R}t t|ƒ‰ t‡ fdd„ƒ}d}t ||¡D ]"\}}|  | ||¡|||ƒ¡ q2qd S )N)ÚeqÚnec                    s
   ˆ | |ƒS r   r   rp   r¸  r   r   Úfunc¨  s    z/TestOperatorMixedTypes.test_eq_ne.<locals>.func)r{   r   TFr(   r™   rÑ   rÖ   Nrï   r6  )Úgetattrrt   r   rà   rá   rÆ   r”  )rÇ   ÚopstrrÅ  Úthingsr   r   r   r¸  r   Ú
test_eq_ne¤  s    
z!TestOperatorMixedTypes.test_eq_nec           	         st   dD ]j}t t|ƒ‰ t‡ fdd„ƒ}d}t ||¡D ]:\}}| ||¡}|||ƒ}d|||f }|  |||¡ q2qd S )N)ÚgtÚltÚgeÚlerÃ  rÄ  c                    s
   ˆ | |ƒS r   r   rp   r¸  r   r   rÅ  µ  s    z-TestOperatorMixedTypes.test_cmp.<locals>.func)r{   r   TFr(   rÐ   rÑ   z0%s %s %s does not match between Python and Numba)rÆ  rt   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                   @   sj   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ejdd„ ƒZdS )ÚTestIsinstanceBuiltinc              
   C   sb   t }tdd�|ƒ}ddddddd	dgd
tdd	gƒdd f
}|D ] }||ƒ}||ƒ}|  ||¡ q<d S )NTr(  r}   ry  ZHellos   worldrÖ   r{   r|   )r{   r}   r}   r}   )r{   Znbar|   )r¡   r   r›   r•  ©rÇ   rÈ   rÊ   ÚinputsZinptrË   r±  r   r   r   Útest_isinstanceÄ  s"    
õz%TestIsinstanceBuiltin.test_isinstancec                 C   s&   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 ]\}}||ƒ}|  ||¡ qzd S )NTr(  r{   r§   r|   r¨   r*   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   s&   t }tdd�|ƒ}|  |ƒ |ƒ ¡ d S r'  )r±   r   r•  r�  r   r   r   Útest_isinstance_numba_types_2õ  s    z3TestIsinstanceBuiltin.test_isinstance_numba_types_2c              	   C   sZ   t }tdd�|ƒ}|  |dƒ¡ d}|  tj¡�}|dƒ W 5 Q R X |  |t|jƒ¡ d S )NTr(  g333333@ú&Cannot infer numba type of python typer‰  )	r¶   r   Z
assertTruerü   r
   r  r  rA   r  )rÇ   rÈ   rÊ   r  r  r   r   r   Útest_isinstance_invalid_typeú  s    z2TestIsinstanceBuiltin.test_isinstance_invalid_typec              
   C   sj   t dftdftdftƒ dfg}|D ]B\}}t|ƒ}|  tj¡�}|dƒ W 5 Q R X |  |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  rA   r  )rÇ   Z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	 dddg¡t	 
d¡t	 d¡tj tjtj¡tj tj¡t	 d¡f}|D ]8}t||ƒƒ}|D ]"}| |¡}||ƒ}|  ||¡ qžqŠd S )Nc                    s   ‡ fdd„}|S )Nc                    s
   t | ˆ ƒS r   r³   r   ©Ú
clazz_typer   r   r¿   "  s    zHTestIsinstanceBuiltin.test_combinations.<locals>.gen_w_arg.<locals>.implr   ©rÜ  r¿   r   rÛ  r   Ú	gen_w_arg!  s    z:TestIsinstanceBuiltin.test_combinations.<locals>.gen_w_argr{   gffffff@ù              @Ú5é   )rŠ   ó   8r’  )r¢   é   r�  )é   rq   y              ,@rù   r9  é   é   é   r‡   )rE   r8   r#   rA   rŒ   rš   rœ   r›   r‹   r¤   r,  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   sf   dd„ }t jt jt jf}d}|D ]@}t||ƒƒ}|  tj¡�}|ƒ  W 5 Q R X |  t	|j
ƒ|¡ q d S )Nc                    s   ‡ fdd„}|S )Nc                      s
   t dˆ ƒS ©Nr{   r³   r   rÛ  r   r   r¿   9  s    zGTestIsinstanceBuiltin.test_numba_types.<locals>.gen_w_arg.<locals>.implr   rÝ  r   rÛ  r   rÞ  8  s    z9TestIsinstanceBuiltin.test_numba_types.<locals>.gen_w_argz%Numba type classes.*are not supported)r   ÚIntegerÚFloatZArrayr   rü   r
   r  ÚassertRegexrA   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¤   ÚintprE   r   r   r   r   r²   K  s    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  s    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   sD   t | tƒr| d S t | tƒr&t | ¡S t | tƒr8t| ƒS ds@t‚d S )NÚsome_stringr   )rž   rA   r#   r¤   rŸ   rš   ÚlenÚAssertionErrorr   r   r   r   r²   ]  s    



z4TestIsinstanceBuiltin.test_branch_prune.<locals>.foo)rð   y      ð?       @)rq   r}   rß  )r   r”  r•  )rÇ   r²   r   rË   r±  r   r   r   Útest_branch_pruneY  s    


z'TestIsinstanceBuiltin.test_branch_prunec              	   C   s‚   t jdd��l}t  dtj¡ tƒ  tdd„ ƒ}|dƒ |  t|ƒd¡ |  |d j	tj
¡ d	}|  |t|d jƒ¡ W 5 Q R X d S )
NT)ÚrecordÚalwaysc                 S   s
   t | tƒS r   rµ   r   r   r   r   r²   w  s    z<TestIsinstanceBuiltin.test_experimental_warning.<locals>.foogX9´Èv¾ó?r{   r   z>Use of isinstance() detected. This is an experimental feature.)ÚwarningsÚcatch_warningsÚsimplefilterr
   ZNumbaWarningr   r   r•  r÷  ÚcategoryZNumbaExperimentalFeatureWarningr  rA   rÎ  )rÇ   Úwr²   r  r   r   r   Útest_experimental_warningm  s    
ÿz/TestIsinstanceBuiltin.test_experimental_warningN)r¿  rÀ  rÁ  rÓ  rÔ  rÖ  r×  rÙ  rÚ  rì  rñ  rõ  rù  r   Zrun_test_in_subprocessr  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   s0   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©r{   ç¸…ëQ¸@©rL   rá  rŠ   ©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Úndimr  r   r   r   r   r²   •  s    z8TestGetattrBuiltin.test_getattr_value_retty.<locals>.foor}   r<  )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   s"   t dd„ ƒ}|  |ƒ | ¡ ¡ d S )Nc                   S   s
   t tdƒS )NÚpi©rÆ  r¤   r   r   r   r   r²      s    z7TestGetattrBuiltin.test_getattr_module_obj.<locals>.foor	  ©rÇ   r²   r   r   r   Útest_getattr_module_obj�  s    
z*TestGetattrBuiltin.test_getattr_module_objc              	   C   sD   t dd„ ƒ}|  tj¡�}|ƒ  W 5 Q R X d}|  |t|jƒ¡ d S )Nc                   S   s   t tdƒdƒS )NÚcosr{   r  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  rA   r  ©rÇ   r²   r  r  r   r   r   Ú'test_getattr_module_obj_not_implemented¦  s    
z:TestGetattrBuiltin.test_getattr_module_obj_not_implementedc              	      sP   d‰ t ‡ fdd„ƒ}|  t¡�}|dƒ W 5 Q R X |  dˆ › d�t|jƒ¡ d S )NÚ__not_a_valid_attr__c                    s
   t | ˆ ƒS r   r  r   ©Zinvalid_attrr   r   r²   ·  s    zCTestGetattrBuiltin.test_getattr_raises_attribute_error.<locals>.foog®Gáz®ó?z'float64' has no attribute 'ú')r   rü   ÚAttributeErrorr  rA   r  )rÇ   r²   r  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  r  )r   Údefaultr   r   r   r²   Ä  s    z9TestGetattrBuiltin.test_getattr_with_default.<locals>.foor  )Né   rö  )r   r€   rÆ   r”  )rÇ   r²   r   r   r   r   r   Útest_getattr_with_defaultÁ  s    
z,TestGetattrBuiltin.test_getattr_with_defaultc              	   C   sH   t dd„ ƒ}|  tj¡�}|ddƒ W 5 Q R X d}|  |t|jƒ¡ d S )Nc                 S   s
   t | |ƒS r   r  )r   Znonliteral_strr   r   r   r²   Í  s    z<TestGetattrBuiltin.test_getattr_non_literal_str.<locals>.foor{   r  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   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{   r  )rÆ  r¤   rŒ  )Z	hash_func©r  r   r   r²   Ý  s    ÿzGTestGetattrBuiltin.test_getattr_no_optional_type_generated.<locals>.foor	  r  r   r   r   Ú'test_getattr_no_optional_type_generated×  s
    
z:TestGetattrBuiltin.test_getattr_no_optional_type_generatedN)r¿  rÀ  rÁ  r  r  r  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S )Ú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 )Nr  r  ©Ú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   sF   t dd„ ƒ}|  tj¡�}|dƒ W 5 Q R X d}|  |t|jƒ¡ d S )Nc                 S   s    | dkrd}nd}t d|ƒ d S )Nr}   r  Ú__str__r{   r#  )Úpredr  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  rA   r  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   s"   t dd„ ƒ}|  |ƒ | ¡ ¡ d S )Nc                   S   s   t ƒ S r   r@   r   r   r   r   r²     s    z3TestStrAndReprBuiltin.test_str_default.<locals>.foorô  r  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)Úobjectr@   r   r   r   r   r²     s    z8TestStrAndReprBuiltin.test_str_object_kwarg.<locals>.fooza stringrô  )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   s   t | ƒS r   r@   r   r   r   r   r²     s    z<TestStrAndReprBuiltin.test_str_calls_dunder_str.<locals>.foozthis is the dummy object strc                    s   ˆ S r   r   ©r¾   ©Ústring_reprr   r   r  &  r  zATestStrAndReprBuiltin.test_str_calls_dunder_str.<locals>.<lambda>r(  c                    s   ‡ fdd„}|S )Nc                    s   ˆ S r   r   ©Údummyr1  r   r   r¿   *  s    zVTestStrAndReprBuiltin.test_str_calls_dunder_str.<locals>.ol_dummy_string.<locals>.implr   ©r4  r¿   r1  r   r   Úol_dummy_string(  s    zHTestStrAndReprBuiltin.test_str_calls_dunder_str.<locals>.ol_dummy_stringÚ__repr__c                 S   s   dd„ }|S )Nc                 S   s   dS )NzSHOULD NOT BE CALLEDr   r3  r   r   r   r¿   0  s    zTTestStrAndReprBuiltin.test_str_calls_dunder_str.<locals>.ol_dummy_repr.<locals>.implr   r5  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ñ   Ú	DummyTyper4  r6  r8  r   r1  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   s   t | ƒS r   r@   r   r   r   r   r²   8  s    z>TestStrAndReprBuiltin.test_str_falls_back_to_repr.<locals>.foozthis is the dummy object reprc                    s   ˆ S r   r   r0  r1  r   r   r  ?  r  zCTestStrAndReprBuiltin.test_str_falls_back_to_repr.<locals>.<lambda>r7  c                    s   ‡ fdd„}|S )Nc                    s   ˆ S r   r   r3  r1  r   r   r¿   C  s    zVTestStrAndReprBuiltin.test_str_falls_back_to_repr.<locals>.ol_dummy_repr.<locals>.implr   r5  r1  r   r   r8  A  s    zHTestStrAndReprBuiltin.test_str_falls_back_to_repr.<locals>.ol_dummy_repr)r   r9  r7  r   r•  r”  )rÇ   r²   rñ   r:  r4  r8  r   r1  r   Útest_str_falls_back_to_repr6  s    
z1TestStrAndReprBuiltin.test_str_falls_back_to_reprc                 C   s0   t dd„ ƒ}dD ]}|  ||ƒ| |¡¡ qd S )Nc                 S   s   t | ƒ| fS r   )Úreprr   r   r   r   r²   J  s    z,TestStrAndReprBuiltin.test_repr.<locals>.foo)ÚabcFé{   rô  r
  r   r   r   Ú	test_reprI  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                    s   ˆ S r   r   r0  r1  r   r   r  Y  r  z:TestStrAndReprBuiltin.test_repr_fallback.<locals>.<lambda>c                    s"   |j  |j  ˆ ¡¡}|j  |d¡S rY   )ZpyapiZunserializeZserialize_objectZcall_function_objargs)r2  Úobjr°   Zclazobj)rñ   r   r   Ú	box_dummy[  s    z;TestStrAndReprBuiltin.test_repr_fallback.<locals>.box_dummyc                 S   s   t | ƒS r   r@   r   r   r   r   r²   `  s    z5TestStrAndReprBuiltin.test_repr_fallback.<locals>.foo)r9  r   r7  r   r   r•  r”  )rÇ   r:  r4  rC  r²   r   )rñ   r2  r   Útest_repr_fallbackQ  s    
z(TestStrAndReprBuiltin.test_repr_fallbackN)	r¿  rÀ  rÁ  r,  r/  r;  r<  r@  rD  r   r   r   r   r+  
  s   	r+  Ú__main__)r   )brà   rc   Úsysrt   Úcollectionsr   Únumpyr¤   Zunittestrü  Z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_pyobjectrB  Zforce_pyobjectrÜ   rª  Znrtr   r   r   r!   r$   r&   r1   r3   r4   r7   r9   r;   r=   r?   rB   rG   rK   rN   rP   rS   rV   rW   rX   rZ   r]   r^   r_   r`   rb   rf   ri   rk   rn   rs   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¿  Úmainr   r   r   r   Ú<module>   s°   


	
      _! D`$^
