U
    í¾|e´Š  ã                   @   sž  d dl m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
 d dlmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZmZmZ d dlmZmZ d dlm Z  d d	l!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' d d
l(m)Z) d dl*m+Z+ eej,ƒdd„ ƒZ-eej.ej/ej/ƒdd„ ƒZ0eej1ej/ej/ƒdd„ ƒZ2eej1ej3ej3ƒdd„ ƒZ4eej1ej5ej5ƒdd„ ƒZ6eej7ej8ej8ƒeej7ej9ej9ƒdd„ ƒƒZ:eej;ej8ej8ƒeej;ej9ej9ƒdd„ ƒƒZ<dd„ Z=eej7ƒe=dƒƒ eej;ƒe=dƒƒ eej>ƒdd„ ƒZ?eej/ej>ƒeej@ej>ƒeej5ej>ƒd d!„ ƒƒƒZAeej>ej/ƒeej>ej5ƒeej>ej@ƒd"d#„ ƒƒƒZBeejCejDejEƒd$d%„ ƒZFeejGejDejEej/ƒd&d'„ ƒZHd(d)„ ZIeeJejKƒd*d+„ ƒZLeeJe Mej/¡ƒd,d-„ ƒZNeeOejKƒd.d/„ ƒZPeeOe Mej/¡ƒd0d1„ ƒZQd2d3„ ZReeSejTƒd4d5„ ƒZUeeSejTejEƒd6d7„ ƒZVeeWej/ƒeeXej/ƒd8d9„ ƒƒZYeeZe Mej/¡ƒd:d;„ ƒZ[eej\ej/ƒd<d=„ ƒZ]eej^ƒd>d?„ ƒZ_eej`ƒd@dA„ ƒZaeej@ƒdBdC„ ƒZbeecej/ƒdDdE„ ƒZdeeeejfƒdFdG„ ƒZgeehejiƒdHdI„ ƒZjedJej/ej/ƒdKdL„ ƒZkeelejmƒdMdN„ ƒZneeoejpƒdOdP„ ƒZqeerƒdQdR„ ƒZseerejKƒdSdT„ ƒZteeoƒdUdV„ ƒZueeodWdX�dYdZ„ ƒZvd[d\„ Zwd]d^„ Zxeexej\ƒeexejyƒd_d`„ ƒƒZzeewej\ƒeewejyƒdadb„ ƒƒZ{d dcl|m}Z}m~Z~ d ddlmZm€Z€ ee}ej�ej‚ƒee}ejƒej‚ƒdedf„ ƒƒZ„eeOƒdgdh„ ƒZ…eeOƒdidj„ ƒZ†eeJƒdkdl„ ƒZ‡eeJƒdmdn„ ƒZˆe€dodp„ ƒZ‰e€dqdp„ ƒZŠe€drds„ ƒZ‹eeOƒdtdu„ ƒZŒeeJƒdvdw„ ƒZ�eejŽe Mej/¡ƒdxdy„ ƒZ�ee�ƒd›dzd{„ƒZ‘ee’ƒd|d}„ ƒZ“ee”ƒd~d„ ƒZ•d€d�„ Z–ee—ƒd‚dƒ„ ƒZ˜ee–ƒd„d…„ ƒZ™d†d‡„ Zšeešƒdˆd‰„ ƒZ›edŠd‹„ ƒZœedŒd�ƒZ�e�ƒ ZžeeŸddŽ�d�d�„ ƒZ eeŸƒd‘d’„ ƒZ¡ed“d”„ ƒZ¢ee£ƒd•d–„ ƒZ¤ee¥ƒd—d˜„ ƒZ¦ee§ƒdœd™dš„ƒZ¨dS )�é    )Ú
namedtupleN)Úreduce)Úir)Úlower_builtinÚlower_getattrÚlower_getattr_genericÚ
lower_castÚlower_constantÚiternext_implÚcall_getiterÚcall_iternextÚimpl_ret_borrowedÚimpl_ret_untrackedÚnumba_typeref_ctor)ÚtypingÚtypesÚutilsÚcgutils)ÚoverloadÚ	intrinsic)Ú
Conversion)ÚTypingErrorÚLoweringErrorÚNumbaExperimentalFeatureWarningÚNumbaTypeErrorÚRequireLiteralValueÚNumbaPerformanceWarning)Úliteral_unroll)Úas_numba_typec                 C   s   t | tjƒrdd„ }|S d S )Nc                 S   s   | S ©N© ©Úvalr    r    úS/var/www/website-v5/atlas_env/lib/python3.8/site-packages/numba/cpython/builtins.pyÚimpl   s    zol_truth.<locals>.impl©Ú
isinstancer   ÚBoolean)r"   r$   r    r    r#   Úol_truth   s    r(   c                 C   s   |   tj|¡}| |||ƒ¡S )z3
    Implement `x is not y` as `not (x is y)`.
    )Úget_functionÚoperatorÚis_Únot_)ÚcontextÚbuilderÚsigÚargsZis_implr    r    r#   Úgeneric_is_not#   s    r1   c                 C   sj   |j \}}||kr`|jr&d}t|ƒ‚qfz|  tj|¡}W n tk
rR   tj Y S X |||ƒS ntjS dS )z-
    Default implementation for `x is y`
    zno default `is` implementationN)	r0   Úmutabler   r)   r*   ÚeqÚNotImplementedErrorr   Ú	false_bit)r-   r.   r/   r0   Úlhs_typeÚrhs_typeÚmsgÚeq_implr    r    r#   Ú
generic_is,   s    

r:   c                 C   sN   |j \}}||krD| |d tj¡}| |d tj¡}| d||¡S tjS dS )z7
    Implementation for `x is y` for Opaque types.
    r   é   z==N)r0   Úptrtointr   Úintp_tÚicmp_unsignedr5   )r-   r.   r/   r0   r6   r7   Zlhs_ptrZrhs_ptrr    r    r#   Ú	opaque_isF   s    
r?   c                 C   sb   |\}}|j \}}|  |||tj¡}|  |||tj¡}	|  tjt tjtjtj¡¡}
|
|||	fƒS )zà
    Implementation for `x is y` for types derived from types.Boolean
    (e.g. BooleanLiteral), and cross-checks between literal and non-literal
    booleans, to satisfy Python's behavior preserving identity for bools.
    )	r0   Úcastr   Úbooleanr)   r*   r3   r   Ú	signature)r-   r.   r/   r0   Úarg1Úarg2Z	arg1_typeZ	arg2_typeZ_arg1Z_arg2r9   r    r    r#   Úbool_is_implV   s    
þrE   c                 C   s@   |j \}}d}|j|jkrd}t t d¡|¡}t| ||j|ƒS ©Nr   r;   ©r0   Úliteral_valuer   ÚConstantÚIntTyper   Úreturn_type©r-   r.   r/   r0   rC   rD   r"   Úresr    r    r#   Úconst_eq_impli   s    
rN   c                 C   s@   |j \}}d}|j|jkrd}t t d¡|¡}t| ||j|ƒS rF   rG   rL   r    r    r#   Úconst_ne_implu   s    
rO   c                    s   ‡ fdd„}|S )Nc                    sL   t | tjƒ}t |tjƒ}|r0|r0‡ fdd„}|S ||A rH‡ fdd„}|S d S )Nc                    s   ˆ S r   r    ©ÚaÚbr!   r    r#   r$   …   s    z/gen_non_eq.<locals>.none_equality.<locals>.implc                    s   ˆ  S r   r    rP   r!   r    r#   r$   ‰   s    ©r&   r   ÚNoneType)rQ   rR   Za_noneZb_noner$   r!   r    r#   Únone_equality�   s    z!gen_non_eq.<locals>.none_equalityr    )r"   rU   r    r!   r#   Ú
gen_non_eq€   s    rV   TFc                 C   s4   |  ¡ }|  ||||¡}|  ||¡}|| ||||ƒS )z>
    Deferred.__getattr__ => redirect to the actual type.
    )Úgetr@   Úget_getattr)r-   r.   ÚtypÚvalueÚattrZ
inner_typer"   Úimpr    r    r#   Údeferred_getattr“   s    r]   c                 C   s0   |   |||| ¡ ¡}| j| }| || ¡ |¡S r   )r@   rW   Údata_model_managerÚsetÚmake_uninitialized)r-   r.   ÚfromtyÚtotyr"   ÚactualÚmodelr    r    r#   Úany_to_deferred�   s    
re   c                 C   s*   | j | }| ||¡}|  ||| ¡ |¡S r   )r^   rW   r@   )r-   r.   ra   rb   r"   rd   r    r    r#   Údeferred_to_any¥   s    
rf   c                 C   s0   |\}}|  ||g¡}| |¡}t| ||j|ƒS r   )ÚgepÚloadr   rK   )r-   r.   r/   r0   Úbase_ptrÚidxÚelem_ptrrM   r    r    r#   Úgetitem_cpointer°   s    
rl   c                 C   s(   |\}}}|  ||g¡}| ||¡ d S r   )rg   Ústore)r-   r.   r/   r0   ri   rj   r"   rk   r    r    r#   Úsetitem_cpointer¸   s    
rn   c           	         sX   t |ƒt |ƒkst||fƒ‚t |ƒdks,t‚‡ ‡‡fdd„}t||ƒ}t||ƒ\}}|S )Nr   c                    sŠ   | \}}|\}}ˆj  ||¡}|d k	s*t‚ˆ ˆ |||¡}ˆ ˆ |||¡}t tj||¡}ˆ ˆ|¡}|ˆ ||fƒ}	ˆ  	|	||¡}
||
fS r   )
Útyping_contextÚunify_typesÚAssertionErrorr@   r   rB   r   rA   r)   Úselect)ZaccumulatorrZ   ZacctyÚaccZvtyÚvÚtyÚcmpsigÚgeÚpredrM   ©r.   Úcmpopr-   r    r#   Úbinary_minmaxÅ   s    z do_minmax.<locals>.binary_minmax)Úlenrq   Úzipr   )	r-   r.   Úargtysr0   rz   r{   ZtypvalsÚrestyZresvalr    ry   r#   Ú	do_minmaxÁ   s    
r€   c                 C   s0   t |jd ƒ}t ||d ¡}t| |||tjƒS ©Nr   )Úlistr0   r   Úunpack_tupler€   r*   Úgt©r-   r.   r/   r0   r~   r    r    r#   Úmax_iterableÙ   s    r†   c                 C   s   t | ||j|tjƒS r   )r€   r0   r*   r„   ©r-   r.   r/   r0   r    r    r#   Ú
max_varargß   s    rˆ   c                 C   s0   t |jd ƒ}t ||d ¡}t| |||tjƒS r�   )r‚   r0   r   rƒ   r€   r*   Últr…   r    r    r#   Úmin_iterableã   s    rŠ   c                 C   s   t | ||j|tjƒS r   )r€   r0   r*   r‰   r‡   r    r    r#   Ú
min_varargé   s    r‹   c                 C   s   d| j f S )Nzllvm.rint.f%d)Úbitwidth)Útpr    r    r#   Ú_round_intrinsicî   s    rŽ   c           
      C   sj   |j d }|  |¡}|j}t ||g¡}t ||t|ƒ¡}| ||¡}	| 	|	|  |j
¡¡}	t| ||j
|	ƒS r�   )r0   Úget_value_typeÚmoduler   ÚFunctionTyper   Úget_or_insert_functionrŽ   ÚcallÚfptosirK   r   )
r-   r.   r/   r0   ÚflttyÚlltyr�   ÚfntyÚfnrM   r    r    r#   Úround_impl_unaryò   s    

r™   c                    sN   |j d }t t|ƒt ||¡¡‰ ‡ fdd„}|  ||||¡}t| ||j|ƒS )Nr   c                    s’   t  | ¡st  | ¡r| S |dkrp|dkr:d|d  }d}nd| }d}| | | }t  |¡r`| S ˆ |ƒ| | S d|  }| | }ˆ |ƒ| S d S )Nr   é   g      $@g’ÕMÏð€Dg      ð?)ÚmathÚisinfÚisnan)ÚxÚndigitsZpow1Zpow2Úy©Z_roundr    r#   Úround_ndigits  s    

z(round_impl_binary.<locals>.round_ndigits)	r0   r   ÚExternalFunctionrŽ   r   rB   Úcompile_internalr   rK   )r-   r.   r/   r0   r•   r¢   rM   r    r¡   r#   Úround_impl_binaryþ   s    
 
ÿr¥   c                 C   s0   |j \}|\}|  ||||j¡}t| ||j|ƒS r   )r0   r@   rK   r   )r-   r.   r/   r0   ru   r"   rM   r    r    r#   Úint_impl$  s    r¦   c                 C   sâ   |j }|j}t|jƒdkrr|j\}|\}t|tjƒrT|  ||||¡}t| ||j |ƒS |  ||||¡}	|  	|d¡}
n@t|jƒdkr²|j\}}|\}	}
|  ||	||¡}	|  ||
||¡}
|  
||¡}|	|_|
|_| ¡ }t| ||j |ƒS )Nr;   r   é   )rK   Úunderlying_floatr|   r0   r&   r   ÚComplexr@   r   Úget_constantÚmake_complexÚrealÚimagÚ	_getvalue)r-   r.   r/   r0   Úcomplex_typeZ
float_typeÚargtyÚargrM   r¬   r­   ZrealtyZimagtyÚcmplxr    r    r#   Úcomplex_impl-  s(    
r³   c                    sf   t |jtjƒrB|jj‰ ‡ fdd„}|  ||||¡}t| ||j|ƒS |\}|j\}|  ||||j¡S dS )z1
    Call a number class, e.g. np.int32(...)
    c                     s   t j| ˆ d�S )N)Údtype)ÚnpÚarray)Zarg_hack©Údtr    r#   ÚfooQ  s    znumber_constructor.<locals>.fooN)	r&   rK   r   ÚArrayr´   r¤   r   r0   r@   )r-   r.   r/   r0   r¹   rM   r"   Úvaltyr    r·   r#   Únumber_constructorI  s    r¼   c                 C   s   |   ¡ S r   ©Úget_dummy_value©r-   r.   ru   Úpyvalr    r    r#   Úconstant_dummy_  s    rÁ   c                 C   s0   |   |¡}| j|| |¡t|ƒd�}| ||¡S )N)Úinfo)Úget_function_pointer_typeÚadd_dynamic_addrÚget_pointerÚstrÚbitcast)r-   r.   ru   rÀ   ÚptrtyZptrvalr    r    r#   Úconstant_function_pointerd  s
    
ÿrÉ   c                 C   s*   |d kr|   ||j¡S |  ||j|¡S d S r   )Úmake_optional_noneÚtypeÚmake_optional_valuer¿   r    r    r#   Úconstant_optionall  s    rÍ   c                 C   s   |   ¡ S )z&
    One-argument type() builtin.
    r½   r‡   r    r    r#   Ú	type_implv  s    rÎ   c                 C   s    |j \}|\}t| |||ƒ}|S r   )r0   r   )r-   r.   r/   r0   ru   r"   Úitervalr    r    r#   Ú	iter_impl~  s    rÐ   c              	   C   sX   |j \}|\}t| |||ƒ}|j| | ¡ ¡dd�� | j |td¡ W 5 Q R X | ¡ S )NF)Úlikelyr    )	r0   r   Úif_thenr,   Úis_validÚ	call_convÚreturn_user_excÚStopIterationÚyielded_value)r-   r.   r/   r0   ZitertyrÏ   rM   r    r    r#   Ú	next_impl†  s    rØ   znot inc                 C   s"   dd„ }|   ||||¡}| |¡S )Nc                 S   s   t  || ¡S r   )r*   ÚcontainsrP   r    r    r#   Úin_impl—  s    znot_in.<locals>.in_impl)r¤   r,   )r-   r.   r/   r0   rÚ   rM   r    r    r#   Únot_in•  s    rÛ   c                 C   s0   |j \}|j}|  |t|jƒ¡}t| ||j|ƒS r   )r0   rK   rª   r|   r   r   )r-   r.   r/   r0   ru   ÚrettyrM   r    r    r#   Úconstsized_len   s    rÝ   c                 C   s    |j \}t|ƒrtjS tjS d S r   )r0   r|   r   Útrue_bitr5   )r-   r.   r/   r0   ru   r    r    r#   Ú
sized_bool¨  s    rß   c                 C   s    |j }|  |¡}t| ||j |ƒS r   )rK   Úget_constant_undefr   )r-   r.   r/   r0   rÜ   rM   r    r    r#   Úlower_empty_tuple°  s    
rá   c                 C   s   |\}t | ||j|ƒS r   )r   rK   )r-   r.   r/   r0   r"   r    r    r#   Úlower_tuple¶  s    râ   c                 C   s6   t jt jt jt jt jt jf}t| |ƒr2dd„ }|S d S )Nc                 S   s   t | ƒdkS r�   )r|   ©rž   r    r    r#   Ú	bool_implÇ  s    z bool_sequence.<locals>.bool_impl)r   ÚCharSeqÚUnicodeCharSeqÚDictTypeÚListTypeÚUnicodeTypeÚSetr&   )rž   Zvalid_typesrä   r    r    r#   Úbool_sequence»  s    ú	
rë   Úalways)Úinlinec                 C   s    t | tjƒs| d krdd„ S d S )Nc                 S   s   dS ©NFr    rã   r    r    r#   Ú<lambda>Î  ó    zbool_none.<locals>.<lambda>rS   rã   r    r    r#   Ú	bool_noneË  s    rñ   c                 C   s0   t | tjƒrtjS t | tjƒr$| jS tdƒ‚d S ©NzUnsupported type)r&   r   ÚFloatrµ   ÚinfÚIntegerÚmaxvalr4   ©rY   r    r    r#   Úget_type_max_valueÒ  s
    rø   c                 C   s2   t | tjƒrtj S t | tjƒr&| jS tdƒ‚d S rò   )r&   r   ró   rµ   rô   rõ   Úminvalr4   r÷   r    r    r#   Úget_type_min_valueÙ  s
    rú   c           
      C   sâ   |j d j}t|tjƒr<|j}t |¡}|j}t 	||¡}n˜t|tj
ƒrœ|j}|dkr`t ¡ }n|dkrrt ¡ }ntdƒ‚ttd |¡ƒ}	t 	|tj ¡}n8t|tjtjfƒrÔd}t |¡}tjjd }t 	||¡}t| |||ƒS )Nr   é    é@   ú+llvmlite only supports 32 and 64 bit floatsúfloat{}r;   )r0   r´   r&   r   rõ   rŒ   r   rJ   rù   rI   ró   Ú	FloatTypeÚ
DoubleTyper4   Úgetattrrµ   Úformatrô   Ú
NPDatetimeÚNPTimedeltaÚint64r   ©
r-   r.   r/   r0   rY   ZbwÚltyr"   rM   Znptyr    r    r#   Úlower_get_type_min_valueà  s*    



r  c           
      C   sÜ   |j d j}t|tjƒr<|j}t |¡}|j}t 	||¡}n’t|tj
ƒrš|j}|dkr`t ¡ }n|dkrrt ¡ }ntdƒ‚ttd |¡ƒ}	t 	|tj¡}n4t|tjtjfƒrÎd}t |¡}tjj}t 	||¡}t| |||ƒS )Nr   rû   rü   rý   rþ   )r0   r´   r&   r   rõ   rŒ   r   rJ   rö   rI   ró   rÿ   r   r4   r  rµ   r  rô   r  r  r  r   r  r    r    r#   Úlower_get_type_max_valueû  s*    



r	  )Ú
IndexValueÚIndexValueType)r   Úregister_jitablec                 C   s2   |j }|\}}t |¡| |ƒ}||_||_| ¡ S r   )rK   r   Úcreate_struct_proxyÚindexrZ   r®   )r-   r.   r/   r0   rY   r  rZ   Zindex_valuer    r    r#   Úimpl_index_value  s    r  c                 C   s$   t | tƒr t |tƒr dd„ }|S d S )Nc                 S   sx   t  | j¡r4t  |j¡r.| j|jk r(| S |S qt| S n@t  |j¡rD|S | j|jkrT|S | j|jkrt| j|jk rp| S |S | S r   ©rµ   r�   rZ   r  ©Úindval1Úindval2r    r    r#   Úmin_impl*  s    zindval_min.<locals>.min_impl©r&   r  )r  r  r  r    r    r#   Ú
indval_min&  s
    
ÿr  c                 C   s(   t | tjƒr$t |tjƒr$dd„ }|S d S )Nc                 S   s   | o|S r   r    ©Úval1Úval2r    r    r#   Úbool_min_implG  s    z"boolval_min.<locals>.bool_min_implr%   )r  r  r  r    r    r#   Úboolval_minC  s
    
ÿr  c                 C   s$   t | tƒr t |tƒr dd„ }|S d S )Nc                 S   sx   t  | j¡r4t  |j¡r.| j|jk r(| S |S qt| S n@t  |j¡rD|S |j| jkrT|S | j|jkrt| j|jk rp| S |S | S r   r  r  r    r    r#   Úmax_implP  s    zindval_max.<locals>.max_implr  )r  r  r  r    r    r#   Ú
indval_maxL  s
    
ÿr  c                 C   s(   t | tjƒr$t |tjƒr$dd„ }|S d S )Nc                 S   s   | p|S r   r    r  r    r    r#   Úbool_max_implm  s    z"boolval_max.<locals>.bool_max_implr%   )r  r  r  r    r    r#   Úboolval_maxi  s
    
ÿr  c                 C   s   | |kS r   r    rP   r    r    r#   rï   r  rð   rï   c                 C   s   | |k S r   r    rP   r    r    r#   rï   s  rð   c                    s    t | tjƒr‡ fdd„}|S d S )Nc                    s,   t | ƒ}t|ƒ}|D ]}ˆ ||ƒr|}q|S r   )ÚiterÚnext)ÚiterableÚitÚ
return_valr"   ©Úopr    r#   r$   y  s    
zmin_max_impl.<locals>.impl)r&   r   ÚIterableType)r"  r&  r$   r    r%  r#   Úmin_max_implv  s    r(  c                 C   s
   t | tƒS r   )r(  Ú	less_than©r"  r    r    r#   Úiterable_minƒ  s    r+  c                 C   s
   t | tƒS r   )r(  Úgreater_thanr*  r    r    r#   Úiterable_maxˆ  s    r-  c                 C   sz   |j }dd„ }tj |j¡}t |t |¡|¡}t|ƒdkrT|  	¡ |  
|||¡f}n|  	¡ |  
||d¡f}|  ||||¡S )ae  Redirect constructor implementation to `numba_typeref_ctor(cls, *args)`,
    which should be overloaded by the type's implementation.

    For example:

        d = Dict()

    `d` will be typed as `TypeRef[DictType]()`.  Thus, it will call into this
    implementation.  We need to redirect the lowering to a function
    named ``numba_typeref_ctor``.
    c                 W   s   t | f|žŽ S r   )r   )Úclsr0   r    r    r#   Ú	call_ctorœ  s    z%redirect_type_ctor.<locals>.call_ctorr   r    )rK   r   ÚTupleÚ
from_typesr0   r   rB   ÚTypeRefr|   r¾   Ú
make_tupler¤   )r-   r.   r/   r0   r.  r/  Z	ctor_argsr    r    r#   Úredirect_type_ctor�  s    ÿÿr4  c                    s¢   d }t |tjƒrd}n"t |tjƒr(d}nt |tjƒr8d}|d k	rRdj|Ž }t|ƒ‚t | tjjtj	tj
tjtjfƒrxt‰ nt | tjjƒrŒt‰ nd S d‡ fdd„	}|S )	N)ÚstringsÚ )ÚbytesrR   )Ú	bytearrayrR   z/sum() can't sum {} [use {}''.join(seq) instead]r   c                    s   |}ˆ | ƒD ]}|| }q|S r   r    )r"  Ústartrs   rž   ©Úiteratorr    r#   r$   È  s    
zol_sum.<locals>.impl)r   )r&   r   ré   ÚBytesÚ	ByteArrayr  r   Ú
containersÚ_HomogeneousTupleÚListrè   rº   Ú	RangeTyper   Ú_HeterogeneousTupler   )r"  r9  Úerrorr8   r$   r    r:  r#   Úol_sum­  s*    
  ÿrD  c                 G   s   dd„ }|S )Nc                 w   s"   t |f|žŽ D ]}| |Ž V  qd S r   )r}   )Úfuncr"  r0   rž   r    r    r#   r$   ×  s    zol_map.<locals>.implr    )rE  r"  r0   r$   r    r    r#   Úol_mapÕ  s    rF  c                 C   s*   | d kst | tjƒrdd„ }ndd„ }|S )Nc                 s   s   |D ]}|r|V  qd S r   r    ©rE  r"  rž   r    r    r#   r$   à  s    zol_filter.<locals>.implc                 s   s   |D ]}| |ƒr|V  qd S r   r    rG  r    r    r#   r$   å  s    rS   )rE  r"  r$   r    r    r#   Ú	ol_filterÝ  s    
rH  c                 C   s   d S r   r    ©ÚvarÚtypsr    r    r#   Ú_isinstance_no_warnì  s    rL  c                 C   s   d}t j|td� t| |ƒS )Nz>Use of isinstance() detected. This is an experimental feature.)Úcategory)ÚwarningsÚwarnr   Úol_isinstance_no_warn)rJ  rK  r8   r    r    r#   Úol_isinstanceð  s    rQ  c                 C   s4  dd„ }dd„ }t | ƒ}t|tjƒr8d|› d�}t|ƒ‚tjtjtjtjtj	tj
tjtjtjtjtjtjtjtjtjtjf}t||ƒsšd|› d�}t|ƒ‚|}t|tjƒr´|jd	 }t|tjƒsÆ|f}|D �]b}t|tjƒrè|jd	 }	nt|tjƒrú|}	n|j}	ttjttjttjtj	fttj
ttjttji}
|	|
k�rPt||
|	 ƒrÊ|  S qÊt|tjƒ�r–|	tjtjfk�r|d
}t|ƒ‚t|ƒ|	k�rŽ|n|  S t |	ƒ}||k�r°|  S t|tjƒ�rät|tjƒ�rä|j|jjk�rä|  S t|tj ƒrÊ|jd	 tj!krÊt||j"ƒ�s&t|tjƒrÊt|tjƒrÊ|  S qÊ|S )Nc                 S   s   dS )NTr    rI  r    r    r#   Ú	true_implü  s    z(ol_isinstance_no_warn.<locals>.true_implc                 S   s   dS rî   r    rI  r    r    r#   Ú
false_implÿ  s    z)ol_isinstance_no_warn.<locals>.false_implz1isinstance cannot handle optional types. Found: "ú"z1isinstance() does not support variables of type "z".r   zLNumba type classes (except numba.typed.* container types) are not supported.)#r   r&   r   ÚOptionalr   ÚNumberr<  rA  rç   ÚLiteralStrKeyDictr@  rè   r0  ÚUniTuplerê   ÚFunctionÚ	ClassTyperé   ÚClassInstanceTyperT   rº   Úkeyr7  ÚrangeÚdictr‚   ÚtupleÚ	BaseTupler_   r2  rË   Úinstance_typeÚ	ContainerÚ	undefinedÚ	__class__)rJ  rK  rR  rS  Zvar_tyr8   Zsupported_var_tyZt_typsrY   r\  Ztypes_not_registeredZ	numba_typr    r    r#   rP  ù  s˜             ü


   
   ú


ÿþÿ
ÿ
þ
rP  c                 C   s   d S r   r    ©ÚobjÚnamer    r    r#   Ú_getattr_raise_attr_exc[  s    rh  c                    s<   t |tjƒstdƒ‚|j}d| › d|› d�‰ ‡ fdd„}|S )Nú(argument 'name' must be a literal stringú'z' has no attribute 'c                    s   t ˆ ƒ‚d S r   )ÚAttributeErrorre  ©Úmessager    r#   r$   h  s    z(ol__getattr_raise_attr_exc.<locals>.impl)r&   r   ÚStringLiteralr   rH   )rf  rg  Úlnamer$   r    rl  r#   Úol__getattr_raise_attr_exca  s    rp  c                    s  t |tjƒstdƒ‚|j‰|  ˆˆ¡‰t ˆtjƒrRdˆ› dˆ› dˆ› d�}t|ƒ‚ˆd krÄt ˆtjƒrpˆj	t
ksŠˆˆ|ˆƒ}‡fdd„}n8|  t¡‰ˆ | ˆ|fi ¡‰t ˆ|ˆ¡}‡‡fdd„}nFˆˆ|ˆƒ}t ˆtjƒrì‡‡fd	d„}n|  ˆˆ¡‰ ‡ ‡‡‡fd
d„}||fS )Nri  zQReturning function objects is not implemented. getattr() was requested to return z from attribute 'z' of Ú.c                    s   |d }| j  |ˆ |¡ |S ©Néÿÿÿÿ)ÚnrtÚincref)Úcgctxr.   r/   ÚllargsÚtmp)Údefaultr    r#   r$   ‚  s    zresolve_getattr.<locals>.implc                    s   |   ˆ ˆ¡}|||d d… ƒS rr  )r)   )rv  r.   r/   rw  Znative_impl)r—   Ú	raise_sigr    r#   r$   ‹  s    c                    s<   ˆ j }|  ||d ˆ|¡}|  |||¡}| j |ˆ |¡ |S r�   )Úthisr@   Úget_bound_functionrt  ru  )rv  r.   r/   Úll_argsZ	cast_typeÚcastedrM   )r˜   rf  r    r#   r$   “  s
    c                    sD   |   ˆˆ¡}|| |ˆ|d ˆƒ}|  ||ˆ ˆ¡}| j |ˆ|¡ |S r�   )rX   r@   rt  ru  )rv  r.   r/   r}  Z	attr_implrM   r~  )Úattrtyr˜   ro  rf  r    r#   r$   �  s
    )r&   r   rn  r   rH   Úresolve_getattrrY  r   Ú
NamedTupleÚinstance_classÚ_getattr_default_typeÚresolve_value_typerh  Úget_call_typeÚnoneÚBoundFunction)Útyctxrf  rg  ry  r8   r/   r$   r    )r  ry  r˜   r—   ro  rf  rz  r#   r€  m  s.    ÿ
	r€  rƒ  r6  )Úprefer_literalc                 C   s   dd„ }|S )Nc                 S   s   t | |tƒS r   )r€  Ú_getattr_defaultre  r    r    r#   r$   °  s    zol_getattr_2.<locals>.implr    ©rf  rg  r$   r    r    r#   Úol_getattr_2®  s    rŒ  c                 C   s   dd„ }|S )Nc                 S   s   t | ||ƒS r   )r€  )rf  rg  ry  r    r    r#   r$   »  s    zol_getattr_3.<locals>.implr    )rf  rg  ry  r$   r    r    r#   Úol_getattr_3¹  s    r�  c                    sb   t |tjƒstdƒ‚|j}|  ||¡‰ ˆ d kr:t d¡}n
t d¡}|||ƒ}‡ fdd„}||fS )Nri  FTc                    s   ˆ d krt jS t jS r   )r   r5   rÞ   )rv  r.   r/   r}  ©r˜   r    r#   r$   Ñ  s    zresolve_hasattr.<locals>.impl)r&   r   rn  r   rH   r€  Úliteral)rˆ  rf  rg  ro  rÜ   r/   r$   r    rŽ  r#   Úresolve_hasattrÀ  s    

r�  c                 C   s   dd„ }|S )Nc                 S   s
   t | |ƒS r   )r�  re  r    r    r#   r$   Ü  s    zol_hasattr.<locals>.implr    r‹  r    r    r#   Ú
ol_hasattrÚ  s    r‘  c                    s   d| › d�‰ ‡ fdd„}|S )Nz<object type:ú>c                    s&   d}t | |ƒdkrt| |ƒƒ S ˆ S d S )NÚ__repr__T)Úhasattrr  )rf  r[   ©Zmissing_repr_formatr    r#   r$   ä  s    zol_repr_generic.<locals>.implr    )rf  r$   r    r•  r#   Úol_repr_genericá  s    r–  c                 C   s   ddd„}|S )Nr6  c                 S   s*   d}t | |ƒdkrt| |ƒƒ S t| ƒS d S )NÚ__str__T)r”  r  Úrepr)Úobjectr[   r    r    r#   r$   ñ  s    zol_str_generic.<locals>.impl)r6  r    )r™  r$   r    r    r#   Úol_str_genericï  s    
rš  )r   )r6  )©Úcollectionsr   r›   Ú	functoolsr   Únumpyrµ   r*   rN  Úllvmliter   Únumba.core.imputilsr   r   r   r   r	   r
   r   r   r   r   r   Ú
numba.corer   r   r   r   Únumba.core.extendingr   r   Únumba.core.typeconvr   Únumba.core.errorsr   r   r   r   r   r   Únumba.misc.specialr   Únumba.core.typing.asnumbatyper   Útruthr(   Úis_notÚAnyr1   r+   r:   ÚOpaquer?   r'   rE   r3   ÚLiteralÚIntegerLiteralrN   ÚnerO   rV   ÚDeferredTyper]   rU  re   rf   ÚgetitemÚCPointerrõ   rl   Úsetitemrn   r€   Úmaxr`  r†   ÚVarArgrˆ   ÚminrŠ   r‹   rŽ   Úroundró   r™   r¥   ÚintÚfloatr¦   Úcomplexr³   ÚNumberClassr¼   ÚDummyrÁ   ÚExternalFunctionPointerrÉ   rÍ   rË   rÎ   r   r'  rÐ   r!  ÚIteratorTyperØ   rÛ   r|   Ú
ConstSizedrÝ   ÚboolÚSizedrß   r_  rá   râ   rë   rñ   rø   rú   ÚDTyper  r	  Znumba.core.typing.builtinsr
  r  Znumba.extendingr  ÚintpÚTypeÚuintpr  r  r  r  r  r,  r)  r(  r+  r-  r2  r4  ÚsumrD  ÚmaprF  ÚfilterrH  rL  r&   rQ  rP  rh  rp  r€  rƒ  rŠ  r  rŒ  r�  r�  r”  r‘  r˜  r–  rÆ   rš  r    r    r    r#   Ú<module>   s4  4 





	
	










%






	





















	







'



a

9







