
    J/Phv                        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             Z1 eej2        ej3        ej3                  d             Z4 eej5        ej3        ej3                  d             Z6 eej5        ej7        ej7                  d             Z8 eej5        ej9        ej9                  d             Z: eej;        ej<        ej<                   eej;        ej=        ej=                  d                         Z> eej?        ej<        ej<                   eej?        ej=        ej=                  d                         Z@d ZA  eej;                   eAd                       eej?                   eAd                      eejB                  d             ZC eej3        ejB                   eejD        ejB                   eej9        ejB                  d                                     ZE eejB        ej3                   eejB        ej9                   eejB        ejD                  d                                     ZF eejG        ejH        ejI                  d             ZJ eejK        ejH        ejI        ej3                  d             ZLd ZM eeNejO                  d             ZP eeN ejQ        ej3                            d             ZR eeSejO                  d             ZT eeS ejQ        ej3                            d              ZUd! ZV eeWejX                  d"             ZY eeWejX        ejI                  d#             ZZ ee[ej3                   ee\ej3                  d$                         Z] ee\ej^                  d%             Z_ ee` ejQ        ej3                            d&             Za eejb        ej3                  d'             Zc eejd                  d(             Ze eejf                  d)             Zg eejD                  d*             Zh eeiej3                  d+             Zj eekejl                  d,             Zm eenejo                  d-             Zp ed.ej3        ej3                  d/             Zq eerejs                  d0             Zt eeuejv                  d1             Zw eex          d2             Zy eexejO                  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jb                   ee~ej                  d<                         Z ee}ejb                   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jQ        ej3                            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            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                 D    t          | t          j                  rd }|S d S )Nc                     | S N )vals    Z/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/cpython/new_builtins.pyimplzol_truth.<locals>.impl    s    J    
isinstancer   Boolean)r'   r)   s     r(   ol_truthr.      s4    #u}%% 	 	 	 r*   c                     |                      t          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   %   s9    
 ""8<55G<<..///r*   c                     |j         \  }}||k    ra|j        rd}t          |          	 |                     t          j        |          } |||          S # t          $ r t          j        cY S w xY wt          j        S )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 26#C(((2%228;DDG
 #77D111	 + - - -",,,,-   s    A A/.A/c                     |j         \  }}||k    rc|                    |d         t          j                  }|                    |d         t          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   sr    
 Hh8""47GN;;""47GN;;$$T7G<<<  r*   c                 h   |\  }}|j         \  }}|                     |||t          j                  }|                     |||t          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$8IyLL$	5=AAELL$	5=AAE""u}EE G 77UEN+++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   Y     JD$
CT///
+bjmmS
)
)CgwEEEr*   c                     |j         \  }}d}|j        |j        k    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 d S )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   s    Au~..Au~.. 	f 	    Kf_ 	    K	 	r*   r&   )r'   rn   s   ` r(   
gen_non_eqro      s$    
 
 
 
 
 r*   TFc                     |                                 }|                     ||||          }|                     ||          } || ||||          S )z>
    Deferred.__getattr__ => redirect to the actual type.
    )getrM   get_getattr)r4   r5   typvalueattr
inner_typer'   imps           r(   deferred_getattrrx      sU    
 J
,,wsJ
7
7C


j$
/
/C3wS$777r*   c                     |                      ||||                                          }| j        |         }|                    ||                                |          S r%   )rM   rq   data_model_managersetmake_uninitialized)r4   r5   fromtytotyr'   actualmodels          r(   any_to_deferredr      sR     \\'3

;;F&t,E99We6688&AAAr*   c                     | j         |         }|                    ||          }|                     |||                                |          S r%   )rz   rq   rM   )r4   r5   r}   r~   r'   r   s         r(   deferred_to_anyr      sD     &v.E
))GS
!
!C<<fjjllD999r*   c                     |\  }}|                     ||g          }|                    |          }t          | ||j        |          S r%   )geploadr   r\   )r4   r5   r6   r7   base_ptridxelem_ptrr^   s           r(   getitem_cpointerr      sG    MHc{{8cU++H
,,x
 
 CWgsDDDr*   c                 l    |\  }}}|                     ||g          }|                    ||           d S 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k    sJ  fd}t          ||          }t          ||          \  }}|S )Nr   c                 t   | \  }}|\  }}j                             ||          }|J                     |||          }                    |||          }t          j        t
          j        ||          }                    |          } |||f          }	                    |	||          }
||
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3LL!S"--!%-R88!!%00r'As8$$nnT1c**3wr*   )lenzipr   )	r4   r5   argtysr7   r   r   typvalsrestyresvals	   ``  `    r(   	do_minmaxr      s    v;;#d))###fd^###t99q====       &$G='2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      C    #(1+Fa11DWgvtX[AAAr*   c                 F    t          | ||j        |t          j                  S r%   )r   r7   r1   r   r4   r5   r6   r7   s       r(   
max_varargr          Wgsxx{C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                 F    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    bk^++r*   c                 |   |j         d         }|                     |          }|j        }t          j        ||g          }t          j        ||t          |                    }|                    ||          }	|	                    |	|                     |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    HQKE!!%((D^F?4$((D		'6Fu6M6M	N	NB
,,r4
 
 C
..g44S_EE
F
FCgwEEEr*   c                     |j         d         }t          j        t          |          t	          j        ||                    fd}|                     ||||          }t          | ||j        |          S )Nr   c                 $   t          j        |           st          j        |           r| S |dk    rG|dk    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== 	DJqMM 	Ha<<|| "-wTT!Az!}} F1II$,, WH%DDA6!99t##r*   )	r7   r   ExternalFunctionr   r   r   compile_internalr   r\   )r4   r5   r6   r7   r   r   r^   r   s          @r(   round_impl_binaryr      s    HQKE #!1%!?!?A AF$ $ $ $ $. 
"
"7M3
E
ECgwEEEr*   c                     |j         \  }|\  }|                     ||||j                  }t          | ||j        |          S r%   )r7   rM   r\   r   )r4   r5   r6   r7   r   r'   r^   s          r(   int_implr   &  sC     8DRES
,,wR
9
9CgwEEEr*   c                     |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    8DR


sb6F0G0G
H
HCgwEEEr*   c                    |j         }|j        }t          |j                  dk    r|j        \  }|\  }t	          |t
          j                  r/|                     ||||          }t          | ||j         |          S |                     ||||          }	| 	                    |d          }
nWt          |j                  dk    r?|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  sA   ?L.J
38}}(eU]++ 	7,,wULAAC%gwMMM<<eZ@@D''
A66DD	SX!		8t||GT6:>>||GT6:>>  ,77EEJEJ
//

CgwEEEr*   c                    t          |j        t          j                  r@|j        j        fd}|                     ||||          }t          | ||j        |          S |\  }|j        \  }|                     ||||j                  S )z1
    Call a number class, e.g. np.int32(...)
    c                  0    t          j        |           S )N)dtype)nparray)arg_hackdts    r(   fooznumber_constructor.<locals>.fooZ  s    8HB////r*   )	r,   r\   r   Arrayr   r   r   r7   rM   )	r4   r5   r6   r7   r   r^   r'   valtyr   s	           @r(   number_constructorr   R  s    
 #/5;// B_"	0 	0 	0 	0 	0&&wS$??!'7COSIII (||GS%AAAr*   c                 *    |                                  S r%   get_dummy_valuer4   r5   r   pyvals       r(   constant_dummyr   h  s     ""$$$r*   c                     |                      |          }|                     ||                    |          t          |                    }|                    ||          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  s\    --b11E%%gr~~e/D/D+.u:: & 7 7F??65)))r*   c                 t    ||                      ||j                  S |                     ||j        |          S r%   )make_optional_nonetypemake_optional_valuer   s       r(   constant_optionalr  u  s9    }))'27;;;**7BGUCCCr*   c                 *    |                                  S )z&
    One-argument type() builtin.
    r   r   s       r(   	type_implr    s    
 ""$$$r*   c                 D    |j         \  }|\  }t          | |||          }|S r%   )r7   r   )r4   r5   r6   r7   r   r'   itervals          r(   	iter_implr    s*    
(CBDC7GR55GNr*   c                 R   |j         \  }|\  }t          | |||          }|                    |                    |                                          d          5  | j                            |t          d           d d d            n# 1 swxY w Y   |                                S )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    hGFHG
&'
:
:C	cllnn55e	D	D F F))'="EEEF F F F F F F F F F F F F F F s   "B

BBznot inc                 b    d }|                      ||||          }|                    |          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        }|                     |t          |j                            }t          | ||j        |          S r%   )r7   r\   r   r   r   r   )r4   r5   r6   r7   r   rettyr^   s          r(   constsized_lenr$    sE    8DROE


uc"(mm
4
4CgwEEEr*   c                 b    |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+    8DR
2ww !  r*   c                 h    |j         }|                     |          }t          | ||j         |          S r%   )r\   get_constant_undefr   )r4   r5   r6   r7   r#  r^   s         r(   lower_empty_tupler*    s2    OE

$
$U
+
+CgwEEEr*   c                 8    |\  }t          | ||j        |          S r%   )r   r\   )r4   r5   r6   r7   r'   s        r(   lower_tupler,    s    DCWgsDDDr*   c                     t           j        t           j        t           j        t           j        t           j        t           j        f}t          | |          rd }|S d S )Nc                 (    t          |           dk    S r   )r   r   s    r(   	bool_implz bool_sequence.<locals>.bool_impl  s    q66A:r*   )r   CharSeqUnicodeCharSeqDictTypeListTypeUnicodeTypeSetr,   )r   valid_typesr0  s      r(   bool_sequencer8    s^     		K ![!! 	 	 	 r*   always)inlinec                 D    t          | t          j                  s| d S d S )Nc                     dS NFr&   r/  s    r(   <lambda>zbool_none.<locals>.<lambda>  s     r*   rj   r/  s    r(   	bool_noner?    s)    !U^$$ 	 )2	r*   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    sH    #u{## v#u}%% z
+
,
,,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    sJ    #u{## w#u}%% z
+
,
,,r*   c                       e Zd Zd ZdS )MinValInferc                     |rJ t          |          dk    sJ t          |d         t          j        t          j        f          rt          |d         j        g|R  S d S )NrE   r   )r   r,   r   DTypeNumberClassr   r   )selfr7   kwss      r(   genericzMinValInfer.generic  sd    4yyA~~~~d1gU->?@@ 	3T!W]2T2222	3 	3r*   N)__name__
__module____qualname__rR  r&   r*   r(   rL  rL    s#        3 3 3 3 3r*   rL  c                    |j         d         j        }t          |t          j                  r9|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                    |                    }	t          j	        |t          j                   }net          |t          j        t          j        f          r?d}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    sA    (1+
C#u}%% $\jnnjk#s##	C	%	% $\88,..CC2XX-//CC%&STTTr9++B//00k#w''	C%*E,=>	?	? $jnnk 1$k#s##gwS999r*   c                    |j         d         j        }t          |t          j                  r9|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                    |                    }	t          j	        |t          j                  }nbt          |t          j        t          j        f          r<d}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}%% $\jnnjk#s##	C	%	% $\88,..CC2XX-//CC%&STTTr9++B//00k#rv&&	C%*E,=>	?	? $jnnk k#s##gwS999r*   )
IndexValueIndexValueType)r   register_jitablec                     |j         }|\  }} t          j        |          | |          }||_        ||_        |                                S r%   )r\   r   create_struct_proxyindexrt   r   )r4   r5   r6   r7   rs   rn  rt   index_values           r(   impl_index_valuerp  -  sR     /CLE52'-c227GDDKKK  """r*   c                 h    t          | t                    rt          |t                    rd }|S d S d S )Nc                 8   t          j        | j                  r/t          j        |j                  r| j        |j        k     r| S |S | S t          j        |j                  r|S | j        |j        k    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=      x&& #8GM** #}w}44&& #N'-(( 	#..'-//=7=00"N"NNr*   r,   rj  )ru  rv  rw  s      r(   
indval_minrz  9  P    '>** '>**	 	 	, 1   r*   c                 |    t          | t          j                  rt          |t          j                  rd }|S d S d S )Nc                 
    | o|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  sS    $&& $&&	! 	! 	!	   r*   c                 h    t          | t                    rt          |t                    rd }|S d S d S )Nc                 8   t          j        | j                  r/t          j        |j                  r| j        |j        k     r| S |S | S t          j        |j                  r|S |j        | j        k    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                 |    t          | t          j                  rt          |t          j                  rd }|S d S d S )Nc                 
    | p|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  |  sS    $&& $&&	  	  	 	   r*   c                     | |k    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                 J    t          | t          j                  rfd}|S d S )Nc                 j    t          |           }t          |          }|D ]} ||          r|}|S r%   )iternext)iterableit
return_valr'   ops       r(   r)   zmin_max_impl.<locals>.impl  sH    hBbJ % %2c:&& %!$Jr*   )r,   r   IterableType)r  r  r)   s    ` r(   min_max_implr    sB    (E.// 	 	 	 	 	  r*   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                  }t          j        |t          j        |          |          }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                     t          | g|R  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. . . &&sx00I

3c 2 2I
>
>C
9~~''))""7It<<> ''))""7Ir::< ##GYTB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d S dfd	}|S )N)strings )bytesrh   )	bytearrayrh   z/sum() can't sum {} [use {}''.join(seq) instead]r   c                 2    |} |           D ]}||z   }|S r%   r&   )r  startr   r   iterators       r(   r)   zol_sum.<locals>.impl  s1    (## 	 	A'CC
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N# (U-?"^U[%/K L L 	Hu/C	E	E  "t      Kr*   c                     d }|S )Nc              7   8   K   t          |g|R  D ]	} | | V  
d S r%   )r   )funcr  r7   r   s       r(   r)   zol_map.<locals>.impl  s@      X%%%% 	 	A$(NNNN	 	r*   r&   )r  r  r7   r)   s       r(   ol_mapr    s       Kr*   c                 L    | t          | t          j                  rd }nd }|S )Nc              3       K   |D ]}|r|V  	d S r%   r&   r  r  r   s      r(   r)   zol_filter.<locals>.impl  s1         GGG r*   c              3   2   K   |D ]} | |          r|V  d S r%   r&   r  s      r(   r)   zol_filter.<locals>.impl  s9        477 GGG r*   rj   )r  r  r)   s      r(   	ol_filterr    sA    D%.99	 	 	 	
	 	 	 Kr*   c                 2   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          ||          sd| d}t	          |          |}t          |t          j                  r|j        d         }t          |t          j                  s|f}|D ]o}t          |t          j                  r|j        d         }	n$t          |t          j                  r|}	n|j        }	t8          t          j        t:          t          j        t<          t          j        t          j	        ft>          t          j
        t@          t          j!        tD          t          j        i}
|	|
v rt          ||
|	                   r|c S t          |t          j#                  rB|	t          j        t          j        fvrd}t	          |          tI          |          |	u r|n|c S t          |	          }||k    r|c S t          |t          j        t          j        f          r#t          |tI          |                    r|c S t          |t          j                  r3t          |t          j                  r|j        |j%        j        k    r|c S t          |t          j&                  rh|j        d         t          j'        k    rMt          ||j(                  s4t          |t          j!                  rt          |t          j!                  r|c S q|S )	Nc                     dS )NTr&   vartypss     r(   	true_implz ol_isinstance.<locals>.true_impl  s    tr*   c                     dS r=  r&   r  s     r(   
false_implz!ol_isinstance.<locals>.false_impl  s    ur*   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&%.)) "K&KKKS!!! ek5?(?U^UY9J/u{E4Hu'79JM f.// "L&LLLS!!!F &%.)) !*Q-fek**  5% 5%c5>** 	'!*CCU_-- 	CC'C
 5;5?5>5#:;%*5? 
 &&&&"6s";<< !    c5=)) 	% 5>5>:::3$S))) !%V 3 399CCC%c**I""    I(8%:K'LMM %fd9oo66 %$$$$%Iu77 %vu'>??%J)"9"===    Iu77 %M!$77fi&9:: %88%"9eo>>% %$$$r*   c                     d S r%   r&   objnames     r(   _getattr_raise_attr_excr  f  s	     	Dr*   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  sf    dE/00 N!"LMMME3#335333G& & & & &Kr*   c                   	
 t          |t          j                  st          d          |j        
|                     
          t          t          j                  rd d
 d d}t          |          t          t          j                  rj	        t          k    s |          }fd}n|                     t                    		                    | |fi           t          j        |          }	fd}nL |          }t          t          j                  rfd}n|                     
          
fd	}||fS )
Nr  zQReturning function objects is not implemented. getattr() was requested to return z from attribute 'z' of .c                 P    |d         }| j                             ||           |S N)nrtincref)cgctxr5   r6   llargstmpdefaults        r(   r)   zresolve_getattr.<locals>.impl  s+    Rj	  '3777
r*   c                 X    |                                } |||d d                   S r  )r0   )r  r5   r6   r  native_implr   	raise_sigs        r(   r)   zresolve_getattr.<locals>.impl  s2    #00yAA"{7F3B3K888r*   c                     j         }|                     ||d         |          }|                     |||          }| 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  s[    G	GWQZiHH..w	JJ	  "c222
r*   c                     |                      
	          } || |
|d         	          }|                     ||          }| 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  si    !--c599	iwWQZGGGS&"==	  "f55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  s   dE/00 N!"LMMME			sE	*	*B "en%% &46& && &"& & & #	z 7E$455 	9&*???'#tW--C      ++,CDDD**53+rBBI*S$00C9 9 9 9 9 9 9
 bdG$$b%-.. 	       **36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22r*   r&   )r  r  r  r)   s       r(   ol_getattr_3r    s    3 3 3Kr*   c                    t          |t          j                  st          d          |j        }|                     ||          t          j        d          }nt          j        d          } |||          }fd}||fS )Nr  FTc                 8    t           j        nt           j        S r%   )r   r>   r&  )r  r5   r6   r  r   s       r(   r)   zresolve_hasattr.<locals>.impl  s    #%:g73CCr*   )r,   r   r  r   rY   r  literal)r  r  r  r  r#  r6   r)   r   s          @r(   resolve_hasattrr    s    dE/00 N!"LMMME			sE	*	*B 
ze$$d##
%T

CD D D D 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                 d    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  s=    3%%%73%%''' '&r*   r&   )r  r)   r%  s     @r(   ol_repr_genericr&    s4    0#000' ' ' ' ' Kr*   c                     dd}|S )Nr  c                 |    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  s@    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[     s{   " " " " " "                   I I I I I I I I I I I I I I I I I I I I I I I I I I
 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 * * * * * *4 4 4 4 4 4 4 4 4 48 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 . - - - - - 7 7 7 7 7 7 
(.   x	59550 0 650 x|UY	22! ! 32!2 x|U\5<88! ! 98! x|U]EM::, , ;:,$ x{EM5=99x{E0%2FGGF F HG :9F x{EM5=99x{E0%2FGGF F HG :9F     jj&& ' ' '   jj'' ( ( ( u)**8 8 +*8 EIu)**ENE.//EM5-..B B /. 0/ +*B
 E	**E..E//: : 0/ /. +*: x??E E @?E x	JJ! ! KJ!  0 sEO$$B B %$B
 sLEL++,,D D -,D sEO$$B B %$B
 sLEL++,,D D -,D, , , uek""	F 	F #"	F uek5=11F F 21FJ sEIuei  F F !  F ue)**F F +*F wUY//00F F 10F6 u %),,B B -,B* % % % -..* * /.* D D  D tUY% %  % tU'((  )( tU'((	 	 )(	 xEI..  /. sE$%%F F &%F tU[!!! ! "!! uF F F
 ueo&&E E '&E 
$   
$x     ! - - -- - -  !! !!3 3 3 3 3" 3 3 "! "!3 !5#455!5;//: : 0/ 65:2 !5#455!5;//: : 0/ 65:6 B A A A A A A A 6 6 6 6 6 6 6 6z5<44z5=%*55z5>5:66# # 76 65 54# 
#  8 
#   
#  8 
#     2 233//00	 	 	 	 
#- - - 
#0 0 0 u}lel595566C C 76C> 
#       N 
#   
&   
*a a aL	 	 	 

!""  #" 5 5 5r #
#:B?? ((**  
'$'''  (' 
'     2 
'   
$
 
 
 
#     r*   