o
    0 iv                     @   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$ 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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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)AbstractTemplateinfer_global	signature)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#   f/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/numba/cpython/new_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   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_unsignedr9   )r1   r2   r3   r4   r:   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.   r7   r   r   )r1   r2   r3   r4   arg1arg2Z	arg1_typeZ	arg2_typeZ_arg1Z_arg2r=   r#   r#   r&   bool_is_implX   s   
rE   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   rC   rD   r%   resr#   r#   r&   const_eq_implk      
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_implw   rO   rP   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#   rQ   r$   r#   r&   r'      s   r*   r   NoneType)rR   rS   Za_noneZb_noner'   r$   r#   r&   none_equality   s   z!gen_non_eq.<locals>.none_equalityr#   )r%   rV   r#   r$   r&   
gen_non_eq   s   rW   TFc                 C   s4   |  }| ||||}| ||}|| ||||S )z>
    Deferred.__getattr__ => redirect to the actual type.
    )getrA   get_getattr)r1   r2   typvalueattrZ
inner_typer%   impr#   r#   r&   deferred_getattr   s   r^   c                 C   s0   |  |||| }| j| }||| |S r"   )rA   rX   data_model_managersetZmake_uninitialized)r1   r2   fromtytotyr%   actualmodelr#   r#   r&   any_to_deferred   s   
re   c                 C   s*   | j | }|||}| ||| |S r"   )r_   rX   rA   )r1   r2   ra   rb   r%   rd   r#   r#   r&   deferred_to_any   s   
rf   c                 C   s0   |\}}| ||g}||}t| ||j|S r"   )geploadr   rK   )r1   r2   r3   r4   base_ptridxelem_ptrrM   r#   r#   r&   getitem_cpointer   s   
rl   c                 C   s(   |\}}}| ||g}||| d S r"   )rg   store)r1   r2   r3   r4   ri   rj   r%   rk   r#   r#   r&   setitem_cpointer   s   
rn   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_typesrA   r   r   r   Zpy_boolr-   select)Zaccumulatorr[   ZacctyaccZvtyvtyZcmpsiggepredrM   r2   cmpopr1   r#   r&   binary_minmax   s   z do_minmax.<locals>.binary_minmax)lenzipr   )	r1   r2   argtysr4   rv   rw   ZtypvalsZrestyZresvalr#   ru   r&   	do_minmax   s   
r{   c                 C   0   t |jd }t||d }t| |||tjS Nr   )listr4   r   unpack_tupler{   r.   gtr1   r2   r3   r4   rz   r#   r#   r&   max_iterable      r   c                 C      t | ||j|tjS r"   )r{   r4   r.   r   r1   r2   r3   r4   r#   r#   r&   
max_vararg      r   c                 C   r|   r}   )r~   r4   r   r   r{   r.   ltr   r#   r#   r&   min_iterable   r   r   c                 C   r   r"   )r{   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fptosirK   r   )
r1   r2   r3   r4   flttyZ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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   rK   )r1   r2   r3   r4   r   r   rM   r#   r   r&   round_impl_binary   s   
r   c                 C   s0   |j \}|\}| ||||j}t| ||j|S r"   )r4   rA   rK   r   )r1   r2   r3   r4   rr   r%   rM   r#   r#   r&   int_impl&  s   r   c                 C   s,   |j \}| |jt|j}t| ||j|S r"   )r4   get_constantrK   floatrH   r   )r1   r2   r3   r4   rr   rM   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      )rK   Zunderlying_floatrx   r4   r*   r   ComplexrA   r   r   Zmake_complexrealimag	_getvalue)r1   r2   r3   r4   Zcomplex_typeZ
float_typeZargtyargrM   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*   rK   r   Arrayr   r   r   r4   rA   )r1   r2   r3   r4   r   rM   r%   Zvaltyr#   r   r&   number_constructorR  s   r   c                 C      |   S r"   get_dummy_valuer1   r2   rr   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   rr   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   rr   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   rM   r#   r#   r&   	next_impl  s   
r   znot inc                 C   s"   dd }|  ||||}||S )Nc                 S   s   t || S r"   )r.   containsrQ   r#   r#   r&   in_impl     znot_in.<locals>.in_impl)r   r0   )r1   r2   r3   r4   r   rM   r#   r#   r&   not_in  s   
r   c                 C   s0   |j \}|j}| |t|j}t| ||j|S r"   )r4   rK   r   rx   r   r   )r1   r2   r3   r4   rr   rettyrM   r#   r#   r&   constsized_len  s   r   c                 C   s   |j \}t|rtjS tjS r"   )r4   rx   r   true_bitr9   )r1   r2   r3   r4   rr   r#   r#   r&   
sized_bool  s   r   c                 C   s    |j }| |}t| ||j |S r"   )rK   Zget_constant_undefr   )r1   r2   r3   r4   r   rM   r#   r#   r&   lower_empty_tuple  s   
r   c                 C   s   |\}t | ||j|S r"   )r   rK   )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}   )rx   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>rT   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maxvalr   rZ   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   minvalr   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   )rx   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   rJ   r   rI   r   	FloatType
DoubleTyper8   getattrr   formatr   
NPDatetimeNPTimedeltaint64r   
r1   r2   r3   r4   rZ   bwZ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	||}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   rJ   r   rI   r   r   r   r8   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   Zcreate_struct_proxyindexr[   r   )r1   r2   r3   r4   rZ   r   r[   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   r[   r   indval1indval2r#   r#   r&   min_impl=     zindval_min.<locals>.min_implr*   r   )r  r  r  r#   r#   r&   
indval_min9     
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_implZ     z"boolval_min.<locals>.bool_min_implr)   )r  r  r  r#   r#   r&   boolval_minV     
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_implc  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#   rQ   r#   r#   r&   r         r   c                 C   s   | |k S r"   r#   rQ   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#   )rK   r   TupleZ
from_typesr4   r   r   TypeRefrx   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 )bytesrS   )	bytearrayrS   z/sum() can't sum {} [use {}''.join(seq) instead]r   c                    s   |} | D ]}|| }q|S r"   r#   )r  startrp   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  r1  errorr<   r'   r#   r2  r&   ol_sum  s&   
r:  c                 G      dd }|S )Nc                 w   s&    t |g|R  D ]}| | V  q	d S r"   )ry   )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   rT   )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   Numberr5  r8  r   ZLiteralStrKeyDictr7  r   r*  ZUniTupler   FunctionZ	ClassTyper   ZClassInstanceTyperU   r   r+   r   r   r   r   r   keyr/  rangedictr~   tuple	BaseTupler`   r+  r   Zinstance_type	Container	undefined	__class__)rA  rB  rC  rD  Zvar_tyr<   Zsupported_var_tyZt_typsrZ   rI  Ztypes_not_registeredZ	numba_typr#   r#   r&   ol_isinstance  s   




rQ  c                 C   s   d S r"   r#   objnamer#   r#   r&   _getattr_raise_attr_excf  s   rU  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"   )AttributeErrorrR  messager#   r&   r'   s  r  z(ol__getattr_raise_attr_exc.<locals>.impl)r*   r   StringLiteralr   rH   )rS  rT  lnamer'   r#   rY  r&   ol__getattr_raise_attr_excl  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 )NrV  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-   )rc  r2   r3   rd  Znative_impl)r   	raise_sigr#   r&   r'     s   c                    s<    j }| ||d |}| |||}| j| | |S r}   )thisrA   Zget_bound_functionra  rb  )rc  r2   r3   ll_argsZ	cast_typecastedrM   )r   rS  r#   r&   r'     s
   c                    sD   |  }|| ||d }| || }| j|| |S r}   )rY   rA   ra  rb  )rc  r2   r3   ri  Z	attr_implrM   rj  )attrtyr   r\  rS  r#   r&   r'     s
   )r*   r   r[  r   rH   resolve_getattrrH  r   
NamedTupleZinstance_class_getattr_default_typeZresolve_value_typerU  Zget_call_typenoneZBoundFunction)tyctxrS  rT  rf  r<   r3   r'   r#   )rk  rf  r   r   r\  rS  rg  r&   rl  x  s>   
!
rl  rn  r.  )Zprefer_literalc                 C      dd }|S )Nc                 S   s   t | |tS r"   )rl  _getattr_defaultrR  r#   r#   r&   r'     r   zol_getattr_2.<locals>.implr#   rS  rT  r'   r#   r#   r&   ol_getattr_2     rt  c                 C   r;  )Nc                 S   s   t | ||S r"   )rl  )rS  rT  rf  r#   r#   r&   r'     r   zol_getattr_3.<locals>.implr#   )rS  rT  rf  r'   r#   r#   r&   ol_getattr_3  ru  rv  c                    sb   t |tjs
td|j}| ||  d u rtd}ntd}|||} fdd}||fS )NrV  FTc                    s    d u rt jS t jS r"   )r   r9   r   )rc  r2   r3   ri  r   r#   r&   r'     s   zresolve_hasattr.<locals>.impl)r*   r   r[  r   rH   rl  literal)rp  rS  rT  r\  r   r3   r'   r#   rw  r&   resolve_hasattr  s   

ry  c                 C   rq  )Nc                 S   s
   t | |S r"   )ry  rR  r#   r#   r&   r'     s   
zol_hasattr.<locals>.implr#   rs  r#   r#   r&   
ol_hasattr  ru  rz  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   )rS  r\   Zmissing_repr_formatr#   r&   r'     s   zol_repr_generic.<locals>.implr#   )rS  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  r4  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.typing.templatesr   r   r   Znumba.core.errorsr   r   r   r   r   r   Znumba.misc.specialr    Znumba.core.typing.asnumbatyper!   truthr,   is_notAnyr5   r/   r>   ZOpaquer@   r+   rE   r7   LiteralZIntegerLiteralrN   nerP   rW   ZDeferredTyper^   rF  re   rf   getitemZCPointerr   rl   setitemrn   r{   maxrM  r   ZVarArgr   minr   r   r   roundr   r   r   intr   r   r[  r   complexr   r   r   ZDummyr   ZExternalFunctionPointerr   r   r   r   r  r  r   r  ZIteratorTyper   r   rx   Z
ConstSizedr   boolSizedr   rL  r   r   r   r   r   r   r   r   r   r   Znumba.core.typing.builtinsr   r   Znumba.extendingr   Zpy_intTypeZnp_intpZnp_uintpr   r	  r  r  r  r&  r"  r   r$  r'  r+  r,  sumr:  mapr=  filterr?  r*   rQ  rU  r]  rl  rn  rr  r   rt  rv  ry  r}  rz  r  r  r   r  r#   r#   r#   r&   <module>   s>   4 





	
	











%








	








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

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