
    J/Ph;a                        d Z ddlZddlZddlZddlmZ ddlZddlm	Z	m
Z
mZmZmZ ddlmZmZmZ ddlmZ  eeg          Z G d d          Z e            Zi ej        d	ej        d
ej        dej        dej        dej        dej        dej         dej!        dej"        dej#        dej$        dej%        dej&        dej'        dej(        dej)        dej*        dej+        dej,        dej-        dej.        dej/        dej0        d iZ1d!e1ej2        <   d"e1ej3        <   ej4        d#ej5        d$ej6        d%ej7        d&ej8        d'ej9        d(ej:        d)ej;        d*ej<        d+i	Z= G d, d-e          Z>dS ).z*
Lowering implementation for object mode.
    N)cached_property)typesutilsir
generatorscgutils)ForbiddenConstructLoweringErrorNumbaNotImplementedError)	BaseLowerc                       e Zd ZdZd ZdS )
_UndefinedzH
    A sentinel value for undefined variable created by Expr.undef.
    c                     dS )Nz<undefined> selfs    U/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/core/pylowering.py__repr__z_Undefined.__repr__   s    }    N)__name__
__module____qualname____doc__r   r   r   r   r   r      s-             r   r   )
number_addF)number_subtractF)number_multiplyF)number_truedivideF)number_floordivideF)number_remainderF)number_powerF)number_lshiftF)number_rshiftF)
number_andF)	number_orF)
number_xorF)r   T)r   T)r   T)r   T)r   T)r   T)r    T)r!   T)r"   T)r#   T)r$   T)r%   T)number_matrix_multiplyF)r&   T==!=<z<=>z>=iszis notinc                        e Zd Zej        Zd Z fdZd Zd Z	d Z
ed             Zd Zd Zd#d
Zd Zd Zd Zd Zd Zd Zd Zd Zd$dZd Zd Zd Zd%dZd Zd Zd#dZd Z d%dZ!d Z"d  Z#d! Z$d" Z% xZ&S )&PyLowerc                 R    t                      | _        t                      | _        d S N)set_frozen_strings
_live_varsr   s    r   initzPyLower.initS   s    "uu%%r   c                 ~    t          t          |                                            |                                  d S r0   )superr.   	pre_lower
init_pyapi)r   	__class__s    r   r7   zPyLower.pre_lowerY   s5    gt&&(((r   c                     d S r0   r   r   s    r   
post_lowerzPyLower.post_lower]   s    r   c                 0    |                      |           d S r0   )	init_varsr   blocks     r   	pre_blockzPyLower.pre_block`   s    ur   c                 h   t          |t          j                  r7|                     |          }|                     ||j        j                   d S t          |t          j                  r|                     |j        j                  }|                     |j	        j                  }|                     |j
        j                  }| j                            |||          }|                     |           d S t          |t          j                  rp|                     |j        j                  }|                     |j	        j                  }| j                            ||          }|                     |           d S t          |t          j                  r|                     |j        j                  }|                     |j
        j                  }| j                            ||                     |j                  |          }|                     |           d S t          |t          j                  ri|                     |j        j                  }| j                            ||                     |j                            }|                     |           d S t          |t          j                  r|                     |j        j                  }|                     |j        j                  }|                     |j
        j                  }| j                            |||          }|                     |           d S t          |t          j                  r~|                     |j
        j                  }| j        r6| j                            |           | j                            |            d S | j                             | j!        |           d S t          |t          j"                  r|                     |j#        j                  }	|	j$        tJ          j        &                    d          k    r|	}
n| j        '                    |	          }
tJ          j        (                    |
j$        d           }| j!        )                    d|
|          }| j*        |j+                 }| j*        |j,                 }| j!        -                    |||           d S t          |t          j.                  r.| j*        |j                 }| j!        /                    |           d S t          |t          j0                  r| 1                    |j
                   d S t          |t          j2                  rd S t          |t          j3                  rn|j4        5|                     |j4        j                  }| 5                    |           nd }| j        6                    |           | 7                                 d S tI          |           d| }tq          |          )N   r(   z, )9
isinstancer   Assignlower_assignstorevartargetnameSetItemloadvarindexvaluepyapiobject_setitemcheck_int_statusDelItemobject_delitemSetAttrobject_setattr_freeze_stringattrDelAttrobject_delattrStoreMapdctkeydict_setitemReturngenerator_infodecrefgenlowerreturn_from_generator	call_convreturn_valuebuilderBranchcondtypellvmliteIntTypeobject_istrueConstanticmp_unsignedblkmaptruebrfalsebrcbranchJumpbranchDeldelvarPopBlockRaise	exceptionincrefraise_objectreturn_exception_raisedr   )r   instrL   rG   rK   okrY   rZ   retvalre   istruezeropredtrflexcmsgs                    r   
lower_instzPyLower.lower_instc   sF   dBI&& U	0%%d++EMM%!122222bj)) Q	0\\$+"233FLL11ELL11E**65%@@B!!"%%%%%bj)) J	0\\$+"233FLL11E**6599B!!"%%%%%bj)) D	0\\$+"233FLL11E**6+/+>+>ty+I+I+02 2B !!"%%%%%bj)) <	0\\$+"233F**6+/+>+>ty+I+IK KB!!"%%%%%bk** 6	0,,tx}--C,,tx}--CLL11E((c599B!!"%%%%%bi(( /	0\\$*/22F"  
!!&)))33D999N''f=====bi(( #	0<<	//DyHK//222211$77;''T::D<--dFDAADT[)BT\*BL  r2.....bg&& 	0[-FL'''''bf%% 	0KK
#####bk** 	0Dbh'' 	0~)ll4>#677 C    J##C(((((***** $ZZ))4))C*3///r   c                 r    ddl m} | j                            | j                            |                    S )zeReturn a `OmittedArg` type instance as a LLVM value suitable for
        testing at runtime.
        r   )
OmittedArg)numba.core.dispatcherr   rM   unserializeserialize_object)r   r   s     r   _omitted_typobjzPyLower._omitted_typobj   sC    
 	544444z%%J''
335 5 	5r   c                 ^   |j         }t          |t          j        t          j        f          r|                     |j                   S t          |t          j                  r1|                     |j                  }| 	                    |           |S t          |t          j
                  r|                     |          S t          |t          j                  r |                     |j        |j                   S t          |t          j                  r|                     |          S t          |t          j                  r| j        j        j        j                            |j                  }| j        |j                 }t1          j        | j        |          }|J|j        t8          j        j        u r2| 	                    |           | j                            ||           n| j         !                    |          }| j        "                    d|| j#                  }| j        $                    |d          5 \  }	}
|
5  | 	                    |           | j                            ||           ddd           n# 1 swxY w Y   |	5  | j         %                    |d          }| j                            ||           ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   | j        &                    |          S tO          tQ          |          |          )z?
        The returned object must have a new reference
        Nr'   F)likelyrL   ))rL   rC   r   ConstFreeVarlower_constVarrJ   rH   rw   Expr
lower_exprGloballower_globalYieldlower_yieldArgfunc_irfunc_idpysig
parametersgetfnargsrK   r   alloca_once_valuerc   defaultinspect	ParameteremptystorerM   get_typerk   r   if_elseobject_getattr_stringloadNotImplementedErrorrf   )r   rz   rL   valparamobjslottypobj
is_omittedomittedpresents              r   rE   zPyLower.lower_assign   s}    
ebh
344 &	:##EK000rv&& $	:,,uz**CKKJrw''  	:??5)))ry)) 	:$$UZ===rx(( 	:##E***rv&& 	:L(.9==ejIIE+ek*C,T\3??D U]g6G6M%M%MC   ""3---- ,,S11!\77f8<8LN N
\))*U)CC 6GYQX  6 6C(((**35556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 ! 6 6"j>>sGLL**35556 6 6 6 6 6 6 6 6 6 6 6 6 6 6	6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 <$$T***%d5kk5999sZ   K-	1J:K-J
	
K-J
	K-7K
K-K	K-K	K--K14K1c                    | j         j        |j                 }|j        |u sJ | j                            |            t          j        | ||j        |j	        z            }|
                                 |                     |j        j                  }| j                            |           | j                            | j        |           |                                 | j                                        S r0   )r]   yield_pointsrK   rz   r_   init_generator_stater   
LowerYield	live_varsweak_live_varslower_yield_suspendrJ   rL   rH   rM   rw   ra   rb   rc   lower_yield_resume	make_none)r   rz   ypyr   s        r   r   zPyLower.lower_yield   s     -dj9w$**4000 !$BL2;L,LMM	ll4:?++
###DL#666 	
z##%%%r   Fc                    |                      |j        j                  }|                      |j        j                  }t	          |t
                    rJ |t          v r4t          |         \  }}t          | j        |          } ||||          }nKt          
                    |j        |j                  }|dk    r||}}| j                            |||          }|                     |           |S )Ninplacer,   )rJ   lhsrH   rhsrC   strPYTHON_BINOPMAPgetattrrM   PYTHON_COMPAREOPMAPr   fnobject_richcomparecheck_error)	r   expropr   r   r   fnamer   ress	            r   lower_binopzPyLower.lower_binop  s    ll48=))ll48=))b#&&&&&  ,R0NE7U++B"S#w///CC %(($'::BTzzS*//S"==C
r   c                     |j         dk    r                     ||j        d          S |j         dk    r                     ||j        d          S |j         dk    r4                     |j        j                  }|j        t          j        k    r j        	                    |          }n|j        t          j
        k    r j                            |          }n|j        t          j        k    rJ j                            |          }                     |            j                            |          }n?|j        t          j        k    r j                            |          }nt%          |                               |           |S |j         dk    r fd|j        D             }                     |j        j                  } j                            |          }|j        r~ j                                                 |j        j                            } j                            ||          }                     |                                |           |}|j        s j                            ||d           }	n^ fd	|j        D             }
 j                            |
          } j                            |||          }	                     |                                |                                |	           |	S |j         d
k    ri                     |j        j                  } j                            |                     |j                             }                     |           |S |j         dk    rD fd|j!        D             } j                            |          }                     |           |S |j         dk    rD fd|j!        D             } j        "                    |          }                     |           |S |j         dk    r j        #                    |j$                  }                     |           |j!        D ]j\  }}                     |j                  }                     |j                  } j        %                    |||          }                     |           k|S |j         dk    rx fd|j!        D             } j        &                                }                     |           |D ]2} j        '                    ||          }                     |           3|S |j         dk    rP                     |j        j                  } j        (                    |          }                     |           |S |j         dk    ro                     |j        j                  } j        )                    |          }tU          j+         j,        |          } j        -                    d          } j,        .                    |          5 \  }}|5   j        /                    |d|           d d d            n# 1 swxY w Y   |5   0                                  j        /                    |d j        1                                           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y    j        /                    |d j                            |                     |S |j         dk    rQ                     |j        j                  } j        2                    |d          } 3                    |           |S |j         dk    rQ                     |j        j                  } j        2                    |d          } 3                    |           |S |j         dk    r                     |j        j                  } j                            |          }                     |            j        4                    |          } j5        6                    tn          j8        |j9                  } j,        :                    d||          }tU          j;         j,        |          5   <                    tz                     d d d            n# 1 swxY w Y   |S |j         dk    rp                     |j        j                  }                     |j>        j                  } j        ?                    ||          }                     |           |S |j         dk    r                     |j        j                  } j5        6                    tn          j8        |j>                  } j        @                    |          }                      |             j        ?                    ||           }                     |                                 |           |S |j         dk    r                     |jA        j                  }!                     |jB        j                  }"                     |jC        j                  }# D                    d          }$ j        E                    |$|"|#f          }%                     |$                                |%            j        ?                    |!|%          }                     |           |S |j         dk    r6                     |j        j                  }& 3                    |&           |&S |j         d k    rt          d!          |j         d"k    rtU          jG         j        jH                  S |j         d#k    r I                    t                    S t%          |          )$NbinopFr   inplace_binopTunarycallc                 D    g | ]}                     |j                  S r   rJ   rH   ).0ar   s     r   
<listcomp>z&PyLower.lower_expr.<locals>.<listcomp>,  s'    ???t||AF++???r   c                 N    g | ]!\  }}|                     |j                  f"S r   r   )r   kvr   s      r   r   z&PyLower.lower_expr.<locals>.<listcomp><  s0    LLL41aaaf!5!56LLLr   r   build_tuplec                 D    g | ]}                     |j                  S r   r   r   itr   s     r   r   z&PyLower.lower_expr.<locals>.<listcomp>I  '    @@@rT\\"'**@@@r   
build_listc                 D    g | ]}                     |j                  S r   r   r   s     r   r   z&PyLower.lower_expr.<locals>.<listcomp>N  r   r   	build_map	build_setc                 D    g | ]}                     |j                  S r   r   r   s     r   r   z&PyLower.lower_expr.<locals>.<listcomp>\  r   r   getiteriternext   r   rB   
pair_firstpair_secondexhaust_iterr(   getitemstatic_getitemgetsliceslicecastphizPHI not strippednullundef)Kr   r   r   rJ   rL   rH   operatornegrM   number_negativeposnumber_positivenot_
object_notrO   bool_from_boolinvertnumber_invertr   r   argsfunc
tuple_packvarargsequence_tuplesequence_concatr^   kwsr   	dict_packobject_getattrrT   rU   items	list_packdict_newsizer[   set_newset_addobject_getiter	iter_nextr   is_not_nullrc   	tuple_newr   tuple_setitemcheck_occurredr   tuple_getitemrw   
tuple_sizecontextget_constantr   intpcountrk   if_unlikelyreturn_exception
ValueErrorrK   object_getitemlong_from_ssize_trG   startstopget_builtin_objcall_function_objargsr
   get_null_valuepyobjr   
_UNDEFINED)'r   r   rL   r   argvalsr   r   varargsnew_argsret	keyvaluesr  r   r  r   r   rZ   r{   r   iterobjitemis_validpairthen	otherwisefirstsecondtuptup_sizeexpected_sizehas_wrong_sizerK   indexobjrG   r  r  slicefnsliceobjr   s'   `                                      r   r   zPyLower.lower_expr  s   7g##D$'5#AAAW''##D$'4#@@@WLL11Ew(,&&j0077HL((j0077HM))j++E22%%c***j//44HO++j..u55)$///S!!!JW????TY???Gdin--B:((11D{  *33 $T[-= > >@ @:55dGDDG$$$D!!!8 !joob$55 MLLL48LLL	j**955joob$44C   KKS!!!JW	!!,,tz//C*++C1D1DTY1O1OPPCS!!!JW%%@@@@TZ@@@E*''..CS!!!JW$$@@@@TZ@@@E*&&u--CS!!!JW##*%%di00CS!!!
 * *1ll16**QV,,Z,,S#u==%%b))))JW##@@@@TZ@@@E*$$&&CS!!! * *Z''R00%%b))))JW	!!,,tz//C*++C00CS!!!JW
""ll4:?33G:''00D*4<>>H:''**D%%h// N3DD) < <J,,T1d;;;< < < < < < < < < < < < < < < N N''))) J,,T1dj6J6J6L6LMMM	N N N N N N N N N N N N N N NN N N N N N N N N N N N N N N J$$T1dj.G.G.Q.QRRRKW$$<<
00DJ,,T155EKKLW%%<<
00DZ--dA66FKKMW&&ll4:?33G*++G44CS!!!z,,S11H L55ej$*MMM!\77/7H HN$T\>BB 2 2%%j1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2JW	!!LL11ELL11E*++E599CS!!!JW(((LL11EL--ej$*EEEz33E::HX&&&*++E8<<CKK!!!S!!!JW
""\\$+"233FLL11E<<	//D**733Gz77%OOHKK   X&&&*++FH==CS!!!JW,,tz//CKKJW 2333W)$**:;;;W##J/// &d+++sm   [:Z6[:Z	[:	Z	
[:A[#[:#['	'[:*['	+[::[>[>c--c14c1c                     | j                             |          }| j                             |          }|                     |           |                     |           |S r0   )env_manager	add_const
read_constr   rw   )r   constrK   r&  s       r   r   zPyLower.lower_const  sY     **511))%00C
r   c                    |                                  }| j                            ||                     |                    }|                     |           	 |t
          v rt          d|z  | j                  n# t          $ r Y nw xY wt          t          |          r|                     |          }| j        j        }| j                            |          5  | j                            ||                     d                    }|                     ||          }| j        j        }	ddd           n# 1 swxY w Y   | j                            | j        j                  }
|
                    ||           |
                    ||	           nu|}
t'          j        | j        |                     |
                    5  | j                            |           |                                  ddd           n# 1 swxY w Y   |
S )z
        1) Check global scope dictionary.
        2) Check __builtins__.
            2a) is it a dictionary (for non __main__ module)
            2b) is it a module (for __main__ module)
        zbuiltins %s() is not supported)loc__builtins__N)get_module_dictrM   dict_getitemrT   rw   _unsupported_builtinsr	   r=  	TypeErrorhasattrbuiltinsis_nullrc   basic_blockif_thenbuiltin_lookupr   r!  add_incomingr   r  raise_missing_global_errorry   )r   rH   rL   moddictr   obj_is_nullbbelsemodbuiltinbbifr|   s              r   r   zPyLower.lower_global  s    &&((j%%gt/B/B4/H/HIIC	---()I+/*059X? ? ? ? .  	 	 	D	 8T"" 	/,,s++K\-F%%k22 0 0j--g*.*=*=n*M*MO O--c488|/	0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \%%dj&677FV,,,.... F$T\4<<3G3GHH / /
55d;;;,,.../ / / / / / / / / / / / / / / s7   "A< <
B	B	AD99D= D=/G??HHc                     | j         j        S r0   )env_bodyglobalsr   s    r   r?  zPyLower.get_module_dict  s    }$$r   c                     |                                  }| j                            ||                     d                    }|                     ||          S )Nr>  )r?  rM   r@  rT   rH  )r   rH   rK  rN  s       r   r  zPyLower.get_builtin_obj  sU    &&((j%%g&*&9&9.&I&IK K""3---r   c                 (   | j                             ||                     |                    }|                     |           | j        j        }t          j        | j        |                     |                    5  | j         	                    ||                     |                    }t          j        | j        |                     |                    5  | j         
                    |           |                                  ddd           n# 1 swxY w Y   | j        j        }ddd           n# 1 swxY w Y   | j                            | j         j                  }|                    ||           |                    ||           |S )z
        Args
        ----
        mod:
            The __builtins__ dictionary or module, as looked up in
            a module's globals.
        name: str
            The object to lookup
        N)rM   r@  rT   rw   rc   rF  r   r  rE  r  rJ  ry   r   r!  rI  )r   rN  rH   fromdictbbifdictfrommodbbifmodrO  s           r   rH  zPyLower.builtin_lookup  s    :**30C0CD0I0IJJH<+ t||H/E/EFF 	/ 	/j//T5H5H5N5NOOG$T\4<<3H3HII / /
55d;;;,,.../ / / / / / / / / / / / / / / l.G	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ ,""4:#344Xx000Wg...s7   =AD7/DD7D	D7D	D77D;>D;c                     t          j        | j        | j                                                  }t          j        | j        |          5  |                                  ddd           dS # 1 swxY w Y   dS )z2
        Return if an exception occurred.
        N)r   r  rc   rM   err_occurredr  ry   )r   r[  s     r   r  zPyLower.check_occurred  s     *4<+/:+B+B+D+DF F  |<< 	+ 	+((***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   A..A25A2c                     t          j        | j        |                     |                    5  |                                  ddd           n# 1 swxY w Y   |S )z*
        Return if *obj* is NULL.
        N)r   r  rc   rE  ry   r   r   s     r   r   zPyLower.check_error"  s      t||C/@/@AA 	+ 	+((***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 
s   AAAr   c                    t           j                            |j        |          }| j                            d||          }t          j        | j        |          5  |                                  ddd           dS # 1 swxY w Y   dS )zI
        Raise an exception if *num* is smaller than *ok_value*.
        r)   N)	rg   r   rj   rf   rc   icmp_signedr   r  ry   )r   numok_valuer{   r   s        r   rO   zPyLower.check_int_status+  s     [!!#(H55|''S"55 t44 	+ 	+((***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   A>>BBc                 6    t          j        | j        |          S r0   )r   rE  rc   r]  s     r   rE  zPyLower.is_null4  s    t|S111r   c                 l    |                                   | j                            | j                   dS )z=
        Return with the currently raised exception.
        N)cleanup_varsra   
return_excrc   r   s    r   ry   zPyLower.return_exception_raised7  s4     	!!$,/////r   c                 ^    t          | j                            |                    | _        dS )z8
        Initialize live variables for *block*.
        N)r1   r   get_block_entry_varsr3   r>   s     r   r=   zPyLower.init_vars>  s'     dl??FFGGr   Nc                 l    || j         vr|                     ||          | j         |<   | j         |         S )Nltype)varmapalloca)r   rH   rj  s      r   _getvarzPyLower._getvarD  s8    t{"" $D > >DK{4  r   c                 `   || j         v s
J |            | j        |         }| j                            |          }t	          j        | j        |                     |                    5  | j                            |           | 	                                 ddd           n# 1 swxY w Y   |S )zC
        Load the llvm value of the variable named *name*.
        N)
r3   rk  rc   r   r   r  rE  rM   raise_missing_name_errorry   )r   rH   ptrr   s       r   rJ   zPyLower.loadvarI  s    
 t&&&&&&k$l$$ t||C/@/@AA 	+ 	+J//555((***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 
s   (/B##B'*B'c                 ,   | j                             |           |                     |          }|                     | j                            |                     | j                            t          j        |j	        j
                  |           dS )zy
        Delete the variable slot with the given name. This will decref
        the corresponding Python object.
        N)r3   removerm  r^   rc   r   r   r   r   rf   pointeer   rH   rp  s      r   rs   zPyLower.delvarV  s}     	t$$$ll4  DL%%c**+++ 	71#(2BCCSIIIIIr   c                    || j         v o| }|                     ||j                  }|r| j                            |          }n| j                             |           |j        |j        j        k    s5J t          |j                  t          |j        j                  f            | j                            ||           |r| 	                    |           dS dS )z|
        Stores a llvm value and allocate stack slot if necessary.
        The llvm value can be of arbitrary type.
        ri  N)
r3   rm  rf   rc   r   addrs  r   r   r^   )r   rL   rH   clobberis_redefinerp  olds          r   rF   zPyLower.storevard  s    
 do-=g+ll4uzl22 	&,##C((CCO%%%zSX----EJ03CH4D0E0E0G---5#&&& 	KK	 	r   c                     | j         D ]D}|                     |          }|                     | j                            |                     EdS )z)
        Cleanup live variables.
        N)r3   rm  r^   rc   r   rt  s      r   rd  zPyLower.cleanup_varsv  sU     O 	0 	0D,,t$$CKK))#..////	0 	0r   c                 R   |$| j                             t          j                  }| j                            | j                  5  | j                            ||          }| j                            t          j
        |          |           ddd           n# 1 swxY w Y   |S )z
        Allocate a stack slot and initialize it to NULL.
        The default is to allocate a pyobject pointer.
        Use ``ltype`` to override.
        N)rH   )r  get_value_typer   pyobjectrc   
goto_blockentry_blockrl  r   r   r   )r   rH   rj  rp  s       r   rl  zPyLower.alloca~  s     =L//??E\$$T%566 	C 	C,%%e$%77CLw5e<<cBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 
s   A
BB #B c                 ,    |                      |          S r0   )rl  )r   rH   fetypes      r   _alloca_varzPyLower._alloca_var  s     {{4   r   c                 :    | j                             |           d S r0   )rM   rw   )r   rL   s     r   rw   zPyLower.incref  s    
%     r   c                     | j                             t          j                  }|j        |k    r| j                            |           dS dS )zp
        This is allow to be called on non pyobject pointer, in which case
        no code is inserted.
        N)r  r|  r   r}  rf   rM   r^   )r   rL   lpyobjs      r   r^   zPyLower.decref  sL    
 ,,U^<<:Je$$$$$  r   c                 ,    |                      |          S )z>
        Freeze a Python string object into the code.
        )r   )r   strings     r   rT   zPyLower._freeze_string  s     '''r   )F)r   r0   )'r   r   r   r   PyGeneratorLowerGeneratorLowerr4   r7   r;   r@   r   r   r   rE   r   r   r   r   r   r?  r  rH  r  r   rO   rE  ry   r=   rm  rJ   rs   rF   rd  rl  r  rw   r^   rT   __classcell__)r9   s   @r   r.   r.   O   s7       0N             V0 V0 V0p 5 5 _5+: +: +:Z& & &(   "e, e, e,N  ' ' 'V% % %. . .  <+ + +  + + + +2 2 20 0 0H H H! ! ! !
  J J J   $0 0 0   ! ! !
! ! !% % %( ( ( ( ( ( (r   r.   )?r   rD  r   r   	functoolsr   llvmlite.irrg   
numba.corer   r   r   r   r   numba.core.errorsr	   r
   r   numba.core.loweringr   r1   localsrA  r   r"  rv  submultruedivfloordivrN  powlshiftrshiftand_or_xoriaddisubimulitruediv	ifloordivimodipowilshiftirshiftiandiorixorr   matmulimatmuleqneltlegtgeis_is_notcontainsr   r.   r   r   r   <module>r     s   
    % % % % % %     < < < < < < < < < < < < < <9 9 9 9 9 9 9 9 9 9 ) ) ) ) ) )
 VH         Z\\
L'L, L, 2	
 4 L- L) O- O- M( L& L' M' M,  M,!" 2#$ 4%& M-M)--M'L%M'3 8 $E  $D  ! KKKKKKL$OXt
 Q	( Q	( Q	( Q	( Q	(i Q	( Q	( Q	( Q	( Q	(r   