
    xKg                     *   d dl mZ d dlZd dlmZ d dlZd dlZd dlZd dl	m
Z
 d dlmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZmZmZ d dlmZmZ d dlm Z  d d	l!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' d d
l(m)Z) d dl*m+Z+  eejX                        d        Z- eej\                  ej^                  ej^                        d        Z0 eejb                  ej^                  ej^                        d        Z2 eejb                  ejf                  ejf                        d        Z4 eejb                  ejj                  ejj                        d        Z6 eejn                  ejp                  ejp                         eejn                  ejr                  ejr                        d               Z: eejv                  ejp                  ejp                         eejv                  ejr                  ejr                        d               Z<d Z=  eejn                         e=d               eejv                         e=d              eej|                        d        Z? eej^                  ej|                         eej                  ej|                         eejj                  ej|                        d                      ZA eej|                  ej^                         eej|                  ejj                         eej|                  ej                        d                      ZB eej                  ej                  ej                        d        ZF eej                  ej                  ej                  ej^                        d        ZHd ZI eeJej                        d        ZL eeJ ej                  ej^                              d        ZN eeOej                        d        ZP eeO ej                  ej^                              d        ZQd  ZR eeSej                        d!        ZU eeSej                  ej                        d"        ZV eeWej^                         eeXej^                        d#               ZY eeXej                        d$        Z[ ee\ ej                  ej^                              d%        Z] eej                  ej^                        d&        Z_ eej                        d'        Za eej                        d(        Zc eej                        d)        Zd eeeej^                        d*        Zf eegej                        d+        Zi eejej                        d,        Zl ed-ej^                  ej^                        d.        Zm eenej                        d/        Zp eeqej                        d0        Zs eet      d1        Zu eetej                        d2        Zv eeq      d3        Zw eeqd45      d6        Zxd7 Zyd8 Zz eezej                         eezej                        d9               Z| eeyej                         eeyej                        d:               Z}d d;l~mZmZ d d<lmZmZ  eeej                  ej                         eeej
                  ej                        d=               Z eeO      d>        Z eeO      d?        Z eeJ      d@        Z eeJ      dA        Z edB       Z edC       ZedD        Z eeO      dE        Z eeJ      dF        Z eej                    ej                  ej^                              dG        Z ee      dXdH       Z ee      dI        Z ee      dJ        Z ee      dK        ZdL Z ee      dM        ZedN        Z edOdP      Z e       Z eedQ      dR        Z ee      dS        ZedT        Z ee      dU        Z ee      dV        Z ee      dYdW       Zy)Z    )
namedtupleN)reduce)ir)lower_builtinlower_getattrlower_getattr_generic
lower_castlower_constantiternext_implcall_getitercall_iternextimpl_ret_borrowedimpl_ret_untrackednumba_typeref_ctor)typingtypesutilscgutils)overload	intrinsic)
Conversion)TypingErrorLoweringErrorNumbaExperimentalFeatureWarningNumbaTypeErrorRequireLiteralValueNumbaPerformanceWarning)literal_unroll)as_numba_typec                 B    t        | t        j                        rd }|S y )Nc                     | S N )vals    Z/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/cpython/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_notr6   #   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)	r4   mutabler   r-   r.   eqNotImplementedErrorr   	false_bit)r1   r2   r3   r4   lhs_typerhs_typemsgeq_impls           r%   
generic_isr@   ,   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==)r4   ptrtointr   intp_ticmp_unsignedr;   )r1   r2   r3   r4   r<   r=   lhs_ptrrhs_ptrs           r%   	opaque_isrH   F   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.
    )	r4   castr   booleanr-   r.   r9   r   	signature)r1   r2   r3   r4   arg1arg2	arg1_type	arg2_type_arg1_arg2r?   s              r%   bool_is_implrS   V   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   rB   r4   literal_valuer   ConstantIntTyper   return_typer1   r2   r3   r4   rM   rN   r$   ress           r%   const_eq_implr]   i   \     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 rU   rV   r[   s           r%   const_ne_implr`   u   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#   rd   s     r%   r&   z/gen_non_eq.<locals>.none_equality.<locals>.impl   s
    wr'   r)   r   NoneType)re   rf   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$   rl   s   ` r%   
gen_non_eqrm      s    
 r'   TFc                     |j                         }| j                  ||||      }| j                  ||      } || ||||      S )z>
    Deferred.__getattr__ => redirect to the actual type.
    )getrJ   get_getattr)r1   r2   typvalueattr
inner_typer$   imps           r%   deferred_getattrrv      sH    
 J
,,wsJ
7C


j$
/CwS$77r'   c                     | j                  ||||j                               }| j                  |   }|j                  ||j	                         |      S r"   )rJ   ro   data_model_managersetmake_uninitialized)r1   r2   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"   )rx   ro   rJ   )r1   r2   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   rZ   )r1   r2   r3   r4   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)r1   r2   r3   r4   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_typesrJ   r   rL   r   rK   r-   select)accumulatorrr   acctyaccvtyvtycmpsiggepredr\   r2   cmpopr1   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   )	r1   r2   argtysr4   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   )listr4   r   unpack_tupler   r.   gtr1   r2   r3   r4   r   s        r%   max_iterabler      A    #((1+Fa1DWgvtX[[AAr'   c                 P    t        | ||j                  |t        j                        S r"   )r   r4   r.   r   r1   r2   r3   r4   s       r%   
max_varargr          Wgsxxx{{CCr'   c                     t        |j                  d         }t        j                  ||d         }t	        | |||t
        j                        S r   )r   r4   r   r   r   r.   ltr   s        r%   min_iterabler      r   r'   c                 P    t        | ||j                  |t        j                        S r"   )r   r4   r.   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   )r4   get_value_typemoduler   FunctionTyper   get_or_insert_functionr   callfptosirZ   r   )
r1   r2   r3   r4   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'   )	r4   r   ExternalFunctionr   r   rL   compile_internalr   rZ   )r1   r2   r3   r4   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"   )r4   rJ   rZ   r   )r1   r2   r3   r4   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"   )r4   get_constantrZ   floatrW   r   )r1   r2   r3   r4   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 )NrB   r      )rZ   underlying_floatr   r4   r)   r   ComplexrJ   r   r   make_complexrealimag	_getvalue)r1   r2   r3   r4   complex_type
float_typeargtyargr\   r   r   realtyimagtycmplxs                 r%   complex_implr   4  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>.fooX  s    88HB//r'   )	r)   rZ   r   Arrayr   r   r   r4   rJ   )	r1   r2   r3   r4   r   r\   r$   valtyr   s	           @r%   number_constructorr   P  s    
 #//5;;/__""	0&&wS$?!'7COOSII ((||GS%AAr'   c                 "    | j                         S r"   get_dummy_valuer1   r2   r   pyvals       r%   constant_dummyr   f  s     ""$$r'   c                     | j                  |      }| j                  ||j                  |      t        |            }|j	                  ||      S )N)info)get_function_pointer_typeadd_dynamic_addrget_pointerstrbitcast)r1   r2   r   r   ptrtyptrvals         r%   constant_function_pointerr  k  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	  s  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"   )r4   r   )r1   r2   r3   r4   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#   )	r4   r   if_thenr0   is_valid	call_convreturn_user_excStopIterationyielded_value)r1   r2   r3   r4   itertyr  r\   s          r%   	next_implr    s    hhGFHG
&'
:C	clln5e	D))'="E 
E  
E s   "BB#znot inc                 R    d }| j                  ||||      }|j                  |      S )Nc                 .    t        j                  ||       S r"   )r.   containsre   rf   s     r%   in_implznot_in.<locals>.in_impl  s      A&&r'   )r   r0   )r1   r2   r3   r4   r  r\   s         r%   not_inr    s.    ' 
"
"7GS$
?C<<r'   c                     |j                   \  }|j                  }| j                  |t        |j                              }t        | ||j                  |      S r"   )r4   rZ   r   r   r   r   )r1   r2   r3   r4   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"   )r4   r   r   true_bitr;   )r1   r2   r3   r4   r   s        r%   
sized_boolr$    s,    88DR
2w   r'   c                 l    |j                   }| j                  |      }t        | ||j                   |      S r"   )rZ   get_constant_undefr   )r1   r2   r3   r4   r   r\   s         r%   lower_empty_tupler'    s0    OOE

$
$U
+CgwEEr'   c                 :    |\  }t        | ||j                  |      S r"   )r   rZ   )r1   r2   r3   r4   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_typesr-  s      r%   bool_sequencer5    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'   rh   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:   rq   s    r%   get_type_max_valuerD    s=    #u{{#vv#u}}%zz
0
11r'   c                     t        | t        j                        rt        j                   S t        | t        j
                        r| j                  S t        d      r>  )r)   r   r?  r   r@  rA  minvalr:   rC  s    r%   get_type_min_valuerG    s?    #u{{#w#u}}%zz
0
11r'   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{}rB   )r4   r   r)   r   rA  r   r   rY   rF  rX   r?  	FloatType
DoubleTyper:   getattrr   formatr@  
NPDatetimeNPTimedeltaint64r   
r1   r2   r3   r4   rq   bwltyr$   r\   nptys
             r%   lower_get_type_min_valuerX    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   rI  rJ  rK  rL  )r4   r   r)   r   rA  r   r   rY   rB  rX   r?  rM  rN  r:   rO  r   rP  r@  rQ  rR  rS  r   rT  s
             r%   lower_get_type_max_valuerZ    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"   )rZ   r   create_struct_proxyindexrr   r   )r1   r2   r3   r4   rq   r`  rr   index_values           r%   impl_index_valuerb  "  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   rr   r`  indval1indval2s     r%   min_implzindval_min.<locals>.min_impl1      xx&88GMM*}}w}}4&& #N'--(.'--/==7==0"N"NNr'   r)   r\  )rg  rh  ri  s      r%   
indval_minrl  -  ,    '>*'>*	, / + +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_implN  s    =D r'   r(   )rq  rr  rs  s      r%   boolval_minrt  J  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"   re  rf  s     r%   max_implzindval_max.<locals>.max_implW  rj  r'   rk  )rg  rh  rw  s      r%   
indval_maxrx  S  rm  r'   c                 x    t        | t        j                        r t        |t        j                        rd }|S y y )Nc                     | xs |S r"   r#   rp  s     r%   bool_max_implz"boolval_max.<locals>.bool_max_implt  s    <4r'   r(   )rq  rr  r{  s      r%   boolval_maxr|  p  s3    $&$&	  ' 'r'   c                     | |kD  S r"   r#   r  s     r%   r;  r;  y  s    QUr'   c                     | |k  S r"   r#   r  s     r%   r;  r;  z  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  s6    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   )clsr4   s     r%   	call_ctorz%redirect_type_ctor.<locals>.call_ctor  s    !#---r'   r   r#   )rZ   r   Tuple
from_typesr4   r   rL   TypeRefr   r   
make_tupler   )r1   r2   r3   r4   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 )bytesrf   )	bytearrayrf   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   r2  Bytes	ByteArrayrP  r   
containers_HomogeneousTupleListr1  r   	RangeTyper  _HeterogeneousTupler   )r  r  errorr>   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  r4   r   s       r%   r&   zol_map.<locals>.impl  s#     X%%A(N &s   r#   )r  r  r4   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   rh   )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  r0  LiteralStrKeyDictr  r1  r  UniTupler3  Function	ClassTyper2  ClassInstanceTyperi   r   r*   r?  r/  r   rQ  rR  keyr  rangedictr   tuple	BaseTuplery   r  r  instance_type	Container	undefined	__class__)r  r  r  r  var_tyr>   supported_var_tyt_typsrq   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*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 n r'   c                      y r"   r#   objnames     r%   _getattr_raise_attr_excr  Z  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>.implg  s    W%%r'   )r)   r   StringLiteralr   rW   )r  r  lnamer&   r  s       @r%   ol__getattr_raise_attr_excr  `  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)cgctxr2   r3   llargstmpdefaults        r%   r&   zresolve_getattr.<locals>.impl  s'    Rj		  '37
r'   c                 @    | j                        } |||d d       S r  )r-   )r  r2   r3   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   )thisrJ   get_bound_functionr  r  )	r  r2   r3   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   )rp   rJ   r  r  )r  r2   r3   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   rW   resolve_getattrr  r   
NamedTupleinstance_class_getattr_default_typeresolve_value_typer  get_call_typenoneBoundFunction)tyctxr  r  r  r>   r3   r&   r  r   r   r  r  s    ` `   @@@@@r%   r  r  l  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  r2   r3   r  r   s       r%   r&   zresolve_hasattr.<locals>.impl  s    #%:gC73C3CCr'   )r)   r   r  r   rW   r  literal)r  r  r  r  r   r3   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)hasattrrO  )r  rs   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  rO  repr)objectrs   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   r.   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.errorsr   r   r   r   r   r   numba.misc.specialr   numba.core.typing.asnumbatyper   truthr+   is_notAnyr6   r/   r@   OpaquerH   r*   rS   r9   LiteralIntegerLiteralr]   ner`   rm   DeferredTyperv   r  r   r   getitemCPointerrA  r   setitemr   r   maxr  r   VarArgr   minr   r   r   roundr?  r   r   intr   r   r  r   complexr   NumberClassr   Dummyr   ExternalFunctionPointerr  r	  r  r  r  r  r  r  IteratorTyper  r  r   
ConstSizedr!  boolSizedr$  r  r'  r)  r5  r<  rD  rG  DTyperX  rZ  numba.core.typing.builtinsr[  r\  numba.extendingr]  intpTypeuintprb  rl  rt  rx  r|  r  r  r  r  r  r  r  sumr  mapr  filterr  r)   r  r  r  r  r  r  rO  r  r
  r  r  r  r  r  r   r  r#   r'   r%   <module>rM     s'	   "      I I I I
 5 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  !22 !5#4#45!5;;/: 0 6:2 !5#4#45!5;;/: 0 6:6 B 6z5::uzz2z5;;

3# 4 3# 
# 8 
#  
# 8 
#    23/0	 	 	 
#- - 
#0 0 u}}lell59956C 7C> 
#   N 
#  
&  
*a aL	 

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