o
    1&iF                     @   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)m*Z*m+Z+ d dl,m-Z- d dl.m/Z/ eej0dd Z1eej2ej3ej3dd Z4eej5ej3ej3dd Z6eej5ej7ej7dd Z8eej5ej9ej9dd Z:eej;ej<ej<eej;ej=ej=dd Z>eej?ej<ej<eej?ej=ej=dd Z@dd ZAeej;eAd eej?eAd eejBdd  ZCeej3ejBeejDejBeej9ejBd!d" ZEeejBej3eejBej9eejBejDd#d$ ZFeejGejHejId%d& ZJeejKejHejIej3d'd( ZLd)d* ZMeeNejOd+d, ZPeeNeQej3d-d. ZReeSejOd/d0 ZTeeSeQej3d1d2 ZUd3d4 ZVeeWejXd5d6 ZYeeWejXejId7d8 ZZee[ej3ee\ej3d9d: Z]ee\ej^d;d< Z_ee`eQej3d=d> Zaeejbej3d?d@ ZceejddAdB ZeeejfdCdD ZgeejDdEdF Zheeiej3dGdH ZjeekejldIdJ ZmeenejodKdL ZpedMej3ej3dNdO ZqeerejsdPdQ ZteeuejvdRdS ZweexdTdU ZyeexejOdVdW ZzeeudXdY Z{eeudZd[d\d] Z|d^d_ Z}d`da Z~e*e~e*e}G dbdc dce)Zee~ejbee~ejddde Zee}ejbee}ejdfdg Zd dhlmZmZ d dilmZmZ eeejejeeejejdjdk ZeeSdldm ZeeSdndo ZeeNdpdq ZeeNdrds Zedtdu Zedvdu Zedwdx ZeeSdydz ZeeNd{d| ZeejeQej3d}d~ ZeedddZeedd Zeedd Zeedd Zdd Zeedd Zedd ZeddZe Zeedddd Zeedd Zedd Zeedd Zeedd ZeedddZd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)AbstractTemplateinfer_global	signature)literal_unroll)as_numba_typec                 C   s   t | tjrdd }|S d S )Nc                 S   s   | S N valr#   r#   AC:\wamp64\www\opt\env\Lib\site-packages\numba/cpython/builtins.pyimpl       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   r5   c                 C   s`   |j \}}||kr-|jrd}t|z	| tj|}W n ty'   tj Y S w |||S tjS )z-
    Default implementation for `x is y`
    zno default `is` implementation)	r4   Zmutabler   r-   r.   eqNotImplementedErrorr   	false_bit)r1   r2   r3   r4   lhs_typerhs_typemsgeq_implr#   r#   r&   
generic_is.   s   


r=   c                 C   sJ   |j \}}||kr"||d tj}||d tj}|d||S tjS )z7
    Implementation for `x is y` for Opaque types.
    r      z==)r4   Zptrtointr   Zintp_tZicmp_unsignedr8   )r1   r2   r3   r4   r9   r:   Zlhs_ptrZrhs_ptrr#   r#   r&   	opaque_isH   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.
    )	r4   castr   booleanr-   r.   r6   r   r   )r1   r2   r3   r4   arg1arg2Z	arg1_typeZ	arg2_typeZ_arg1Z_arg2r<   r#   r#   r&   bool_is_implX   s   
rD   c                 C   s@   |j \}}d}|j|jkrd}ttd|}t| ||j|S Nr   r>   r4   literal_valuer   ConstantIntTyper   return_typer1   r2   r3   r4   rB   rC   r%   resr#   r#   r&   const_eq_implk      
rM   c                 C   s@   |j \}}d}|j|jkrd}ttd|}t| ||j|S rE   rF   rK   r#   r#   r&   const_ne_implw   rN   rO   c                    s    fdd}|S )Nc                    sL   t | tj}t |tj}|r|r fdd}|S ||A r$ fdd}|S d S )Nc                    s    S r"   r#   abr$   r#   r&   r'      r(   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)r1   r2   typvalueattrZ
inner_typer%   impr#   r#   r&   deferred_getattr   s   r]   c                 C   s0   |  |||| }| j| }||| |S r"   )r@   rW   data_model_managersetZmake_uninitialized)r1   r2   fromtytotyr%   actualmodelr#   r#   r&   any_to_deferred   s   
rd   c                 C   s*   | j | }|||}| ||| |S r"   )r^   rW   r@   )r1   r2   r`   ra   r%   rc   r#   r#   r&   deferred_to_any   s   
re   c                 C   s0   |\}}| ||g}||}t| ||j|S r"   )geploadr   rJ   )r1   r2   r3   r4   base_ptridxelem_ptrrL   r#   r#   r&   getitem_cpointer   s   
rk   c                 C   s(   |\}}}| ||g}||| d S r"   )rf   store)r1   r2   r3   r4   rh   ri   r%   rj   r#   r#   r&   setitem_cpointer   s   
rm   c           	         sX   t |t |ksJ ||ft |dksJ  fdd}t||}t||\}}|S )Nr   c                    s   | \}}|\}}j ||}|d usJ  |||} |||}ttj||}|}| ||f}	 |	||}
||
fS r"   )	Ztyping_contextZunify_typesr@   r   r   r   rA   r-   select)ZaccumulatorrZ   ZacctyaccZvtyvtyZcmpsiggepredrL   r2   cmpopr1   r#   r&   binary_minmax   s   z do_minmax.<locals>.binary_minmax)lenzipr   )	r1   r2   argtysr4   ru   rv   ZtypvalsZrestyZresvalr#   rt   r&   	do_minmax   s   
rz   c                 C   0   t |jd }t||d }t| |||tjS Nr   )listr4   r   unpack_tuplerz   r.   gtr1   r2   r3   r4   ry   r#   r#   r&   max_iterable      r   c                 C      t | ||j|tjS r"   )rz   r4   r.   r   r1   r2   r3   r4   r#   r#   r&   
max_vararg      r   c                 C   r{   r|   )r}   r4   r   r~   rz   r.   ltr   r#   r#   r&   min_iterable   r   r   c                 C   r   r"   )rz   r4   r.   r   r   r#   r#   r&   
min_vararg   r   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|   )r4   Zget_value_typemoduler   FunctionTyper   Zget_or_insert_functionr   callZfptosirJ   r   )
r1   r2   r3   r4   flttyZlltyr   fntyfnrL   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r8|dkrd|d  }d}nd| }d}| | | }t |r0| S  || | S d|  }| | } || S )Nr      g      $@gMDg      ?)mathisinfisnan)xndigitsZpow1Zpow2yZ_roundr#   r&   round_ndigits  s   

z(round_impl_binary.<locals>.round_ndigits)	r4   r   ZExternalFunctionr   r   r   compile_internalr   rJ   )r1   r2   r3   r4   r   r   rL   r#   r   r&   round_impl_binary   s   
r   c                 C   s0   |j \}|\}| ||||j}t| ||j|S r"   )r4   r@   rJ   r   )r1   r2   r3   r4   rq   r%   rL   r#   r#   r&   int_impl&  s   r   c                 C   s,   |j \}| |jt|j}t| ||j|S r"   )r4   get_constantrJ   floatrG   r   )r1   r2   r3   r4   rq   rL   r#   r#   r&   float_literal_impl/  s   r   c                 C   s   |j }|j}t|jdkr9|j\}|\}t|tjr*| ||||}t| ||j |S | ||||}	| 	|d}
n t|jdkrY|j\}}|\}	}
| ||	||}	| ||
||}
| 
||}|	|_|
|_| }t| ||j |S )Nr>   r      )rJ   Zunderlying_floatrw   r4   r*   r   Complexr@   r   r   Zmake_complexrealimag	_getvalue)r1   r2   r3   r4   Zcomplex_typeZ
float_typeZargtyargrL   r   r   ZrealtyZimagtyZcmplxr#   r#   r&   complex_impl6  s(   
r   c                    sb   t |jtjr!|jj  fdd}| ||||}t| ||j|S |\}|j\}| ||||j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&   fooZ  s   znumber_constructor.<locals>.foo)	r*   rJ   r   Arrayr   r   r   r4   r@   )r1   r2   r3   r4   r   rL   r%   Zvaltyr#   r   r&   number_constructorR  s   r   c                 C      |   S r"   get_dummy_valuer1   r2   rq   pyvalr#   r#   r&   constant_dummyh  s   r   c                 C   s0   |  |}| j|||t|d}|||S )N)info)Zget_function_pointer_typeZadd_dynamic_addrZget_pointerstrZbitcast)r1   r2   rq   r   ZptrtyZptrvalr#   r#   r&   constant_function_pointerm  s
   
r   c                 C   s&   |d u r|  ||jS | ||j|S r"   )Zmake_optional_nonetypeZmake_optional_valuer   r#   r#   r&   constant_optionalu  s   r   c                 C   r   )z&
    One-argument type() builtin.
    r   r   r#   r#   r&   	type_impl  s   r   c                 C   s    |j \}|\}t| |||}|S r"   )r4   r   )r1   r2   r3   r4   rq   r%   itervalr#   r#   r&   	iter_impl  s   r   c                 C   sr   |j \}|\}t| |||}|j|| dd | j|td W d    | S 1 s0w   Y  | S )NF)Zlikelyr#   )	r4   r   Zif_thenr0   Zis_validZ	call_convZreturn_user_excStopIterationZyielded_value)r1   r2   r3   r4   Zitertyr   rL   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     znot_in.<locals>.in_impl)r   r0   )r1   r2   r3   r4   r   rL   r#   r#   r&   not_in  s   
r   c                 C   s0   |j \}|j}| |t|j}t| ||j|S r"   )r4   rJ   r   rw   r   r   )r1   r2   r3   r4   rq   rettyrL   r#   r#   r&   constsized_len  s   r   c                 C   s   |j \}t|rtjS tjS r"   )r4   rw   r   true_bitr8   )r1   r2   r3   r4   rq   r#   r#   r&   
sized_bool  s   r   c                 C   s    |j }| |}t| ||j |S r"   )rJ   Zget_constant_undefr   )r1   r2   r3   r4   r   rL   r#   r#   r&   lower_empty_tuple  s   
r   c                 C   s   |\}t | ||j|S r"   )r   rJ   )r1   r2   r3   r4   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| |rdd }|S d S )Nc                 S   s   t | dkS r|   )rw   r   r#   r#   r&   	bool_impl  r   z bool_sequence.<locals>.bool_impl)r   Z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 u rdd S d S )Nc                 S      dS NFr#   r   r#   r#   r&   <lambda>  s    zbool_none.<locals>.<lambda>rS   r   r#   r#   r&   	bool_none  s   r   c                 C   s,   t | tjr	tjS t | tjr| jS tdNzUnsupported type)r*   r   Floatr   infIntegermaxvalr7   rY   r#   r#   r&   get_type_max_value  s
   r   c                 C   s.   t | tjr
tj S t | tjr| jS tdr   )r*   r   r   r   r   r   minvalr7   r   r#   r#   r&   get_type_min_value  s
   r   c                   @   s   e Zd Zdd ZdS )MinValInferc                 C   sH   |rJ t |dksJ t|d tjtjfr"t|d jg|R  S d S )Nr>   r   )rw   r*   r   DTypeNumberClassr   r   )selfr4   kwsr#   r#   r&   generic  s
   zMinValInfer.genericN)__name__
__module____qualname__r   r#   r#   r#   r&   r     s    r   c           
      C   s   |j d j}t|tjr|j}t|}|j}t	||}nLt|tj
rN|j}|dkr0t }n|dkr9t }ntdttd|}	t	|tj }nt|tjtjfrjd}t|}tjjd }t	||}t| |||S )Nr       @   +llvmlite only supports 32 and 64 bit floatsfloat{}r>   )r4   r   r*   r   r   r   r   rI   r   rH   r   	FloatType
DoubleTyper7   getattrr   formatr   
NPDatetimeNPTimedeltaint64r   
r1   r2   r3   r4   rY   bwZltyr%   rL   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	||}nIt|tj
rM|j}|dkr0t }n|dkr9t }ntdttd|}	t	|tj}nt|tjtjfrgd}t|}tjj}t	||}t| |||S )Nr   r   r   r   r   )r4   r   r*   r   r   r   r   rI   r   rH   r   r   r   r7   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"   )rJ   r   Zcreate_struct_proxyindexrZ   r   )r1   r2   r3   r4   rY   r   rZ   Zindex_valuer#   r#   r&   impl_index_value-  s   r   c                 C   (   t | trt |trdd }|S d S d S )Nc                 S   st   t | jrt |jr| j|jk r| S |S | S t |jr |S | j|jkr(|S | j|jkr8| j|jk r6| S |S | S r"   r   r   rZ   r   indval1indval2r#   r#   r&   min_impl<     zindval_min.<locals>.min_implr*   r   )r  r  r  r#   r#   r&   
indval_min8     
r  c                 C   ,   t | tjrt |tjrdd }|S d S d S )Nc                 S   s   | o|S r"   r#   val1val2r#   r#   r&   bool_min_implY     z"boolval_min.<locals>.bool_min_implr)   )r  r  r  r#   r#   r&   boolval_minU     
r  c                 C   r   )Nc                 S   st   t | jrt |jr| j|jk r| S |S | S t |jr |S |j| jkr(|S | j|jkr8| j|jk r6| S |S | S r"   r  r  r#   r#   r&   max_implb  r  zindval_max.<locals>.max_implr  )r  r  r  r#   r#   r&   
indval_max^  r	  r  c                 C   r
  )Nc                 S   s   | p|S r"   r#   r  r#   r#   r&   bool_max_impl  r  z"boolval_max.<locals>.bool_max_implr)   )r  r  r  r#   r#   r&   boolval_max{  r  r  c                 C   s   | |kS r"   r#   rP   r#   r#   r&   r         r   c                 C   s   | |k S r"   r#   rP   r#   r#   r&   r     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'     s   
zmin_max_impl.<locals>.impl)r*   r   IterableType)r  r  r'   r#   r  r&   min_max_impl  s   r  c                 C   
   t | tS r"   )r  	less_thanr  r#   r#   r&   iterable_min     
r#  c                 C   r   r"   )r  greater_thanr"  r#   r#   r&   iterable_max  r$  r&  c                 C   sz   |j }dd }tj|j}t|t||}t|dkr*| 	 | 
|||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 | g|R  S r"   )r   )clsr4   r#   r#   r&   	call_ctor  s   z%redirect_type_ctor.<locals>.call_ctorr   r#   )rJ   r   TupleZ
from_typesr4   r   r   TypeRefrw   r   Z
make_tupler   )r1   r2   r3   r4   r'  r(  Z	ctor_argsr#   r#   r&   redirect_type_ctor  s   r+  c                    s   d }t |tjrd}nt |tjrd}nt |tjrd}|d ur)dj| }t|t | tjjtj	tj
tjtjfr<t nt | tjjrFt 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  startro   r   iteratorr#   r&   r'     s   
zol_sum.<locals>.implr   )r*   r   r   BytesZ	ByteArrayr   r   
containersZ_HomogeneousTupleListr   r   	RangeTyper  Z_HeterogeneousTupler    )r  r0  errorr;   r'   r#   r1  r&   ol_sum  s&   
r9  c                 G      dd }|S )Nc                 w   s&    t |g|R  D ]}| | V  q	d S r"   )rx   )funcr  r4   r   r#   r#   r&   r'     s   zol_map.<locals>.implr#   )r;  r  r4   r'   r#   r#   r&   ol_map  s   r<  c                 C   s,   | d u s
t | tjrdd }|S dd }|S )Nc                 s   s    |D ]}|r
|V  qd S r"   r#   r;  r  r   r#   r#   r&   r'     s   zol_filter.<locals>.implc                 s   s    |D ]	}| |r|V  qd S r"   r#   r=  r#   r#   r&   r'     s   rS   )r;  r  r'   r#   r#   r&   	ol_filter  s
   	r>  c                 C   sv  dd }dd }t | }t|tjrd| 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tjtjtjtjtjtjf}t||sYd| d}t||}t|tjrf|jd	 }t|tjso|f}|D ]}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}
|	|
v rt||
|	 r|  S qqt|tj#r|	tjtjfvrd
}t|t$||	u r|  S |  S t |	}||kr|  S t|tjtjfrt|t$|r|  S qqt|tjrt|tjr|j|j%jkr|  S t|tj&r8|jd	 tj'kr8t||j(s4t|tj!r8t|tj!r8|  S qq|S )Nc                 S   r   )NTr#   vartypsr#   r#   r&   	true_impl  r(   z ol_isinstance.<locals>.true_implc                 S   r   r   r#   r?  r#   r#   r&   
false_impl  r(   z!ol_isinstance.<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   Numberr4  r7  r   ZLiteralStrKeyDictr6  r   r)  ZUniTupler   FunctionZ	ClassTyper   ZClassInstanceTyperT   r   r+   r   r   r   r   r   keyr.  rangedictr}   tuple	BaseTupler_   r*  r   Zinstance_type	Container	undefined	__class__)r@  rA  rB  rC  Zvar_tyr;   Zsupported_var_tyZt_typsrY   rH  Ztypes_not_registeredZ	numba_typr#   r#   r&   ol_isinstance  s   




rP  c                 C   s   d S r"   r#   objnamer#   r#   r&   _getattr_raise_attr_exce  s   rT  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  r"   )AttributeErrorrQ  messager#   r&   r'   r  r  z(ol__getattr_raise_attr_exc.<locals>.impl)r*   r   StringLiteralr   rG   )rR  rS  lnamer'   r#   rX  r&   ol__getattr_raise_attr_exck  s   r\  c                    s$  t |tjs
td|j| t tjr)d d d d}t|d u rht tjr8j	t
ksH|}fdd}||fS | t| |fi t|}fdd}||fS |}t tjrfd	d}||fS |   fd
d}||fS )NrU  zQReturning function objects is not implemented. getattr() was requested to return z from attribute 'z' of .c                    s   |d }| j | | |S N)nrtincref)cgctxr2   r3   llargstmp)defaultr#   r&   r'     s   zresolve_getattr.<locals>.implc                    s   |   }|||d d S r^  )r-   )rb  r2   r3   rc  Znative_impl)r   	raise_sigr#   r&   r'     s   c                    s<    j }| ||d |}| |||}| j| | |S r|   )thisr@   Zget_bound_functionr`  ra  )rb  r2   r3   ll_argsZ	cast_typecastedrL   )r   rR  r#   r&   r'     s
   c                    sD   |  }|| ||d }| || }| j|| |S r|   )rX   r@   r`  ra  )rb  r2   r3   rh  Z	attr_implrL   ri  )attrtyr   r[  rR  r#   r&   r'     s
   )r*   r   rZ  r   rG   resolve_getattrrG  r   
NamedTupleZinstance_class_getattr_default_typeZresolve_value_typerT  Zget_call_typenoneZBoundFunction)tyctxrR  rS  re  r;   r3   r'   r#   )rj  re  r   r   r[  rR  rf  r&   rk  w  s>   
!
rk  rm  r-  )Zprefer_literalc                 C      dd }|S )Nc                 S   s   t | |tS r"   )rk  _getattr_defaultrQ  r#   r#   r&   r'     r   zol_getattr_2.<locals>.implr#   rR  rS  r'   r#   r#   r&   ol_getattr_2     rs  c                 C   r:  )Nc                 S   s   t | ||S r"   )rk  )rR  rS  re  r#   r#   r&   r'     r   zol_getattr_3.<locals>.implr#   )rR  rS  re  r'   r#   r#   r&   ol_getattr_3  rt  ru  c                    sb   t |tjs
td|j}| ||  d u rtd}ntd}|||} fdd}||fS )NrU  FTc                    s    d u rt jS t jS r"   )r   r8   r   )rb  r2   r3   rh  r   r#   r&   r'     s   zresolve_hasattr.<locals>.impl)r*   r   rZ  r   rG   rk  literal)ro  rR  rS  r[  r   r3   r'   r#   rv  r&   resolve_hasattr  s   

rx  c                 C   rp  )Nc                 S   s
   t | |S r"   )rx  rQ  r#   r#   r&   r'     s   
zol_hasattr.<locals>.implr#   rr  r#   r#   r&   
ol_hasattr  rt  ry  c                    s   d|  d  fdd}|S )Nz<object type:>c                    s"   d}t | |dkrt| | S  S )N__repr__T)hasattrr   )rR  r[   Zmissing_repr_formatr#   r&   r'     s   zol_repr_generic.<locals>.implr#   )rR  r'   r#   r}  r&   ol_repr_generic  s   r~  c                 C   s   ddd}|S )Nr-  c                 S   s&   d}t | |dkrt| | S t| S )N__str__T)r|  r   repr)objectr[   r#   r#   r&   r'     s   zol_str_generic.<locals>.implr-  r#   )r  r'   r#   r#   r&   ol_str_generic  s   
r  r3  r  )collectionsr   r   	functoolsr   numpyr   r.   warningsZllvmliter   Znumba.core.imputilsr   r   r   r   r	   r
   r   r   r   r   r   Z
numba.corer   r   r   r   Znumba.core.extendingr   r   Znumba.core.typeconvr   Znumba.core.errorsr   r   r   r   r   r   Znumba.core.typing.templatesr   r   r   Znumba.misc.specialr    Znumba.core.typing.asnumbatyper!   truthr,   is_notAnyr5   r/   r=   ZOpaquer?   r+   rD   r6   LiteralZIntegerLiteralrM   nerO   rV   ZDeferredTyper]   rE  rd   re   getitemZCPointerr   rk   setitemrm   rz   maxrL  r   ZVarArgr   minr   r   r   roundr   r   r   intr   r   rZ  r   complexr   r   r   ZDummyr   ZExternalFunctionPointerr   r   r   r   r  r  r   r  ZIteratorTyper   r   rw   Z
ConstSizedr   boolSizedr   rK  r   r   r   r   r   r   r   r   r   r   Znumba.core.typing.builtinsr   r   Znumba.extendingr   ZintpTypeZuintpr   r  r  r  r  r%  r!  r  r#  r&  r*  r+  sumr9  mapr<  filterr>  r*   rP  rT  r\  rk  rm  rq  r   rs  ru  rx  r|  ry  r  r~  r   r  r#   r#   r#   r&   <module>   s<   4 





	
	











%








	








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

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