
    ܙd_                        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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j.        diZ/de/ej0        <   d e/ej1        <   ej2        d!ej3        d"ej4        d#ej5        d$ej6        d%ej7        d&ej8        d'ej9        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)	BaseLower)
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_varsselfs    5lib/python3.11/site-packages/numba/core/pylowering.pyinitzPyLower.initG   s    "uu%%    c                 ~    t          t          |                                            |                                  d S r#   )superr!   	pre_lower
init_pyapi)r(   	__class__s    r)   r.   zPyLower.pre_lowerM   s5    gt&&(((r+   c                     d S r#    r'   s    r)   
post_lowerzPyLower.post_lowerQ   s    r+   c                 0    |                      |           d S r#   )	init_varsr(   blocks     r)   	pre_blockzPyLower.pre_blockT   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(   instrD   r?   rC   okrQ   rR   retvalr]   istruezeropredtrflexcmsgs                    r)   
lower_instzPyLower.lower_instW   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~   rE   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)likelyrD   ))rD   r;   r   ConstFreeVarlower_constVarrB   r@   ro   Expr
lower_exprGloballower_globalYieldlower_yieldArgfunc_irfunc_idpysig
parametersgetfnargsrC   r   alloca_once_valuer[   defaultinspect	ParameteremptystorerE   get_typerc   r   if_elseobject_getattr_stringloadNotImplementedErrorr^   )r(   rr   rD   valparamobjslottypobj
is_omittedomittedpresents              r)   r=   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 r#   )rU   yield_pointsrC   rr   rW   init_generator_stater   
LowerYield	live_varsweak_live_varslower_yield_suspendrB   rD   r@   rE   ro   rY   rZ   r[   lower_yield_resume	make_none)r(   rr   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   )rB   lhsr@   rhsr;   strPYTHON_BINOPMAPgetattrrE   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 t%          |          )#NbinopFr   inplace_binopTunarycallc                 D    g | ]}                     |j                  S r2   rB   r@   ).0ar(   s     r)   
<listcomp>z&PyLower.lower_expr.<locals>.<listcomp>   s'    ???t||AF++???r+   c                 N    g | ]!\  }}|                     |j                  f"S r2   r   )r   kvr(   s      r)   r   z&PyLower.lower_expr.<locals>.<listcomp>0  s0    LLL41aaaf!5!56LLLr+   r   build_tuplec                 D    g | ]}                     |j                  S r2   r   r   itr(   s     r)   r   z&PyLower.lower_expr.<locals>.<listcomp>=  '    @@@rT\\"'**@@@r+   
build_listc                 D    g | ]}                     |j                  S r2   r   r   s     r)   r   z&PyLower.lower_expr.<locals>.<listcomp>B  r   r+   	build_map	build_setc                 D    g | ]}                     |j                  S r2   r   r   s     r)   r   z&PyLower.lower_expr.<locals>.<listcomp>P  r   r+   getiteriternext   r   r:   
pair_firstpair_secondexhaust_iterr   getitemstatic_getitemgetsliceslicecastphizPHI not strippednull)Ir   r   r   rB   rD   r@   operatornegrE   number_negativeposnumber_positivenot_
object_notrG   bool_from_boolinvertnumber_invertr   r   argsfunc
tuple_packvarargsequence_tuplesequence_concatrV   kwsr   	dict_packobject_getattrrL   rM   items	list_packdict_newsizerS   set_newset_addobject_getiter	iter_nextr   is_not_nullr[   	tuple_newr   tuple_setitemcheck_occurredr   tuple_getitemro   
tuple_sizecontextget_constantr   intpcountrc   if_unlikelyreturn_exception
ValueErrorrC   object_getitemlong_from_ssize_tr?   startstopget_builtin_objcall_function_objargsr
   get_null_valuepyobj)'r(   r   rD   r   argvalsr   r   varargsnew_argsret	keyvaluesr   r   r   r   r   rR   rs   r   iterobjitemis_validpairthen	otherwisefirstsecondtuptup_sizeexpected_sizehas_wrong_sizerC   indexobjr?   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)$**:;;; &d+++sm   [:Z6[:Z	[:	Z	
[:A[#[:#['	'[:*['	+[::[>[>c--c14c1c                     | j                             |          }| j                             |          }|                     |           |                     |           |S r#   )env_manager	add_const
read_constr   ro   )r(   constrC   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_dictrE   dict_getitemrL   ro   _unsupported_builtinsr	   r3  	TypeErrorhasattrbuiltinsis_nullr[   basic_blockif_thenbuiltin_lookupr   r  add_incomingr   r  raise_missing_global_errorrq   )r(   r@   rD   moddictr   obj_is_nullbbelsemodbuiltinbbifrt   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 r#   )env_bodyglobalsr'   s    r)   r5  zPyLower.get_module_dict  s    }$$r+   c                     |                                  }| j                            ||                     d                    }|                     ||          S )Nr4  )r5  rE   r6  rL   r>  )r(   r@   rA  rD  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)rE   r6  rL   ro   r[   r<  r   r  r;  r   r@  rq   r   r  r?  )r(   rD  r@   fromdictbbifdictfrommodbbifmodrE  s           r)   r>  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  r[   rE   err_occurredr  rq   )r(   rQ  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  r[   r;  rq   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)	r_   r   rb   r^   r[   icmp_signedr   r  rq   )r(   numok_valuers   rw   s        r)   rG   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 r#   )r   r;  r[   rS  s     r)   r;  zPyLower.is_null$  s    t|S111r+   c                 l    |                                   | j                            | j                   dS )z=
        Return with the currently raised exception.
        N)cleanup_varsrY   
return_excr[   r'   s    r)   rq   zPyLower.return_exception_raised'  s4     	!!$,/////r+   c                 ^    t          | j                            |                    | _        dS )z8
        Initialize live variables for *block*.
        N)r$   r   get_block_entry_varsr&   r6   s     r)   r5   zPyLower.init_vars.  s'     dl??FFGGr+   Nc                 l    || j         vr|                     ||          | j         |<   | j         |         S )Nltype)varmapalloca)r(   r@   r`  s      r)   _getvarzPyLower._getvar4  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)
r&   ra  r[   r   r   r  r;  rE   raise_missing_name_errorrq   )r(   r@   ptrr   s       r)   rB   zPyLower.loadvar9  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)r&   removerc  rV   r[   r   r   r   r  r^   pointeer(   r@   rf  s      r)   rk   zPyLower.delvarF  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.
        r_  N)
r&   rc  r^   r[   r   addri  r   r   rV   )r(   rD   r@   clobberis_redefinerf  olds          r)   r>   zPyLower.storevarT  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)r&   rc  rV   r[   r   rj  s      r)   rZ  zPyLower.cleanup_varsf  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)r@   )r
  get_value_typer   pyobjectr[   
goto_blockentry_blockrb  r   r   r  )r(   r@   r`  rf  s       r)   rb  zPyLower.allocan  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 r#   )rb  )r(   r@   fetypes      r)   _alloca_varzPyLower._alloca_var{  s     {{4   r+   c                 :    | j                             |           d S r#   )rE   ro   )r(   rD   s     r)   ro   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
  rr  r   rs  r^   rE   rV   )r(   rD   lpyobjs      r)   rV   zPyLower.decref  sL    
 ,,U^<<:Je$$$$$  r+   c                 ,    |                      |          S )z>
        Freeze a Python string object into the code.
        )r   )r(   strings     r)   rL   zPyLower._freeze_string  s     '''r+   )F)r   r#   )'__name__
__module____qualname__r   PyGeneratorLowerGeneratorLowerr*   r.   r3   r8   r|   r   r   r=   r   r   r   r   r   r5  r  r>  r  r   rG   r;  rq   r5   rc  rB   rk   r>   rZ  rb  rx  ro   rV   rL   __classcell__)r0   s   @r)   r!   r!   C   s7       0N             V0 V0 V0p 5 5 _5+: +: +:Z& & &(   "a, a, a,F  ' ' 'V% % %. . .  <+ + +  + + + +2 2 20 0 0H H H! ! ! !
  J J J   $0 0 0   ! ! !
! ! !% % %( ( ( ( ( ( (r+   r!   )=__doc__r:  r   r   	functoolsr   llvmlite.irr_   
numba.corer   r   r   r   r   numba.core.errorsr	   r
   r   numba.core.loweringr   r$   localsr7  rl  submultruedivfloordivrD  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!   r2   r+   r)   <module>r     s   
    % % % % % %     < < < < < < < < < < < < < <9 9 9 9 9 9 9 9 9 9 ) ) ) ) ) )
 VH 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
 M	( M	( M	( M	( M	(i M	( M	( M	( M	( M	(r+   