
    ihv                        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j`                        d        Z1 eejd                  ejf                  ejf                        d        Z4 eejj                  ejf                  ejf                        d        Z6 eejj                  ejn                  ejn                        d        Z8 eejj                  ejr                  ejr                        d        Z: eejv                  ejx                  ejx                         eejv                  ejz                  ejz                        d               Z> eej~                  ejx                  ejx                         eej~                  ejz                  ejz                        d               Z@d ZA  eejv                         eAd               eej~                         eAd              eej                        d        ZC eejf                  ej                         eej                  ej                         eejr                  ej                        d                      ZE eej                  ejf                         eej                  ejr                         eej                  ej                        d                      ZF eej                  ej                  ej                        d        ZJ eej                  ej                  ej                  ejf                        d        ZLd ZM eeNej                        d        ZP eeN ej                  ejf                              d        ZR eeSej                        d        ZT eeS ej                  ejf                              d         ZUd! ZV eeWej                        d"        ZY eeWej                  ej                        d#        ZZ ee[ejf                         ee\ejf                        d$               Z] ee\ej                        d%        Z_ ee` ej                  ejf                              d&        Za eej                  ejf                        d'        Zc eej                        d(        Ze eej                        d)        Zg eej                        d*        Zh eeiejf                        d+        Zj eekej                        d,        Zm eenej                        d-        Zp ed.ejf                  ejf                        d/        Zq eerej                        d0        Zt eeuej                        d1        Zw eex      d2        Zy eexej                        d3        Zz eeu      d4        Z{ eeud56      d7        Z|d8 Z}d9 Z~ e#e~       e#e}       G d: d;e"                    Z ee~ej                         ee~ej                         d<               Z ee}ej                         ee}ej                         d=               Zd d>lmZmZ d d?lmZmZ  eeej                  ej                         eeej                  ej                         eeej                  ej                        d@                      Z eeS      dA        Z eeS      dB        Z eeN      dC        Z eeN      dD        Z edE       Z edF       ZedG        Z eeS      dH        Z eeN      dI        Z eej,                   ej                  ejf                              dJ        Z ee      d[dK       Z ee      dL        Z ee      dM        Z ee      dN        ZdO Z ee      dP        ZedQ        Z edRdS      Z e       Z eedT      dU        Z ee      dV        ZedW        Z ee      dX        Z ee      dY        Z ee      d\dZ       Zy)]    )
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                 B    t        | t        j                        rd }|S y )Nc                     | S N )vals    X/var/www/html/dev/engine/venv/lib/python3.12/site-packages/numba/cpython/new_builtins.pyimplzol_truth.<locals>.impl    s    J    
isinstancer   Boolean)r'   r)   s     r(   ol_truthr.      s    #u}}%	 &r*   c                 r    | j                  t        j                  |      }|j                   |||            S )z3
    Implement `x is not y` as `not (x is y)`.
    )get_functionoperatoris_not_)contextbuildersigargsis_impls        r(   generic_is_notr9   %   s0    
 ""8<<5G<<.//r*   c                    |j                   \  }}||k(  rC|j                  rd}t        |      	 | j                  t        j
                  |      } |||      S t        j                  S # t        $ r t        j                  cY S w xY w)z-
    Default implementation for `x is y`
    zno default `is` implementation)	r7   mutabler   r0   r1   eqNotImplementedErrorr   	false_bit)r4   r5   r6   r7   lhs_typerhs_typemsgeq_impls           r(   
generic_isrC   .   s    
 Hh86#C((2%228;;DG
 #7D11    + -",,,-s    A( (BBc                     |j                   \  }}||k(  rY|j                  |d   t        j                        }|j                  |d   t        j                        }|j	                  d||      S t        j
                  S )z7
    Implementation for `x is y` for Opaque types.
    r      z==)r7   ptrtointr   intp_ticmp_unsignedr>   )r4   r5   r6   r7   r?   r@   lhs_ptrrhs_ptrs           r(   	opaque_isrK   H   so    
 Hh8""47GNN;""47GNN;$$T7G<<   r*   c                    |\  }}|j                   \  }}| j                  |||t        j                        }| j                  |||t        j                        }	| j	                  t
        j                  t        j                  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.
    )	r7   castr   booleanr0   r1   r<   r   r   )r4   r5   r6   r7   arg1arg2	arg1_type	arg2_type_arg1_arg2rB   s              r(   bool_is_implrU   X   s     JD$88IyLL$	5==AELL$	5==AE""u}}EG 7UEN++r*   c                     |j                   \  }}d}|j                  |j                  k(  rd}t        j                  t        j                  d      |      }t        | ||j                  |      S Nr   rE   r7   literal_valuer   ConstantIntTyper   return_typer4   r5   r6   r7   rO   rP   r'   ress           r(   const_eq_implr_   k   \     JD$
CT///
++bjjmS
)CgwEEr*   c                     |j                   \  }}d}|j                  |j                  k7  rd}t        j                  t        j                  d      |      }t        | ||j                  |      S rW   rX   r]   s           r(   const_ne_implrb   w   r`   r*   c                       fd}|S )Nc                     t        | t        j                        }t        |t        j                        }|r	|rfd}|S ||z  rfd}|S y )Nc                     S r%   r&   abr'   s     r(   r)   z/gen_non_eq.<locals>.none_equality.<locals>.impl   s    
r*   c                 
     S r%   r&   rf   s     r(   r)   z/gen_non_eq.<locals>.none_equality.<locals>.impl   s
    wr*   r,   r   NoneType)rg   rh   a_noneb_noner)   r'   s        r(   none_equalityz!gen_non_eq.<locals>.none_equality   sH    Au~~.Au~~.fKf_K r*   r&   )r'   rn   s   ` r(   
gen_non_eqro      s    
 r*   TFc                     |j                         }| j                  ||||      }| j                  ||      } || ||||      S )z>
    Deferred.__getattr__ => redirect to the actual type.
    )getrM   get_getattr)r4   r5   typvalueattr
inner_typer'   imps           r(   deferred_getattrrx      sH    
 J
,,wsJ
7C


j$
/CwS$77r*   c                     | j                  ||||j                               }| j                  |   }|j                  ||j	                         |      S r%   )rM   rq   data_model_managersetmake_uninitialized)r4   r5   fromtytotyr'   actualmodels          r(   any_to_deferredr      sJ     \\'3
;F&&t,E99We668&AAr*   c                     | j                   |   }|j                  ||      }| j                  |||j                         |      S r%   )rz   rq   rM   )r4   r5   r}   r~   r'   r   s         r(   deferred_to_anyr      s?     &&v.E
))GS
!C<<fjjlD99r*   c                     |\  }}|j                  ||g      }|j                  |      }t        | ||j                  |      S r%   )geploadr   r\   )r4   r5   r6   r7   base_ptridxelem_ptrr^   s           r(   getitem_cpointerr      s@    MHc{{8cU+H
,,x
 CWgsDDr*   c                 Z    |\  }}}|j                  ||g      }|j                  ||       y r%   )r   store)r4   r5   r6   r7   r   r   r'   r   s           r(   setitem_cpointerr      s.    Hc3{{8cU+HMM#x r*   c                      t        |      t        |      k(  s	J ||f       t        |      dkD  sJ  fd}t        ||      }t        ||      \  }}|S )Nr   c                 Z   | \  }}|\  }}j                   j                  ||      }|J j                  |||      }j                  |||      }t        j                  t
        j                  ||      }j                  |      } |||f      }	j                  |	||      }
||
fS r%   )	typing_contextunify_typesrM   r   r   r   py_boolr0   select)accumulatorrt   acctyaccvtyvtycmpsiggepredr^   r5   cmpopr4   s              r(   binary_minmaxz do_minmax.<locals>.binary_minmax   s     !
sQ##//s;~~ll7C3LL!S"-!!%--R8!!%0'As8$nnT1c*3wr*   )lenzipr   )	r4   r5   argtysr7   r   r   typvalsrestyresvals	   ``  `    r(   	do_minmaxr      sZ    v;#d)#3fd^3#t9q== &$G='2ME6Mr*   c                     t        |j                  d         }t        j                  ||d         }t	        | |||t
        j                        S Nr   )listr7   r   unpack_tupler   r1   gtr4   r5   r6   r7   r   s        r(   max_iterabler      A    #((1+Fa1DWgvtX[[AAr*   c                 P    t        | ||j                  |t        j                        S r%   )r   r7   r1   r   r4   r5   r6   r7   s       r(   
max_varargr          Wgsxxx{{CCr*   c                     t        |j                  d         }t        j                  ||d         }t	        | |||t
        j                        S r   )r   r7   r   r   r   r1   ltr   s        r(   min_iterabler      r   r*   c                 P    t        | ||j                  |t        j                        S r%   )r   r7   r1   r   r   s       r(   
min_varargr      r   r*   c                 "    d| j                   fz  S )Nzllvm.rint.f%d)bitwidth)tps    r(   _round_intrinsicr      s    bkk^++r*   c                 r   |j                   d   }| j                  |      }|j                  }t        j                  ||g      }t        j                  ||t        |            }|j                  ||      }	|j                  |	| j                  |j                              }	t        | ||j                  |	      S r   )r7   get_value_typemoduler   FunctionTyper   get_or_insert_functionr   callfptosir\   r   )
r4   r5   r6   r7   flttylltyr   fntyfnr^   s
             r(   round_impl_unaryr      s    HHQKE!!%(D^^F??4$(D		'	'6Fu6M	NB
,,r4
 C
..g44S__E
FCgwEEr*   c                     |j                   d   }t        j                  t        |      t	        j
                  ||            fd}| j                  ||||      }t        | ||j                  |      S )Nr   c                    t        j                  |       st        j                  |       r| S |dk\  rD|dkD  rd|dz
  z  }d}nd|z  }d}| |z  |z  }t        j                  |      r| S  |      |z  |z  S d| z  }| |z  } |      |z  S )Nr      g      $@gMDg      ?)mathisinfisnan)xndigitspow1pow2y_rounds        r(   round_ndigitsz(round_impl_binary.<locals>.round_ndigits  s    ::a=DJJqMHa<| "-wTT!Azz!}1I$,, WH%DDA!9t##r*   )	r7   r   ExternalFunctionr   r   r   compile_internalr   r\   )r4   r5   r6   r7   r   r   r^   r   s          @r(   round_impl_binaryr      sl    HHQKE ##!1!1%!?AF$. 
"
"7M3
ECgwEEr*   c                     |j                   \  }|\  }| j                  ||||j                        }t        | ||j                  |      S r%   )r7   rM   r\   r   )r4   r5   r6   r7   r   r'   r^   s          r(   int_implr   &  sC     88DRES
,,wR
9CgwEEr*   c                     |j                   \  }| j                  |j                  t        |j                              }t        | ||j                  |      S r%   )r7   get_constantr\   floatrY   r   )r4   r5   r6   r7   r   r^   s         r(   float_literal_implr   /  sC    88DR


sb6F6F0G
HCgwEEr*   c                    |j                   }|j                  }t        |j                        dk(  r|j                  \  }|\  }t	        |t
        j                        r,| j                  ||||      }t        | ||j                   |      S | j                  ||||      }	| j                  |d      }
nTt        |j                        dk(  r<|j                  \  }}|\  }	}
| j                  ||	||      }	| j                  ||
||      }
| j                  ||      }	|_        
|_        |j                         }t        | ||j                   |      S )NrE   r      )r\   underlying_floatr   r7   r,   r   ComplexrM   r   r   make_complexrealimag	_getvalue)r4   r5   r6   r7   complex_type
float_typeargtyargr^   r   r   realtyimagtycmplxs                 r(   complex_implr   6  s%   ??L..J
388}((eU]]+,,wULAC%gwMM<<eZ@D''
A6D	SXX!	88t||GT6:>||GT6:>  ,7EEJEJ
//
CgwEEr*   c                 :   t        |j                  t        j                        rG|j                  j                  fd}| j                  ||||      }t        | ||j                  |      S |\  }|j                  \  }| j                  ||||j                        S )z1
    Call a number class, e.g. np.int32(...)
    c                  2    t        j                  |       S )N)dtype)nparray)arg_hackdts    r(   fooznumber_constructor.<locals>.fooZ  s    88HB//r*   )	r,   r\   r   Arrayr   r   r   r7   rM   )	r4   r5   r6   r7   r   r^   r'   valtyr   s	           @r(   number_constructorr   R  s    
 #//5;;/__""	0&&wS$?!'7COOSII ((||GS%AAr*   c                 "    | j                         S r%   get_dummy_valuer4   r5   r   pyvals       r(   constant_dummyr   h  s     ""$$r*   c                     | j                  |      }| j                  ||j                  |      t        |            }|j	                  ||      S )N)info)get_function_pointer_typeadd_dynamic_addrget_pointerstrbitcast)r4   r5   r   r   ptrtyptrvals         r(   constant_function_pointerr  m  sL    --b1E%%gr~~e/D+.u: & 7F??65))r*   c                 x    || j                  ||j                        S | j                  ||j                  |      S r%   )make_optional_nonetypemake_optional_valuer   s       r(   constant_optionalr  u  s7    }))'277;;**7BGGUCCr*   c                 "    | j                         S )z&
    One-argument type() builtin.
    r   r   s       r(   	type_implr    s    
 ""$$r*   c                 F    |j                   \  }|\  }t        | |||      }|S r%   )r7   r   )r4   r5   r6   r7   r   r'   itervals          r(   	iter_implr    s)    
((CBDC7GR5GNr*   c                 L   |j                   \  }|\  }t        | |||      }|j                  |j                  |j	                               d      5  | j
                  j                  |t        d       d d d        |j                         S # 1 sw Y   |j                         S xY w)NF)likelyr&   )	r7   r   if_thenr3   is_valid	call_convreturn_user_excStopIterationyielded_value)r4   r5   r6   r7   itertyr  r^   s          r(   	next_implr    s    hhGFHG
&'
:C	clln5e	D F))'="EF F s   "BB#znot inc                 R    d }| j                  ||||      }|j                  |      S )Nc                 .    t        j                  ||       S r%   )r1   containsrg   rh   s     r(   in_implznot_in.<locals>.in_impl  s      A&&r*   )r   r3   )r4   r5   r6   r7   r   r^   s         r(   not_inr!    s.    ' 
"
"7GS$
?C<<r*   c                     |j                   \  }|j                  }| j                  |t        |j                              }t        | ||j                  |      S r%   )r7   r\   r   r   r   r   )r4   r5   r6   r7   r   rettyr^   s          r(   constsized_lenr$    sE    88DROOE


uc"((m
4CgwEEr*   c                 t    |j                   \  }t        |      rt        j                  S t        j                  S r%   )r7   r   r   true_bitr>   )r4   r5   r6   r7   r   s        r(   
sized_boolr'    s,    88DR
2w   r*   c                 l    |j                   }| j                  |      }t        | ||j                   |      S r%   )r\   get_constant_undefr   )r4   r5   r6   r7   r#  r^   s         r(   lower_empty_tupler*    s0    OOE

$
$U
+CgwEEr*   c                 :    |\  }t        | ||j                  |      S r%   )r   r\   )r4   r5   r6   r7   r'   s        r(   lower_tupler,    s    DCWgsDDr*   c                     t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  f}t        | |      rd }|S y )Nc                     t        |       dkD  S r   )r   r   s    r(   	bool_implz bool_sequence.<locals>.bool_impl  s    q6A:r*   )r   CharSeqUnicodeCharSeqDictTypeListTypeUnicodeTypeSetr,   )r   valid_typesr0  s      r(   bool_sequencer8    sU     			K ![!	 "r*   always)inlinec                 B    t        | t        j                        s| d S y )Nc                      yNFr&   r/  s    r(   <lambda>zbool_none.<locals>.<lambda>  s    r*   rj   r/  s    r(   	bool_noner?    s    !U^^$	 )2r*   c                     t        | t        j                        rt        j                  S t        | t        j
                        r| j                  S t        d      NzUnsupported type)r,   r   Floatr   infIntegermaxvalr   rs   s    r(   get_type_max_valuerG    s=    #u{{#vv#u}}%zz
+
,,r*   c                     t        | t        j                        rt        j                   S t        | t        j
                        r| j                  S t        d      rA  )r,   r   rB  r   rC  rD  minvalr   rF  s    r(   get_type_min_valuerJ    s?    #u{{#w#u}}%zz
+
,,r*   c                       e Zd Zd Zy)MinValInferc                     |rJ t        |      dk(  sJ t        |d   t        j                  t        j                  f      rt        |d   j                  g| S y )NrE   r   )r   r,   r   DTypeNumberClassr   r   )selfr7   kwss      r(   genericzMinValInfer.generic  sT    w4yA~~d1gU->->?@T!W]]2T22 Ar*   N)__name__
__module____qualname__rR  r&   r*   r(   rL  rL    s    3r*   rL  c                 J   |j                   d   j                  }t        |t        j                        rE|j
                  }t        j                  |      }|j                  }t        j                  ||      }nt        |t        j                        r|j
                  }|dk(  rt        j                         }n%|dk(  rt        j                         }nt        d      t        t        dj!                  |            }	t        j                  |t        j"                         }ntt        |t        j$                  t        j&                  f      rJd}t        j                  |      }t        j(                  j                  dz   }t        j                  ||      }t+        | |      S )Nr       @   +llvmlite only supports 32 and 64 bit floatsfloat{}rE   )r7   r   r,   r   rD  r   r   r[   rI  rZ   rB  	FloatType
DoubleTyper=   getattrr   formatrC  
NPDatetimeNPTimedeltaint64r   
r4   r5   r6   r7   rs   bwltyr'   r^   nptys
             r(   lower_get_type_min_valuerf    s*    ((1+

C#u}}%\\jjnjjkk#s#	C	%\\8,,.C2X--/C%&STTr9++B/0kk#w'	C%**E,=,=>	?jjnkk  1$kk#s#gwS99r*   c                 B   |j                   d   j                  }t        |t        j                        rE|j
                  }t        j                  |      }|j                  }t        j                  ||      }nt        |t        j                        r|j
                  }|dk(  rt        j                         }n%|dk(  rt        j                         }nt        d      t        t        dj!                  |            }	t        j                  |t        j"                        }nqt        |t        j$                  t        j&                  f      rGd}t        j                  |      }t        j(                  j                  }t        j                  ||      }t+        | |      S )Nr   rW  rX  rY  rZ  )r7   r   r,   r   rD  r   r   r[   rE  rZ   rB  r[  r\  r=   r]  r   r^  rC  r_  r`  ra  r   rb  s
             r(   lower_get_type_max_valuerh    s#    ((1+

C#u}}%\\jjnjjkk#s#	C	%\\8,,.C2X--/C%&STTr9++B/0kk#rvv&	C%**E,=,=>	?jjnkk  kk#s#gwS99r*   )
IndexValueIndexValueType)r   register_jitablec                     |j                   }|\  }} t        j                  |      | |      }||_        ||_        |j                         S r%   )r\   r   create_struct_proxyindexrt   r   )r4   r5   r6   r7   rs   rn  rt   index_values           r(   impl_index_valuerp  -  sN     //CLE52'--c27GDKKK  ""r*   c                 P    t        | t              rt        |t              rd }|S y y )Nc                    t        j                  | j                        r>t        j                  |j                        r| j                  |j                  k  r| S |S | S t        j                  |j                        r|S | j                  |j                  kD  r|S | j                  |j                  k(  r| j                  |j                  k  r| S |S | S r%   r   r   rt   rn  indval1indval2s     r(   min_implzindval_min.<locals>.min_impl=      xx&88GMM*}}w}}4&& #N'--(.'--/==7==0"N"NNr*   r,   rj  )ru  rv  rw  s      r(   
indval_minrz  9  ,    '>*'>*	, / + +r*   c                 x    t        | t        j                        r t        |t        j                        rd }|S y y )Nc                     | xr |S r%   r&   val1val2s     r(   bool_min_implz"boolval_min.<locals>.bool_min_implZ  s    =D r*   r+   )r  r  r  s      r(   boolval_minr  V  s3    $&$&	! ' 'r*   c                 P    t        | t              rt        |t              rd }|S y y )Nc                    t        j                  | j                        r>t        j                  |j                        r| j                  |j                  k  r| S |S | S t        j                  |j                        r|S |j                  | j                  kD  r|S | j                  |j                  k(  r| j                  |j                  k  r| S |S | S r%   rs  rt  s     r(   max_implzindval_max.<locals>.max_implc  rx  r*   ry  )ru  rv  r  s      r(   
indval_maxr  _  r{  r*   c                 x    t        | t        j                        r t        |t        j                        rd }|S y y )Nc                     | xs |S r%   r&   r~  s     r(   bool_max_implz"boolval_max.<locals>.bool_max_impl  s    <4r*   r+   )r  r  r  s      r(   boolval_maxr  |  s3    $&$&	  ' 'r*   c                     | |kD  S r%   r&   r  s     r(   r>  r>    s
    QU r*   c                     | |k  S r%   r&   r  s     r(   r>  r>    s
    !a% r*   c                 H    t        | t        j                        rfd}|S y )Nc                 Z    t        |       }t        |      }|D ]  } ||      s|} |S r%   )iternext)iterableit
return_valr'   ops       r(   r)   zmin_max_impl.<locals>.impl  s;    hBbJ %c:&!$J% r*   )r,   r   IterableType)r  r  r)   s    ` r(   min_max_implr    s$    (E../	  0r*   c                 "    t        | t              S r%   )r  	less_thanr  s    r(   iterable_minr    s    ),,r*   c                 "    t        | t              S r%   )r  greater_thanr  s    r(   iterable_maxr    s    ,//r*   c                    |j                   }d }t        j                  j                  |j                        }t        j                  |t        j                  |      |      }t        |      dkD  r$| j                         | j                  |||      f}n#| j                         | j                  ||d      f}| j                  ||||      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                     t        | g| S r%   )r   )clsr7   s     r(   	call_ctorz%redirect_type_ctor.<locals>.call_ctor  s    !#---r*   r   r&   )r\   r   Tuple
from_typesr7   r   r   TypeRefr   r   
make_tupler   )r4   r5   r6   r7   r  r  	ctor_argss          r(   redirect_type_ctorr    s     //C. &&sxx0I


3c 2I
>C
9~'')""7It<> '')""7Ir:< ##GYTBBr*   c                 $   d }t        |t        j                        rd}n9t        |t        j                        rd}nt        |t        j                        rd}| dj
                  | }t        |      t        | t        j                  j                  t        j                  t        j                  t        j                  t        j                  f      rt        n,t        | t        j                  j                        rt        ny dfd	}|S )N)strings )bytesrh   )	bytearrayrh   z/sum() can't sum {} [use {}''.join(seq) instead]c                 0    |} |       D ]  }||z   }	 |S r%   r&   )r  startr   r   iterators       r(   r)   zol_sum.<locals>.impl  s,    (# 	A'C	 
r*   r   )r,   r   r5  Bytes	ByteArrayr^  r   
containers_HomogeneousTupleListr4  r   	RangeTyper  _HeterogeneousTupler!   )r  r  errorrA   r)   r  s        @r(   ol_sumr    s     E%**+	E5;;	'	E5??	+"F?FFN# (U--??"^^U[[%//K L	Hu//CC	E " Kr*   c                     d }|S )Nc              7   <   K   t        |g| D ]	  } | |   y wr%   )r   )funcr  r7   r   s       r(   r)   zol_map.<locals>.impl  s(     X%% 	A(N	s   r&   )r  r  r7   r)   s       r(   ol_mapr    s     Kr*   c                 N    | t        | t        j                        rd }|S d }|S )Nc              3   (   K   |D ]	  }|s|  y wr%   r&   r  r  r   s      r(   r)   zol_filter.<locals>.impl  s      Gs   c              3   4   K   |D ]  } | |      s|  y wr%   r&   r  s      r(   r)   zol_filter.<locals>.impl  s!      7Gs   rj   )r  r  r)   s      r(   	ol_filterr    s,    D%..9	 K		 Kr*   c                 	   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        j0                  t        j2                  t        j4                  f}t        ||      sd| d}t	        |      |}t        |t        j                        r|j6                  d   }t        |t        j                        s|f}|D ]  }t        |t        j                        r|j6                  d   }	n)t        |t        j                         r|}	n|j6                  }	t8        t        j                  t:        t        j                  t<        t        j                  t        j                  ft>        t        j                  t@        t        jB                  tD        t        j                  i}
|	|
v rt        ||
|	         r|c S t        |t        jF                        rD|	t        j                  t        j                  fvrd}t	        |      tI        |      |	u r|c S |c S t        |	      }||k(  r|c S t        |t        j2                  t        j4                  f      rt        |tI        |            s|c S t        |t        j                         rAt        |t        j$                        r'|j6                  |jJ                  j6                  k(  r|c S t        |t        jL                        s'|j6                  d   t        jN                  k(  sIt        ||jP                        s8t        |t        jB                        s{t        |t        jB                        s|c S  |S )	Nc                      y)NTr&   vartypss     r(   	true_implz ol_isinstance.<locals>.true_impl  s    r*   c                      yr=  r&   r  s     r(   
false_implz!ol_isinstance.<locals>.false_impl  s    r*   z1isinstance 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  r  r3  LiteralStrKeyDictr  r4  r  UniTupler6  Function	ClassTyper5  ClassInstanceTyperk   r   r-   rB  r2  r   r_  r`  keyr  rangedictr   tuple	BaseTupler{   r  r
  instance_type	Container	undefined	__class__)r  r  r  r  var_tyrA   supported_var_tyt_typsrs   r  types_not_registered	numba_typs               r(   ol_isinstancer    s$    3F&%..)A&KS!! ekk5??(?(?U^^UYY9J9J//u{{E4H4Hu'7'79J9JM f./A&LS!!F &%..)**Q-fekk* 5%c5>>*''!*CU__-C''C
 5;;5??5>>5#:#:;%**5?? 
 &&&"6s";<  c5==) 5>>5>>::3$S)) !%V 39CC%c*I"  I(8(8%:K:K'LMfd9o6$$Iu7vu'>'>?JJ)"9"9"="==  Iu7MM!$7fi&9&9:8"9eoo>$$k5%n r*   c                      y r%   r&   objnames     r(   _getattr_raise_attr_excr  f  s     	r*   c                     t        |t        j                        st        d      |j                  }d|  d| dfd}|S )N(argument 'name' must be a literal string'z' has no attribute 'c                     t              r%   )AttributeError)r  r  messages     r(   r)   z(ol__getattr_raise_attr_exc.<locals>.impls  s    W%%r*   )r,   r   StringLiteralr   rY   )r  r  lnamer)   r  s       @r(   ol__getattr_raise_attr_excr  l  sI    dE//0!"LMME#*5'3G&Kr*   c                   	
 t        |t        j                        st        d      |j                  
| j                  
      t        t        j                        rd d
 d d}t        |      t        t        j                        rj                  t        k(  s |      }fd}||fS | j                  t              		j                  | |fi       t        j                  |      }	fd}||fS  |      }t        t        j                        r
fd}||fS | j                  
      
fd	}||fS )
Nr  zQReturning function objects is not implemented. getattr() was requested to return z from attribute 'z' of .c                 L    |d   }| j                   j                  ||       |S N)nrtincref)cgctxr5   r6   llargstmpdefaults        r(   r)   zresolve_getattr.<locals>.impl  s'    Rj		  '37
r*   c                 @    | j                        } |||d d       S r  )r0   )r  r5   r6   r  native_implr   	raise_sigs        r(   r)   zresolve_getattr.<locals>.impl  s(    #00yA"7F3BK88r*   c                     j                   }| j                  ||d   |      }| j                  |||      }| j                  j	                  ||       |S r   )thisrM   get_bound_functionr  r  )	r  r5   r6   ll_args	cast_typecastedr^   r   r  s	          r(   r)   zresolve_getattr.<locals>.impl  sS    GG	GWQZiH..w	J		  "c2
r*   c                     | j                  
	      } || |
|d   	      }| j                  ||      }| j                  j                  ||       |S r   )rr   rM   r  r  )r  r5   r6   r  	attr_implr^   r  attrtyr   r  r  s          r(   r)   zresolve_getattr.<locals>.impl  sZ    !--c59	wWQZGGS&"=		  "f5r*   )r,   r   r  r   rY   resolve_getattrr  r   
NamedTupleinstance_class_getattr_default_typeresolve_value_typer  get_call_typenoneBoundFunction)tyctxr  r  r  rA   r6   r)   r  r   r   r  r  s    ` `   @@@@@r(   r  r  x  sf   dE//0!"LMME			sE	*B "enn%4464 8'se1& #	z 7E$4$45&&*??#tW-CB 97 ++,CDD**53+rBI**S$0C90 9' dG$b%--.  9 **36F 9r*   r
  r  )prefer_literalc                     d }|S )Nc                 $    t        | |t              S r%   )r  _getattr_defaultr  s     r(   r)   zol_getattr_2.<locals>.impl  s    sD*:;;r*   r&   r  r  r)   s      r(   ol_getattr_2r    s    <Kr*   c                     d }|S )Nc                     t        | ||      S r%   )r  )r  r  r  s      r(   r)   zol_getattr_3.<locals>.impl  s    sD'22r*   r&   )r  r  r  r)   s       r(   ol_getattr_3r    s    3Kr*   c                    t        |t        j                        st        d      |j                  }| j                  ||      t        j                  d      }nt        j                  d      } |||      }fd}||fS )Nr  FTc                 H    t         j                  S t         j                  S r%   )r   r>   r&  )r  r5   r6   r  r   s       r(   r)   zresolve_hasattr.<locals>.impl  s    #%:gC73C3CCr*   )r,   r   r  r   rY   r  literal)r  r  r  r  r#  r6   r)   r   s          @r(   resolve_hasattrr    s{    dE//0!"LMME			sE	*B 
ze$d#
T
CD9r*   c                     d }|S )Nc                     t        | |      S r%   )r  r  s     r(   r)   zol_hasattr.<locals>.impl  s    sD))r*   r&   r  s      r(   
ol_hasattrr    s    *Kr*   c                     d|  dfd}|S )Nz<object type:>c                 L    d}t        | |      dk(  r t        | |             S S )N__repr__T)hasattrr]  )r  ru   missing_repr_formats     r(   r)   zol_repr_generic.<locals>.impl  s1    3%%73%'' '&r*   r&   )r  r)   r%  s     @r(   ol_repr_genericr&    s    )#a0' Kr*   c                     dd}|S )Nc                 \    d}t        | |      dk(  r t        | |             S t        |       S )N__str__T)r$  r]  repr)objectru   s     r(   r)   zol_str_generic.<locals>.impl  s2    64 D((764(**<r*   r  r&   )r+  r)   s     r(   ol_str_genericr-    s      Kr*   r  r,  )collectionsr   r   	functoolsr   numpyr   r1   warnings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.typing.templatesr   r   r   numba.core.errorsr   r   r   r   r   r    numba.misc.specialr!   numba.core.typing.asnumbatyper"   truthr.   is_notAnyr9   r2   rC   OpaquerK   r-   rU   r<   LiteralIntegerLiteralr_   nerb   ro   DeferredTyperx   r  r   r   getitemCPointerrD  r   setitemr   r   maxr  r   VarArgr   minr   r   r   roundrB  r   r   intr   r   r  r   complexr   rO  r   Dummyr   ExternalFunctionPointerr  r  r
  r  r  r  r  r  IteratorTyper  r!  r   
ConstSizedr$  boolSizedr'  r  r*  r,  r8  r?  rG  rJ  rL  rN  rf  rh  numba.core.typing.builtinsri  rj  numba.extendingrk  py_intTypenp_intpnp_uintprp  rz  r  r  r  r  r  r  r  r  r  r  sumr  mapr  filterr  r,   r  r  r  r  r
  r  r]  r  r  r  r$  r  r*  r&  r  r-  r&   r*   r(   <module>r[     sz	   "      I I I I
 5 4 4 *4 48 8 . 7 
(..  x		59950 60 x||UYY		2! 3!2 x||U\\5<<8! 9! x||U]]EMM:, ;,$ x{{EMM5==9x{{E00%2F2FGF H :F x{{EMM5==9x{{E00%2F2FGF H :F  j& '  j' ( u))*8 +8 EIIu))*ENNE../EMM5--.B / 0 +B
 E		*E.E/: 0 / +: x?E @E x		J! K!0 sEOO$B %B
 sLELL+,D -D sEOO$B %B
 sLELL+,D -D, uekk"	F #	F uekk5==1F 2FJ sEIIueii F ! F ue))*F +F wUYY/0F 1F6 u  %)),B -B* % % --.* /* D  D tUYY%  % tU''( ) tU''(	 )	 xEII. / sE$$%F &F tU[[!! "! uF F
 ueoo&E 'E 
$  
$x  !--  ! !3" 3 " "3 !5#4#45!5;;/: 0 6:2 !5#4#45!5;;/: 0 6:6 B 6z5<<4z5==%**5z5>>5::6# 7 6 5# 
# 8 
#  
# 8 
#    23/0	 	 	 
#- - 
#0 0 u}}lell59956C 7C> 
#   N 
#  
&  
*a aL	 

!" # 5 5r ##:B? (*  
'$' ( 
'   2 
'  
$
 
 
# r*   